Khoảng tin cậy cho các tham số hồi quy: Bayesian so với cổ điển


15

Cho hai mảng x và y, cả hai chiều dài n, tôi phù hợp với một mô hình y = a + b * x và muốn tính khoảng tin cậy 95% cho độ dốc. Đây là (b - delta, b + delta) trong đó b được tìm thấy theo cách thông thường và

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

và se.slope là lỗi tiêu chuẩn trong độ dốc. Một cách để có được lỗi tiêu chuẩn của độ dốc từ R là summary(lm(y~x))$coef[2,2].

Bây giờ giả sử tôi viết khả năng của độ dốc cho x và y, nhân số này với "phẳng" trước và sử dụng kỹ thuật MCMC để vẽ mẫu m từ phân bố sau. Định nghĩa

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

Câu hỏi của tôi: (lims[[2]]-lims[[1]])/2xấp xỉ bằng delta như được định nghĩa ở trên?

Phụ lục Dưới đây là một mô hình JAGS đơn giản trong đó hai cái này có vẻ khác nhau.

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

Tôi chạy như sau trong 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")

Và lấy:

Vùng tự tin cổ điển: +/- 4.6939

Vùng tin cậy Bayes: +/- 5.1605

Chạy lại điều này nhiều lần, vùng tự tin Bayes luôn rộng hơn vùng cổ điển. Vì vậy, điều này là do các linh mục tôi đã chọn?

Câu trả lời:


9

"Vấn đề" là ở phần trước của sigma. Hãy thử một thiết lập ít thông tin hơn

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

trong tập tin jags của bạn. Sau đó cập nhật một bó

update(10000)

lấy các tham số và tóm tắt số lượng quan tâm của bạn. Nó nên xếp hàng hợp lý tốt với phiên bản cổ điển.

Làm rõ: Việc cập nhật chỉ để đảm bảo bạn sẽ đến bất cứ nơi nào bạn chọn bất kỳ lựa chọn nào trước khi bạn quyết định, mặc dù các chuỗi cho các mô hình như thế này với các mục sư khuếch tán và các giá trị bắt đầu ngẫu nhiên mất nhiều thời gian hơn để hội tụ. Trong các vấn đề thực tế, bạn sẽ kiểm tra sự hội tụ trước khi tóm tắt bất cứ điều gì, nhưng sự hội tụ không phải là vấn đề chính trong ví dụ của bạn tôi không nghĩ.


@Rold, cái gì hiệu quả? Các ưu tiên về sigma hoặc cập nhật? Hoặc cả hai? Bạn đã thử nghiệm chúng một cách riêng biệt?
Tò mò

nên sigma <- pow(tau, -1/2)hoặcsigma <- 1/sqrt(tau)
Tò mò

@Tomas, hoàn toàn đúng. Typo cố định.
liên hợp chiến

Mặc dù thẳng thắn mà có thể là nguồn gốc của sự khác biệt vì nó nằm trong mã gốc ...
liên hợp

6

Nếu bạn lấy mẫu từ phía sau của b | y và tính lims (như bạn xác định) nó phải giống như (b - delta, b + delta). Cụ thể, nếu bạn tính phân phối sau của b | y dưới một căn hộ trước, nó giống như phân phối lấy mẫu cổ điển của b.

Để biết thêm chi tiết tham khảo: Gelman et al. (2003). Phân tích dữ liệu Bayes. Báo chí CRC. Mục 3.6

Biên tập:

Ringold, hành vi được quan sát bởi bạn phù hợp với ý tưởng Bayes. Khoảng tin cậy Bayesian (CI) thường rộng hơn so với khoảng cổ điển. Và lý do là, như bạn đã đoán chính xác, các siêu nhân đã tính đến sự thay đổi vì các tham số chưa biết.

Đối với các kịch bản đơn giản như thế này (KHÔNG CÓ CHUNG):

CI Baysian> CI thực nghiệm Bayes> CI cổ điển; > == rộng hơn


Tôi đã thêm một số mã bằng cách sử dụng JAGS nơi tôi dường như nhận được một câu trả lời khác. Lỗi của tôi ở đâu? Điều này xảy ra là do các linh mục?
Ringold

Giờ tôi đang bối rối. Trước tiên, bạn nói rằng phân phối sau của b | y dưới một căn hộ trước giống như phân phối lấy mẫu cổ điển của b. Sau đó, bạn nói Bayesian CI rộng hơn so với cổ điển. Làm thế nào nó có thể rộng hơn nếu các bản phân phối giống nhau?
Ringold

Xin lỗi - tôi nên nói những gì @CP đề xuất trong bình luận của anh ấy. Về mặt lý thuyết, b | y theo CI phẳng trước và CI cổ điển là như nhau, nhưng thực tế bạn không thể làm điều đó trong JAGS trừ khi bạn sử dụng một rất rất khuếch tán trước như CP đề xuất và sử dụng nhiều lần lặp MCMC.
suncoolsu

Tôi đã hợp nhất các tài khoản của bạn để bạn có thể chỉnh sửa câu hỏi của mình và thêm nhận xét. Tuy nhiên, vui lòng đăng ký tài khoản của bạn bằng cách nhấp vào đây: stats.stackexchange.com/users/login ; bạn có thể sử dụng Gmail OpenID của mình để thực hiện trong vài giây và bạn sẽ không mất tài khoản của mình ở đây nữa.

Cảm ơn, tôi đã đăng ký. Và rất cám ơn những người đã trả lời câu hỏi này. Tôi sẽ thử gamma trước.
Ringold

5

Đối với các mô hình Gaussian tuyến tính, tốt hơn là sử dụng gói bayesm. Nó thực hiện gia đình linh mục bán liên hợp, và Jeffreys trước là một trường hợp giới hạn của gia đình này. Xem ví dụ của tôi dưới đây. Đây là những mô phỏng cổ điển, không cần sử dụng MCMC.

Tôi không nhớ liệu các khoảng tin cậy về các tham số hồi quy có hoàn toàn giống với các khoảng tin cậy bình phương nhỏ nhất thông thường hay không, nhưng trong mọi trường hợp chúng rất gần nhau.

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

Cho rằng hồi quy tuyến tính đơn giản giống hệt về mặt phân tích giữa phân tích cổ điển và Bayes với Jeffrey trước đó, cả hai đều là phân tích, có vẻ hơi kỳ lạ khi sử dụng một phương pháp số như MCMC để thực hiện phân tích Bayes. MCMC chỉ là một công cụ tích hợp số, cho phép các phương pháp Bayes được sử dụng trong các vấn đề phức tạp hơn có thể phân tích được, giống như Newton-Rhapson hoặc Fisher Scoring là các phương pháp số để giải quyết các vấn đề cổ điển có thể điều chỉnh được.

Phân phối sau p (b | y) sử dụng p (a, b, s) trước của Jeffrey tỷ lệ với 1 / s (trong đó s là độ lệch chuẩn của lỗi) là phân phối t của sinh viên với vị trí b_ols, tỷ lệ se_b_ols (" ols "cho ước tính" bình phương nhỏ nhất bình thường ") và n-2 bậc tự do. Nhưng phân phối lấy mẫu của b_ols cũng là một sinh viên t với vị trí b, tỷ lệ se_b_ols và n-2 độ tự do. Do đó, chúng giống hệt nhau ngoại trừ b và b_ols đã được hoán đổi, do đó, khi tạo khoảng, "est + - ràng buộc" của khoảng tin cậy được đảo ngược thành "est - + ràng buộc" trong khoảng tin cậy.

Vì vậy, khoảng tin cậy và khoảng tin cậy là giống nhau về mặt phân tích và vấn đề không phải là phương pháp nào được sử dụng (miễn là không có thông tin bổ sung trước) - vì vậy hãy sử dụng phương pháp tính toán rẻ hơn (ví dụ: phương pháp có ít nghịch đảo ma trận hơn). Kết quả của bạn với MCMC cho thấy rằng phép tính gần đúng cụ thể được sử dụng với MCMC đưa ra khoảng tin cậy quá rộng so với khoảng tin cậy phân tích chính xác. Đây có lẽ là một điều tốt (mặc dù chúng tôi muốn phép tính gần đúng sẽ tốt hơn) rằng giải pháp Bayesian gần đúng có vẻ bảo thủ hơn so với giải pháp Bayes chính xác.


Thật sự không quá kỳ quặc. Một lý do để sử dụng phương pháp số để tìm câu trả lời cho một vấn đề có thể giải quyết bằng phương pháp phân tích là để đảm bảo rằng một người đang sử dụng phần mềm một cách chính xác.
Ringold

1
f(β0,β1,,βp,σ)Pr(Y>10x)x
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.