[英]R Gibbs sampler error subscript out of bounds
我正在构建一个小的gibbs采样器,但R返回:“ [<-
( *tmp*
,i,j,value = NA_real_)错误:下标超出范围”。
问题在于这条线:
mu[i,j] <- alpha[i]+beta[i]*(x[j]-mean(x[]))
我只是不明白为什么?
GS <- function(x){
alpha <- c()
beta <- c()
mu <- matrix()
Y <- matrix ()
for (i in 1:x){
alpha[i] <- rnorm(1,0)
beta[i] <- rnorm(1,0)
for (j in 1:5){
mu[i,j] <- alpha[i]+beta[i]*(x[j]-mean(x[]))
Y[i,j] <- rnorm(1, mu[i,j], 1)
}
Y
}
}
问题在于您不初始化向量或矩阵,因此向量的长度为0,而矩阵仅包含一个NA。 因此,由于该位置不存在,因此您无法为该位置i写任何内容。
更改
alpha <- c()
beta <- c()
mu <- matrix()
Y <- matrix ()
至
alpha <- numeric(x)
beta <- numeric(x)
mu <- matrix(0,x,5)
Y <- matrix (0,x,5)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.