Data<-read.csv("SPRP Data_W 2.csv",header=T)
library(readxl)
regions<-read_xlsx("2015 choume 7 regions.xlsx", sheet = 2)
## region dummy
Zone<-Data[,1:31]
Region_data<-data.frame(Zone$I_ID.558I)
names(Region_data)<-"ID"
for (i in 2:31) {
zone<-Zone[,i]
c1<-zone %in% regions$region1
c2<-zone %in% regions$region2
c3<-zone %in% regions$region3
c4<-zone %in% regions$region4
c5<-zone %in% regions$region5
c6<-zone %in% regions$region6
c7<-zone %in% regions$region7
c_data<-data.frame(c1,c2,c3,c4,c5,c6,c7)
c_data<-c_data +0
region_n<-paste("region", i-1,sep = "")
name_c<-paste(region_n,"_", 1:7,sep = "")
names(c_data)<-name_c
Region_data<-cbind(Region_data,c_data)
}
##### parameters ###
hh<-nrow(Data)##number of observations
ch<-7 ## number of alternatives
##parameter name
Pname0<-c("HP_L","HP_M","HP_H","AP_L","AP_M","AP_H","DHP","AP","AHI","PD","Aa","OD","Urban","RVR","SVR","PF","ER","PFD","SD","LFD","DI","LS")
##produce variables
n<-length(Pname0)
b0<-rep(0,n)
Pname1<-as.data.frame(matrix(Pname0,nrow=1))
names(Pname1)<-Pname0
##log likelihood of Logit model
fr <- function(x) {
##parameter definition
##parameter definition
for(i in 1:n){
Pname1[,i]<-x[i]
}
LL=0
##utility function
attach(Pname1)
v<-list()
for(i in 1:30){
v[[i]]<- HP_L*Data$LID*Data[,which(names(Data)==paste("AveP_hous", i,sep = ""))] +
HP_M*Data$MID*Data[,which(names(Data)==paste("AveP_hous", i,sep = ""))] +
HP_H*Data$HID*Data[,which(names(Data)==paste("AveP_hous", i,sep = ""))] +
AP_L*Data$LID*Data[,which(names(Data)==paste("AveP_man", i,sep = ""))] +
AP_M*Data$MID*Data[,which(names(Data)==paste("AveP_man", i,sep = ""))] +
AP_H*Data$HID*Data[,which(names(Data)==paste("AveP_man", i,sep = ""))] +
DHP*Data[,which(names(Data)==paste("DHP", i,sep = ""))] +
AP*Data[,which(names(Data)==paste("AP", i,sep = ""))] +
AHI*Data[,which(names(Data)==paste("AHI", i,sep = ""))] +
PD*Data[,which(names(Data)==paste("public.density", i,sep = ""))] +
Aa*Data[,which(names(Data)==paste("average.age", i,sep = ""))] +
OD*Data[,which(names(Data)==paste("owner.occupied.housing", i,sep = ""))] +
Urban*Data[,which(names(Data)==paste("Urban", i,sep = ""))] +
RVR*Data[,which(names(Data)==paste("rental.vancancy.rate", i,sep = ""))] +
SVR*Data[,which(names(Data)==paste("sale.vancncy.rate", i,sep = ""))] +
PF*Data[,which(names(Data)==paste("foreigner.percent", i,sep = ""))] +
ER*Data[,which(names(Data)==paste("employment.rate", i,sep = ""))] +
PFD*Data[,which(names(Data)==paste("public.density", i,sep = ""))] +
SD*Data[,which(names(Data)==paste("school.density", i,sep = ""))] +
LFD*Data[,which(names(Data)==paste("leisure.density", i,sep = ""))] +
DI*Data[,which(names(Data)==paste("Diverstiy.Index", i,sep = ""))] +
LS*(Data[,which(names(Data)==paste("c_Sflog", i,sep = ""))] +
Data[,which(names(Data)==paste("s_Sflog", i,sep = ""))] +
Data[,which(names(Data)==paste("h_Sflog", i,sep = ""))])
}
detach(Pname1)
###### region
region1<- Region_data$region1_1*exp(v[[1]]) + Region_data$region2_1*exp(v[[2]]) + Region_data$region3_1*exp(v[[3]]) + Region_data$region4_1*exp(v[[4]]) +
Region_data$region5_1*exp(v[[5]]) + Region_data$region6_1*exp(v[[6]]) + Region_data$region7_1*exp(v[[7]]) + Region_data$region8_1*exp(v[[8]]) +
Region_data$region9_1*exp(v[[9]]) + Region_data$region10_1*exp(v[[10]]) + Region_data$region11_1*exp(v[[11]]) + Region_data$region12_1*exp(v[[12]]) +
Region_data$region13_1*exp(v[[13]]) + Region_data$region14_1*exp(v[[14]]) + Region_data$region15_1*exp(v[[15]]) + Region_data$region16_1*exp(v[[16]]) +
Region_data$region17_1*exp(v[[17]]) + Region_data$region18_1*exp(v[[18]]) + Region_data$region19_1*exp(v[[19]]) + Region_data$region20_1*exp(v[[20]])+
Region_data$region21_1*exp(v[[21]]) + Region_data$region22_1*exp(v[[22]]) + Region_data$region23_1*exp(v[[23]]) + Region_data$region24_1*exp(v[[24]]) +
Region_data$region25_1*exp(v[[25]]) + Region_data$region26_1*exp(v[[26]]) + Region_data$region27_1*exp(v[[27]]) + Region_data$region28_1*exp(v[[28]]) +
Region_data$region29_1*exp(v[[29]]) + Region_data$region30_1*exp(v[[30]])
region2<- Region_data$region1_2*exp(v[[1]]) + Region_data$region2_2*exp(v[[2]]) + Region_data$region3_2*exp(v[[3]]) + Region_data$region4_2*exp(v[[4]]) +
Region_data$region5_2*exp(v[[5]]) + Region_data$region6_2*exp(v[[6]]) + Region_data$region7_2*exp(v[[7]]) + Region_data$region8_2*exp(v[[8]]) +
Region_data$region9_2*exp(v[[9]]) + Region_data$region10_2*exp(v[[10]]) + Region_data$region11_2*exp(v[[11]]) + Region_data$region12_2*exp(v[[12]]) +
Region_data$region13_2*exp(v[[13]]) + Region_data$region14_2*exp(v[[14]]) + Region_data$region15_2*exp(v[[15]]) + Region_data$region16_2*exp(v[[16]]) +
Region_data$region17_2*exp(v[[17]]) + Region_data$region18_2*exp(v[[18]]) + Region_data$region19_2*exp(v[[19]]) + Region_data$region20_2*exp(v[[20]])+
Region_data$region21_2*exp(v[[21]]) + Region_data$region22_2*exp(v[[22]]) + Region_data$region23_2*exp(v[[23]]) + Region_data$region24_2*exp(v[[24]]) +
Region_data$region25_2*exp(v[[25]]) + Region_data$region26_2*exp(v[[26]]) + Region_data$region27_2*exp(v[[27]]) + Region_data$region28_2*exp(v[[28]]) +
Region_data$region29_2*exp(v[[29]]) + Region_data$region30_2*exp(v[[30]])
region3<- Region_data$region1_3*exp(v[[1]]) + Region_data$region2_3*exp(v[[2]]) + Region_data$region3_3*exp(v[[3]]) + Region_data$region4_3*exp(v[[4]]) +
Region_data$region5_3*exp(v[[5]]) + Region_data$region6_3*exp(v[[6]]) + Region_data$region7_3*exp(v[[7]]) + Region_data$region8_3*exp(v[[8]]) +
Region_data$region9_3*exp(v[[9]]) + Region_data$region10_3*exp(v[[10]]) + Region_data$region11_3*exp(v[[11]]) + Region_data$region12_3*exp(v[[12]]) +
Region_data$region13_3*exp(v[[13]]) + Region_data$region14_3*exp(v[[14]]) + Region_data$region15_3*exp(v[[15]]) + Region_data$region16_3*exp(v[[16]]) +
Region_data$region17_3*exp(v[[17]]) + Region_data$region18_3*exp(v[[18]]) + Region_data$region19_3*exp(v[[19]]) + Region_data$region20_3*exp(v[[20]])+
Region_data$region21_3*exp(v[[21]]) + Region_data$region22_3*exp(v[[22]]) + Region_data$region23_3*exp(v[[23]]) + Region_data$region24_3*exp(v[[24]]) +
Region_data$region25_3*exp(v[[25]]) + Region_data$region26_3*exp(v[[26]]) + Region_data$region27_3*exp(v[[27]]) + Region_data$region28_3*exp(v[[28]]) +
Region_data$region29_3*exp(v[[29]]) + Region_data$region30_3*exp(v[[30]])
region4<- Region_data$region1_4*exp(v[[1]]) + Region_data$region2_4*exp(v[[2]]) + Region_data$region3_4*exp(v[[3]]) + Region_data$region4_4*exp(v[[4]]) +
Region_data$region5_4*exp(v[[5]]) + Region_data$region6_4*exp(v[[6]]) + Region_data$region7_4*exp(v[[7]]) + Region_data$region8_4*exp(v[[8]]) +
Region_data$region9_4*exp(v[[9]]) + Region_data$region10_4*exp(v[[10]]) + Region_data$region11_4*exp(v[[11]]) + Region_data$region12_4*exp(v[[12]]) +
Region_data$region13_4*exp(v[[13]]) + Region_data$region14_4*exp(v[[14]]) + Region_data$region15_4*exp(v[[15]]) + Region_data$region16_4*exp(v[[16]]) +
Region_data$region17_4*exp(v[[17]]) + Region_data$region18_4*exp(v[[18]]) + Region_data$region19_4*exp(v[[19]]) + Region_data$region20_4*exp(v[[20]])+
Region_data$region21_4*exp(v[[21]]) + Region_data$region22_4*exp(v[[22]]) + Region_data$region23_4*exp(v[[23]]) + Region_data$region24_4*exp(v[[24]]) +
Region_data$region25_4*exp(v[[25]]) + Region_data$region26_4*exp(v[[26]]) + Region_data$region27_4*exp(v[[27]]) + Region_data$region28_4*exp(v[[28]]) +
Region_data$region29_4*exp(v[[29]]) + Region_data$region30_4*exp(v[[30]])
region5<- Region_data$region1_5*exp(v[[1]]) + Region_data$region2_5*exp(v[[2]]) + Region_data$region3_5*exp(v[[3]]) + Region_data$region4_5*exp(v[[4]]) +
Region_data$region5_5*exp(v[[5]]) + Region_data$region6_5*exp(v[[6]]) + Region_data$region7_5*exp(v[[7]]) + Region_data$region8_5*exp(v[[8]]) +
Region_data$region9_5*exp(v[[9]]) + Region_data$region10_5*exp(v[[10]]) + Region_data$region11_5*exp(v[[11]]) + Region_data$region12_5*exp(v[[12]]) +
Region_data$region13_5*exp(v[[13]]) + Region_data$region14_5*exp(v[[14]]) + Region_data$region15_5*exp(v[[15]]) + Region_data$region16_5*exp(v[[16]]) +
Region_data$region17_5*exp(v[[17]]) + Region_data$region18_5*exp(v[[18]]) + Region_data$region19_5*exp(v[[19]]) + Region_data$region20_5*exp(v[[20]])+
Region_data$region21_5*exp(v[[21]]) + Region_data$region22_5*exp(v[[22]]) + Region_data$region23_5*exp(v[[23]]) + Region_data$region24_5*exp(v[[24]]) +
Region_data$region25_5*exp(v[[25]]) + Region_data$region26_5*exp(v[[26]]) + Region_data$region27_5*exp(v[[27]]) + Region_data$region28_5*exp(v[[28]]) +
Region_data$region29_5*exp(v[[29]]) + Region_data$region30_5*exp(v[[30]])
region6<- Region_data$region1_6*exp(v[[1]]) + Region_data$region2_6*exp(v[[2]]) + Region_data$region3_6*exp(v[[3]]) + Region_data$region4_6*exp(v[[4]]) +
Region_data$region5_6*exp(v[[5]]) + Region_data$region6_6*exp(v[[6]]) + Region_data$region7_6*exp(v[[7]]) + Region_data$region8_6*exp(v[[8]]) +
Region_data$region9_6*exp(v[[9]]) + Region_data$region10_6*exp(v[[10]]) + Region_data$region11_6*exp(v[[11]]) + Region_data$region12_6*exp(v[[12]]) +
Region_data$region13_6*exp(v[[13]]) + Region_data$region14_6*exp(v[[14]]) + Region_data$region15_6*exp(v[[15]]) + Region_data$region16_6*exp(v[[16]]) +
Region_data$region17_6*exp(v[[17]]) + Region_data$region18_6*exp(v[[18]]) + Region_data$region19_6*exp(v[[19]]) + Region_data$region20_6*exp(v[[20]])+
Region_data$region21_6*exp(v[[21]]) + Region_data$region22_6*exp(v[[22]]) + Region_data$region23_6*exp(v[[23]]) + Region_data$region24_6*exp(v[[24]]) +
Region_data$region25_6*exp(v[[25]]) + Region_data$region26_6*exp(v[[26]]) + Region_data$region27_6*exp(v[[27]]) + Region_data$region28_6*exp(v[[28]]) +
Region_data$region29_6*exp(v[[29]]) + Region_data$region30_6*exp(v[[30]])
region7<- Region_data$region1_7*exp(v[[1]]) + Region_data$region2_7*exp(v[[2]]) + Region_data$region3_7*exp(v[[3]]) + Region_data$region4_7*exp(v[[4]]) +
Region_data$region5_7*exp(v[[5]]) + Region_data$region6_7*exp(v[[6]]) + Region_data$region7_7*exp(v[[7]]) + Region_data$region8_7*exp(v[[8]]) +
Region_data$region9_7*exp(v[[9]]) + Region_data$region10_7*exp(v[[10]]) + Region_data$region11_7*exp(v[[11]]) + Region_data$region12_7*exp(v[[12]]) +
Region_data$region13_7*exp(v[[13]]) + Region_data$region14_7*exp(v[[14]]) + Region_data$region15_7*exp(v[[15]]) + Region_data$region16_7*exp(v[[16]]) +
Region_data$region17_7*exp(v[[17]]) + Region_data$region18_7*exp(v[[18]]) + Region_data$region19_7*exp(v[[19]]) + Region_data$region20_7*exp(v[[20]])+
Region_data$region21_7*exp(v[[21]]) + Region_data$region22_7*exp(v[[22]]) + Region_data$region23_7*exp(v[[23]]) + Region_data$region24_7*exp(v[[24]]) +
Region_data$region25_7*exp(v[[25]]) + Region_data$region26_7*exp(v[[26]]) + Region_data$region27_7*exp(v[[27]]) + Region_data$region28_7*exp(v[[28]]) +
Region_data$region29_7*exp(v[[29]]) + Region_data$region30_7*exp(v[[30]])
##Choice probability
a <- region1 + region2 + region3 + region4 +region5 + region6 +region7
PPR1 <- region1/a
PPR2 <- region2/a
PPR3 <- region3/a
PPR4 <- region4/a
PPR5 <- region5/a
PPR6 <- region6/a
PPR7 <- region7/a
PR1 <- (PPR1!=0)*PPR1 +(PPR1==0)
PR2 <- (PPR2!=0)*PPR2 +(PPR2==0)
PR3 <- (PPR3!=0)*PPR3 +(PPR3==0)
PR4 <- (PPR4!=0)*PPR4 +(PPR4==0)
PR5 <- (PPR5!=0)*PPR5 +(PPR5==0)
PR6 <- (PPR6!=0)*PPR6 +(PPR6==0)
PR7 <- (PPR7!=0)*PPR7 +(PPR7==0)
##actual Choice
CR_1 <- Data$robotaxi.relocation==1
CR_2<- Data$robotaxi.relocation==2
CR_3<- Data$robotaxi.relocation==3
CR_4<- Data$robotaxi.relocation==4
CR_5<- Data$robotaxi.relocation==5
CR_6<- Data$robotaxi.relocation==6
CR_7<- Data$robotaxi.relocation==7
##log likelihood
LL<-colSums(CR_1*log(PR1) + CR_2*log(PR2) + CR_3*log(PR3) + CR_4*log(PR4) + CR_5*log(PR5) + CR_6*log(PR6)+ CR_7*log(PR7))
}
## maxmizing log likelihood
res <- optim(b0,fr, method = "BFGS", hessian = TRUE, control=list(fnscale=-1))
##
## estimated parameter
b<-res$par
names(b)<-Pname0
#tval<-b/sqrt(-diag(solve(hhh)))
names(tval)<-Pname0
##initial log likelihood ?????
L0 <- hh*log(1/ch)
print(L0)
##final loglikelihood
LL <- res$value
print(LL)
## goodness of fit indicator
## output the results
print((L0-LL)/L0)
##adjusted r2 value
adj_r<-(L0-(LL-length(b)))/L0
print(adj_r)
print(b)
print(tval)
c<-rbind(b,tval)
cc<-cbind(c,L0,LL,adj_r)
报错内容
看到有人说,,利用dim()函数确定colsum函数内的维度,如果不是2维,尝试将格式转化为二维数组。
不知道把dim()函数放在代码哪个位置,或者有没有其他方法?
我来帮你解决一下吧