Eu tenho um conjunto de dados de amostra com 31 valores. Fiz um teste t bicaudal usando R para testar se a média verdadeira é igual a 10:
t.test(x=data, mu=10, conf.level=0.95)
Resultado:
t = 11.244, df = 30, p-value = 2.786e-12
alternative hypothesis: true mean is not equal to 10
95 percent confidence interval:
19.18980 23.26907
sample estimates:
mean of x
21.22944
Agora estou tentando fazer a mesma coisa manualmente:
t.value = (mean(data) - 10) / (sd(data) / sqrt(length(data)))
p.value = dt(t.value, df=length(lengths-1))
O valor t calculado usando esse método é o mesmo que a saída da função R do teste t. O valor-p, no entanto, é 3.025803e-12.
Alguma idéia do que estou fazendo de errado?
Obrigado!
EDITAR
Aqui está o código R completo, incluindo meu conjunto de dados:
# Raw dataset -- 32 observations
data = c(21.75, 18.0875, 18.75, 23.5, 14.125, 16.75, 11.125, 11.125, 14.875, 15.5, 20.875,
17.125, 19.075, 25.125, 27.75, 29.825, 17.825, 28.375, 22.625, 28.75, 27, 12.825,
26, 32.825, 25.375, 24.825, 25.825, 15.625, 26.825, 24.625, 26.625, 19.625)
# Student t-Test
t.test(x=data, mu=10, conf.level=0.95)
# Manually calculate p-value
t.value = (mean(data) - 10) / (sd(data) / sqrt(length(data)))
p.value = dt(t.value, df=length(data) - 1)
r
statistical-significance
t-test
p-value
herbps10
fonte
fonte
abs
.Eu postei isso como um comentário, mas quando eu queria adicionar um pouco mais de edição, ficou muito tempo, então eu mudei para cá.
Edit : Sua estatística de teste e df estão corretos. A outra resposta observa o problema com o cálculo da área da cauda na chamada para
pt()
e a duplicação para duas caudas, o que resolve sua diferença. No entanto, deixarei minha discussão / comentário anterior, porque enfatiza de maneira mais geral os pontos relevantes sobre valores-p em caudas extremas:É possível que você não esteja fazendo nada errado e ainda assim faça a diferença, mas se você postar um exemplo reproduzível, poderá ser possível investigar melhor se há algum erro (digamos, no df).
Essas coisas são calculadas a partir de aproximações que podem não ser particularmente precisas no extremo extremo.
Se as duas coisas não usarem aproximações idênticas, elas podem não concordar estreitamente, mas essa falta de concordância não deve importar (para a área exata da cauda que é um número tão significativo, as suposições necessárias teriam que se manter em graus surpreendentes de precisão). Você realmente tem normalidade exata, independência exata, variação exatamente constante?
fonte
A melhor maneira de calcular manualmente é:
fonte
Eu realmente gosto da resposta que @Aaron forneceu, juntamente com os
abs
comentários. Acho que uma confirmação útil é executarpt(1.96, 1000000, lower.tail = F) * 2
qual produz
0.04999607
.Aqui, estamos usando a propriedade conhecida de que 95% da área sob a distribuição normal ocorre com ~ 1,96 desvios padrão, portanto a saída de ~ 0,05 fornece nosso valor-p. Eu usei 1000000, pois quando N é enorme, a distribuição t é quase a mesma que a distribuição normal. Executar isso me proporcionou conforto na solução do @ Aaron.
fonte