楼主: pjq521
14609 16

[问答] 用optim函数拟合的结果 [推广有奖]

11
pjq521 发表于 2013-5-28 15:00:02
求证1加1 发表于 2013-5-28 14:53
你得先定义函数,不能直接这么定义的。。。这不是matlab也不是maple。。。。
我把我程序发给你看看吧,
  1. >  d<-read.csv(file=file.choose(),header=T)
  2. >  x1<-d$ln目的地面积
  3. >  x2<-d$目的地人口密度
  4. >  x3<-d$目的地GDP
  5. >  x4<-d$目的地距离
  6. >  x5<-d$目的地是否为中心城区
  7. >  y1<-d$出发地人口密度
  8. >  y2<-d$出发地GDP
  9. >  y3<-d$出发地是否为中心城区
  10. >  s1<-d$出行成立
  11. >  s2<-d$出行不成立
  12. > params<-c(0,0,0,0,0,0,0,0,0)
  13. > #定义log-likelihood函数
  14. > LL<-function(params,d)
  15. + {#参数"params"是一个向量.
  16. + #参数"d",是整理之后的数据.
  17. + f<-s1*log(1+exp(-(params[1]*x1+params[2]*x2+params[3]*x3+params[4]*x4+params[5]*x5-params[6]*y1-params[7]*y2-params[8]*y3+params[9])))+s2*log(1+exp(params[1]*x1+params[2]*x2+params[3]*x3+params[4]*x4+params[5]*x5-params[6]*y1-params[7]*y2-params[8]*y3+params[9]))
  18. + ll<-sum(f)
  19. + #log-likelihood函数
  20. + return(ll)
  21. + }
  22. > ##最大似然值的计算
  23. > res<-optim(params,LL,method="BFGS",hessian=TRUE,control=list(fnscale=-1))
  24. > ##参数估计
  25. > b<-res$par
  26. > hhh<-res$hessian
  27. > ##t值的计算
  28. >tval<-b/sqrt(-diag(hhh))
  29. >##最终似然值
  30. >LL<-res$value
  31. >##初始似然值
  32. >L0<-sum(s1)*log(0.5)+sum(s2)*log(0.5)
  33. >##拟合度计算
  34. >##结果输出
  35. >##p^2的值
  36. >cat("roh = ",(L0-LL)/L0)
  37. >##修正的p^2值
  38. >cat("rohbar=",(L0-(LL-length(b)))/L0)
  39. >print(res)
  40. >print(tval)
复制代码
这是我的程序,但是optim就是不给我迭代,为什么

12
pjq521 发表于 2013-5-28 15:00:38
pjq521 发表于 2013-5-28 15:00
我把我程序发给你看看吧,这是我的程序,但是optim就是不给我迭代,为什么
> cat("rohbar=",(L0-(LL-length(b)))/L0)
rohbar= 0.9764778> print(res)
$par
[1] 0 0 0 0 0 0 0 0 0

$value
[1] 0

$counts
function gradient
       1        1

13
求证1加1 发表于 2013-5-28 15:14:54
你再看看有没有输错的,还有就是我不明白为什么要在函数输入里面加d,感觉没这必要,后面没有必要return,直接sum(f)就行了,再者就是你再看看你的数据
个人主页,欢迎订阅http://chenangliu.info/

14
pjq521 发表于 2013-5-28 16:17:24
求证1加1 发表于 2013-5-28 15:14
你再看看有没有输错的,还有就是我不明白为什么要在函数输入里面加d,感觉没这必要,后面没有必要return,直 ...
误于optim(params, LL, method = "BFGS", hessian = TRUE, control = list(fnscale = -1)) :
  non-finite finite-difference value [2]
确实是我数据的格式不对,但是他又出来了个错误,你能告诉我这是什么意思么

15
qinglingxuanfen 发表于 2014-11-14 16:28:04
求助!伽马参数估计出现这情况怎么处理?
> optim(c(1,2),logL,dat=dat)
Error in optim(c(1, 2), logL, dat = dat) :
  function cannot be evaluated at initial parameters
In addition: Warning message:
In lapply(X = x, FUN = .Generic, ...) : NaNs produced

16
qinglingxuanfen 发表于 2014-11-14 16:31:18
pjq521 发表于 2013-5-28 16:17
误于optim(params, LL, method = "BFGS", hessian = TRUE, control = list(fnscale = -1)) :
  non-fin ...
> optim(c(1,2),logL,dat=dat)
Error in optim(c(1, 2), logL, dat = dat) :
  function cannot be evaluated at initial parameters
In addition: Warning message:
In lapply(X = x, FUN = .Generic, ...) : NaNs produced
我这个怎么处理啊求助大神!

17
dw928762571 发表于 2017-10-30 09:46:08
感觉这个对非凸函数没啥用

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 21:42