回帰パラメータの信頼区間:ベイジアン対クラシック


15

長さnの2つの配列xとyが与えられた場合、モデルy = a + b * xに適合し、勾配の95%信頼区間を計算します。これは(b-デルタ、b +デルタ)で、bは通常の方法で検出され、

delta = qt(0.975,df=n-2)*se.slope

se.slopeは、勾配の標準誤差です。Rから勾配の標準誤差を取得する1つの方法はsummary(lm(y~x))$coef[2,2]です。

ここで、xとyが与えられた勾配の尤度を記述し、これに「フラット」を掛け、MCMC手法を使用して事後分布からサンプルmを描画するとします。定義する

lims = quantile(m,c(0.025,0.975))

私の質問:(lims[[2]]-lims[[1]])/2上記で定義されたデルタとほぼ等しいですか?

以下の補遺は、これら2つが異なるように見える単純なJAGSモデルです。

model {
 for (i in 1:N) {
  y[i] ~ dnorm(mu[i], tau)
  mu[i] <- a + b * x[i]
 }
 a ~ dnorm(0, .00001)
 b ~ dnorm(0, .00001)
 tau <- pow(sigma, -2)
 sigma ~ dunif(0, 100)
}

Rで次を実行します。

N <- 10
x <- 1:10
y <- c(30.5,40.6,20.5,59.1,52.5,
       96.0,121.4,78.9,112.1,128.4)
lin <- lm(y~x)

#Calculate delta for a 95% confidence interval on the slope
delta.lm <- qt(0.975,df=N-2)*summary(lin)$coef[2,2]

library('rjags')
jags <- jags.model('example.bug', data = list('x' = x,'y' = y,'N' = N),
                   n.chains = 4,n.adapt = 100)
update(jags, 1000)
params <- jags.samples(jags,c('a', 'b', 'sigma'),7500)
lims <- quantile(params$b,c(0.025,0.975))
delta.bayes <- (lims[[2]]-lims[[1]])/2

cat("Classical confidence region: +/-",round(delta.lm, digits=4),"\n")
cat("Bayesian confidence region:  +/-",round(delta.bayes,digits=4),"\n")

そして取得:

古典的信頼領域:+/- 4.6939

ベイズ信頼領域:+/- 5.1605

これを複数回実行すると、ベイジアン信頼領域は従来のものより一貫して広くなります。これは、私が選択した事前事項によるものですか?

回答:


9

「問題」はシグマの前にあります。情報量の少ない設定を試してください

tau ~ dgamma(1.0E-3,1.0E-3)
sigma <- pow(tau, -1/2)

ジャグファイル内。次に、束を更新します

update(10000)

パラメータを取得し、関心のある量を要約します。これは、クラシックバージョンと適切に並ぶはずです。

明確化:更新は、事前に選択したものが何であれ、行き先を確実に取得するためのものです。ただし、このような拡散事前分布とランダムな開始値を持つモデルのチェーンは収束に時間がかかります。実際の問題では、何かを要約する前に収束をチェックしますが、収束はあなたの例の主な問題ではないと思います。


@Ringold、何が効いた?シグマまたはアップデートの事前?または両方?それらを個別にテストしましたか?
好奇心が

あるべきsigma <- pow(tau, -1/2)sigma <- 1/sqrt(tau)
おさるの

@トーマス、まったく正しい。タイプミスを修正。
共役前

それは元のコードにありますので、率直に言って、それは...違いの原因かもしれませんが
conjugateprior

6

bの後部からサンプリングする場合| yと(定義したとおりの)リムの計算は、(b-delta、b + delta)と同じでなければなりません。具体的には、b |の事後分布を計算する場合 フラット事前分布の下でのyは、bの古典的なサンプリング分布と同じです。

詳細については、次を参照してください。(2003)。ベイジアンデータ分析。CRCプレス。セクション3.6

編集:

Ringold、あなたが観察した行動は、ベイジアンの考え方と一致しています。ベイズの信頼できる間隔(CI)は、一般的に古典的な間隔よりも広くなっています。そしてその理由は、あなたが正しく推測したように、ハイパープライアは未知のパラメーターのために変動性を考慮に入れているからです。

これらのような単純なシナリオの場合(一般的ではありません):

ベイジアンCI>経験的ベイジアンCI>クラシックCI; > ==より広い


JAGSを使用していくつかのコードを追加しましたが、別の答えが得られるようです。私の間違いはどこですか?これは事前の理由で起こっていますか?
リングルド

今、私は混乱しています。最初に、フラット事前分布の下でのb | yの事後分布は、bの古典的なサンプリング分布と同じであると言いました。次に、ベイジアンCIは従来のものよりも広いとおっしゃいました。分布が同じ場合、どのように幅を広げることができますか?
リングルド

すみません-@CPが彼のコメントで提案したことを伝えておくべきでした。理論的には、フラットな事前CIと従来のCIでのb | yは同じですが、CPが示唆するような非常に拡散した事前を使用し、MCMC反復を多く使用しない限り、JAGSで実際に行うことはできません。
suncoolsu

質問を編集してコメントを追加できるように、アカウントを統合しました。それでも、ここをクリックしてアカウントを登録してください:stats.stackexchange.com/users/login ; Gmail OpenIDを使用して、数秒でそれを行うことができ、ここでアカウントを失うことはもうありません。

おかげで、私は登録しました。そして、この質問に答えてくれた人々に感謝します。事前にガンマを試します。
リングルド

5

線形ガウスモデルの場合は、bayesmパッケージを使用することをお勧めします。これは、準共役の事前分布のファミリーを実装し、ジェフリーズの事前分布はこのファミリーの制限ケースです。以下の例を参照してください。これらは古典的なシミュレーションであり、MCMCを使用する必要はありません。

回帰パラメーターに関する信頼区間が通常の最小二乗信頼区間と正確に同じかどうかは覚えていませんが、いずれにしても非常に近いです。

> # required package
> library(bayesm)
> # data
> age <- c(35,45,55,65,75)
> tension <- c(114,124,143,158,166)
> y <- tension
> # model matrix
> X <- model.matrix(tension~age)
> # prior parameters
> Theta0 <- c(0,0)
> A0 <- 0.0001*diag(2)
> nu0 <- 0
> sigam0sq <- 0
> # number of simulations
> n.sims <- 5000
> # run posterior simulations
> Data <- list(y=y,X=X)
> Prior <- list(betabar=Theta0, A=A0, nu=nu0, ssq=sigam0sq)
> Mcmc <- list(R=n.sims)
> bayesian.reg <- runireg(Data, Prior, Mcmc)
> beta.sims <- t(bayesian.reg$betadraw) # transpose of bayesian.reg$betadraw
> sigmasq.sims <- bayesian.reg$sigmasqdraw
> apply(beta.sims, 1, quantile, probs = c(0.025, 0.975))
[,1] [,2]
2.5% 53.33948 1.170794
97.5% 77.23371 1.585798
> # to be compared with: 
> frequentist.reg <- lm(tension~age)

3

単純な線形回帰は、ジェフリーの以前の分析と古典分析とベイジアン分析の間で分析的に同一であり、どちらも分析的であるため、ベイジアン分析を行うためにMCMCなどの数値手法に頼るのは少し奇妙に思えます。MCMCは単なる数値積分ツールであり、ベイジアン法は解析的に扱いにくい複雑な問題で使用できます。これは、ニュートンラプソンやフィッシャースコアリングが扱いにくい古典的な問題を解決するための数値手法と同じです。

1 / s(sは誤差の標準偏差)に比例するジェフリーの事前p(a、b、s)を使用した事後分布p(b | y)は、位置b_ols、スケールse_b_ols( " 「通常の最小二乗」推定値のols)、およびn-2の自由度。ただし、b_olsのサンプリング分布は、位置b、スケールse_b_ols、自由度n-2のスチューデントtです。したがって、bとb_olsがスワップされていることを除いて同一であるため、区間の作成に関しては、信頼区間の「est +-bound」が信頼区間で「est-+ bound」に反転します。

したがって、信頼区間と信頼区間は分析的に同一であり、どの方法が使用されるかは重要ではありません(追加の事前情報がない場合)。MCMCでの結果は、MCMCで使用される特定の近似が、正確な分析の信頼できる間隔と比較して広すぎる信頼できる間隔を与えることです。これはおそらく、おおよそのベイジアン解が正確なベイジアン解よりも保守的であるように見えるという点で(近似をより良くしたいのですが)良いことです。


それほど奇妙ではありません。解析的に解決できる問題に対する答えを見つけるために数値的手法を使用する1つの理由は、ソフトウェアを正しく使用していることを確認するためです。
リングルド

1
f(β0,β1,,βp,σ)Pr(Y>10x)バツ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.