Bootstrap tendencioso: é correto centralizar o IC em torno da estatística observada?


11

Isso é semelhante ao Bootstrap: a estimativa está fora do intervalo de confiança

Eu tenho alguns dados que representam contagens de genótipos em uma população. Quero estimar a diversidade genética usando o índice de Shannon e também gerar um intervalo de confiança usando o bootstrapping. Notei, no entanto, que a estimativa via bootstrapping tende a ser extremamente tendenciosa e resulta em um intervalo de confiança que fica fora da minha estatística observada.

Abaixo está um exemplo.

# 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]))
}

Geração de dados

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

Cálculo

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

Gerando os ICs com correção de viés

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

Supondo que a variação de t possa ser usada para a variação de t0 .

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

## [1] 3.55475 3.80421

Seria correto relatar o IC centrado em torno de t0 ? Existe uma maneira melhor de gerar o bootstrap?

Respostas:


11

Na configuração fornecida pelo OP, o parâmetro de interesse é a entropia de Shannon que é uma função do vetor de probabilidade pR 50 . O estimador baseado em n amostras ( n = 100 na simulação) é o plug-in estimador θ n = θ ( p n ) = - 50 Σ i =

θ(p)=-Eu=150.pEuregistropEu,
pR50.nn=100 As amostras foram geradas usando a distribuição uniforme para a qual a entropia de Shannon élog(50)=3,912. Como a entropia de Shannon é maximizada na distribuição uniforme, o estimador de plug-indeve ser enviesado para baixo. A mostra de simulação quebias( θ 100 )-0,28enquanto que Bias( θ
θ^n=θ(p^n)=-Eu=150.p^n,Euregistrop^n,Eu.
registro(50.)=3.912bEuumas(θ^100)-0,28. O estimador de plug-in é consistente, mas ométodoΔnão se aplica a p ser a distribuição uniforme, porque a derivada da entropia de Shannon é 0. Portanto, para essa escolha específica de p , os intervalos de confiança baseados em argumentos assintóticos não são óbvios. . bEuumas(θ^500)-0,05Δpp

O intervalo de percentil baseia-se na distribuição de , onde p * n é o estimador de amostragem obtida a partir de n observações a partir de p n . Especificamente, é o intervalo do quantil de 2,5% ao quantil de 97,5% para a distribuição de θ ( p n ) . Como mostra a simulação de bootstrap da OP, θ ( p * n ) é também claramente inclinado para baixo como um estimador de θ ( p n )θ(pn)pnnp^nθ(pn)θ(pn)θ(p^n), o que resulta no intervalo percentil completamente errado.

Para o intervalo básico (e normal), as funções dos quantis são trocadas. Isso implica que o intervalo parece razoável (abrange 3.912), embora os intervalos que ultrapassem 3.912 não sejam logicamente significativos. Além disso, não sei se o intervalo básico terá a cobertura correta. Sua justificativa é baseada na seguinte identidade distributiva aproximada:

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

θ(p^n)±1,96se^n

θ(p)pθ(p)


5
1/n

@ EdM esta é uma informação muito útil. Eu não conhecia a literatura sobre esse problema específico de preconceito. Pode ser realmente útil se você puder transformar o comentário em uma resposta que explique a correção de viés e como ele pode ser usado com o bootstrap, por exemplo, para obter intervalos de confiança.
NRH 25/06

Também não conhecia essa literatura, até que essa pergunta e sua resposta surgiram. O que é um pouco embaraçoso, já que a entropia de Shannon é frequentemente usada como uma medida na minha área de ciência biomédica. Vou ver o que posso montar como uma resposta adicional.
achou

1
θ(pn)

1
nnn

6

Como aponta a resposta de @NRH, o problema não é que o bootstrapping deu um resultado tendencioso. É que a estimativa "plug-in" simples da entropia de Shannon, com base nos dados de uma amostra, é enviesada para baixo em relação ao verdadeiro valor da população.

Esse problema foi reconhecido na década de 1950, poucos anos após a definição desse índice. Este artigo discute as questões subjacentes, com referências à literatura associada.

p^n,Eupn,Eu

θ^n=θ(p^n)=-Eu=1Mp^n,Euregistrop^n,Eu.

a relação não linear significa que o valor resultante é uma subestimação parcial da verdadeira diversidade genética.

MN(M-1)/2N

Existem pacotes no R que lidam com esse problema. O simbootpacote, em particular, possui uma função estShannonfque faz essas correções de polarização e uma função sbdivpara calcular os intervalos de confiança. Será melhor usar essas ferramentas de código aberto estabelecidas para sua análise, em vez de tentar começar do zero.


Portanto, o estimador por si só é errado devido ao tamanho da amostra? O simbootpacote parece promissor, mas não parece adequado para meus propósitos, pois precisa de uma amostra de controle para estimar os intervalos de confiança.
ZNK 25/06

1
"Errado" não está certo; o estimador é "tendencioso", pois seu valor esperado não é o mesmo que o valor real da população. Isso não significa que é "errado"; estimadores tendenciosos podem ser úteis, conforme ilustrado pelo tradeoff de variação de viés na seleção de estimadores. Se simbootnão atender às suas necessidades, o Google "Shannon entropia viés r" para links para outros pacotes R, como entropy, entropart, e EntropyEstimation.
EdM

1
Existem questões adicionais decorrentes do fato de que alguns genótipos presentes na população provavelmente serão perdidos em qualquer amostra específica. Alguns dos pacotes R baseados em população e ecologia parecem ter maneiras de lidar com esse problema.
EdM
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.