Loading [MathJax]/jax/element/mml/optable/SuppMathOperators.js

1 votos

Calcular la fdc y el cuantil de una distribución específica

Quiero calcular un cuantil de una distribución específica. Por lo tanto, necesito la fdc. Mi distribución es una distribución estandarizada de Student's-t, esto puede ser escrito como f(l|ν)=(π(ν2))12Γ(ν2)1Γ(ν+12)(1+l2ν2)1+ν2

Esto se puede implementar en R con:

probabilityfunction<-function(x)(pinumber*(param-2))^(-1/2)*gamma(param
/2)^(-1)*gamma((param+1)/2)*(1+l^2/(param-2))^(-(1+param)/2)

Donde pinumber es el valor de pi y param es el ν . Digamos que ν=5 . Entonces puedo obtener la probabilidad simplemente insertando un valor determinado para mi l . Pero quiero tener la densidad acumulada, ya que luego quiero calcular el cuantil. He pensado en algo como

cumsum(probabilityfunction(5))

para darme el valor acumulado hasta 5.

Pero obviamente esto no funciona. ¿Cómo puedo obtener la probabilidad acumulada y posteriormente el cuantil?

EDIT: Vale, he encontrado una primera mejora:

integrate(probabilityfunction,-Inf,2) 

sería un buen punto de partida, pero ¿cómo hacer lo otro?

3voto

Thraupidae Puntos 136

La FCD y las funciones de cuantiles de esta distribución (extremadamente restrictiva) son fáciles de obtener en R, utilizando que se trata de una distribución Student-t con un parámetro de escala particular :

CDF

pt(x/sqrt((nu-2)/nu),df=nu)

Quantile

qt(p,df=nu)*sqrt((nu-2)/nu)

Esto parece un duplicado de su pregunta anterior: transformación cuantílica con distribución t (lo siento, tienes que usar el transformación monótona ;) )

1voto

pkaeding Puntos 12935

Ampliando tu propia sugerencia de utilizar la integración numérica, puedes invertir la función utilizando la resolución de ecuaciones no lineales. No he probado esto a través, por lo que puede haber errores, pero algo como esto debería funcionar:

dens<-function(x, nu)
{
    (pi*(nu-2))^(-1/2)*gamma(nu/2)^(-1)*gamma((nu+1)/2)*(1+x^2/(nu-2))^(-(1+nu)/2)
}

cum<-function(x, nu)
{
    integrate(dens,-Inf,x, nu=nu)
}

quant<-function(p, nu)
{
    #maybe format the result somewhat better
    nleqslv(0, function(x){cum(x, nu)-p} )
}

cum(0.05, 3)

No debería ser muy difícil generalizar esto para poder pasar cualquier función de densidad y parámetros, pero hay algunas condiciones para que la integración y la inversión funcionen. Tampoco puedo decir algo sobre la precisión (el resultado muestra un error estándar, pero esto no tiene en cuenta el error en la integración).

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