Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ';X';作为至少两个维度的数组_R_Arrays_Rstudio - Fatal编程技术网

R ';X';作为至少两个维度的数组

R ';X';作为至少两个维度的数组,r,arrays,rstudio,R,Arrays,Rstudio,对R和RStudio以及编码语言的整个概念来说都是非常新的。我试图创建可复制的代码,这样我就可以正确地问一个问题 第一个错误是: 列总和(cTrain*log(pTrain)+cCar*log(pCar)+cSM*log(pSM)中的错误: “x”必须是至少具有两个维度的数组 使用此代码,我在哪里可以修复此问题,以便“x”可以有两个维度 mydata <- structure(list(LUGGAGE=c(0,1,0,1,0), GA=c(0,0,0,0,0), TRAIN_AV=c(1,

对R和RStudio以及编码语言的整个概念来说都是非常新的。我试图创建可复制的代码,这样我就可以正确地问一个问题

第一个错误是:

列总和(cTrain*log(pTrain)+cCar*log(pCar)+cSM*log(pSM)中的错误: “x”必须是至少具有两个维度的数组

使用此代码,我在哪里可以修复此问题,以便“x”可以有两个维度

mydata <- structure(list(LUGGAGE=c(0,1,0,1,0), GA=c(0,0,0,0,0), TRAIN_AV=c(1,1,1,1,1), CAR_AV=c(1,1,1,1,1), SM_AV=c(1,1,1,1,1), 
               TRAIN_TT=c(114,142,235,193,227), TRAIN_CO=c(40,109,124,90,94),
               SM_TxT=c(44,91,179,119,108), SM_CO=c(46,132,132,127,118),
               CAR_TT=c(140,110,170,150,286), CAR_CO=c(123,104,80,95,169), CHOICE=c(2,2,3,3,2)),
               .Names=c("Luggage","GA","TRAIN_AV","CAR_AV","SM_AV","TRAIN_TT","TRAIN_CO","SM_TT","SM_CO","CAR_TT","CAR_CO","CHOICE"), 
               row.names=c(NA,5L), class="data.frame")

## Initial value of parameters
initPar <- 8


### Log-Likelihood Function of the Logit Model
library("maxLik")
loglik <- function(x) {
  ## Parameters
  # Alternative Specific Constants
  asc_train   <- x[1]
  asc_sm      <- x[2]
  # Travel Time to Destination
  ttime       <- x[3]
  # Travel Cost to Destination
  tcost_train <- x[4]
  tcost_car   <- x[5]
  tcost_sm    <- x[6]
  # Effect of Swiss Annual Season Ticket
  ga <- x[7]
  # Effect of luggage
  luggage <- x[8]

  ## Log-Likelihood Variable
  LL = 0

  ## Utility Function Vin
  train  <- asc_train*matrix(1, nrow=nrow(mydata), ncol = 1) + tcost_train*mydata$TRAIN_CO + ttime*mydata$TRAIN_TT/100 + ga*mydata$GA + luggage*mydata$LUGGAGE
  car    <-                                                    tcost_car*mydata$CAR_CO     + ttime*mydata$CAR_TT/100                  + luggage*mydata$LUGGAGE
  sm     <- asc_sm*matrix(1, nrow=nrow(mydata), ncol = 1)    + tcost_sm*mydata$SM_CO       + ttime*mydata$SM_TT/100    + ga*mydata$GA + luggage*mydata$LUGGAGE

  ## exp(Vin) and Control for Mode Availability
  train  <- mydata$TRAIN_AV *exp(train)
  car    <- mydata$CAR_AV   *exp(car)
  sm     <- mydata$SM_AV    *exp(sm)

  ## Choice Probabilities
  deno   <- (train + car + sm)

  ## Individual Choice Probabilities
  pTrain <- mydata$TRAIN_AV *(train / deno)
  pCar   <- mydata$CAR_AV   *(car   / deno)
  pSM    <- mydata$SM_AV    *(sm    / deno)

  pTrain <- (pTrain!=0) *pTrain + (pTrain==0)
  pCar   <- (pCar!=0)   *pCar   + (pCar==0)
  pSM    <- (pSM!=0)    *pSM    + (pSM==0)

  ## Choice Results
  cTrain <- mydata$CHOICE == "1"
  cCar   <- mydata$CHOICE == "3"
  cSM    <- mydata$CHOICE == "2"

  ## Log-Likelihood Function
  LL <- colSums(cTrain*log(pTrain) + cCar*log(pCar) + cSM*log(pSM))
}


### Maximization of Log-Likelihood Function ###
# Parameter Optimization
result <- maxLik(loglik, start=numeric(initPar))

# Parameter Estimation, Hessian Matrix Calculation
parameters    <- result$estimate
hessianMatrix <- result$hessian

# T-Statistic Calculation
tval <- parameters/sqrt(-diag(solve(hessianMatrix)))

# L(0), Log-Likelihood When All parameters = 0
L0 <- loglik(numeric(initPar))
# LL, Maximumum Likelihood
LL <- result$maximum

mydata用一个可重复的例子很好地提问;向上投票

你的问题很简单。函数查找一个名为
mydata$LUGGAGE
的变量,该变量不存在。R区分大小写,您的列名为
mydata$Luggage

你所要做的就是


名称(mydata)[1]正确。区分大小写,谢谢@Allan!我编辑了拼写错误并重新运行代码。我得到的下一个错误是:solve.default(hessianMatrix)中的错误:Lapack例程dgesv:system完全是单数的:U[7,7]=0尽管如此,我仍然获得了与您相同的结果!我认为你的代码本身没有问题。这个错误告诉你R的线性代数包不能解你的hessianMatrix。这是因为它的行列式是零,这意味着它不能被反转,这是求解它所必需的。如果查看hessianMatrix,第7行和第7列都是零