> s1<-d$ln人口密度
> s2<-d$ln面积
> x1<-d$GDP
> x2<-d$距离
> x3<-d$是否中心城区
> params<-c(0,0,0,0,0,0,0,0,0)
> #定义log-likelihood函数
> LL<-function(params,d)
+ {#参数"params"是一个向量.
+ #参数"d",是整理之后的数据.
+ f<-(-x4)*log(1+exp(-params[1]*(params[2]*s1+params[3]*s2+params[4]*x1+params[5]*x2+params[6]*x3-params[7]*x1+params[8]*x2+params[9]*x3)))
+ ll<-sum(log(f))
+ ll<-sum(log(f))
+ #log-likelihood函数
+ return(ll)
+ #函数是最小化一个函数的值,但我们但我们是要最大化log-
+ #likeilhood函数,所以需要在“ll”前加个“-”号。
+ }
> ##最大似然值的计算
> res<-optim(params,LL,method="BFGS",hessian=TRUE,control=list(fnscale=-1))
错误于optim(params, LL, method = "BFGS", hessian = TRUE, control = list(fnscale = -1)) :
'vmmin'的初始值不能为无穷大
此外: 警告信息:
1: In log(f) : 产生了NaNs
2: In log(f) : 产生了NaNs
> ##参数估计
> b<-res$par
错误: 找不到对象'res'
> hhh<-res$hessian
错误: 找不到对象'res'
> ##t值的计算
> tval<-b/sqrt(-diag(solve(hhh)))
错误: 找不到对象'b'
> ##初步似然值
> L0<-colSums((-x4)*log(1+exp(-params[1]*(params[2]*s1+params[3]*s2+params[4]*x1+params[5]*x2+params[6]*x3-params[7]*x1+params[8]*x2+params[9]*x3)))
> ##最终似然值
> LL<-res$value
错误: 找不到对象'res'
> ##拟合度计算
> ##结果输出
> ##p^2的值
> cat("roh = ",(L0-LL)/L0)
错误于cat("roh = ", (L0 - LL)/L0) : 找不到对象'L0'
> ##修正的p^2值
> cat("rohbar=",(L0-(LL-length(b)))/L0)
错误于cat("rohbar=", (L0 - (LL - length(b)))/L0) : 找不到对象'L0'
> print(res)
错误于print(res) : 找不到对象'res'
> print(tval)
错误于print(tval) : 找不到对象'tval'
请问那个optim函数出错的原因是什么?还有此外: 警告信息:
1: In log(f) : 产生了NaNs
2: In log(f) : 产生了NaNs
这是什么意思
下面,有我改过的代码,现在把数据奉上