全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
16939 3
2016-04-10
for(t in 3:n)
  {
    sigma[t]=sqrt(exp(p[1]+p[2]*log(sigma[t-1]^2)+p[3]*x[t-1]+p[8]*x[t-2]))
    l=dnorm(p[4]+p[5]*log(sigma[t]^2)+p[6]*z[t]+p[7]*(z[t]^2-1),p[9])
    m=gamma((p[10]-1)/2)*sqrt(p[10]-2)*(p[11]-1/p[11])/(sqrt(pi)*gamma(p[10]/2))
    s=sqrt((p[11]^2+1/p[11]-1)-m^2)
    if(R[t]<m*sigma[t]/s)
      h=2*p[11]*s*gamma((p[10]+1)/2)*(1+(p[11]*(s*R[t]/sigma[t]+m))^2/p[10]*sigma[t]^2)^(-(p[10]+1)/2)/(sigma[t]^2*gamma(p[10]/2)*sqrt(pi*p[10])*(1+p[11]^2))
    else
      h=2*p[11]*s*gamma((p[10]+1)/2)*(1+((s*R[t]/sigma[t]+m)/p[11]^2)/p[10]*sigma[t]^2)^(-(p[10]+1)/2)/(sigma[t]^2*gamma(p[10]/2)*sqrt(pi*p[10])*(1+p[11]^2))
  }
Error in if (R[t] < m * sigma[t]/s) h = 2 * p[11] * s * gamma((p[10] +  :
  missing value where TRUE/FALSE needed
In addition: Warning message:

In sqrt((p[11]^2 + 1/p[11] - 1) - m^2) : NaNs produced
请问这是哪里出问题了呢?

二维码

扫码加我 拉你入群

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

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

全部回复
2016-4-10 19:18:07
if语句里的R[t]或是m*sigma[t]/s有空值,所以导致if语句无法进行比较,检查一下把空值填上了就行。或是不比较空值,你的if语句外在套个if,过滤控制。比如,你的R[t]里面有控制,就用语法if(!is.na(R[t])) {if(R[t]<m*sigma[t]/s)...esle...}
二维码

扫码加我 拉你入群

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

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

2016-4-10 19:35:52
梦回上古 发表于 2016-4-10 19:18
if语句里的R[t]或是m*sigma[t]/s有空值,所以导致if语句无法进行比较,检查一下把空值填上了就行。或是不比 ...
6365.tmp.png 把R[t]改成r[t]不报错了,但是也没有结果了~
二维码

扫码加我 拉你入群

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

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

2019-2-21 20:55:06
梦回上古 发表于 2016-4-10 19:18
if语句里的R[t]或是m*sigma[t]/s有空值,所以导致if语句无法进行比较,检查一下把空值填上了就行。或是不比 ...
正解,太感谢了
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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