这是程序,那两个错误我用红色标注了,还有数据也附上(只能上传xlsx格式的,不能传csv格式)。请问是哪里出了错误?因为是要用这个R语言完成一门课的作业,但是以前也没有学过,用的现成的程序,所以不是很懂。
###データファイルの読み込み
> Data<-read.csv("E:/研一/离散/动态定制公交/动态定制公交数据/汇总数据.csv",header=T)
>
> hh<-nrow(Data)##数据数:data行数究竟有多少
> ch<- 3##此次使用的选项
>
> b0<-c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
> ## Logit model 对数似然函数的定义
> fr <- function(x) {
+ ##参数:
+ ##常数项
+
+ b1 <- x[1]
+ b2 <- x[2]
+
+ ##单程票价
+
+ dt1 <- x[3]
+
+ ##总时间(min)
+
+ dt2 <- x[4]
+
+ ##绕行时间
+
+ dt3 <- x[5]
+
+ ##之前的交通方式
+
+ dm1 <- x[6]
+ dm2 <- x[7]
+ dm3 <- x[8]
+
+
+ ##乘坐次数
+
+ dn1 <- x[9]
+
+ ##出行目的
+
+ dp1 <- x[10]
+
+ ##单程距离
+
+ dt4 <- x[11]
+
+ ##优点
+
+ dm1 <- x[12]
+ dm2 <- x[13]
+ dm3 <- x[14]
+ dm4 <- x[15]
+ dm5 <- x[16]
+ dm6 <- x[17]
+ dm7 <- x[18]
+
+ ##缺点
+
+ df1 <- x[19]
+ df2 <- x[20]
+ df3 <- x[21]
+ df4 <- x[22]
+ df5 <- x[23]
+
+ ##满意度
+
+ ds1 <- x[24]
+ ds2 <- x[25]
+
+ ##个人属性
+ ##性别
+ dg1 <- x[26]
+
+ ##年龄
+ da1 <- x[27]
+
+ ##交通支出
+ de1 <- x[28]
+
+ ##职业
+ dc1 <- x[29]
+
+ LL=0
+ ##A= 1001
+ ##B= 1002
+ ##C= 1003
+
+ ##効用の計算:説明変数にしたい列を入れる
+ ##单程票价 ##总时间 ##绕行时间 ##交通方式 ##乘坐次数 ##出行目的 ##单程距离 ##优点 ##缺点 ##满意度 ##性别 ##年龄 ##交通支出 ##职业 ##定数项
+ A <- dt1*Data[,30] + dt2*Data[,31] + dt3*Data[,32] + dm1*Data[,7] + dm2*Data[,8] + dm3*Data[,9]+ dn1*Data[,10] + dp1*Data[,11] + dt4*Data[,12] + dm1*Data[,13] + dm2*Data[,14] + dm3*Data[,15] + dm4*Data[,16] + dm5*Data[,17] + dm6*Data[,18] + dm7*Data[,19] + df1*Data[,20] + df2*Data[,21] + df3*Data[,22] + df4*Data[,23] + df5*Data[,24] + ds1*Data[,27] + ds2*Data[,28] + dg1*Data[,2] + da1*Data[,3] + de1*Data[,5]+dc1*Data[,6]+ b2*matrix(1,nrow =hh,ncol=1)
+ B <- dt1*Data[,33] + dt2*Data[,34] + dt3*Data[,35] + b1*matrix(1,nrow =hh,ncol=1)
+ C <- dt1*Data[,36] + dt2*Data[,37] + dt3*Data[,38]
+ ##选择概率的计算
+ PPA <- exp(A)/(exp(A)+exp(B)+exp(C))
+ PPB <- exp(B)/(exp(A)+exp(B)+exp(C))
+ PPC <- exp(C)/(exp(A)+exp(B)+exp(C))
+
+ PA <- (PPA!=0)*PPA + (PPA==0)
+ PB <- (PPB!=0)*PPB + (PPB==0)
+ PC <- (PPC!=0)*PPC + (PPC==0)
+
+ ##选择结果
+ CA<- Data[,39]==1001
+ CB<- Data[,39]==1002
+ CC<- Data[,39]==1003
+
+ ##似然函数的计算
+ LL<-colSums(CA*log(PA) + CB*log(PB)+ CC*log(PC))
+
+ }
>
> ##对数似然函数fr的最大化
> res<-optim(b0,fr, method = "BFGS", hessian = TRUE, control=list(fnscale=-1))
错误于optim(b0, fr, method = "BFGS", hessian = TRUE, control = list(fnscale = -1)) :
'vmmin'的初始值不能为无穷大
>
> ## estimated parameter
> b<-res$par
> hhh<-res$hessian
>
> ## t值的计算
> tval<-b/sqrt(-diag(solve(hhh)))
错误于solve.default(hhh) : Lapack例行程序dgesv: 系统正好是奇异的
>
> ##初期尤度
> L0 <- hh*log(1/ch)
> ##最終尤度
> LL <- res$value
>
> ## 適合度の計算
> ##結果の出力
> ##ρ^2値
> print((L0-LL)/L0)
[1] 0.4149937
> ##修正済ρ^2値
> print((L0-(LL-length(b)))/L0)
[1] 0.3694817
>
> print(res)
$par
[1] -0.42953654 0.11240110 -0.29608621 -0.42642672 -0.06396957 0.47307311 -0.13341456 0.31861139 0.00000000 0.00000000 0.00000000 0.00000000
$value
[1] -154.2468
$counts
function gradient
50 18
$convergence
[1] 0
$message
NULL
$hessian
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,] -31.866893 19.08024 -30.90659 44.452377 -134.46467 -16.048259 22.540420 5.110847 0 0 0 0
[2,] 19.080239 -31.71610 46.99053 -20.706819 309.82366 10.051502 -38.603086 5.446630 0 0 0 0
[3,] -30.906588 46.99053 -1589.64483 416.848184 967.14577 -14.879131 63.811753 -13.431721 0 0 0 0
[4,] 44.452377 -20.70682 416.84818 -369.731637 309.80630 19.653960 -26.675049 -7.326888 0 0 0 0
[5,] -134.464669 309.82366 967.14577 309.806304 -12771.88780 -81.259126 377.191737 -85.652873 0 0 0 0
[6,] -16.048259 10.05150 -14.87913 19.653960 -81.25913 -16.048259 7.672827 2.009379 0 0 0 0
[7,] 22.540420 -38.60309 63.81175 -26.675049 377.19174 7.672827 -72.091173 7.051744 0 0 0 0
[8,] 5.110847 5.44663 -13.43172 -7.326888 -85.65287 2.009379 7.051744 -15.203331 0 0 0 0
[9,] 0.000000 0.00000 0.00000 0.000000 0.00000 0.000000 0.000000 0.000000 0 0 0 0
[10,] 0.000000 0.00000 0.00000 0.000000 0.00000 0.000000 0.000000 0.000000 0 0 0 0
[11,] 0.000000 0.00000 0.00000 0.000000 0.00000 0.000000 0.000000 0.000000 0 0 0 0
[12,] 0.000000 0.00000 0.00000 0.000000 0.00000 0.000000 0.000000 0.000000 0 0 0 0
> print(tval)
附件列表