【问题标题】:Choosing prior distribution in logit model在 logit 模型中选择先验分布
【发布时间】:2013-01-11 11:54:50
【问题描述】:

我正在 R 的 winbugs 中进行 logit 回归分析。我必须强制该模型的所有系数为正。因此,我对所有系数都使用了统一的先验,但 winbugs 对此并不满意:它会生成一个愚蠢的错误窗口。当我使用dnorm(0.0,1.0E-4)) 作为所有系数的先验时,问题就解决了。如何在下面给出的这个模型中获得正 beta?

model
{
for (i in 1:m) {
 # Linear regression on logit
 logit(p[i]) <- beta.concern2*DCEconcern2[i] + beta.concern3*DCEconcern3[i] +     beta.concern4*DCEconcern4[i] + beta.concern5*DCEconcern5[i] +
beta.breath2*DCEbreath2[i] + beta.breath3*DCEbreath3[i] + beta.breath4*DCEbreath4[i] + beta.breath5*DCEbreath5[i] + 
beta.weath2*DCEweath2[i] +beta.weath3*DCEweath3[i] +beta.weath4*DCEweath4[i] +beta.weath5*DCEweath5[i] +
beta.sleep2*DCEsleep2[i] +beta.sleep3*DCEsleep3[i] +beta.sleep4*DCEsleep4[i] +beta.sleep5*DCEsleep5[i] +
beta.act2*DCEact2[i] +beta.act3*DCEact3[i] +beta.act4*DCEact4[i]     +beta.act5*DCEact5[i]


y2[i] ~ dbern(p[i])
}
beta.concern2 ~ dunif(0,100)
beta.concern3 ~ dunif(0,100)
beta.concern4 ~ dunif(0,100)
beta.concern5 ~ dunif(0,100)
beta.breath2 ~ dunif(0,100)
beta.breath3 ~ dunif(0,100)
beta.breath4 ~ dunif(0,100)
beta.breath5 ~ dunif(0,100)
beta.weath2 ~ dunif(0,100)
beta.weath3 ~ dunif(0,100)
beta.weath4 ~ dunif(0,100)
beta.weath5 ~ dunif(0,100)
beta.sleep2 ~ dunif(0,100)
beta.sleep3 ~ dunif(0,100)
beta.sleep4 ~ dunif(0,100)
beta.sleep5 ~ dunif(0,100)
beta.act2 ~ dunif(0,100)
beta.act3 ~ dunif(0,100)
beta.act4 ~ dunif(0,100)
beta.act5 ~ dunif(0,100)
}

【问题讨论】:

  • 谁有权限请把这个迁移到 stats.se(我标记了它)..

标签: error-handling winbugs


【解决方案1】:

试试

dnorm(0, 1.0E-8)I(0, 1.0E8)

请注意 1.0 而不是 10,这会导致“预期的右括号”错误。

【讨论】:

    【解决方案2】:

    在你的情况下,我更喜欢半平法线,即类似

    dnorm(0, 1.0E-8)I(0, 1.0E8)
    

    试一试。

    编辑:添加的I(a, b) 只是将分布限制在从ab 的区间内。

    【讨论】:

    • 我在所有的测试版中都使用了beta.concern2 ~ dnorm(0, 1.0E-8)I(0, 10E8),但是在 winbugs 中出现了另一个错误和一个窗口。该窗口显示了我存储在 .txt 文件中的模型,错误提示为 display(log) check(C:/Users/Desktop/Dissertation2/Bayesian/winbugslogit.txt) expected right parenthesis data(C:/Users/AppData/Local/Temp/RtmpwjMuDE/data.txt) 任何想法?
    • @EDo 这似乎与先前的选择无关,乍一看,但可能是,因为 winbugs 错误绝对无法解读......我会尝试 jags,它会提供更易于理解的错误消息。跨度>
    • 当我对 beta 使用普通先验时,代码完美运行。因此,我认为它必须是事先分配,但当然不是 %100 。另外,请您简要解释一下dnorm(0, 1.0E-8)I(0, 10E8) 的作用。最后,jags 是否使用与 Winbugs 相同的语言并做 winbugs 的工作?
    • @Edo,看我的编辑。是的,您可以在 jags 中运行相同的模型。有一些差异,但这个模型非常基本。
    猜你喜欢
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多