Regresyon parametreleri için güven aralıkları: Bayesci ve klasik


15

Her ikisi de n uzunluğunda iki x ve y dizisi göz önüne alındığında, y = a + b * x modeline uyuyorum ve eğim için% 95 güven aralığı hesaplamak istiyorum. Bu, b'nin olağan şekilde bulunduğu ve

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

ve se.slope, eğimdeki standart hatadır. R'den eğimin standart hatasını almanın bir yolusummary(lm(y~x))$coef[2,2] .

Şimdi x ve y verilen eğimin olasılığını yazdığımı, bunu daha önce "düz" ile çarptığımı ve posterior dağılımdan bir m örneği çizmek için bir MCMC tekniği kullandığınızı varsayalım . Tanımlamak

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

Benim sorum: (lims[[2]]-lims[[1]])/2yukarıda tanımlandığı gibi yaklaşık deltaya eşit mi?

Ek Aşağıda, bu ikisinin farklı olduğu basit bir JAGS modeli yer almaktadır.

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'de aşağıdakileri çalıştırıyorum:

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")

Ve Al:

Klasik güven bölgesi: +/- 4.6939

Bayes güven bölgesi: +/- 5.1605

Bunu defalarca tekrarlayan Bayes güven bölgesi, klasik bölgeden sürekli olarak daha geniştir. Peki bu benim tercih ettiğim öncelikler yüzünden mi?

Yanıtlar:


9

'Sorun' daha önce sigma üzerindedir. Daha az bilgilendirici bir ayar deneyin

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

jags dosyanızda. Sonra bir demet güncelleyin

update(10000)

parametreleri alın ve ilgi miktarınızı özetleyin. Klasik versiyon ile oldukça iyi hizalanmalıdır.

Açıklama: Güncelleme sadece karar vermeden önce nereye giderseniz gidin nereye gideceğinizden emin olmak içindir, bununla birlikte yaygın önceliklere ve rastgele başlangıç ​​değerlerine sahip modeller için zincirlerin birleşmesi daha uzun sürer. Gerçek problemlerde, herhangi bir şeyi özetlemeden önce yakınsamayı kontrol edersiniz, ancak yakınsama örneğinizdeki ana sorun değildir sanmıyorum.


@Ringold, ne işe yaradı? Sigma veya güncelleme öncesinde? Ya da her ikisi de? Bunları ayrı ayrı test ettiniz mi?
Meraklı

olmalı sigma <- pow(tau, -1/2)ya dasigma <- 1/sqrt(tau)
Meraklı

@Tomas, oldukça doğru. Yazım hatası düzeltildi.
konjugateprior

Açıkçası bu orijinal kodda olduğu için farkın kaynağı olabilir ...
Konjugateprior

6

Eğer b posteriorundan örnek alırsanız | y ve lims hesapla (tanımladığınız gibi) (b - delta, b + delta) ile aynı olmalıdır. Özellikle, b'nin arka dağılımını hesaplarsanız | Daha önce bir daire altında, b'nin klasik örnekleme dağılımı ile aynıdır.

Daha fazla ayrıntı için bakınız: Gelman ve ark. (2003). Bayesci Veri Analizi. CRC tuşuna basın. Bölüm 3.6

Düzenle:

Ringold, gözlemlediğiniz davranış Bayesci fikirle tutarlıdır. Bayesian Güvenilir Aralığı (CI) genellikle klasik olanlardan daha geniştir. Nedeni, doğru tahmin ettiğiniz gibi, hiperpriorlar, bilinmeyen parametreler nedeniyle değişkenliği dikkate alır.

Bunlar gibi basit senaryolar için (GENEL DEĞİL):

Baysian CI> Ampirik Bayesian CI> Klasik CI; > == daha geniş


Farklı bir yanıt alıyor gibi görünüyor JAGS kullanarak bazı kod ekledi. Benim hatam nerede? Bu öncelikler yüzünden mi oluyor?
Ringold

Şimdi kafam karıştı. İlk olarak, b | y'nin düz bir daire altında posterior dağılımının b'nin klasik örnekleme dağılımı ile aynı olduğunu söylediniz. Sonra Bayesci CI'nın klasik olandan daha geniş olduğunu söylediniz. Dağıtımların aynı olması nasıl daha geniş olabilir?
Ringold

Üzgünüz - @CP'nin yorumlarında ne önerdiğini söylemeliydim. Teorik olarak, düz bir önceki ve klasik CI altında b | y aynıdır, ancak CP'nin önerdiği gibi çok çok yaygın ve çok fazla MCMC yinelemesi kullanmadığınız sürece bunu JAGS'de pratik olarak yapamazsınız.
suncoolsu

Sorularınızı düzenleyebilmeniz ve yorum ekleyebilmeniz için hesaplarınızı birleştirdim. Yine de, lütfen buraya tıklayarak hesabınızı kaydedin: stats.stackexchange.com/users/login ; Gmail OpenID'nizi birkaç saniye içinde yapmak için kullanabilirsiniz ve hesabınızı artık burada kaybetmeyeceksiniz.

Teşekkürler, kayıt oldum. Ve bu soruyu cevaplayanlara çok teşekkürler. Daha önce gammayı deneyeceğim.
Ringold

5

Doğrusal Gauss modelleri için bayesm paketini kullanmak daha iyidir. Yarı konjugat öncelik ailesini uygular ve Jeffreys önceki bu ailenin bir sınır örneğidir. Aşağıdaki örneğime bakın. Bunlar klasik simülasyonlar, MCMC kullanmaya gerek yok.

Regresyon parametreleri hakkındaki güvenilirlik aralıklarının normal en küçük kareler güven aralıklarıyla tamamen aynı olup olmadığını hatırlamıyorum, ancak her durumda çok yakınlar.

> # 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

Basit doğrusal regresyonun, her ikisi de analitik olan Jeffrey'in öncüsü ile klasik ve Bayes analizi arasında analitik olarak özdeş olduğu düşünüldüğünde, Bayes analizi yapmak için MCMC gibi sayısal bir yönteme başvurmak biraz tuhaf görünmektedir. MCMC, Bayes yöntemlerinin analitik olarak zor olan daha karmaşık problemlerde kullanılmasına izin veren sayısal bir entegrasyon aracıdır, Newton-Rhapson veya Fisher Scoring gibi aynı, zor olan klasik problemleri çözmek için sayısal yöntemlerdir.

1 / s ile orantılı olarak Jeffrey'in önceki p (a, b, s) 'sini kullanan arka dağılım p (b | y) (burada s, hatanın standart sapmasıdır), b_ols konumuyla bir öğrenci t dağılımıdır, ölçek se_b_ols (" "sıradan en küçük kareler" tahmini için) ve n-2 serbestlik derecesi. Ancak b_ols'un örnekleme dağılımı aynı zamanda b konumu, se_b_ols ölçeği ve n-2 serbestlik derecesine sahip bir öğrenci t'dir. Bu nedenle, b ve b_ollerin değiştirilmeleri dışında özdeştirler, bu nedenle aralığı oluşturmak söz konusu olduğunda, güven aralığının "est + - bağlı", güvenilir aralıkta "est - + bağlı" olarak ters çevrilir.

Bu nedenle güven aralığı ve güvenilir aralık analitik olarak aynıdır ve hangi yöntemin kullanılacağı önemli değildir (ek ön bilgi olmaması şartıyla) - bu nedenle hesaplama açısından daha ucuz olan yöntemi kullanın (örneğin daha az matris tersine sahip olan yöntemi). MCMC ile elde ettiğiniz sonuç, MCMC ile kullanılan belirli yaklaşımın kesin analitik güvenilir aralığa kıyasla çok geniş bir güvenilir aralık verdiğidir. Bu muhtemelen (yaklaşık daha iyi olmasını istesek de) iyi bir şeydir, ancak yaklaşık Bayes çözümünün tam Bayes çözümünden daha muhafazakar görünmesi.


Gerçekten tuhaf değil. Analitik olarak çözülebilecek bir soruna cevap bulmak için sayısal bir yöntem kullanmanın bir nedeni, yazılımın doğru bir şekilde kullanıldığından emin olmaktır.
Ringold

1
f(β0,β1,,βp,σ)Pr(Y>10x)x
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.