[0,1]의 지정된 등급에 대한 베타 분포를 고려하십시오. 평균을 계산 한 후 :
이 평균 주위에 신뢰 구간을 제공 할 수있는 방법이 있습니까?
[0,1]의 지정된 등급에 대한 베타 분포를 고려하십시오. 평균을 계산 한 후 :
이 평균 주위에 신뢰 구간을 제공 할 수있는 방법이 있습니까?
답변:
베타 분포의 매개 변수에 대한 신뢰 구간을 계산하는 특정 방법이 있지만 베타 분포를 포함하여 (거의) 모든 종류의 분포 에 사용할 수 있으며 R로 쉽게 구현할 수있는 몇 가지 일반적인 방법을 설명하겠습니다. .
대응하는 프로파일 가능성 신뢰 구간을 사용하여 최대 가능성 추정으로 시작합시다. 먼저 샘플 데이터가 필요합니다.
# Sample size
n = 10
# Parameters of the beta distribution
alpha = 10
beta = 1.4
# Simulate some data
set.seed(1)
x = rbeta(n, alpha, beta)
# Note that the distribution is not symmetrical
curve(dbeta(x,alpha,beta))
실제 / 이론적 평균은
> alpha/(alpha+beta)
0.877193
이제 베타 분포에서 표본에 대한 음의 로그 우도 함수를 계산하는 함수를 만들고 매개 변수 중 하나 인 평균을 만들어야합니다. 우리는 dbeta()
함수 를 사용할 수 있지만, 이것은 평균과 관련된 매개 변수를 사용하지 않기 때문에 매개 변수 ( α 와 β )를 평균과 다른 변수 (표준 편차와 같은)의 함수 로 표현해야합니다 .
# Negative log likelihood for the beta distribution
nloglikbeta = function(mu, sig) {
alpha = mu^2*(1-mu)/sig^2-mu
beta = alpha*(1/mu-1)
-sum(dbeta(x, alpha, beta, log=TRUE))
}
최대 가능성 추정치를 찾으려면 라이브러리 에서 mle()
함수를 사용할 수 있습니다 stats4
.
library(stats4)
est = mle(nloglikbeta, start=list(mu=mean(x), sig=sd(x)))
지금은 경고를 무시하십시오. 매개 변수에 유효하지 않은 값을 시도하여 α 및 / 또는 β에 음수 값을 제공하는 최적화 알고리즘으로 인해 발생합니다 . 경고를 피하기 위해 lower
인수를 추가하고 method
사용 된 최적화를 변경할 수 있습니다 .
이제 두 모수에 대한 추정치와 신뢰 구간이 있습니다.
> est
Call:
mle(minuslogl = nloglikbeta, start = list(mu = mean(x), sig = sd(x)))
Coefficients:
mu sig
0.87304148 0.07129112
> confint(est)
Profiling...
2.5 % 97.5 %
mu 0.81336555 0.9120350
sig 0.04679421 0.1276783
예상 한대로 신뢰 구간은 대칭 이 아닙니다 .
par(mfrow=c(1,2))
plot(profile(est)) # Profile likelihood plot
두 번째 외부 자홍색 선은 95 % 신뢰 구간을 나타냅니다.
또한 단 10 개의 관측치로도 매우 좋은 추정치 (좁은 신뢰 구간)를 얻습니다.
의 대안으로 패키지 mle()
의 fitdistr()
기능을 사용할 수 있습니다 MASS
. 이것도 최대 우도 추정값을 계산하며, 음의 로그 우도가 아닌 밀도 만 제공하면되지만 프로파일 우도 신뢰 구간은 제공하지 않으며 비대칭 (대칭) 신뢰 구간 만 제공한다는 장점이 있습니다.
더 나은 옵션은 mle2()
(및 관련 함수) bbmle
패키지에서보다 유연하고 강력하며 mle()
약간 더 좋은 플롯을 제공하는 것입니다.
다른 옵션은 부트 스트랩을 사용하는 것입니다. R에서 사용하기가 매우 쉽고 밀도 함수를 제공 할 필요도 없습니다.
> library(simpleboot)
> x.boot = one.boot(x, mean, R=10^4)
> hist(x.boot) # Looks good
> boot.ci(x.boot, type="bca") # Confidence interval
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 10000 bootstrap replicates
CALL :
boot.ci(boot.out = x.boot, type = "bca")
Intervals :
Level BCa
95% ( 0.8246, 0.9132 )
Calculations and Intervals on Original Scale
부트 스트랩은 데이터가 베타 배포에서 나오지 않아도 작동한다는 이점이 있습니다.
평균에 대한 신뢰 구간의 경우 중심 한계 정리 (및 t- 분포)를 기반으로 한 오래된 점근 적 신뢰 구간을 잊지 마십시오 . 표본 크기가 크거나 (CLT가 적용되고 표본 평균의 분포가 거의 정상 임) α 와 β 모두의 값이 크면 (베타 분포 자체가 대략 정상 임) 잘 작동합니다. 여기에는 둘 다 없지만 신뢰 구간은 여전히 나쁘지 않습니다.
> t.test(x)$conf.int
[1] 0.8190565 0.9268349
n 값이 약간 큰 경우 (두 매개 변수의 값이 너무 크지 않은 경우) 점근 적 신뢰 구간이 매우 잘 작동합니다.
베타 회귀를 확인하십시오. R 을 사용하여 수행하는 방법에 대한 좋은 소개 는 여기에서 찾을 수 있습니다.
http://cran.r-project.org/web/packages/betareg/vignettes/betareg.pdf
신뢰 구간을 구성하는 또 다른 (정말 쉬운) 방법은 비모수 적 부 스트랩 접근 방식을 사용하는 것입니다. Wikipedia에 좋은 정보가 있습니다.
http://en.wikipedia.org/wiki/Bootstrapping_%28statistics%29
또한 여기에 좋은 비디오 :