8 votos

¿Cuál es la distribución de estos datos?

Tengo los datos, y graficar la distribución de los datos, y el uso de la qqnorm función, pero parece que no siguen una distribución normal, por lo cual la distribución se debe usar para discribe los datos?

Empírica de la función de distribución acumulativa enter image description here

enter image description here

12voto

georgiana Puntos 6

Le sugiero dar pesado-cola Lambert W x F o sesgada Lambert W x F distribuciones de una prueba (descargo de responsabilidad: yo soy el autor). En R que se implementaron en el LambertW paquete.

Surgen de una paramétrico, no-lineal de la transformación de una variable aleatoria (RV) $X \sim F$, a un pesado de cola (sesgada) de la versión $Y \sim \text{Lambert W} \times F$. Para $F$ Gaussiano, pesado-cola Lambert W x F se reduce a Tukey $h$ distribución. (He aquí el esquema de pesado-cola versión, la sesgada uno es análogo.)

Tienen un parámetro $\delta \geq 0$ ($\gamma \in \mathbb{R}$ para sesgada Lambert W x F) que regula el grado de cola de pesadez (asimetría). Opcionalmente, también puede elegir diferentes a la izquierda y a la derecha pesadas colas para lograr pesado-colas y la asimetría. Transforma una Normal estándar $U \sim \mathcal{N}(0,1)$ a un Lambert W $\times$ Gaussiano $Z$ por $$ Z = U \exp\left(\frac{\delta}{2} U^2\right) $$

If $\delta > 0$ $Z$ has heavier tails than $U$; for $\delta = 0$, $Z \equiv U$.

If you don't want to use the Gaussian as your baseline, you can create other Lambert W versions of your favorite distribution, e.g., t, uniform, gamma, exponential, beta, ... However, for your dataset a double heavy-tail Lambert W x Gaussian (or a skew Lambert W x t) distribution seem to be a good starting point.

library(LambertW)
set.seed(10)

### Set parameters ####
# skew Lambert W x t distribution with 
# (location, scale, df) = (0,1,3) and positive skew parameter gamma = 0.1
theta.st <- list(beta = c(0, 1, 3), gamma = 0.1)
# double heavy-tail Lambert W x Gaussian
# with (mu, sigma) = (0,1) and left delta=0.2; right delta = 0.4 (-> heavier on the right)
theta.hh <- list(beta = c(0, 1), delta = c(0.2, 0.4))

### Draw random sample ####
# skewed Lambert W x t
yy <- rLambertW(n=1000, distname="t", theta = theta.st)

# double heavy-tail Lambert W x Gaussian (= Tukey's hh)
zz =<- rLambertW(n=1000, distname = "normal", theta = theta.hh)

### Plot ecdf and qq-plot ####
op <- par(no.readonly=TRUE)
par(mfrow=c(2,2), mar=c(3,3,2,1))
plot(ecdf(yy))
qqnorm(yy); qqline(yy)

plot(ecdf(zz))
qqnorm(zz); qqline(zz)
par(op)

ecdf and qqplot of skewed/heavy-tailed Lambert W x F distributions

In practice, of course, you have to estimate $\theta = (\beta \delta)$, where $\beta$ is the parameter of your input distribution (e.g., $\beta = (\mu \sigma)$ for a Gaussian, or $\beta = (c, s, \nu)$ for a $t$ de distribución; véase el documento para más detalles):

### Parameter estimation ####
mod.Lst <- MLE_LambertW(yy, distname="t", type="s")
mod.Lhh <- MLE_LambertW(zz, distname="normal", type="hh")

layout(matrix(1:2, ncol = 2))
plot(mod.Lst)
plot(mod.Lhh)

enter image description here

Desde esta pesada-cola generación se basa en un bijective transformaciones de RVs/datos, usted puede quitar pesado-las colas de los datos y comprobar si son de niza ahora, es decir, si son de Gauss (y la prueba es el uso de pruebas de Normalidad).

### Test goodness of fit ####
## test if 'symmetrized' data follows a Gaussian
xx <- get_input(mod.Lhh)
normfit(xx)

enter image description here

Esto funcionó bastante bien para el conjunto de datos simulados. Sugiero darle una oportunidad y ver si usted puede también Gaussianize() sus datos.

Sin embargo, como @whuber señalado, la bimodalidad puede ser un problema aquí. Así que tal vez usted desee comprobar en los datos transformados (sin las pesadas colas) lo que está pasando con esta bimodalidad y así darle ideas sobre cómo el modelo de tu (original) de datos.

7voto

Niall Puntos 51

Esto se parece a una distribución asimétrica que tiene más colas, en ambas direcciones, de la distribución normal.

  • Usted puede ver el largo tailedness debido a la observada puntos son más extremas que las que se espera bajo la distribución normal, tanto en el lado izquierdo y derecho (es decir, que están por debajo y por encima de la línea, respectivamente).

  • Usted puede ver la asimetría debido a que, en la cola derecha, la medida en que los puntos son más extremas de lo que cabría esperar en condiciones normales de distribución es mayor que la que hay en la cola izquierda.

Yo no puedo pensar en ninguna "enlatados" de las distribuciones que tienen esta forma pero no es demasiado duro para "cocinar" una distribución que tiene las propiedades que se indicó anteriormente.

Aquí es un ejemplo simulado (en R):

set.seed(1234)
x=rexp(1e3)
y=-rexp(1e3,rate=2)
z=c(x,y)
qqnorm(z)
qqline(z) # see below for the plot. 
plot( ecdf(z) ) # see below for plot (2nd plot)

La variable aquí es una mezcla 50/50 entre un ${\rm exponential}(1)$ e una ${\rm exponential}(2)$ refleja de alrededor de 0. Esta decisión se tomó porque será definitionally asimétrica, puesto que hay diferentes parámetros de la frecuencia, y ambos serán de cola larga en relación a la distribución normal, con la cola derecha es más larga, ya que la tasa en el lado derecho es más grande.

En este ejemplo se produce una bastante similar qqplot y empírica de la CDF (cualitativamente) a lo que estamos viendo:

enter image description hereenter image description here

0voto

Seth Puntos 507

En orden a la figura de distribución que es el mejor ajuste, en primer lugar, identificar algunos de los destinos posibles distribuciones: yo iba a pensar en el mundo real del proceso que genera los datos, luego me iba a caber un cierto potencial de las densidades para los datos y comparar sus loglikelihood puntuaciones para ver que la distribución de potencial ajuste mejor. Esto es fácil en R con la fitdistr función en la biblioteca de MASA.

Si los datos Macro similares a z, entonces:

>fitdistr(z,'cauchy',list(location=mean(z),scale=sqrt(sd(z))))$loglik
[1] -2949.068

> fitdistr(z,'normal')$loglik
[1] -3026.648

> fitdistr(z,'t')$loglik
[1] -2830.861

Así que esto le da a la t de la distribución de mejor ajuste (de los que probé) para la Macro de datos. confirmar esto con algunos qqplots uso de los parámetros de fitdistr.

> qqplot(z,rt(length(z),df=2.7))  

Luego comparar esta parcela de la otra distribución se ajusta.

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