楼主: drbugger
2358 1

[问答] R语言极大似然估计遇到的问题 [推广有奖]

  • 0关注
  • 0粉丝

高中生

32%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
1 点
热心指数
0 点
信用等级
0 点
经验
104 点
帖子
11
精华
0
在线时间
39 小时
注册时间
2009-8-28
最后登录
2024-4-4

楼主
drbugger 发表于 2015-4-9 19:48:29 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大家好,向诸位请教,我在使用optim包时遇到了问题
控制台输出为
  [1] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[19] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[37] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[55] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[73] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[91] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[109] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[127] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[145] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[163] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[181] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

In sqrt(B * B - C) : 产生了NaNs

我检验了一遍,和小于0是没有关系的,应该是循环上出了问题,R自带的向量循环的确让我这种初学者防不胜防,但实在不明白哪里除了错。
我仔细看了看程序,没有发现似然函数的构建涉及到迭代问题,只是一个for循环重复计算似然函数而已,但始终调试不出来,不知道是怎么回事,代码如下:
  1. logy<-read.csv("C:/sh/citicf/R/510050.csv")
  2. logy
  3. ly<-array(logy$y)
  4. ly

  5. f<-function(theta)
  6. {
  7.         vt<-0.23
  8.         l<-0.05        
  9.         miu<-theta[1]
  10.         alpha<-theta[2]
  11.         beta<-theta[3]
  12.         sigma<-theta[4]
  13.         rho<-theta[5]
  14.         deltaT<-1/365
  15.         for(i in 2:318)
  16.         {
  17.                 beta1<-1-beta*deltaT
  18.                 D<-2*3.1415926*rho*sqrt(1-rho*rho)*deltaT
  19.                 deltayt<-ly[i]-ly[i-1]
  20.                 B<--alpha*deltaT-rho*sigma*(deltayt-miu*deltaT)
  21.                 C<-alpha*alpha*deltaT*deltaT+2*rho*sigma*alpha*deltaT*(deltayt-miu*deltaT)+sigma*sigma*(deltayt-miu*deltaT)*(deltayt-miu*deltaT)-2*vt*vt*a*sigma*sigma*(1-rho*rho)*deltaT               
  22.                 vt1<-sqrt(B*B-C)-B                        
  23.                 a<-(beta1*beta1+rho*sigma*beta1*deltaT+sigma*sigma*deltaT*deltaT/4)/(2*sigma*sigma*(1-rho*rho)*deltaT)
  24.                 bt<-((vt1-alpha*deltaT)*(vt1-alpha*deltaT)-2*rho*sigma*(vt1-alpha*deltaT)*(deltayt-miu*deltaT)+sigma*sigma*(deltayt-miu*deltaT)*(deltayt-miu*deltaT))/(2*sigma*sigma*(1-rho*rho)*deltaT)
  25.                 dt<-exp(((2*beta1+rho*sigma*deltaT)*(vt-alpha*deltaT)-(2*rho*sigma*beta1+sigma*sigma*deltaT)*(deltayt-miu*deltaT))/(2*sigma*sigma*(1-rho*rho)*deltaT))/D
  26.                 lt<-dt*(a*bt)^(-0.25)*exp(-2*sqrt(a*bt))
  27.                 l<-l*lt
  28.                 vt<-vt1
  29.         }
  30.         return (-l)
  31.         
  32.         
  33. }
  34. f(c(0.05,0.15,0.08,0.25,0.03))
复制代码


二维码

扫码加我 拉你入群

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

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

关键词:极大似然估计 似然估计 极大似然 R语言 for循环 optim 似然估计

沙发
nuomin 发表于 2015-4-10 09:10:02
给一段数据,可以帮你试试。R的最大化函数需要自己在似然函数中加入错误判断语句。这一点STATA做的比R要好

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

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