Necesita un algoritmo para calcular la probabilidad relativa de que los datos sean muestras de distribución normal versus distribución lognormal


13

Supongamos que tiene un conjunto de valores y desea saber si es más probable que se muestrearon de una distribución gaussiana (normal) o de una distribución lognormal.

Por supuesto, idealmente sabría algo sobre la población o sobre las fuentes de error experimental, por lo que tendría información adicional útil para responder la pregunta. Pero aquí, supongamos que solo tenemos un conjunto de números y ninguna otra información. ¿Qué es más probable: muestreo de un gaussiano o muestreo de una distribución lognormal? ¿Cuánto más probable? Lo que espero es un algoritmo para seleccionar entre los dos modelos y, con suerte, cuantificar la probabilidad relativa de cada uno.


1
Podría ser un ejercicio divertido tratar de caracterizar la distribución sobre las distribuciones en la naturaleza / literatura publicada. Por otra parte, nunca será más que un ejercicio divertido. Para un tratamiento serio, puede buscar una teoría que justifique su elección, o con suficientes datos: visualice y pruebe la bondad de ajuste de cada distribución de candidatos.
JohnRos

3
Si se trata de generalizar por experiencia, diría que las distribuciones sesgadas positivamente son el tipo más común, especialmente para las variables de respuesta que son de interés central, y que los lognormales son más comunes que los normales. Un volumen de 1962 El científico especula editado por el famoso estadístico IJ Good incluye una pieza anónima "Reglas de trabajo de Bloggins", que contiene la afirmación "La distribución normal del registro es más normal de lo normal". (Varias de las otras reglas son fuertemente estadísticas.)
Nick Cox

Parece que interpreto su pregunta de manera diferente a JohnRos y Ansoestevez. Para mí, su pregunta suena como una sobre la selección de modelos simples , es decir, una cuestión de calcular , donde M es la distribución normal o logarítmica normal y D son sus datos. Si la selección del modelo no es lo que busca, ¿puede aclarar? PAG(METROre)METROre
Lucas

@lucas Creo que tu interpretación no es muy diferente a la mía. En cualquier caso, debe hacer supuestos a priori .
anxoestevez

2
¿Por qué no simplemente calcular la razón de probabilidad generalizada y alertar al usuario cuando favorece el log-normal?
Scortchi - Restablece a Monica

Respuestas:


7

Puede adivinar mejor el tipo de distribución ajustando cada distribución (normal o logarítmica normal) a los datos por la máxima probabilidad, y luego comparando la probabilidad logarítmica en cada modelo: el modelo con la mayor probabilidad logarítmica es el mejor ajuste. Por ejemplo, en R:

# log likelihood of the data given the parameters (par) for 
# a normal or lognormal distribution
logl <- function(par, x, lognorm=F) {
    if(par[2]<0) { return(-Inf) }
    ifelse(lognorm,
    sum(dlnorm(x,par[1],par[2],log=T)),
    sum(dnorm(x,par[1],par[2],log=T))
    )
}

# estimate parameters of distribution of x by ML 
ml <- function(par, x, ...) {
    optim(par, logl, control=list(fnscale=-1), x=x, ...)
}

# best guess for distribution-type
# use mean,sd of x for starting parameters in ML fit of normal
# use mean,sd of log(x) for starting parameters in ML fit of lognormal
# return name of distribution type with highest log ML
best <- function(x) {
    logl_norm <- ml(c(mean(x), sd(x)), x)$value
        logl_lognorm <- ml(c(mean(log(x)), sd(log(x))), x, lognorm=T)$value
    c("Normal","Lognormal")[which.max(c(logl_norm, logl_lognorm))]
}

Ahora genera números a partir de una distribución normal y ajusta una distribución normal por ML:

set.seed(1)
x = rnorm(100, 10, 2)
ml(c(10,2), x)

Produce:

$par
[1] 10.218083  1.787379

$value
[1] -199.9697
...

Compare la probabilidad logarítmica para el ajuste de ML de distribuciones normales y lognormales:

ml(c(10,2), x)$value # -199.9697
    ml(c(2,0.2), x, lognorm=T)$value # -203.1891
best(x) # Normal

Pruebe con una distribución lognormal:

best(rlnorm(100, 2.6, 0.2)) # lognormal

La asignación no será perfecta, dependiendo de n, mean y sd:

> table(replicate(1000, best(rnorm(500, 10, 2))))

Lognormal    Normal 
        6       994 
> table(replicate(1000, best(rlnorm(500, 2.6, 0.2))))

Lognormal    Normal 
      999         1 

1
No necesita encontrar las estimaciones de los parámetros de máxima verosimilitud numéricamente para el normal o el log-normal (aunque muestra cómo generalizaría la idea para comparar otras distribuciones). Aparte de eso, enfoque muy sensible.
Scortchi - Restablece a Monica

Apenas he usado R o el concepto de máxima probabilidad, así que aquí hay una pregunta básica. Sé que no podemos comparar el AIC (o BIC) al ajustar una distribución normal a los datos frente a los registros de los datos, porque el AIC o el BIC no serían comparables. Es necesario ajustar dos modelos a un conjunto de datos (sin transformaciones; sin exclusiones atípicas, etc.), y la transformación de los datos cambiará AIC o BIC independientemente de que la comparación sea falsa. ¿Qué hay de ML? ¿Es legítima esta comparación?
Harvey Motulsky

Encontramos las distribuciones normales y lognormales que mejor se ajustan a los datos, luego calculamos la probabilidad de observar los datos suponiendo que provienen de esas distribuciones (la probabilidad o p(X|\theta)). No estamos transformando los datos. Imprimimos la distribución para la cual la probabilidad de observar los datos es más alta. Este enfoque es legítimo pero tiene la desventaja de que no inferimos la probabilidad del modelo dados los datos p(M|X), es decir, la probabilidad de que los datos provengan de una distribución normal vs lognormal (p. Ej. P (normal) = 0.1, p (lognormal) = 0.9) a diferencia del enfoque bayesiano.
waferthin

1
@Harvey Suficientemente cierto, pero irrelevante: preguntaste sobre ajustar las distribuciones normales vs log-normales a los mismos datos, y esto es lo que whannymahoots está respondiendo. Debido a que el número de parámetros libres es el mismo para ambos modelos, la comparación de AIC o BIC se reduce a comparar las probabilidades de registro.
Scortchi - Restablece a Monica

@wannymahoots Cualquier previo razonable para un enfoque bayesiano en este contexto, basándose en la estimación de las probabilidades relativas de que un usuario de software esté tratando de ajustar datos normales o logarítmicos normales, será tan poco informativo que dará resultados similares a un enfoque basado solo en la probabilidad.
Scortchi - Restablece a Monica

11

M{Normal,Log-normal}X={x1,...,xN}

P(METROX)PAG(XMETRO)PAG(METRO).

La parte difícil es obtener la probabilidad marginal ,

P(XM)=P(Xθ,M)PAG(θMETRO)reθ.

pag(θMETRO)XY={Iniciar sesiónX1,...,Iniciar sesiónXnorteYX,

PAG(XMETRO=Log-Normal)=PAG(YMETRO=Normal)yoEl |1XyoEl |.

PAG(θMETRO)PAG(σ2,μMETRO=Normal)PAG(METRO)

Ejemplo:

PAG(μ,σ2METRO=Normal)metro0 0=0 0,v0 0=20,un0 0=1,si0 0=100

ingrese la descripción de la imagen aquí

Según Murphy (2007) (Ecuación 203), la probabilidad marginal de la distribución normal viene dada por

PAG(XMETRO=Normal)=El |vnorteEl |12El |v0 0El |12si0 0un0 0sinorteunnorteΓ(unnorte)Γ(un0 0)1πnorte/ /22norte

unnorte,sinorte,vnortePAG(μ,σ2X,METRO=Normal)

vnorte=1/ /(v0 0-1+norte),metronorte=(v0 0-1metro0 0+yoXyo)/ /vnorte,unnorte=un0 0+norte2,sinorte=si0 0+12(v0 0-1metro0 02-vnorte-1metronorte2+yoXyo2).

Yo uso los mismos hiperparámetros para la distribución log-normal,

PAG(XMETRO=Log-normal)=PAG({Iniciar sesiónX1,...,Iniciar sesiónXnorte}METRO=Normal)yoEl |1XyoEl |.

0.1PAG(METRO=Log-normal)=0.1

ingrese la descripción de la imagen aquí

el posterior se comporta así:

ingrese la descripción de la imagen aquí

norte

Al implementar las ecuaciones, sería una buena idea trabajar con densidades logarítmicas en lugar de densidades. Pero de lo contrario debería ser bastante sencillo. Aquí está el código que usé para generar las tramas:

https://gist.github.com/lucastheis/6094631


4

Parece que está buscando algo bastante pragmático para ayudar a los analistas que probablemente no sean estadísticos profesionales y que necesiten algo que los impulse a hacer lo que deberían ser técnicas exploratorias estándar, como observar gráficos qq, gráficos de densidad, etc.

En cuyo caso, ¿por qué no simplemente hacer una prueba de normalidad (Shapiro-Wilk o lo que sea) en los datos originales, y una en el registro de datos transformados, y si el segundo valor p es más alto, active un indicador para que el analista considere usar una transformación de registro ? Como beneficio adicional, escupe un gráfico de 2 x 2 de la gráfica de línea de densidad y la gráfica de qqnorm de los datos sin procesar y transformados.

Esto técnicamente no responderá a su pregunta sobre la probabilidad relativa, pero me pregunto si es todo lo que necesita.


Inteligente. Tal vez esto sea suficiente y evite la necesidad de explicar los cálculos de probabilidad ... Gracias.
Harvey Motulsky
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.