비정규 분포에 대한 신뢰 구간을 어떻게 계산합니까?


21

일부 공통 값에 대해 치우침이 심한 383 개의 표본이 있는데 평균의 95 % CI를 어떻게 계산합니까? 내가 계산 한 CI는 꺼져있는 것처럼 보입니다. 내가 히스토그램을 만들 때 데이터가 곡선처럼 보이지 않기 때문입니다. 그래서 나는 잘 이해하지 못하는 부트 스트랩과 같은 것을 사용해야한다고 생각합니다.


2
한 가지 해결책은 RV 에 제한적인 표준 정규 분포가 있다는 사실을 이용하는 점근 적 CI를 사용하는 것입니다 . 표본이 상당히 커서 좋은 근사치를 얻을 수 있습니다. 엑스¯μ에스/
JohnK

1
아니요, 해당 접근 방식을 사용하면 신뢰 구간의 두 꼬리 모두에서 꼬리 범위가 실제로 잘못됩니다. 평균적인 적용 범위는 운이 좋을 수 있지만 두 가지 테일 오류율은 모두 틀립니다.
Frank Harrell

2
"일부 공통 값에 대한 치우침"은 무엇을 의미합니까? 편견은 통계에서 특별한 의미를 갖습니다. 당신이 그것을 의미하지 않으면 그것을 피하려고 노력해야합니다. 단순히 "일부 특정 값이 매우 자주 발생 함"을 의미합니까? 계산과 데이터 표시 또는 표를 보여줄 수 있습니까?
Glen_b-복지국 모니카

답변:


21

예, 부트 스트랩은 평균에 대한 신뢰 구간을 얻는 대안입니다 (방법을 이해하려면 약간의 노력을 기울여야합니다).

아이디어는 다음과 같습니다.

  1. 교체 B 번으로 다시 샘플링하십시오.
  2. 이러한 각 표본에 대해 표본 평균을 계산하십시오.
  3. 적절한 부트 스트랩 신뢰 구간을 계산하십시오 .

마지막 단계와 관련하여 몇 가지 유형의 부트 스트랩 신뢰 구간 (BCI)이 있습니다. 다음은 다양한 유형의 BCI 속성에 대한 설명입니다.

http://staff.ustc.edu.cn/~zwp/teach/Stat-Comp/Efron_Bootstrap_CIs.pdf

http://www.tau.ac.il/~saharon/Boot/10.1.1.133.8405.pdf

여러 BCI를 계산하고 그 사이의 가능한 불일치를 이해하는 것이 좋습니다.

R에서는 다음과 같이 R 패키지 'boot'를 사용하여이 아이디어를 쉽게 구현할 수 있습니다.

rm(list=ls())
# Simulated data
set.seed(123)
data0 = rgamma(383,5,3)
mean(data0) # Sample mean

hist(data0) # Histogram of the data

library(boot) 

# function to obtain the mean
Bmean <- function(data, indices) {
  d <- data[indices] # allows boot to select sample 
    return(mean(d))
} 

# bootstrapping with 1000 replications 
results <- boot(data=data0, statistic=Bmean, R=1000)

# view results
results 
plot(results)

# get 95% confidence interval 
boot.ci(results, type=c("norm", "basic", "perc", "bca"))

3
마지막 단계는 몇 가지를 계산하여 결과에서 좋아하는 CI 낚시를 의미합니다. 미리 CI의 종류에 따라 원하는 CI 종류를 결정해야합니다.
John

@John CI마다 다른 속성이 있습니다. 불일치가 있는지 확인하고 그 원인을 조사하는 것이 좋습니다. 편리한 결과를위한 낚시는 아닙니다.
Munchausen

물론, 대답에 이유에 대한 설명이 없으면 낚시를 의미합니다. 그리고 실제로 원하는 CI를 실제로 선택하는 것이 중요하다고 아직 언급하지 않았습니다. 순진한 질문자에게 중요한 정보로 답변을 업데이트 할 것을 제안합니다. 일반적으로 선호하는 CI와 그 이유 또는 이와 같은 경우에 선호하는 CI를 설명하면 더 좋을 것입니다.
John

2
@IhaveCandy : 아니요. 중앙 한계 정리, 즉 매우 "비정규"분포에 따른 값의 경우에도 평균의 샘플링 분포가 정규화되는 방법을 보여줍니다. 이것이 단순한 z 신뢰 구간이 부트 스트랩과 같은 다른 멋진 솔루션과 크게 다르지 않은 이유입니다.
Michael M

1
@IhaveCandy 위의 내 의견을 참조하십시오. Michael Mayer도 같은 지적입니다.
JohnK

8

다른 표준 대안은 Wilcoxon 테스트로 CI를 계산하는 것입니다. R에서

wilcox.test(your-data, conf.int = TRUE, conf.level = 0.95)

불행하게도, (의사) 평균 주위의 CI는 평균이 아니지만 데이터가 너무 비정규적인 경우 중앙값이 더 유익한 측정 방법입니다.


2

로그 정규 데이터의 경우 Olsson (2005) 은 'modified Cox method'를 제안합니다.

엑스이자형(엑스)=θ로그(θ)

와이¯=에스22±에프에스2+에스42(1)

와이=로그(엑스)와이와이¯와이에스2

R 함수는 다음과 같습니다.

ModifiedCox <- function(x){
  n <- length(x)
  y <- log(x)
  y.m <- mean(y)
  y.var <- var(y)

  my.t <- qt(0.975, df = n-1)

  my.mean <- mean(x)
  upper <- y.m + y.var/2 + my.t*sqrt(y.var/n + y.var^2/(2*(n - 1)))
  lower <- y.m + y.var/2 - my.t*sqrt(y.var/n + y.var^2/(2*(n - 1)))

 return(list(upper = exp(upper), mean = my.mean, lower = exp(lower)))

}

Olsson의 논문에서 예제를 반복

CO.level <- c(12.5, 20, 4, 20, 25, 170, 15, 20, 15)

ModifiedCox(CO.level)
$upper
[1] 78.72254

$mean
[1] 33.5

$lower
[1] 12.30929

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.