9 votos

Lo que puede ser la distribución de cerca (o precisamente) ajustarse a las estadísticas "5 Resumen de número"?

Estoy de programación de una herramienta web (="soy estadísticas ignoramous que deriva aquí de stackoverflow.com") que permite a los científicos para entrar en las predicciones sobre el 5-número-resumen de las estadísticas de una variable. La entrada se realiza mediante la interfaz de usuario de la metáfora de un box-plot.

Me gustaría para permitir a los científicos visualizar su entrada como un archivo PDF/CDF, pero tengo que seleccionar una distribución subyacente.

  • Estoy buscando una distribución que es "tan normal como sea posible", mientras que todavía siendo capaz de adaptarse bien a la 5-número de resumen de la fijación abajo el ~1a, 25, 50, 75 y ~99 percentiles.
  • Empecé con el 3-param skew-normal, pero es obvio que no tiene suficiente DOF a la perfección (o incluso de cerca) se ajustan a la 5-parámetros de entrada
  • Estoy interpretando " min " y "max", como en la 1ª y 99 percentiles. Sé que esto es un boceto, pero los números introducidos son especulativas predicciones (="no te preocupes, no estoy arruinando la interpretación de los datos medidos")
  • La simplicidad es una virtud. Lo ideal es que la distribución sería fácil fácil-ish hacer numéricos de los parámetros de estimación (forma cerrada sería el más bonito, ala http://www.johndcook.com/blog/2010/01/31/parameters-from-percentiles/ , pero que muy mucho de disparo de la luna, haciendo de optimización no lineal o algo que está muy bien)
  • He empezado a buscar en distribuciones como GSN/CSN, etc de papeles como el de http://www2.warwick.ac.uk/fac/sci/statistics/crism/research/2012/paper12-08/12-08w.pdf pero no estoy muy seguro de que estoy mirando hacia abajo en el derecho de familia. Tal vez skew-normal no es el mejor lugar para empezar? También he pensado en cosas como Johnson distribución, que de lo poco que puedo encontrar sobre casi parece "diseñados para ser montados".

¿Qué distribución de la(s) debo observar?

Captura de pantalla de la herramienta: no ajuste la mediana en un skew-normal de distribución

8voto

Cyan Puntos 1965

user1448319 la respuesta que desencadena el siguiente pensamiento en mi cerebro. Hacer un natural cubic spline en el conjunto de puntos de la forma

$(x_p, \Phi^{-1}(p))$

donde $x_p$ $100p$ percentil y $\Phi^{-1}(\cdot)$ es la función cuantil de la distribución normal. Ejecutar el resultante de la interpolación de spline función a través de la normal de CDF y tomar la derivada para obtener el PDF. Este procedimiento tiene las siguientes propiedades:

  • la distribución resultante coincide con la dada percentiles exactamente;
  • las colas son normales;
  • si la percentiles en realidad coinciden con los de la distribución normal, el resultado es que la distribución normal;
  • los cálculos numéricos son muertos fácil y dar expresiones analíticas para el PDF;
  • la generalización a otras distribuciones es obvio.

Pero la prueba está en el pudín. Déjame prepararte algo de código R...

elicit_distribution <- function(x, p, qfun = qnorm, pfun = pnorm, dfun = dnorm, range_factor = 1, length.out = 1000, ...)
{
  fun <- splinefun(x, qfun(p), method = "natural", ...)
  cdfun <- function(x) pfun(fun(x, deriv = 0))
  from <- min(x) - range_factor*diff(range(x))
  to <- max(x) + range_factor*diff(range(x))
  xval <- seq(from, to, length.out = length.out)
  list(cdfun = cdfun
      ,pdfun = function(x) fun(x, deriv = 1)*dfun(fun(x, deriv = 0))
      ,quantfun = approxfun(cdfun(xval),xval)
      )
}

plot_elicited_distribution <- function(x, p, qfun = qnorm, pfun = pnorm, dfun = dnorm, range_factor = 0.1, lwd = 2, ylab = "PDF", ...)
{
  dist <- elicit_distribution(x,p,qfun,pfun,dfun)
  from <- min(x) - range_factor*diff(range(x))
  to <- max(x) + range_factor*diff(range(x))
  curve(dist$pdfun(x), from = from, to = to, lwd = lwd, ylab = ylab, ...)
      lineseg <- function(x,y,...)
        points(c(x,x),c(0,y),type = "l", lwd = lwd, ...)
      col <- function(i) c("red","green")[1+((i-1)%%2)]
      xval <- dist$quantfun(p)
  for(i in 1:length(xval))
  {
    points(x[i], dist$pdfun(x[i]), col = col(i), pch = 16)
    lineseg(xval[i],dist$pdfun(xval[i]), col = col(i))
  }
}

x <- c(5, 15, 17, 25, 46)
p <- c(0.01, 0.25, 0.5, 0.75, 0.99)
plot_elicited_distribution(x,p)

oh crap

(Sólido puntos trazados en el PDF de la curva de mostrar los valores dados. Las líneas muestran los percentiles de la distribución.)

Oh, mierda. Agregar una propiedad más a la lista:

  • no hay garantía de unimodality

Vamos a probar un smoothing spline en su lugar. Código como antes, excepto en "elicit_distribution" reemplazar

fun <- splinefun(x, qfun(p), method = "natural")

con

splineobj <- smooth.spline(x, qfun(p))
fun <- function(x, deriv) predict(splineobj, x, deriv)$y

a bit better

Eso es un poco mejor. Es bastante similar a la de skew-normal de la trama que has publicado, pero parece tener un trade-off por torpe percentiles, lo que resulta un poco mejor ajuste en la mediana y un poco peor ajuste en el 25% de los puntos.

3voto

Loïc Wolff Puntos 1216

¿Por qué no usar algo como un modelo lineal por tramos de distribución?

Digamos que un científico le da los valores de $x_{01}, x_{25}, x_{50}, x_{75}, x_{99}$ que corresponden al 1%, ..., 99% de lo desconocido distribución subyacente. Queremos hacer una distribución donde hay un 1% de la masa a la izquierda de $y_{01}$, ..., y el 99% de la masa a la izquierda de $y_{99}$.

Vamos a llamar a esta función de distribución de $f$, es decir, $f(x_t) = y_t$.

Supongamos que la distribución tiene un número finito de $x_{00}$$x_{100}$. También supongamos que sabemos lo $x_{00}$ es. Por ahora, vamos a recoger algo como $x_{00} = x_{01} - |x_{25} - x_{01}|$ (para que no haya un valor específico para hacer la depuración con ellos o algo). Volveré a esto más adelante.

Set $y_{00} = 0$. Set$y_{01}$, de modo que el área bajo la línea de segmento de $(x_{00},y_{00})$ $(x_{01},y_{01})$es igual a 1% (es decir, por lo $\int_{x_{00}}^{x_{01}} f(x) = 0.1$). Esto le da un valor de $y_{01}$. Ahora encontrar el valor de $y_{25}$, de modo que el área bajo la línea de segmento de $(x_{01},y_{01})$ $(x_{25},y_{25})$es igual a 25%-1%=24%. Hacer esto de nuevo para encontrar $y_{50}$, $y_{75}$, y $y_{99}$. No seleccione la $x_{100}$, lo que da un área total de 100% en el modelo lineal por tramos función que han construido. Ahora usted tiene una distribución con exactamente 1% de la masa a la izquierda del 1% del valor, el experto dijo que, el 25% a la izquierda del 25% de su valor, el experto dijo que, etc.

Ahora, mira a su distribución. Escoger un valor de $x_{00}$ que hace sentido. Podría ser inteligente para elegir algún tipo de medida que se desea minimizar para darle una selección automática de $x_{00}$. Por ejemplo, usted podría minimizar el ángulo total de la distribución (por ejemplo, si su distribución es $f$, se puede minimizar $\int_{-\infty}^\infty {d^2 \over dx^2}f(x) dx$ que es la suma de los ángulos de $f$ a cada una de las $x_{00},...,x_{100}$).

Esto parece como la mayoría de enfoque ingenuo para mí, es muy flexible, y tiene el beneficio añadido de que no paramétricos, así que usted no tiene que calcular nada. Espero que sea un buen lugar para comenzar.

2voto

Bleadof Puntos 731

Usted puede lograr esto basado en el Box-Cox de transformación o de otro poder de transformación de la familia (denpending sobre si su variable aleatoria es estrictamente positivo o no). En primer lugar, se puede asumir que el original desconocida distribución se comporta bien (no a partir de una mezcla de distribución). A continuación, basado en el Box-Cox transformación, la transformación de distribución será de aproximadamente una distribución normal.

(1).Establecer el valor inicial de las estadísticas de resumen para una variable aleatoria normalmente distribuida. Los valores iniciales puede ser calculado mediante la aplicación de Box-Cox transformación a su informaron las estadísticas de resumen de la unknow distribución $X$. Esto le dará a los valores iniciales de $y_q$ y el inicial de la transformación del parámetro $\lambda$.

(2). Simular una variable aleatoria normal para el tamaño de la muestra del estudio con los valores iniciales de (1), por lo tanto,$y\sim Normal(\mu, \sigma^2)$. Si el uso de cuantiles en (1), a continuación, $\mu$ $\sigma^2$ pueden ser obtenidos mediante la fórmula de $\mu\pm v_q\sigma=y_q$ donde $v_q$ es el teórico de los valores de los cuantiles de la distribución normal.

(3). Inversa a la de Box-Cox de transformación de $x=(y\lambda+1)^{1/\lambda}$ y calcualte estadísticas de resumen de la media de la muestra, la desviación estándar de la muestra o muestra rangos de percentil de la distribución invertida de $x$.

(4). Minimizar la suma de los cuadrados mínimos $\sum{\frac{\theta_i-O_i}{O_i}} $ para obtener el óptimo estimaciones de la variable aleatoria normal $Y$ donde $\Theta$ es el vector de las estadísticas de resumen de la distribución invertida, y $O$ es el vector de informes de las estadísticas de resumen de lo desconocido distribución.

(5). Sustituir aquellos óptimo estimado) en (2) y (3) para obtener la simulación de la distribución de la desconocida.

(6). Volver a (2) y el uso de diferentes semillas aleatorias para simular una nueva distribución normal.

Espero que esto ayude.

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