我正在尝试使用具有弱信息的Cauchy估计贝叶斯逻辑模型,其中location = 0且scale = 2.5(Gelman et al, 2008)。我在MCMClogit
包中使用MCMCpack
:
df = read.csv("http://dl.dropbox.com/u/1791181/MCMC.csv")#Read in data
library(MCMCpack)
logpriorfun <- function(beta, location, scale){
sum(dcauchy(beta, location, scale, log=T))
} #From the MCMCpack documentation
mcmc.logit = MCMClogit(SECONDARY.LEVEL ~ AGE + SEX + as.factor(DISTRICT),
tune=.25,
user.prior.density=logpriorfun, location=0, scale=2.5, log=T,
mcmc=10000,
data=df)
但我不断收到以下错误消息:
Error in MCMClogit(SECONDARY.LEVEL ~ AGE + SEX + as.factor(DISTRICT), :
REAL() can only be applied to a 'numeric', not a 'NULL'
我无法看到代码或数据的任何明显问题。如果我拿出先前的选项,代码运行正常。我会很感激任何指针。
答案 0 :(得分:0)
尽管我不知道问题的原因,但我相信相对来说可以节省一点,您可以使用不同的种子重新运行MCMClogit
以获得有效的后验估计。如果您使用相同的种子重新运行,该错误将再次发生。在蒙特卡洛(Monte Carlo)/重新采样设置中,将tryCatch
与MCMClogit
中设置的随机种子一起使用似乎是明智的做法,以避免崩溃。