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)