Bayesian glmの値の理解を手伝ってください


13

ここでデータに対してベイジアンロジットを実行しようとしています。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


これはコメントであり、答えではありませんが、これは私にとって意味のあることです。おそらく事後分布が最大化される値である推定値を取得します。また、それらが単に後部の手段である可能性もありますか?できればチェックアウトする価値があります。ただし、正確な詳細に関係なく、推定値を取得したら、通常の推定/標準でテストできます。エラー-> z-scoreプロシージャは、事後が法線に十分近い場合に機能します(通常保持されるいくつかの条件下で法線になります)。
エリック

エリック...あなたは正しいです。係数は確かに事後密度の平均です。私の質問は、p値とz値についてです。ここで何を表していますか?
user3671

OK。ほぼ正規分布している密度がある場合、zスコア=平均/分布の標準偏差を取得し、それを標準正規分布と比較することで、平均がゼロかどうかをテストできます。次に、標準正規分布-> p-valueの下で、値またはより大きな値がどれほど低いかを調べます。詳細については、Wikipediaのzスコアを参照してください。
エリック

はい、そうです。しかし、なぜベイジアン環境でそれをやるのですか?ベイジアン推論では、ポイント推定値はランダムパラメーターに関する私の最良の推測であるため、テストする必要はありません。せいぜい、「信頼区間」を含めることができます。これは、頻繁な「信頼区間」に相当しますが、その統計的解釈は大きく異なります。これは、summary()出力に関する紛らわしい部分です。精神はベイジアンですが、出力は頻繁に発生しますか?
user3671

1つのポイントは、事前値を使用したため、推定値が異なることです。そして、何かが効果を持っていることをベイジアンの方法で示したい場合、ポイント推定は「最良の推測」ですが、信頼できる間隔にゼロが含まれていないことを示すことを試みます。同じ平均とsd(漸近的に正しい)を持つ法線で事後を近似する場合、(1-p / 2)信頼区間はゼロを含む最大の対称信頼区間であるため、答えは基本的に同じです。pは上記のp値です。
エリック

回答:


16

いい質問です!ありますが、ベイジアンp値、およびアームパッケージの著者の一人は、提唱者である、あなたがあなたの出力に見ていることはありませんベイズp値。クラスを確認するmodel

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

クラスbayesglmがglmを継承していることがわかります。さらに、armパッケージの検査では、bayesglmオブジェクトの特定の要約方法は示されていません。だからあなたがするとき

summary(model)

あなたは実際にやっています

summary.glm(model)

となっfrequentist結果の解釈を。よりベイジアンの視点が必要な場合、腕の機能はdisplay()


+1優れた答え!これはRの問題です。この種の地雷を放置する恐ろしいコードを書く非常に多くの高度な統計学者がいます。
ボグダノビスト

見落としというよりは、デザイナー側の意図的な選択のようです。
atiretoo-モニカの復活

リンクを読んだ後、私はその意図に同意しますが、その場合、警告なしでナンセンスな結果を出すのではなく、単純にdisplay()を呼び出すようにsummary()を再実装する必要があります。この質問をした人は、これまで使用した他のすべてのオブジェクトによって確立されたRのユーザーモデルを壊すコードにつまずいた。それはひどいプログラミングの習慣です。
ボグダノビスト

2
どうもありがとう、atiretoo。これは別の問題を提起します。display()とsummary()の違いは何ですか?前者からの出力は、後者からの出力であり、2列を差し引いて2桁に丸められているように思えます。そのように見えるのは、上でリンクしたGelmanの投稿からです。
user3671

はい、Andrew Gelmanのブログでの議論から、armパッケージの将来のバージョンでこれを修正するようです。
atiretoo-モニカの復活
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.