O bootstrap pode ser visto como uma “cura” para o pequeno tamanho da amostra?

71

Essa pergunta foi desencadeada por algo que li neste livro de estatística em nível de pós-graduação e também (independentemente) ouvi durante esta apresentação em um seminário de estatística. Nos dois casos, a declaração foi semelhante à "porque o tamanho da amostra é bem pequeno, decidimos realizar uma estimativa via bootstrap em vez de (ou juntamente com) esse método paramétrico ".X

Eles não entrar em detalhes, mas provavelmente o raciocínio era o seguinte: Método assume os dados seguem uma certa paramétrico distribuição . Na realidade, a distribuição não é exatamente , mas é aceitável desde que o tamanho da amostra seja grande o suficiente. Como neste caso o tamanho da amostra é muito pequeno, vamos mudar para o bootstrap (não paramétrico) que não faz nenhuma suposição de distribuição. Problema resolvido!XDD

Na minha opinião, não é para isso que serve o bootstrap. Aqui está como eu vejo: o bootstrap pode dar uma vantagem quando é mais ou menos óbvio que existem dados suficientes, mas não existe uma solução de formulário fechado para obter erros padrão, valores-p e estatísticas semelhantes. Um exemplo clássico é a obtenção de um IC para o coeficiente de correlação, dada uma amostra de uma distribuição normal bivariada: a solução de formulário fechado existe, mas é tão complicada que a inicialização é mais simples. No entanto, nada implica que o bootstrap possa de alguma forma ajudar alguém a se safar com um pequeno tamanho de amostra.

Minha percepção está certa?

Se você acha essa pergunta interessante, há outra pergunta de bootstrap mais específica de mim:

Bootstrap: a questão do overfitting

PS: Não posso deixar de compartilhar um exemplo flagrante da "abordagem de inicialização". Não estou divulgando o nome do autor, mas ele é um dos “quantos” da geração mais antiga que escreveu um livro sobre Quantitative Finance em 2004. O exemplo é retirado de lá.

Considere o seguinte problema: suponha que você tenha 4 ativos e 120 observações mensais de retorno para cada um. O objetivo é construir o cdf 4-dimensional conjunto de retornos anuais. Mesmo para um único ativo, a tarefa parece dificilmente alcançável com apenas 10 observações anuais, sem falar na estimativa do cdf 4-dimensional. Mas não se preocupe, o “bootstrap” o ajudará: faça todas as observações quadridimensionais disponíveis, faça uma nova amostra de 12 com substituição e componha-as para construir um único vetor quadridimensional “bootstrapped” de retornos anuais. Repita isso 1000 vezes e, eis que você obteve uma "amostra de autoinicialização" de 1000 retornos anuais. Use isso como uma amostra de tamanho IID do tamanho 1000 para fins de estimativa de cdf ou qualquer outra inferência que possa ser extraída de uma história de mil anos.

James
fonte
18
Eu ouço ou leio sentimentos semelhantes ao seu primeiro parágrafo, mas tendem a discordar. Normalmente, não vejo o bootstrapping como necessariamente útil em pequenas amostras. Sua justificativa é amostra assintótica / grande e, em muitos casos, na prática, o desempenho de sua pequena amostra é problemático; a cobertura dos intervalos, por exemplo, geralmente é bem diferente da taxa nominal. É outra ferramenta útil, mas, como muitas outras que foram anunciadas ao longo dos anos, não é a panacéia que algumas pessoas imaginam que seja. Realmente não acho que seja uma solução para amostras muito pequenas.
Glen_b
No livro de Simon Sheather (Figura 3.40), há um fluxograma para regressão que sugere o autoinicializador para inferência quando o tamanho da amostra não é grande e os erros não são normalmente distribuídos.
Tony Ladson
2
A resposta para a pergunta no quarto parágrafo é sim (ou pelo menos você receberia um crédito pelo seu argumento se desse essa resposta em um teste da minha classe). Você verificou esta discussão ? Na minha resposta , expliquei as aproximações que o bootstrap faz e fiz uma referência ao artigo que todos os bootstrapper deveriam ler para estar ciente das limitações do método. Seria bom para ver referências aos livros / jornais / apresentações que provocaram a sua pergunta
Stask
O bootstrap não fornece apenas um termo extra em uma expansão da Edgeworth - como uma aproximação normal com um termo de correção?
probabilityislogic

Respostas:

34

Lembro-me de ler que usar o intervalo de confiança do percentil para inicialização é equivalente a usar um intervalo Z em vez de um intervalo T e usar vez de para o denominador. Infelizmente, não me lembro de onde li isso e não consegui encontrar uma referência nas minhas pesquisas rápidas. Essas diferenças não importam muito quando n é grande (e as vantagens do bootstrap superam esses pequenos problemas quando é grande), mas com pequeno isso pode causar problemas. Aqui está um código R para simular e comparar:n - 1 n nnn1nn

simfun <- function(n=5) {
    x <- rnorm(n)
    m.x <- mean(x)
    s.x <- sd(x)
    z <- m.x/(1/sqrt(n))
    t <- m.x/(s.x/sqrt(n))
    b <- replicate(10000, mean(sample(x, replace=TRUE)))
    c( t=abs(t) > qt(0.975,n-1), z=abs(z) > qnorm(0.975),
        z2 = abs(t) > qnorm(0.975), 
        b= (0 < quantile(b, 0.025)) | (0 > quantile(b, 0.975))
     )
}

out <- replicate(10000, simfun())
rowMeans(out)

Meus resultados para uma execução são:

     t      z     z2 b.2.5% 
0.0486 0.0493 0.1199 0.1631 

Portanto, podemos ver que o uso do teste t e do teste z (com o verdadeiro desvio padrão da população) fornece uma taxa de erro do tipo I que é essencialmente conforme projetado. O teste z incorreto (dividindo pelo desvio padrão da amostra, mas usando o valor crítico de Z em vez de T) rejeita o nulo mais do que o dobro do que deveria. Agora, no bootstrap, ele rejeita o nulo 3 vezes mais que deveria (olhando se 0, a verdadeira média, está no intervalo ou não), portanto, para esse pequeno tamanho de amostra, o bootstrap simples não é dimensionado corretamente e, portanto, não conserte problemas (e é quando os dados estão perfeitamente normais). Os intervalos aprimorados de inicialização (BCa etc.) provavelmente terão um desempenho melhor, mas isso deve suscitar alguma preocupação em usar a inicialização como uma panacéia para amostras pequenas.α

Greg Snow
fonte
6
Sua última frase me deixou curiosa, então tentei isso com seu exemplo. Usei o bootpacote e ele forneceu todos os intervalos possíveis: o intervalo de aproximação normal de primeira ordem, o intervalo básico de inicialização, o intervalo de inicialização estudado, o intervalo de percentil de inicialização (que seu código já fornece) e o percentil de inicialização ajustado (BCa) intervalo. Os resultados foram basicamente os mesmos (taxas de rejeição em torno de 0,16 a 0,17), exceto no intervalo estudado, que teve uma taxa de rejeição nominal (0,05) (o que faz sentido, pois é mais parecido com o teste t padrão).
22414 Wolfgang
2
@ Wolfgang, obrigado por fazer as simulações adicionais. Estou um pouco surpreso que os outros intervalos não tenham se saído um pouco melhor, mas não surpreso por não terem atingido o nível 0,05.
Greg Neve
11
Sim, também fiquei um pouco surpreso! Às vezes, nossa intuição falha. É por isso que é tão maravilhoso poder escrever um pequeno script em R dentro de alguns minutos, executar 10,000 \times 10,000iterações (que levaram mais alguns minutos para ser concluído) e verificar as coisas. E seu exemplo mostra bem que o bootstrap pode ter um desempenho muito ruim com amostras pequenas, mesmo quando as coisas são "agradáveis" (ou seja, os dados são de fato normais).
23414 Wolfgang
Na verdade, o problema visto nesta simulação é exatamente o que acabei de perguntar aqui e respondi nos comentários por @whuber: stats.stackexchange.com/questions/323455/… . Portanto, não acho que o problema seja o tamanho da amostra, mas a violação da independência da inferência paramétrica dentro de cada amostra.
meia-passagem
2
Seu comentário sobre o intervalo de confiança do percentil equivalente a usar vez de é daqui , apenas para o registro. tzt
Daeyoung Lim
14

Se você receber um tamanho pequeno de amostra (como luz lateral, o que é "pequeno" parece depender de alguma regra usual subjacente em cada campo de pesquisa), nenhum bootstrap fará a mágica. Supondo que um banco de dados contenha três observações para cada uma das duas variáveis ​​sob investigação, nenhuma inferência fará sentido. Na minha experiência, o bootstrap não paramétrico (1.000 ou 10.000 repetições) funciona bem na substituição do teste t quando as distribuições de amostras (pelo menos 10 a 15 observações cada) são distorcidas e, portanto, os pré-requisitos para o teste t usual não são satisfeitos. Além disso, independentemente do número de observações, o bootstrap não paramétrico pode ser uma opção obrigatória quando os dados são positivamente distorcidos, como sempre acontece com os custos de assistência médica.

Carlo Lazzaro
fonte
11
O bootstrap pode ser uma opção obrigatória quando os dados são distorcidos positivamente - por que não usar uma distribuição distorcida normal ou semelhante ao logon? SAS e R têm muitas opções.
James
11
A resposta de James merece consideração. No entanto, o problema comum que enfrento com o registro de dados de custo é a retrotransformação na métrica original antes de apresentar os resultados aos tomadores de decisão. Você pode evitar esse problema com autoinicialização não paramétrica.
Carlo Lazzaro
Carlo, desde que você tem experiência com a transformação log, você pode querer responder a uma outra pergunta minha (há uma recompensa de 50 pontos): stats.stackexchange.com/a/111932/54099
James
James, eu dei uma resposta tentadora à sua pergunta há alguns minutos atrás.
Carlo Lazzaro
χ 2 1t testes podem ser corrigidos para populações distorcidas, consulte jstor.org/stable/2286597 - as correções propostas funcionaram bem com populações distorcidas como com 10 observações. χ12
StasK 27/08/14
13

Outras respostas criticam o desempenho dos intervalos de confiança da inicialização , não a própria inicialização. Este é um problema diferente.

Se o seu contexto atender às condições de regularidade para a convergência da distribuição de auto-inicialização (convergência em termos do número de amostras de auto-inicialização), o método funcionará se você usar uma amostra de auto-inicialização grande o suficiente.

Caso você realmente queira encontrar problemas com o uso de bootstrap não paramétrico, aqui estão dois problemas:

(1) Problemas com reamostragem.

Um dos problemas do bootstrap, para amostras pequenas ou grandes, é a etapa de reamostragem. Nem sempre é possível reamostrar enquanto mantém a estrutura (dependência, temporal, ...) da amostra. Um exemplo disso é um processo sobreposto .

Suponha que haja um número de fontes independentes em cada um dos eventos que ocorrem de tempos em tempos. Os intervalos entre eventos sucessivos em qualquer fonte são assumidos como variáveis ​​aleatórias independentes, todas com a mesma distribuição, para que cada fonte constitua um processo de renovação de um tipo familiar. As saídas das fontes são combinadas em uma saída em pool.

Como você reamostraria mantendo a estrutura desconhecida da dependência ?

(2) Amostras estreitas de inicialização e intervalos de confiança de inicialização para amostras pequenas .

Em amostras pequenas, o mínimo e o máximo dos estimadores para cada subamostra podem definir um intervalo estreito; em seguida, os pontos finais direito e esquerdo de qualquer intervalo de confiança serão muito estreitos (o que é contra-intuitivo, dada a pequena amostra!) Em alguns modelos.

Suponha que , em que é a taxa. Usando a probabilidade do perfil, é possível obter um intervalo de confiança aproximado (o intervalo de confiança aproximado de 95% é o intervalo de probabilidade do perfil de 0,147 nível) da seguinte maneira:λ > 0x1,x2Exp(λ)λ>0

set.seed(1)
x <- rexp(2,1)
# Maximum likelihood estimator
1/mean(x)

# Profile likelihood: provides a confidence interval with right-end point beyond the maximum inverse of the mean
Rp <- Vectorize(function(l) exp(sum(dexp(x,rate=l,log=T))-sum(dexp(x,rate=1/mean(x),log=T))))

curve(Rp,0,5)
lines(c(0,5),c(0.147,0.147),col="red")

Este método produz uma curva contínua de onde você pode extrair o intervalo de confiança. O estimador de probabilidade máxima de é . Ao reamostrar, existem apenas três valores possíveis que podemos obter para esse estimador, cujos valores máximo e mínimo definem os limites para os intervalos de confiança de autoinicialização correspondentes. Isso pode parecer estranho mesmo para grandes amostras de bootstrap (você não ganha muito aumentando esse número):X = 2 / ( x 1 + x 2 )λλ^=2/(x1+x2)

library(boot)
set.seed(1)
x <- rexp(2,1)
1/mean(x)
# Bootstrap interval: limited to the maximum inverse of the mean
f.boot <- function(data,ind) 1/mean(data[ind])
b.b <- boot(data=x, statistic=f.boot, R=100000)
boot.ci(b.b, conf = 0.95, type = "all")
hist(b.b$t)

Nesse caso, quanto mais próximos de e , menor a distribuição da inicialização e, consequentemente, menor o intervalo de confiança (que pode estar localizado longe do valor real). Este exemplo está, de fato, relacionado ao exemplo apresentado por @GregSnow, embora seu argumento tenha sido mais empírico. Os limites mencionados mencionam o mau desempenho de todos os intervalos de confiança de bootstrap analisados ​​pelo @Wolfgang.x 2x1x2

Troilo
fonte
6

O bootstrap funciona bem em amostras pequenas, garantindo a correção dos testes (por exemplo, que o nível de significância nominal de 0,05 seja próximo ao tamanho real do teste), no entanto, o bootstrap não lhe concede magicamente energia extra. Se você tem uma amostra pequena, tem pouco poder, fim da história.

Regressões paramétricas (modelos lineares) e semiparamétricas (GEE) tendem a ter poucas propriedades de amostra pequenas ... a primeira como conseqüência da grande dependência de suposições paramétricas, a segunda por causa da ampliação de estimativas de erro padrão robustas em amostras pequenas. O bootstrapping (e outros testes baseados em reamostragem) tem um desempenho muito bom nessas circunstâncias.

Para previsão, o bootstrapping fornecerá estimativas melhores (mais honestas) da validade interna do que a validação de amostra dividida.

Muitas vezes, o bootstrapping fornece menos energia como consequência da correção inadvertida de procedimentos médios de imputação / verificação quente (como na correspondência difusa). O bootstrapping foi erroneamente proposto para dar mais poder nas análises correspondentes, em que os indivíduos foram reamostrados para atender ao tamanho suficiente do cluster, fornecendo conjuntos de dados correspondentes com um maior que o conjunto de dados da análise.n

AdamO
fonte
2
(por exemplo, que o nível de significância nominal de 0,05 é próximo ao tamanho real do teste), - mas no código R acima vimos que o bootstrap não preserva o tamanho do teste, certo?
James
Vejo que você está se referindo à resposta fornecida por Greg Snow. Fiquei surpreso com esse resultado. Precisarei verificar novamente meus fatos e editar minha resposta. Obrigado.
Adamo