Cálculo manual del valor p para la prueba t: cómo evitar valores mayores que


8

Estos dos métodos para calcular el valor p deberían ser equivalentes:

t.test(rats.drug,mu=1.2)$p.value
2*pt((mean(rats.drug)-1.2)*sqrt(n)/sd(rats.drug),df=n-1)

El problema con el segundo método es que existe el riesgo de obtener valores mayores que (de hecho, hasta ):12

2*pt((1.5-1.2)*sqrt(100)/.5,df=100-1)
[1] 2

Por supuesto, esto puede remediarse

2*pt((1.5-1.2)*sqrt(100)/.5,df=100-1,lower=F)
[1] 3.245916e-08

Mi pregunta
Obviamente, el algoritmo de la función t-test es lo suficientemente inteligente como para distinguir estos dos casos (si la media de la muestra es mayor o menor que la media dada). ¿Existe un método fácil para replicar manualmente el cálculo del valor p como lo hace la función t-test?

Mi solución en este momento es una declaración if que verifica si el valor resultante es mayor que y, en este caso, vuelve a hacer el mismo cálculo con la opción menor = F, pero tal vez haya una mejor manera.1


8
Mira el código: getAnywhere(t.test.default). Lo encontrarás pval <- 2 * pt(-abs(tstat), df)allí.
Roland

Respuestas:



0

Glen_b tiene toda la razón sobre el abs, sin embargo, he encontrado que en ciertos conjuntos de datos los valores requerirían -abstener el efecto deseado. No puedo explicar por qué, pero dejaré esta línea de código aquí, en caso de que alguien que tenga un problema similar encuentre este hilo.

  t.value <- betacoeff/standard error of the beta coefficients
  p.value <- 2 * pt(-abs(t.value), df = nrow(data)-2)

Respuesta ampliada a petición de mdewey.


1
¿Puede ampliar cómo cree que esto se suma al comentario y la respuesta que ya están allí?
mdewey
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.