Sim, você pode aproximar por P ( ˉ X ∗ n ≤ x ), mas não é o ideal. Essa é uma forma de autoinicialização de percentil. No entanto, o bootstrap de percentil não terá um bom desempenho se você estiver tentando fazer inferências sobre a população, a menos que você tenha um tamanho de amostra grande. (Ele funciona bem com muitos outros problemas de inferência, inclusive quando o tamanho da amostra é pequeno.) Eu tomo esta conclusão das Estatísticas Modernas de Wilcox para as Ciências Sociais e ComportamentaisP ( X¯n≤ x )P ( X¯∗n≤ x ) , CRC Press, 2012. Uma prova teórica está além de mim, receio. .
Uma variante da abordagem de centralização vai para o próximo passo e dimensiona sua estatística de autoinicialização centralizada com o desvio padrão da amostra e o tamanho da amostra, calculando da mesma maneira que na estatística. Os quantis da distribuição dessas estatísticas t podem ser usados para construir um intervalo de confiança ou realizar um teste de hipótese. Este é o método bootstrap-t e fornece resultados superiores ao fazer inferências sobre a média.
Deixei s∗
T∗= X¯∗n- X¯s∗/ n√
T∗μ
X¯- T∗0,975sn√, X¯- T∗0,025sn√
Considere os resultados da simulação abaixo, mostrando que, com uma distribuição mista mal distorcida, os intervalos de confiança desse método contêm o valor verdadeiro com mais frequência do que o método de autoinicialização por percentil ou uma inversão tradicional da estatística sem autoinicialização.
compare.boots <- function(samp, reps = 599){
# "samp" is the actual original observed sample
# "s" is a re-sample for bootstrap purposes
n <- length(samp)
boot.t <- numeric(reps)
boot.p <- numeric(reps)
for(i in 1:reps){
s <- sample(samp, replace=TRUE)
boot.t[i] <- (mean(s)-mean(samp)) / (sd(s)/sqrt(n))
boot.p[i] <- mean(s)
}
conf.t <- mean(samp)-quantile(boot.t, probs=c(0.975,0.025))*sd(samp)/sqrt(n)
conf.p <- quantile(boot.p, probs=c(0.025, 0.975))
return(rbind(conf.t, conf.p, "Trad T test"=t.test(samp)$conf.int))
}
# Tests below will be for case where sample size is 15
n <- 15
# Create a population that is normally distributed
set.seed(123)
pop <- rnorm(1000,10,1)
my.sample <- sample(pop,n)
# All three methods have similar results when normally distributed
compare.boots(my.sample)
Isso fornece o seguinte (conf.t é o método de autoinicialização t; conf.p é o método de autoinicialização por percentil).
97.5% 2.5%
conf.t 9.648824 10.98006
conf.p 9.808311 10.95964
Trad T test 9.681865 11.01644
Com um único exemplo de uma distribuição distorcida:
# create a population that is a mixture of two normal and one gamma distribution
set.seed(123)
pop <- c(rnorm(1000,10,2),rgamma(3000,3,1)*4, rnorm(200,45,7))
my.sample <- sample(pop,n)
mean(pop)
compare.boots(my.sample)
Isso fornece o seguinte. Observe que "conf.t" - a versão bootstrap t - oferece um intervalo de confiança mais amplo que os outros dois. Basicamente, é melhor responder à distribuição incomum da população.
> mean(pop)
[1] 13.02341
> compare.boots(my.sample)
97.5% 2.5%
conf.t 10.432285 29.54331
conf.p 9.813542 19.67761
Trad T test 8.312949 20.24093
Finalmente, aqui estão milhares de simulações para ver qual versão fornece intervalos de confiança mais frequentemente corretos:
# simulation study
set.seed(123)
sims <- 1000
results <- matrix(FALSE, sims,3)
colnames(results) <- c("Bootstrap T", "Bootstrap percentile", "Trad T test")
for(i in 1:sims){
pop <- c(rnorm(1000,10,2),rgamma(3000,3,1)*4, rnorm(200,45,7))
my.sample <- sample(pop,n)
mu <- mean(pop)
x <- compare.boots(my.sample)
for(j in 1:3){
results[i,j] <- x[j,1] < mu & x[j,2] > mu
}
}
apply(results,2,sum)
Isso fornece os resultados abaixo - os números são os tempos em mil em que o intervalo de confiança contém o valor real de uma população simulada. Observe que a verdadeira taxa de sucesso de todas as versões é consideravelmente menor que 95%.
Bootstrap T Bootstrap percentile Trad T test
901 854 890