60 votos

Calculando manualmente el valor de P de t-valor de la prueba t

Tengo un conjunto de datos de ejemplo con el 31 de valores. Me encontré con una de dos colas prueba de t usando R para probar si la media real es igual a 10:

t.test(x=data, mu=10, conf.level=0.95)

Salida:

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 

Ahora estoy tratando de hacer lo mismo de forma manual:

t.value = (mean(data) - 10) / (sd(data) / sqrt(length(data))) 
p.value = dt(t.value, df=length(lengths-1))

El t-valor calculado utilizando este método es la misma que la salida de la prueba de t R función. El p-valor, sin embargo, viene a ser 3.025803 e-12.

Alguna idea de lo que estoy haciendo mal?

Gracias!

EDITAR

Aquí está todo el código R, incluyendo mis datos:

# 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)

52voto

Raptrex Puntos 115

Uso pt y lo hacen de dos colas.

> 2*pt(11.244, 30, lower=FALSE)
[1] 2.785806e-12

10voto

AdamSane Puntos 1825

He publicado esto como un comentario, pero cuando quise agregar un poco más en editar, se hizo demasiado largo así que me he movido de aquí abajo.

Edit: El estadístico de prueba y d.f son correctos. La otra respuesta se señala que el problema con el cálculo del área de la cola en la llamada a pt(), y la duplicación de dos colas, que se resuelve la diferencia. Sin embargo, yo voy a dejar mi discusión anterior/comentario porque hace que los puntos más general acerca de los valores de p en el extremo de las colas:

Es posible que usted podría estar haciendo nada malo y aún así obtener una diferencia, pero si después de un reproducible ejemplo podría ser posible investigar más a fondo si usted tiene algún error (es decir en el df).

Estas cosas son calculados a partir de aproximaciones que no puede ser particularmente preciso en el extremo de la cola.

Si las dos cosas no utilizar las mismas aproximaciones que pueden no estar de acuerdo muy de cerca, pero que la falta de acuerdo no importa (para conocer el área de la cola que lejos de ser significativo el número, la hipótesis tendría que llevar a cabo para asombrosa grados de precisión). ¿Realmente tienen exacta de la normalidad exacta de la independencia, exactamente varianza constante?

Usted no debe necesariamente esperar gran exactitud donde los números no significan nada de todos modos. ¿En qué medida importa si el calculado aproximada p-valor es $2\times 10^{-12}$ o $3\times 10^{-12}$? Ni el número de la medición de la real p-valor de su verdadera situación. Incluso si uno de los números que hizo representan el verdadero valor de p de su verdadera situación, una vez que su siguiente acerca de $0.0001$, ¿por qué te importa lo que el valor era en realidad?

8voto

Dan Puntos 12178

La mejor manera de calcular de forma manual es:

t.value = (mean(data) - 10) / (sd(data) / sqrt(length(data))) 
p.value = 2*pt(-abs(t.value), df=length(data)-1)

Usted necesita la función abs (), porque de lo contrario se corre el riesgo de obtener los valores de p mayor que $1$ (cuando la media de los datos es mayor que el dado media)!

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X