จากสองอาร์เรย์ 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
เรียกใช้ซ้ำอีกครั้งภูมิภาคความเชื่อมั่นแบบเบย์กว้างกว่าแบบดั้งเดิมอย่างต่อเนื่อง เช่นนี้เป็นเพราะนักบวชที่ฉันเลือก?