Eu uso o pacote "boot" para calcular um valor p aproximado de inicialização de dois lados, mas o resultado está muito longe do valor p de usar t.test. Não consigo descobrir o que fiz de errado no meu código R. Alguém pode me dar uma dica para isso
time = c(14,18,11,13,18,17,21,9,16,17,14,15,
12,12,14,13,6,18,14,16,10,7,15,10)
group=c(rep(1:2, each=12))
sleep = data.frame(time, group)
require(boot)
diff = function(d1,i){
d = d1[i,]
Mean= tapply(X=d$time, INDEX=d$group, mean)
Diff = Mean[1]-Mean[2]
Diff
}
set.seed(1234)
b3 = boot(data = sleep, statistic = diff, R = 5000, strata=sleep$group)
pvalue = mean(abs(b3$t) > abs(b3$t0))
pvalue
O valor de p inicializado com dois lados (pvalor) = 0,4804, mas o valor de p com dois lados de t.test é 0,04342. Ambos os valores de p têm cerca de 11 vezes a diferença. Como isso pode acontecer?
mean(abs(b3$t0) < abs(b3$t-mean(b3$t)))
Respostas:
Você está usando o bootstrap para gerar dados sob a distribuição empírica dos dados observados. Isso pode ser útil para fornecer um intervalo de confiança na diferença entre os dois meios:
Para obter um valor- , você precisa gerar permutações sob a hipótese nula. Isso pode ser feito, por exemplo:p
Nesta solução, o tamanho dos grupos não é fixo, você reatribui aleatoriamente um grupo para cada indivíduo, inicializando a partir do conjunto de grupos inicial. Parece-me legítimo, no entanto, uma solução mais clássica é fixar o número de indivíduos de cada grupo; portanto, você apenas permuta os grupos em vez de iniciar (isso geralmente é motivado pelo design do experimento, onde os tamanhos dos grupos são previamente fixados). ):
fonte
A resposta de Elvis depende de permutações, mas, na minha opinião, não deixa claro o que há de errado com a abordagem de autoinicialização original. Deixe-me discutir uma solução baseada apenas no bootstrap.
O problema crucial da sua simulação original é que o bootstrap sempre fornece a distribuição VERDADEIRA da estatística de teste. No entanto, ao calcular o valor-p, você deve comparar o valor obtido da estatística de teste com sua distribuição SOB H0, ou seja, não com a distribuição verdadeira!
[Vamos deixar claro. Por exemplo, sabe-se que a estatística T do teste t clássico tem a distribuição t "central" clássica sob H0 e uma distribuição não central em geral. No entanto, todos estão familiarizados com o fato de que o valor observado de T é comparado com a distribuição t "central" clássica, ou seja, não se tenta obter a verdadeira distribuição t [não-central] para fazer a comparação com T.]
Seu valor p 0,4804 é muito grande, porque o valor observado "t0" da estatística do teste Mean [1] -Mean [2] fica muito próximo ao centro da amostra inicializada "t". É natural e normalmente é sempre assim [ou seja, independentemente da validade de H0], porque a amostra inicializada "t" emula a distribuição REAL de Mean [1] -Mean [2]. Mas, como observado acima [e também por Elvis], o que você realmente precisa é da distribuição de Mean [1] -Mean [2] SOB H0. É obvio que
1) em H0, a distribuição de Média [1] -Média [2] será centrada em torno de 0,
2) sua forma não depende da validade de H0.
Esses dois pontos sugerem que a distribuição de Média [1] -Média [2] sob H0 pode ser emulada pela amostra inicializada "t" SHIFTED, de modo que seja centralizada em torno de 0. Em R:
e o valor p correspondente será:
que fornece um valor "muito bom" de 0,0232. :-)
Deixe-me observar que o ponto "2)" mencionado acima é chamado de "equivalência de tradução" da estatística de teste e NÃO precisa se sustentar em geral! Ou seja, para algumas estatísticas de teste, o deslocamento do "t" com inicialização inicial não fornece uma estimativa válida da distribuição da estatística de teste em HO! Dê uma olhada nesta discussão e especialmente na resposta de P. Dalgaard: http://tolstoy.newcastle.edu.au/R/e6/help/09/04/11096.html
Seu problema de teste produz uma distribuição perfeitamente simétrica da estatística de teste, mas lembre-se de que existem alguns problemas com a obtenção de valores p de DOIS LADOS, no caso de uma distribuição com distorção de inicialização da estatística de teste. Mais uma vez, leia o link acima.
[E, finalmente, eu usaria o teste de permutação "puro" em sua situação; ou seja, a segunda metade da resposta de Elvis. :-)]
fonte
Existem várias maneiras de calcular os ICs de inicialização e os valores de p. A questão principal é que é impossível para o bootstrap gerar dados sob uma hipótese nula. O teste de permutação é uma alternativa viável baseada em reamostragem para isso. Para usar um bootstrap adequado, você deve fazer algumas suposições sobre a distribuição de amostragem da estatística de teste.
inicialização normal
Uma abordagem é um bootstrap normal em que você obtém a média e o desvio padrão da distribuição do bootstrap, calcula a distribuição de amostragem sob o nulo deslocando a distribuição e usando os percentis normais da distribuição nula no ponto da estimativa na amostra original do bootstrap . Essa é uma abordagem razoável quando a distribuição do bootstrap é normal, a inspeção visual geralmente é suficiente aqui. Os resultados dessa abordagem geralmente são muito próximos da estimativa de erro robusta ou baseada em sanduíche, robusta contra a heterocedasticidade e / ou suposições de variância finita da amostra. A suposição de uma estatística de teste normal é uma condição mais forte das suposições no próximo teste de autoinicialização que discutirei.
porcentagem de autoinicialização
Bootstrap estudantilizado
Exemplo de programação
Como exemplo, usarei os
city
dados no pacote de inicialização. Os intervalos de confiança da inicialização são calculados com este código:e produza esta saída:
O IC de 95% para o bootstrap normal é obtido calculando:
O valor p é assim obtido:
O que concorda que o IC normal de 95% não inclui o valor da razão nula de 1.
O IC do percentil é obtido (com algumas diferenças devido aos métodos de empate):
E o valor p para o bootstrap de percentil é:
Dá um p de 0,035, que também concorda com o intervalo de confiança em termos da exclusão de 1 do valor. Em geral, não podemos observar que, enquanto a largura do IC do percentil é quase tão ampla quanto o IC normal e que o IC do percentil está mais distante do nulo que o IC do percentil deve fornecer valores p inferiores. Isso ocorre porque o formato da distribuição amostral subjacente ao IC para o método do percentil não é normal.
fonte
boot.ci
e o argumento "type" para escolher um IC estudado (você também pode escolher um IC BCA). No entanto, como você pode calcular os valores de p? Você está usando a estimativa ou a estatística do teste? Eu tive uma pergunta semelhante que resposta seria muito apreciada.