회귀 모수에 대한 신뢰 구간 : 베이지안 대 고전


15

길이 n의 두 배열 x와 y가 주어지면 모델 y = a + b * x에 적합하고 기울기에 대한 95 % 신뢰 구간을 계산하려고합니다. 이것은 (b-델타, b + 델타)이며 여기서 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

'문제'는 이전 시그마에 있습니다. 유익한 설정을 시도하십시오

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

jags 파일에 그런 다음 무리를 업데이트

update(10000)

매개 변수를 잡고 관심 수량을 요약하십시오. 클래식 버전과 합리적으로 잘 정렬되어야합니다.

설명 : 확산 사전 및 임의 시작 값이있는 것과 같은 모델의 체인은 수렴하는 데 시간이 오래 걸리지 만 업데이트는 사용자가 결정한 이전에 선택한 곳을 어디에서나 얻을 수 있도록하는 것입니다. 실제 문제에서는 요약하기 전에 수렴을 확인하지만 수렴은 생각하지 않는 예제의 주요 문제가 아닙니다.


@Ringold, 무엇이 효과가 있었습니까? 시그마 또는 업데이트에 대한 이전? 아니면 둘다? 별도로 테스트 했습니까?
Curious

해야 sigma <- pow(tau, -1/2)또는sigma <- 1/sqrt(tau)
호기심

@Tomas, 그렇습니다. 오타 수정.
접합

이 ... 원래의 코드이기 때문에 솔직히 그 차이의 원인이 될 수도 있지만
conjugateprior

6

b의 후부에서 샘플링하는 경우 | y를 정의하고 라임을 계산하면 (b-델타, b + 델타)와 같아야합니다. 특히, b의 사후 분포를 계산하면 | y는 평평한 상태에서 b의 고전적인 샘플링 분포와 동일합니다.

자세한 내용은 Gelman et al. (2003). 베이지안 데이터 분석. CRC Press. 3.6 절

편집하다:

Ringold, 당신이 관찰 한 행동은 베이지안 아이디어와 일치합니다. 베이지안 신뢰 간격 (CI)은 일반적으로 고전적인 것보다 더 넓습니다. 그리고 그 이유는, 정확하게 짐작했듯이, 하이퍼 프리 어는 알 수없는 매개 변수로 인해 변동성을 고려했기 때문입니다.

다음과 같은 간단한 시나리오의 경우 (일반은 아님) :

Baysian CI> 경험적 Bayesian CI> 클래식 CI; > == 더 넓다


JAGS를 사용하여 다른 답변을 얻고있는 코드를 추가했습니다. 내 실수는 어디입니까? 이전의 이유로 이런 일이 발생합니까?
Ringold

이제 혼란 스러워요. 먼저 평평한 상태에서 b | y의 사후 분포는 b의 고전적인 샘플링 분포와 동일하다고 말했습니다. 그런 다음 베이지안 CI가 기존 CI보다 더 넓다고 말했습니다. 분포가 동일하면 어떻게 더 넓을 수 있습니까?
Ringold

죄송합니다-@CP가 그의 의견에서 제안한 것을 말해야합니다. 이론적으로 평평한 이전 CI와 기존 CI에서 b | y는 동일하지만 제안 된 CP와 같이 매우 분산 된 사전을 사용하고 많은 MCMC 반복을 사용하지 않으면 JAGS에서는 실제로이를 수행 할 수 없습니다.
suncoolsu

귀하의 계정을 병합하여 질문을 편집하고 의견을 추가 할 수 있습니다. 그러나 여기를 클릭하여 계정을 등록하십시오 : stats.stackexchange.com/users/login ; 몇 초 안에 Gmail OpenID를 사용하여 더 이상 계정을 풀지 않아도됩니다.

감사합니다. 등록했습니다. 이 질문에 답한 사람들에게 감사드립니다. 먼저 감마를 사용해 보겠습니다.
Ringold

5

선형 가우스 모델의 경우 bayesm 패키지를 사용하는 것이 좋습니다. 그것은 semi-conjugate 이전의 제품군을 구현하며 Jeffreys 이전은이 제품군의 제한적인 경우입니다. 아래의 예를 참조하십시오. 이들은 고전적인 시뮬레이션이므로 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

간단한 선형 회귀 분석은 Jeffrey의 이전 분석과 고전 분석과 베이지안 분석간에 분석적으로 동일하다는 점을 감안할 때 Bayesian 분석을 수행하기 위해 MCMC와 같은 수치 적 방법을 사용하는 것이 약간 이상합니다. MCMC는 수치 적분 도구로, 베이지안 방법을 분석적으로 다루기 어려운 복잡한 문제에 사용할 수 있습니다. 뉴턴 랩슨 (Newton-Rhapson)이나 Fisher Scoring은 다루기 어려운 고전적인 문제를 해결하기위한 수치 방법과 같습니다.

1 / s에 비례하는 Jeffrey의 이전 p (a, b, s)를 사용한 사후 분포 p (b | y) (여기서 s는 오류의 표준 편차 임)는 위치 b_ols, 스케일 se_b_ols ( " "일반 최소 제곱"추정값의 경우 ols ") 및 n-2 자유도입니다. 그러나 b_ol의 샘플링 분포는 위치 b, 스케일 se_b_ols 및 n-2 자유도를 가진 학생 t입니다. 따라서 b와 b_ol이 교체 된 것을 제외하고는 동일하므로 구간을 만들 때 신뢰 구간의 "est + -bound"는 신뢰할 수있는 구간에서 "est-+ bound"로 반전됩니다.

따라서 신뢰 구간과 신뢰할 수있는 구간은 분석적으로 동일하며 어떤 방법을 사용하든 (추가적인 사전 정보가없는 경우) 중요하지 않으므로 계산 비용이 저렴한 방법 (예 : 매트릭스 반전이 적은 방법)을 사용하십시오. MCMC를 통해 얻은 결과는 MCMC와 함께 사용 된 특정 근사가 정확한 분석 가능 시간 간격과 비교하여 너무 넓은 시간 간격을 제공한다는 것입니다. 이것은 대략적인 베이지안 솔루션이 정확한 베이지안 솔루션보다 더 보수적으로 보이기 때문에 아마도 (우리는 근사치가 더 나아지기를 원하지만) 좋은 것입니다.


정말 이상하지 않습니다. 수치 적 방법을 사용하여 분석적으로 해결할 수있는 문제에 대한 답을 찾는 한 가지 이유는 소프트웨어를 올바르게 사용하고 있는지 확인하는 것입니다.
Ringold

1
에프(β0,β1,,β,σ)홍보(와이>10엑스)엑스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.