¿Es posible generar distribuciones en R para las que se conoce la media, desviación estándar, desviación y curtosis? Hasta ahora, parece que la mejor ruta sería crear números aleatorios y transformarlos en consecuencia. Si hay un paquete diseñado para generar distribuciones específicas que podrían adaptarse, aún no lo he encontrado. GraciasCómo generar distribuciones dadas, media, desviación estándar, sesgo y curtosis en R?
Respuesta
Hay una distribución de Johnson en el paquete SuppDists. Johnson le dará una distribución que coincida con momentos o cuantiles. Otros comentarios son correctos de que 4 momentos no hace una distribución. Pero Johnson ciertamente lo intentará.
He aquí un ejemplo de montaje de un Johnson a algunos datos de muestra:
require(SuppDists)
## make a weird dist with Kurtosis and Skew
a <- rnorm(5000, 0, 2)
b <- rnorm(1000, -2, 4)
c <- rnorm(3000, 4, 4)
babyGotKurtosis <- c(a, b, c)
hist(babyGotKurtosis , freq=FALSE)
## Fit a Johnson distribution to the data
## TODO: Insert Johnson joke here
parms<-JohnsonFit(babyGotKurtosis, moment="find")
## Print out the parameters
sJohnson(parms)
## add the Johnson function to the histogram
plot(function(x)dJohnson(x,parms), -20, 20, add=TRUE, col="red")
La trama último se ve así:
Se puede ver un poco de la cuestión de que otros señalan sobre cómo 4 momentos no capturan completamente una distribución.
¡Buena suerte!
EDIT Como Hadley señaló en los comentarios, el ajuste de Johnson se ve apagado. Hice una prueba rápida y ajustó la distribución de Johnson usando moment="quant"
que se ajusta a la distribución de Johnson utilizando 5 cuantiles en lugar de los 4 momentos. Los resultados se ven mucho mejor:
parms<-JohnsonFit(babyGotKurtosis, moment="quant")
plot(function(x)dJohnson(x,parms), -20, 20, add=TRUE, col="red")
que produce lo siguiente:
Alguien tiene alguna idea de por qué Johnson parece sesgada cuando se ajuste utilizando momentos?
Algo se ve mal con esa curva: un simple cambio de posición mejoraría sustancialmente – hadley
Acepto. Cuando tenga un poco de tiempo, puedo profundizar un poco. –
Esos parámetros realmente no definen completamente una distribución. Para eso necesitas una densidad o una función de distribución equivalente.
Como @David y @Carl escribieron anteriormente, hay varios paquetes dedicados a generar diferentes distribuciones, véase p. the Probability distributions Task View on CRAN.
Si le interesa la teoría (cómo dibujar una muestra de números que se ajustan a una distribución específica con los parámetros dados), simplemente busque las fórmulas adecuadas, p. ver el gamma distribution on Wiki, y crear un sistema de calidad simple con los parámetros proporcionados para calcular la escala y la forma.
Vea un ejemplo concreto here, donde calculé los parámetros alfa y beta de una distribución beta requerida en base a la media y la desviación estándar.
¿Podría especificar por qué obtuve el voto a favor? – daroczig
Esta es una pregunta interesante, que realmente no tiene una buena solución. Supongo que, aunque no conozca los otros momentos, tiene una idea de cómo debería ser la distribución. Por ejemplo, es unimodal.
Haydiferentes maneras de abordar este problema:
asumir una distribución y los partidos subyacentes momentos.Hay muchos paquetes R estándar para hacer esto. Una desventaja es que la generalización multivariante puede ser poco clara.
aproximaciones Saddlepoint. En el presente trabajo:
Gillespie, C. S. y Renshaw, E. An improved saddlepoint approximation.Mathematical Biosciences, 2007.
Nos fijamos en la recuperación de un pdf/PMF cuando se administra sólo los primeros momentos. Descubrimos que este enfoque funciona cuando la asimetría no es demasiado grande.
expansiones de Laguerre:
Mustapha, H. y Dimitrakopoulosa, R. Generalized Laguerre expansions of multivariate probability densities with moments. Computadoras & Matemáticas con aplicaciones, 2010.
Los resultados en este documento parecen más prometedores, pero no los he codificado.
Acepto que necesita una estimación de densidad para replicar cualquier distribución. Sin embargo, si tiene cientos de variables, como es típico en una simulación de Monte Carlo, debería tener un compromiso.
Un enfoque propuesto es el siguiente:
- Uso del Fleishman transformación para obtener el coeficiente para el sesgo y la curtosis dado. Fleishman toma la oblicuidad y kurtosis y le da los coeficientes
- Generar variables normales N (media = 0, std = 1)
- transformar los datos en (2) con los coeficientes de Fleishman para transformar los datos normales a la inclinación dada y curtosis
- En este paso, los datos de uso a partir de la etapa (3) y la transforman a la media deseada y la desviación estándar (std) usando new_data = media deseada + (datos procedentes de la etapa 3) std * deseada
Los datos resultantes del Paso 4 tendrán la media deseada, estándar, sesgo y curtosis.
Advertencias:
- Fleishman no funcionará para todas las combinaciones de asimetría y kurtois
- los pasos anteriores asumen las variables no correlacionadas. Si desea generar datos correlacionados, necesitará un paso antes de la transformación de Fleishman
Hay una implementación R de esto? –
Esta pregunta se formuló hace más de 3 años, por lo que espero que mi respuesta no llegue demasiado tarde.
No es una manera única de identificar una distribución al conocer algunos de los momentos. De esa manera es el método de Maximum Entropy. La distribución que resulta de este método es la distribución que maximiza su ignorancia sobre la estructura de la distribución, dado lo que sabe. Cualquier otra distribución que también tenga los momentos que haya especificado pero que no sea la distribución de MaxEnt está implícitamente asumiendo una estructura mayor a la que ingresó. Lo funcional para maximizar es la entropía de información de Shannon, $ S [p (x)] = - \ int p (x) log p (x) dx $.Conocer la media, desviación estándar, asimetría y curtosis, se traduce como restricciones en el primer, segundo, tercer y cuarto momento de la distribución, respectivamente.
El problema es entonces para maximizar S sujeto a las limitaciones: 1) $ \ int xp (x) dx = $ "primer momento", 2) $ \ int x^2 p (x) dx = "segundo momento" $, 3) ... y así sucesivamente
Recomiendo el libro "Harte, J., Máxima Entropía y Ecología: Una Teoría de la Abundancia, Distribución y Energética (Oxford University Press, New York, 2011) ".
Aquí hay un enlace que trata de implementar esto en R: https://stats.stackexchange.com/questions/21173/max-entropy-solver-in-r
- 1. z-Scores (desviación estándar y media) en PHP
- 2. Estadísticas "inversas": generar datos en base a la media y la desviación estándar
- 3. generar secuencia aleatoria y trazar en R
- 4. En R, ¿cómo encontrar el error estándar de la media?
- 5. Desviación estándar ponderada en NumPy?
- 6. Media agregada y ponderada en R
- 7. ¿Cómo calcular la media y la desviación estándar para los valores de tono de 0 a 360?
- 8. Gráfico de Excel con desviación estándar personalizada
- 9. ¿Dónde puedo encontrar loco (desviación absoluta media) en scipy?
- 10. ¿Cómo calcular la media ponderada en R?
- 11. Cálculo eficiente de la desviación estándar acumulada de la matriz en r
- 12. Generar números aleatorios según las distribuciones
- 13. ¿Cómo puedo calcular la mediana y la desviación estándar de una serie de números en Perl?
- 14. ¿Cómo determino la desviación estándar (stddev) de un conjunto de valores?
- 15. ¿Por qué el estándar IEEE 754 usa un sesgo 127?
- 16. Curvas de trazado dadas por ecuaciones en R
- 17. generar números aleatorios correlacionados de distribuciones binomiales en I
- 18. Cuadro de caja en R que muestra la media
- 19. Realización de una distribución normal estándar en R
- 20. Cómo generar números con una distribución normal en SQL Server
- 21. Evaluar la desviación media absoluta de un conjunto de números en Oracle
- 22. ¿Por qué y cómo probar eficazmente las distribuciones beta de R como usuario normal?
- 23. C Objetivo: Modulo sesgo
- 24. ¿función existente para combinar desviaciones estándar en R?
- 25. Generador de Java para Poisson y distribuciones uniformes?
- 26. Diferencia de desviación estándar para la misma entrada de Wolfram y numpy
- 27. C++ Generar el constructor estándar
- 28. aplicando la media móvil por grupo en R
- 29. Errores estándar de Fama MacBeth en R
- 30. Creando nuevas distribuciones en scipy
Como se ha señalado los no describen de forma única una distribución. Incluso si define todos los momentos, no está garantizado que defina de manera única una distribución. Creo que debes explicar qué es exactamente lo que intentas hacer. ¿Por qué estás tratando de hacer esto? ¿Puedes poner más restricciones que permitan definir una distribución? – Dason
Ah sí, queremos distribuciones continuas, unimodales en una sola dimensión. Las distribuciones resultantes eventualmente se transformarán numéricamente como una forma de probar una variación de la teoría de nicho a través de la simulación. –
En Cross Validated (stats.SE) lo siguiente está relacionado de alguna manera y puede ser de interés para los lectores aquí: [¿Cómo simular datos que satisfacen restricciones específicas tales como tener media específica y desviación estándar?] (Http: //stats.stackexchange .com/q/30303/7290) – gung