Cálculo del valor p a partir de una distribución arbitraria

14

Espero que esta no sea una pregunta tonta. Digamos que tengo una distribución continua arbitraria. También tengo una estadística, y me gustaría usar esta distribución arbitraria para obtener un valor p para esta estadística.

Me doy cuenta de que en R es fácil hacer esto siempre que su distribución se ajuste a una de las integradas, como si fuera normal. ¿Pero hay una manera fácil de hacer esto con cualquier distribución dada, sin hacer ese tipo de suposición?

Alan H.
fuente

Respuestas:

12

Si tiene una función de distribución acumulativa , entonces calcular el valor p para la estadística T dada es simplemente 1 - F ( T ) . Esto es sencillo en R. Si, por otro lado, tiene la función de densidad de probabilidad , entonces F ( x ) = x - p ( t ) d t . Puede encontrar esta integral analítica o numéricamente. En R esto se verá así:FpT1F(T)F(x)=xp(t)dt

dF <- function(x)dnorm(x)
pF <- function(q)integrate(dF,-Inf,q)$value 

> pF(1)
[1] 0.8413448
> pnorm(1)
[1] 0.8413447

Puede sintonizar integratepara una mejor precisión. Por supuesto, esto puede fallar en casos específicos, cuando la integral no se comporta bien, pero debería funcionar para la mayoría de las funciones de densidad.

Por supuesto, puede pasar parámetros a pF, si tiene varios valores de parámetros para probar y no desea redefinir dFcada vez.

dF <- function(x,mean=0,sd=1)dnorm(x,mean=mean,sd=sd)
pF <- function(q,mean=0,sd=1)integrate(dF,-Inf,q,mean=mean,sd=sd)$value 

> pF(1,1,1)
[1] 0.5
> pnorm(1,1,1)
[1] 0.5

Por supuesto, también puede usar los métodos de Monte-Carlo como detalla @suncoolsu, este sería solo otro método numérico para la integración.

mpiktas
fuente
Creo que su método es mucho más fácil de lo que sugerí, especialmente si no hay restricciones en la función que está integrando. No conozco la tecnología numérica. en R.
suncoolsu
Sí, creo que esto está más en línea con mis habilidades actuales. ¡Gracias!
Alan H.
En realidad, no estoy seguro de seguir bien cómo funcionan estas funciones. Los ejemplos dan resultados para una distribución normal, pero ¿dónde conecto mi función de densidad de probabilidad?
Alan H.
(He realizado pruebas y mis datos no parecen ser remotamente normales).
Alan H.
@ Alan H., conecta tu función de densidad a dF. Es decir, dFdebe devolver el valor de la función de densidad en un argumento dado.
mpiktas
9

Sí, es posible utilizar cualquier distribución arbitraria para obtener un valor p para cualquier estadística . Teórica y prácticamente puede calcular el valor p (unilateral) mediante esta fórmula.

pvalue=P[T>Tobserved|H0holds]

TTobserved

TH0T

La única suposición que está haciendo aquí es: conoce la distribución nula de T (que puede no estar en los formatos estándar de generador de números aleatorios R). Eso es todo, siempre que conozca la distribución nula, se puede calcular el valor p.

suncoolsu
fuente
1
Debo comentar: esta es una de las razones por las cuales los valores p son tan populares y fáciles de entender. (En mi humilde opinión)
suncoolsu
Ok, esto tiene sentido. Tengo lo que creo que es una buena estimación de la distribución nula. ¿Alguna pista sobre cómo implementar esto en R? ¡Gracias!
Alan H.
1
@Alan: ¿sabe cómo generar valores aleatorios a partir de su distribución nula? En caso afirmativo, suponga que - T = c (T1, ..., TN) son sorteos de la distribución nula - p-value = sum (T> T_obs) / N. Si no sabe cómo generar, puede que necesite usar Metropolis Sampling o Gibbs Sampling para obtener T1 ... TN, pero es muy factible.
suncoolsu