R Gibbs采样器错误下标越界
R Gibbs sampler error subscript out of bounds
我正在构建一个小型吉布斯采样器,但 R returns:"Error in [<-
(*tmp*
, i, j, value = NA_real_) : subscript out of bounds"。
这一行有问题:
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)
我正在构建一个小型吉布斯采样器,但 R returns:"Error in [<-
(*tmp*
, i, j, value = NA_real_) : subscript out of bounds"。
这一行有问题:
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)