全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
6183 1
2016-09-13
这是程序,那两个错误我用红色标注了,还有数据也附上(只能上传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)


附件列表

汇总数据.xlsx

大小:41.29 KB

 马上下载

分析数据

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-9-17 16:37:17
不错 再看看
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群