J'ai un échantillon de données avec 31 valeurs. J'ai exécuté un test t bilatéral en utilisant R pour vérifier si la moyenne vraie est égale à 10:
t.test(x=data, mu=10, conf.level=0.95)
Sortie:
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
Maintenant, j'essaie de faire la même chose manuellement:
t.value = (mean(data) - 10) / (sd(data) / sqrt(length(data)))
p.value = dt(t.value, df=length(lengths-1))
La valeur t calculée à l'aide de cette méthode est identique à celle fournie par la fonction R du test t. La valeur p, cependant, s’avère être 3.025803e-12.
Des idées que je fais mal?
Merci!
MODIFIER
Voici le code complet de R, y compris mon jeu de données:
# 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
la source
la source
abs
.J'ai posté ceci en tant que commentaire, mais lorsque j'ai voulu ajouter un peu plus au montage, il est devenu trop long, je l'ai donc déplacé ici.
Edit : Vos statistiques de test et df sont correctes. L'autre réponse souligne le problème du calcul de la surface de queue dans l'appel à
pt()
et du doublement pour deux queues, ce qui résout votre différence. Néanmoins, je laisserai mon commentaire / commentaire précédent car il apporte des remarques plus générales sur les valeurs p dans les queues extrêmes:Il est possible que vous ne fassiez rien de mal et que vous obteniez tout de même une différence, mais si vous publiez un exemple reproductible, il sera peut-être possible de rechercher plus avant si vous avez une erreur (par exemple, dans le df).
Ces choses sont calculées à partir d'approximations qui peuvent ne pas être particulièrement précises dans l'extrême extrême.
Si les deux choses n'utilisent pas des approximations identiques, elles ne s'entendent peut-être pas étroitement, mais ce manque d'accord ne devrait pas avoir d'importance (pour que la zone exacte corresponde à un nombre aussi significatif, les hypothèses requises devraient tenir à des degrés étonnants précision). Avez-vous vraiment une normalité exacte, une indépendance exacte, une variance exactement constante?
la source
Le meilleur moyen de le calculer manuellement est:
la source
J'aime beaucoup la réponse fournie par @Aaron, ainsi que les
abs
commentaires. Je trouve une confirmation pratique est de courirpt(1.96, 1000000, lower.tail = F) * 2
qui cède
0.04999607
.Ici, nous utilisons la propriété bien connue selon laquelle 95% de l'aire sous la distribution normale se produit à environ 1,96 écart-type, ainsi le résultat de ~ 0,05 donne notre p-valeur. J'ai utilisé 1000000 depuis quand N est énorme, la distribution t est presque la même que la distribution normale. Cela m'a réconforté dans la solution de @ Aaron.
la source