帮助我了解贝叶斯glm中的


13

我正在尝试对此处的数据运行贝叶斯logit 。我在R bayesglm()中的arm包中使用。编码非常简单:

df = read.csv("http://dl.dropbox.com/u/1791181/bayesglm.csv", header=T)
library(arm)
model = bayesglm(PASS ~ SEX + HIGH, family=binomial(link="logit"), data=df)

summary(model) 给出以下输出:

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.10381    0.10240   1.014    0.311    
SEXMale      0.02408    0.09363   0.257    0.797    
HIGH        -0.27503    0.03562  -7.721 1.15e-14 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 2658.2  on 1999  degrees of freedom
Residual deviance: 2594.3  on 2000  degrees of freedom
AIC: 2600.3

请引导我完成此过程。我知道这段代码使用了非常弱的先验(因为我没有指定先验方法),所以如果我使用glm()代替,输出将几乎相同bayesglm()。但是输出应该仍然是贝叶斯精神,对吗?这里的和什么?这些不是常客推论工具吗?他们在这里有不同的解释吗?žpz


这是评论,而不是答案,但这对我来说很有意义。您得到的估计值可能是后验分布最大化的值。它们也可能只是后路的手段?值得检查是否可以。但是,不管确切的细节是什么,一旦有了一些估算,就可以按照通常的Estimate / Std对其进行测试。错误-> z评分程序,如果后验足够接近法线(在通常保持一定条件的情况下变为法线),该方法将起作用。
艾里克(Erik)2012年

埃里克...你是对的:系数确实是后验密度的平均值。我的问题是关于p值和z值。他们在这里代表什么?
user3671 2012年

好。如果您具有大约正态分布的密度,则可以通过采用z分数=均值/分布的标准偏差并将其与标准正态分布进行比较来测试其均值是否为零。然后,您会发现您的值或更大的值在标准正态分布-> p值下不太可能出现。有关详细信息,请参见Wikipedia上的z-score。
艾里克(Erik)

嗯,是。但是,为什么要在贝叶斯环境中这样做呢?在贝叶斯推断中,点估计是我对随机参数的最佳猜测,因此无需对其进行测试。最多,我可以包括一个“可信区间”,它与一个常客主义的“置信区间”等效,但其统计解释却大不相同。这是有关summary()输出的令人困惑的部分。精神是贝叶斯,但输出是常客?
user3671 2012年

一点是,由于您使用先验,因此您获得的估计会有所不同。而且,如果要以贝叶斯方式表明某事有效果,则点估计是“最佳猜测”,那么您将尝试证明可信区间不包含零。当您以均值和sd(渐近正确)相同的法线近似后验时,(1-p / 2)可信区间是包含零的最大对称可信区间,因此您的答案基本相同。p是上述的p值。
艾瑞克(Erik)

Answers:


16

好问题!尽管存在贝叶斯p值,并且arm包的作者之一是倡导者,但是您在输出中看到的不是贝叶斯p值。检查类model

class(model)
"bayesglm" "glm"      "lm" 

并且您可以看到类bayesglm继承自glm。此外,对手臂包装的检查未显示出针对贝叶镜物体的特定汇总方法。所以当你这样做

summary(model)

你实际上在做

summary.glm(model)

并得到结果的常识性解释。如果您想要更多的贝叶斯视角,arm的功能是display()


+1好答案!这就是R的麻烦,有这么多高度聪明的统计学家编写可怕的代码,使这类地雷无处不在。
Bogdanovist

在设计者看来,这似乎是一个刻意的选择,而不是疏忽大意。
atiretoo-恢复莫妮卡2012年

阅读了链接后,我同意这个意图,但是在那种情况下,应该重新实现summary()以便仅调用display()而不是在没有警告的情况下给出废话。提出这个问题的人被破坏了R的用户模型的代码绊倒了,该模型已经由他们使用过的所有其他对象建立。那是糟糕的编程习惯。
Bogdanovist

2
非常感谢,ati​​retoo。这就提出了另一个问题。display()和summary()有什么区别?在我看来,前者的输出只是后者的输出,减去两列,并四舍五入为两位数。就像您在上面链接的Gelman的帖子中所示。
user3671 2012年

是的,从安德鲁·盖尔曼(Andrew Gelman)博客的讨论中看来,他们将在将来的arm软件包版本中解决此问题。
atiretoo-恢复莫妮卡2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.