[英]R help. I'm running a Simple Gibbs Sampler for mu and sig^2 for normal data using informative non-conjugate priors
Mu的分布为N(0,1),sig ^ 2的分布为IGamma(a,b),其中a = 1,b =2。我正在尝试创建几个图(直方图,散点图,ACF,PACF ),但始终收到错误消息“ xy.coords(x,y,xlabel,ylabel,log)中的错误:'x'和'y'的长度不同”
这可能是一个愚蠢的问题,但我是r的新手。 这是我到目前为止运行的程序
# Gibbs sampler, MODEL 2: semi-conjugate normal model
#
# Density of inverse gamma distribution
#dinvgamma = function( x, shape, rate )
{
exp( shape * log( rate ) - lgamma( shape ) -( shape+1)*log(x) - rate/x )
}
nn = 200
yy = rnorm( nn, 1, 4 )
mu.0 = 1.0
sig2.0 = 4^2
a = 2
b = 1
M = 10000
mu = rep( 0, 10000 )
sig2 = rep( 1, 10000 )
mean.y = mean( yy )
var.y = var( yy )
mu[1] = mean.y
sig2[1] = var.y
for( ii in 2:M ) {
mu.star <- ((1/sig2.0)*mu.0 + (nn/sig2 [ii-1])*mean(yy))/((1/sig2.0)+(nn/sig2 [ii- 1]))
sig2.star <- 1/((1/sig2.0)+(nn/sig2[ii-1]))
# sample mu from its full cond.
#
mu[ii] = rnorm( 1, mu.star, sqrt( sig2.star ))
a.star <- a + (nn/2)
b.star <- (sum((yy-mu [ii])^2)/2) + b
# sample sig2 from its full cond.
#
sig2[ii] = 1 / rgamma( 1, a.star, rate = b.star )
## print( c( mu[ii], sig2[ii] ))
}
mu <- mu[9001:length(mu)]
sig2 <- sig2[9001:length(mu)]
#
# Time series
#
par(mfrow=c(2,2))
plot( 1:M, mu, type="l", xlab="Iteration", xlim=c(0, 50), ylim=c(0, 100),
main= "Mu" )
hist( mu, prob = T )
x = seq( min(mu), max( mu ), len=200 )
lines( x, dnorm( x, mean=mu.0, sd=sqrt(sig2.0) ), col=2, lwd=2)
acf( mu )
pacf( mu )
#++++++++++++++++++++++++++++++++++
par(new=TRUE)
par(mfrow=c(2,2))
plot( 1:M, sig2, type="l", xlab="Iteration", ylab="sig^2",xlim=c(0, 50), ylim=c(0, 100), main= "sig^2" )
hist( sig2, prob = T )
x = seq( 0, max( sig2 ), len=200 )
lines( x, dinvgamma( x, shape=a, rate=b ), col=2, lwd=2)
acf( sig2 )
pacf( sig2 )
par(new=TRUE)
plot(mu, sig2, main="Scatterplot Example", xlim=c(0, 50), ylim=c(0, 100),xlab="mu ", ylab="sig2 ", pch=19)
任何帮助将不胜感激。 我绝不幻想我的代码是有效的甚至是接近它的代码,因此,您认为必要的任何更改,请随时告诉我
您的问题似乎来自重新定义以下两个变量:
mu <- mu[9001:length(mu)]
sig2 <- sig2[9001:length(mu)]
我将它们注释掉,脚本运行良好,可以根据需要生成图(大概)。 也许看看您如何重新定义mu
和sig2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.