바이어스 부트 스트랩 : CI를 관측 된 통계를 중심으로해도 괜찮습니까?


13

이것은 부트 스트랩 과 유사합니다 : 추정이 신뢰 구간을 벗어났습니다.

인구의 유전자형 수를 나타내는 데이터가 있습니다. Shannon의 지수를 사용하여 유전 다양성을 추정하고 부트 스트랩을 사용하여 신뢰 구간을 생성하고 싶습니다. 그러나 부트 스트랩을 통한 추정치가 극도로 치우친 경향이 있으며 관찰 된 통계 범위를 벗어난 신뢰 구간을 초래한다는 것을 알았습니다.

아래는 예입니다.

# Shannon's index
H <- function(x){
  x <- x/sum(x)
  x <- -x * log(x, exp(1))
  return(sum(x, na.rm = TRUE))
}
# The version for bootstrapping
H.boot <- function(x, i){
  H(tabulate(x[i]))
}

데이터 생성

set.seed(5000)
X <- rmultinom(1, 100, prob = rep(1, 50))[, 1]

계산

H(X)

## [1] 3.67948

xi <- rep(1:length(X), X)
H.boot(xi)

## [1] 3.67948

library("boot")
types <- c("norm", "perc", "basic")
(boot.out <- boot::boot(xi, statistic = H.boot, R = 1000L))

## 
## CASE RESAMPLING BOOTSTRAP FOR CENSORED DATA
## 
## 
## Call:
## boot::boot(data = xi, statistic = H.boot, R = 1000)
## 
## 
## Bootstrap Statistics :
##     original     bias    std. error
## t1*  3.67948 -0.2456241  0.06363903

바이어스 수정으로 CI 생성

boot.ci(boot.out, type = types)

## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 1000 bootstrap replicates
## 
## CALL : 
## boot.ci(boot.out = boot.out, type = types)
## 
## Intervals : 
## Level      Normal              Basic              Percentile     
## 95%   ( 3.800,  4.050 )   ( 3.810,  4.051 )   ( 3.308,  3.549 )  
## Calculations and Intervals on Original Scale

t 의 분산이 t0 의 분산에 사용될 수 있다고 가정합니다 .

norm.ci(t0 = boot.out$t0, var.t0 = var(boot.out$t[, 1]))[-1]

## [1] 3.55475 3.80421

t0을 중심으로 CI를보고하는 것이 맞 습니까? 부트 스트랩을 생성하는 더 좋은 방법이 있습니까?

답변:


12

θ(p)=i=150pilogpi,
pR50nn=100
θ^n=θ(p^n)=i=150p^n,ilogp^n,i.
log(50)=3.912.bias(θ^100)0.28bias(θ^500)0.05Δpp

θ(pn)pnnp^nθ(pn)θ(pn)θ(p^n)백분위 수 간격이 완전히 잘못되었습니다.

기본 (및 정상) 간격의 경우 Quantile의 역할이 서로 바뀝니다. 이는 3.912를 초과하는 간격이 논리적으로 의미가 없지만 간격이 합리적 (3.912에 해당) 인 것으로 나타냅니다. 또한 기본 간격이 올바른 적용 범위인지 알 수 없습니다. 그 정당성은 다음과 같은 대략적인 분포 아이덴티티를 기반으로합니다.

θ(pn)θ(p^n)Dθ(p^n)θ(p),
nn=100

θ(p^n)±1.96se^n

θ(p)pθ(p)


5
1/n

@ EdM 이것은 매우 유용한 정보입니다. 나는이 특별한 편견 문제에 관한 문헌을 몰랐다. 주석 수정을 설명하는 답변으로 주석을 전환하고 신뢰 구간을 확보하기 위해 부트 스트랩과 함께 사용하는 방법을 설명하면 유용 할 수 있습니다.
NRH

나는이 질문과 당신의 대답이 나올 때 까지이 문학을 몰랐습니다. Shannon 엔트로피는 종종 내의 생명 과학 분야의 척도로 사용되기 때문에 다소 당황 스럽습니다. 추가 답변으로 무엇을 정리할 수 있는지 살펴 보겠습니다.
EdM

1
θ(pn)

1
nnn

7

@NRH의 대답이 지적했듯이 문제는 부트 스트랩이 바이어스 된 결과를 낳지 않았다는 것입니다. 표본의 데이터를 기반으로하는 Shannon 엔트로피의 단순한 "플러그인"추정치가 실제 모집단 값에서 아래로 치우친 것입니다.

이 문제는이 지수의 정의 후 몇 년 안에 1950 년대에 인식되었습니다. 이 백서 에서는 관련 문헌을 참조하여 기본 문제에 대해 설명합니다.

p^n,ipn,i

θ^n=θ(p^n)=i=1Mp^n,ilogp^n,i.

비선형 관계는 결과 값이 실제 유전 적 다양성의 과소 평가 된 편향임을 의미합니다.

MN(M1)/2N

이 문제를 해결하는 패키지가 R에 있습니다. simboot특히 패키지 기능을 갖는 estShannonf이러한 바이어스를 보정하게하고 기능 sbdiv신뢰 구간을 산출한다. 처음부터 다시 시작하려고 시도하는 것보다 분석에 기존의 오픈 소스 도구를 사용하는 것이 좋습니다.


따라서 추정량 자체는 표본 크기로 인해 잘못된 것입니까? simboot패키지 보이는 유망하지만 신뢰 구간을 추정 제어 샘플을 필요로하는 나의 목적에 적합하지 않는 것 같습니다.
ZNK

1
"오류"는 옳지 않습니다. 추정값은 예상 값이 실제 모집단 값과 같지 않기 때문에 "편향"됩니다. 그렇다고 "잘못된"것은 아닙니다. 편향 추정기는 선택기 를 선택할 때 편향-분산 트레이드 오프 에 의해 예시 된 바와 같이 유용 할 수있다 . 경우 simboot사용자의 요구에 부합하지 않는, 같은 다른 R 패키지에 대한 링크 구글 "섀넌 엔트로피 바이어스 R" entropy, entropartEntropyEstimation.
EdM

1
모집단에 존재하는 일부 유전자형이 특정 샘플에서 누락 될 수 있다는 사실에서 발생하는 추가 문제가 있습니다. 인구 및 생태 기반 R 패키지 중 일부는이 문제를 처리 할 수있는 방법이있는 것으로 보입니다.
EdM
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.