我正在运行(至少试图)一个吉布斯采样器在R,并有问题,查看数据。
我用的是R工作室
以下是我的代码供参考:
###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.它向我展示了正确绘制的值。
如果数据被正确地存储,并且这只是查看器问题,我能继续吗?还是我做错了什么?
发布于 2013-10-10 15:51:16
谢谢你的回复。当我发现我的问题是什么时,我正在努力创造一个可重复的例子。
基本上发生的事情是,cens.list包含要计算的值的行号。创建后,一些行将被删除,但前面的行号由R存储。
在我介绍的代码中,您可以看到在循环中我引用的是特定于dataframe当前状态的行号,而不是row.names。
为了解决这个问题,我将使用id变量,就像我应该一直做的那样。
在未来的问题中,我将确保我的代码是可以复制的。
https://stackoverflow.com/questions/19251419
复制相似问题