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


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.