0

我正在 R 中运行(至少尝试)一个 gibbs 采样器,并且在查看数据时遇到问题。

我正在使用 R Studio

以下是我的代码供参考:

###Step 2
###Draw from truncated normal
for(i in 1:length(cens.list[,1])){

  row.i <- as.numeric(cens.list[i,1])

  mu.i <- as.numeric(x.mat[row.i,] %*% beta)

  bio.set[row.i,var.name] <- rtnorm(1,mean=mu.i,sd=sqrt(var),lower=-Inf,upper=dl)
}

test <- bio.set[which(row.names(bio.set) %in% cens.list[,1]),]

bio.set 包含我正在尝试估算的变量和其他信息

cens.list 包含要估算的删失值列表及其相应的行信息。

dl 是检测限。由于低于该值,被估算的观察结果丢失

问题:当我尝试查看数据(使用View()edit())时,估算值都显示相同的数字(检测限)。无论我是通过测试数据框还是通过 bio.set 本身查看它们,都会发生这种情况。

但是,如果我通过键入单独查看值

bio.set[995,var.name] #Where I set the row number to be one of the imputed rows.

它向我展示了正确绘制的值。

假设数据已正确存储并且只是查看器问题,我可以继续吗?还是我做错了什么?

4

1 回答 1

0

感谢您的回复。当我弄清楚我的问题是什么时,我正在努力创建一个可重现的示例。

基本上发生的事情是 cens.list 包含要估算的值的行号。在创建之后,某些行会因任何原因被删除,但之前的行号由 R 存储

在我提供的代码中,您可以在循环中看到我引用了特定于数据帧当前状态的行号,而不是 row.names。

为了解决这个问题,我将使用一个 id 变量,因为我一直都应该这样做。

在未来的问题中,我将确保我的代码是可重现的。

于 2013-10-10T15:51:16.890 回答