ช่วงความเชื่อมั่นสำหรับพารามิเตอร์การถดถอย: Bayesian vs. Classical


15

จากสองอาร์เรย์ x และ y ความยาวทั้งสอง n ฉันพอดีกับโมเดล y = a + b * x และต้องการคำนวณช่วงความมั่นใจ 95% สำหรับความชัน นี่คือ (b - delta, b + delta) ซึ่ง b ถูกพบในวิธีปกติและ

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

และ se.slope เป็นข้อผิดพลาดมาตรฐานในความชัน วิธีการหนึ่งที่จะได้รับข้อผิดพลาดมาตรฐานของความลาดชันจาก R summary(lm(y~x))$coef[2,2]คือ

ทีนี้สมมติว่าฉันเขียนความน่าจะเป็นของความชันที่ให้ x กับ y คูณนี่ด้วย "แบน" ก่อนแล้วใช้เทคนิค MCMC เพื่อวาดตัวอย่างmจากการกระจายหลัง กำหนด

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

คำถามของฉัน: (lims[[2]]-lims[[1]])/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

'ปัญหา' อยู่ในก่อนหน้าเกี่ยวกับ sigma ลองใช้การตั้งค่าที่ให้ข้อมูลน้อยกว่า

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

ในไฟล์ jags ของคุณ จากนั้นอัพเดทพวง

update(10000)

คว้าพารามิเตอร์และสรุปปริมาณความสนใจของคุณ มันควรจะเข้ากันได้ดีกับรุ่นคลาสสิค

การชี้แจง: การอัปเดตเป็นเพียงเพื่อให้แน่ใจว่าคุณจะได้รับสิ่งที่คุณต้องการก่อนที่คุณจะตัดสินใจแม้ว่าการเชื่อมโยงสำหรับแบบจำลองเช่นนี้กับนักบวชที่กระจายตัวและค่าเริ่มต้นแบบสุ่มนั้นใช้เวลานานกว่าการบรรจบกัน ในปัญหาจริงคุณต้องตรวจสอบการบรรจบกันก่อนที่จะสรุปอะไรก็ตาม แต่การบรรจบกันไม่ใช่ประเด็นหลักในตัวอย่างของคุณฉันไม่คิด


@Roldold ทำงานอย่างไร ก่อนหน้านี้เกี่ยวกับ sigma หรือการอัพเดท? หรือทั้งคู่? คุณได้ทดสอบพวกมันแยกกันหรือไม่?
อยากรู้อยากเห็น

ควรจะเป็นsigma <- pow(tau, -1/2)หรือsigma <- 1/sqrt(tau)
อยากรู้อยากเห็น

@ Tomas ค่อนข้างถูกต้อง แก้ไข Typo แล้ว
conjugateprior

แม้ว่าจะตรงไปตรงมาว่าอาจจะเป็นแหล่งที่มาของความแตกต่างตั้งแต่มันอยู่ในรหัสเดิม ...
conjugateprior

6

หากคุณตัวอย่างจากด้านหลังของ b | y และคำนวณ lims (ตามที่คุณกำหนด) มันควรจะเหมือนกับ (b - delta, b + delta) หากคุณคำนวณการกระจายด้านหลังของ b | ภายใต้แฟล็ตก่อนมันเหมือนกับการกระจายตัวตัวอย่างแบบคลาสสิกของ b

สำหรับรายละเอียดเพิ่มเติมอ้างถึง: Gelman และคณะ (2003) การวิเคราะห์ข้อมูลแบบเบส์ กด CRC มาตรา 3.6

แก้ไข:

Ringold พฤติกรรมที่คุณสังเกตเห็นนั้นสอดคล้องกับแนวคิด Bayesian Bayesian Credible Interval (CI) นั้นกว้างกว่าแบบดั้งเดิม และเหตุผลก็คือในขณะที่คุณคาดเดาได้อย่างถูกต้องไฮเปอร์เพอร์เพิลนำมาพิจารณาความแปรปรวนเนื่องจากพารามิเตอร์ที่ไม่รู้จัก

สำหรับสถานการณ์อย่างง่ายเช่นนี้ (ไม่ใช่โดยทั่วไป):

Baysian CI> Empirical Bayesian CI> Classical CI; > == กว้างขึ้น


ฉันเพิ่มรหัสโดยใช้ JAGS ซึ่งดูเหมือนว่าฉันจะได้รับคำตอบที่ต่างออกไป ความผิดพลาดของฉันอยู่ที่ไหน สิ่งนี้เกิดขึ้นเพราะนักบวชหรือไม่?
Ringold

ตอนนี้ฉันสับสน ก่อนอื่นคุณบอกว่าการกระจายหลังของ b | y ใต้แฟลตก่อนหน้านั้นเหมือนกับการกระจายตัวอย่างแบบดั้งเดิมของ b จากนั้นคุณบอกว่า Bayesian CI นั้นกว้างกว่าแบบดั้งเดิม มันจะกว้างขึ้นได้อย่างไรถ้าการกระจายตัวเหมือนกัน?
Ringold

ขออภัย - ฉันควรจะบอกสิ่งที่ @CP แนะนำในความคิดเห็นของเขา ในทางทฤษฎี, b | y ภายใต้แฟลตก่อนและ CI แบบคลาสสิกเหมือนกัน แต่คุณไม่สามารถทำเช่นนั้นได้ใน JAGS ยกเว้นว่าคุณใช้การแพร่กระจายที่มากก่อนหน้านี้อย่างที่ CP แนะนำและใช้การทำซ้ำ MCMC จำนวนมาก
suncoolsu

ฉันได้รวมบัญชีของคุณเพื่อให้คุณสามารถแก้ไขคำถามและเพิ่มความคิดเห็น แต่โปรดลงทะเบียนบัญชีของคุณโดยคลิกที่นี่: stats.stackexchange.com/users/login ; คุณสามารถใช้ Gmail OpenID ของคุณเพื่อทำมันภายในไม่กี่วินาทีและคุณจะไม่ทำบัญชีของคุณหลวมอีกเลย

ขอบคุณฉันได้ลงทะเบียน และขอบคุณมากสำหรับผู้ที่ตอบคำถามนี้ ฉันจะลองแกมม่าก่อน
Ringold

5

สำหรับโมเดลเกาส์เชิงเส้นจะดีกว่าถ้าใช้แพ็คเกจเบย์ มันใช้ครอบครัวของนักบวชกึ่งคอนจูเกตและเจฟฟรีย์ก่อนหน้าเป็นกรณี จำกัด ของตระกูลนี้ ดูตัวอย่างของฉันด้านล่าง นี่คือการจำลองแบบคลาสสิกไม่จำเป็นต้องใช้ 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 เป็นเพียงเครื่องมือบูรณาการเชิงตัวเลขซึ่งช่วยให้วิธีการแบบเบย์สามารถใช้ในปัญหาที่ซับซ้อนยิ่งขึ้นซึ่งยากต่อการวิเคราะห์เช่นเดียวกับ Newton-Rhapson หรือ Fisher Scoring เป็นวิธีการเชิงตัวเลขสำหรับการแก้ปัญหาแบบดั้งเดิมซึ่งยากลำบาก

การแจกแจงด้านหลัง p (b | y) โดยใช้ p ก่อนหน้าของเจฟฟรีย์ (a, b, s) เป็นสัดส่วน 1 / s (โดยที่ s คือค่าเบี่ยงเบนมาตรฐานของข้อผิดพลาด) คือการแจกแจงของนักเรียนด้วยตำแหน่ง b_ols, มาตราส่วน se_b_ols (" ols "สำหรับ" กำลังสองน้อยที่สุดธรรมดา "โดยประมาณ) และ n-2 องศาอิสระ แต่การกระจายตัวตัวอย่างของ b_ols ก็เป็นนักเรียนด้วยตำแหน่ง b, มาตราส่วน se_b_ols และองศาอิสระ n-2 ดังนั้นพวกมันจึงเหมือนกันยกเว้นว่า b และ b_ols ถูกสลับสับเปลี่ยนดังนั้นเมื่อมันมาถึงการสร้างช่วงเวลา "est + - bound" ของช่วงความมั่นใจจะกลับเป็น "est - + bound" ในช่วงเวลาที่น่าเชื่อถือ

ดังนั้นช่วงความเชื่อมั่นและช่วงเวลาที่น่าเชื่อถือนั้นมีการวิเคราะห์เหมือนกันและไม่สำคัญว่าจะใช้วิธีใด (หากไม่มีข้อมูลก่อนเพิ่มเติม) - ดังนั้นให้ใช้วิธีที่คำนวณราคาถูกกว่า (เช่นวิธีที่มีเมทริกซ์ผกผันน้อยลง) สิ่งที่ผลลัพธ์ของคุณด้วย MCMC แสดงให้เห็นว่าการประมาณค่าเฉพาะที่ใช้กับ MCMC นั้นให้ช่วงเวลาที่น่าเชื่อถือซึ่งกว้างเกินไปเมื่อเทียบกับช่วงเวลาที่น่าเชื่อถือในการวิเคราะห์ที่แน่นอน นี่อาจเป็นสิ่งที่ดี (แม้ว่าเราต้องการให้การประมาณดีขึ้น) ว่าโซลูชันเบย์โดยประมาณนั้นดูอนุรักษ์นิยมมากกว่าโซลูชันเบย์ที่แน่นอน


ไม่แปลกจริงๆ เหตุผลหนึ่งในการใช้วิธีตัวเลขเพื่อค้นหาคำตอบของปัญหาที่สามารถแก้ไขได้ในเชิงวิเคราะห์คือเพื่อให้แน่ใจว่ามีการใช้ซอฟต์แวร์อย่างถูกต้อง
Ringold

1
(β0,β1,...,βพี,σ)ราคา(Y>10|x)x
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.