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

28 votos

Distribución de la proporción gaussiana: Derivados contra subyacentes μ y σ2 s

Estoy trabajando con dos distribuciones normales independientes X y Y con medios μx y μy y desviaciones σ2x y σ2y .

Me interesa la distribución de su proporción Z=X/Y . Tampoco X ni Y tiene una media de cero, por lo que Z no se distribuye como Cauchy.

Necesito encontrar la FCD de Z y luego tomar la derivada de la FCD con respecto a μx , μy , σ2x y σ2y .

¿Alguien conoce un documento en el que ya se hayan calculado? ¿O cómo hacerlo yo mismo?

Encontré la fórmula de la FCD en un Papel de 1969 pero tomar estos derivados será definitivamente un gran dolor. ¿Tal vez alguien ya lo ha hecho o sabe cómo hacerlo fácilmente? Sobre todo necesito saber los signos de estos derivados.

Este documento también contiene una aproximación analíticamente más sencilla si Y es mayoritariamente positiva. No puedo tener esa restricción. Sin embargo, ¿tal vez la aproximación tiene el mismo signo que la verdadera derivada incluso fuera del rango de los parámetros?

1voto

Wolf5 Puntos 2906

0voto

jschmier Puntos 121

Considere la posibilidad de utilizar un paquete de matemáticas simbólicas como Mathematica, si tiene una licencia, o Sage si no la tiene.

Si sólo haces trabajo numérico, también podrías considerar la diferenciación numérica.

Aunque es tedioso, parece sencillo. Es decir, todas las funciones implicadas tienen derivadas fáciles de calcular. Podrías utilizar la diferenciación numérica para comprobar tu resultado cuando hayas terminado para estar seguro de que tienes la fórmula correcta.

0voto

Max Puntos 1424

Este es el tipo de problema que es muy fácil numéricamente, y menos propenso a errores también. Como dices que sólo necesitas los signos, asumo que las aproximaciones numéricas precisas son más que suficientes para tus necesidades. Aquí hay algo de código con un ejemplo de la derivada contra μx :

pratio <- function(z, mu_x=1.0, mu_y=1.0,var_x=0.2, var_y=0.2) {
    sd_x <- sqrt(var_x)
    sd_y <- sqrt(var_y)

    a <- function(z) {
        sqrt(z*z/var_x+1/var_y)
    }

    b <- function(z) {
        mu_x*z/var_x + mu_y/var_y
    }

    c <- mu_x^2/var_x + mu_y^2/var_y

    d <- function(z) {
        exp((b(z)^2 - c*a(z)^2)/(2*a(z)^2))
    }

    t1 <- (b(z)*d(z)/a(z)^3)
    t2 <- 1.0/(sqrt(2*pi)*sd_x*sd_y)
    t3 <- pnorm(b(z)/a(z)) - pnorm(-b(z)/a(z))
    t4 <- 1.0/(a(z)^2*pi*sd_x*sd_y)
    t5 <- exp(-c/2.0)
    return(t1*t2*t3 + t4*t5)
}

# Integrates to 1, so probably no typos.
print(integrate(pratio, lower=-Inf, upper=Inf))

cdf_ratio <- function(x, mu_x=1.0, mu_y=1.0,var_x=0.2, var_y=0.2) {
    integrate(function(x) {pratio(x, mu_x, mu_y, var_x, var_y)}, 
        lower=-Inf, upper=x, abs.tol=.Machine$double.eps)$value
} 

# Numerical differentiation here is very easy:
derv_mu_x <- function(x, mu_x=1.0, mu_y=1.0,var_x=0.2, var_y=0.2) {
    eps <- sqrt(.Machine$double.eps)
    left <- cdf_ratio(x, mu_x+eps, mu_y, var_x, var_y)
    right <- cdf_ratio(x, mu_x-eps, mu_y, var_x, var_y)
    return((left - right)/(2*eps))
}

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