【发布时间】:2014-12-07 22:04:10
【问题描述】:
我有一个关于 R 中的积分()函数的问题。当我使用积分函数求后验均值时,结果非常小(小于绝对误差)。如果我将上限从 Inf 更改为 0.2 或更小的数字,则结果数字更有意义。为什么较大的上限积分功能无法正常工作?
非常感谢!
以下是我的代码:
dat = read.table("c://AAPL_logret.txt")$V1
mu = 0.005
theta = 200
posterior = function (sigma2, dat)
{
numerator = function (sigma2, dat)
{
out = dexp(sigma2,theta)
for (i in 1:length(dat))
{
out = out * dnorm(dat[i],mu, sqrt(sigma2))
}
return(out)
}
denominator = integrate(numerator,lower = 0, upper = Inf, dat=dat)$value
return (numerator(sigma2,dat)/denominator)
}
curve(posterior(x,dat), from =0, to = 0.006,xlab=expression(sigma^2),
ylab = "Density", cex.axis = 1.3, cex.lab=1.3, col=4,lwd=1.5,lty=4,n=20000)
posterior_times_sigma2 = function(sigma2,dat)
{
return(sigma2 * posterior(sigma2,dat))
}
posteriormean = integrate(posterior_times_sigma2, lower =0, upper= Inf, dat=dat)$value
【问题讨论】:
-
你用不同的用户名转发了很多神经。
-
这个问题似乎是题外话,因为它是一个转发
-
应标记具有不同用户名的重复帖子以引起注意。
标签: r