Estoy trabajando en un algoritmo que se basa en el hecho de que las observaciones s se distribuyen normalmente, y me gustaría probar empíricamente la robustez del algoritmo a este supuesto.
Para hacer esto, yo estaba buscando una secuencia de transformaciones que pueda interrumpir progresivamente la normalidad de Y . Por ejemplo, si las Y s son normales, tienen asimetría = 0 y curtosis = 3 , y sería bueno encontrar una secuencia de transformación que aumente progresivamente ambas.
Mi idea era simular algunos datos normalmente distribuidos aproximadamente y probar el algoritmo en eso. Luego, pruebe el algoritmo en cada conjunto de datos transformado T 1 ( Y ) , ... , T n ( y ) , para ver cuánto está cambiando la salida.
Tenga en cuenta que no controlo la distribución de las s simuladas , por lo que no puedo simularlas usando una distribución que generalice lo Normal (como la Distribución de error generalizado sesgado).
fuente
Respuestas:
Esto se puede hacer usando la transformación sinh-arcsinh de
La transformación se define como
donde y δ ∈ R + . Cuando esta transformación se aplica al CDF normal S ( x ; ϵ , δ ) = Φ [ H ( x ; ϵ , δ ) ] , produce una distribución unimodal cuyos parámetros ( ϵ , δ ) controlan la asimetría y la curtosis, respectivamente (Jones y Pewsey, 2009), en el sentido de van Zwet (1969) . Además, si ϵ = 0 y δϵ ∈ R δ∈ R+ S( x ; ϵ , δ) = Φ [ H( x ; ϵ , δ) ] ( ϵ , δ) ϵ = 0 , obtenemos la distribución normal original. Vea el siguiente código R.δ= 1
Por lo tanto, al elegir una secuencia apropiada de parámetros , puede generar una secuencia de distribuciones / transformaciones con diferentes niveles de asimetría y curtosis y hacer que se vean tan similares o diferentes a la distribución normal como desee.( ϵnorte, δnorte)
La siguiente gráfica muestra el resultado producido por el código R. Para (i) y δ = 1 , y (ii) ϵ = 0 y δ = ( 0.5 , 0.75 , 1 , 1.25 , 1.5 ) .ϵ = ( - 2 , - 1 , 0 , 1 , 2 ) δ= 1 ϵ = 0 δ= ( 0.5 , 0.75 , 1 , 1.25 , 1.5 )
La simulación de esta distribución es sencilla dado que solo tiene que transformar una muestra normal usando el inverso de .( ⋆ )
fuente
gamlss.dist::rSHASHo
puede generar estas distribuciones.Esto se puede hacer usando distribuciones / variables aleatorias Lambert W x F. Una variable aleatoria (RV) Lambert W x F es una X transformada no linealmente (RV) con distribución F.
Gaussianize()
Se implementan en el
Las transformaciones Lambert W x F vienen en 3 sabores:
type = 's'
type = 'h'
type = 'hh'
Ver referencias en sesgo y cola (s) (Descargo de responsabilidad: soy el autor).
En R puede simular, estimar, trazar, etc. varias distribuciones Lambert W x F con el paquete LambertW .
fuente
Una de esas secuencias es la exponenciación en varios grados. P.ej
fuente
Misma respuesta que @ user10525 pero en python
[
fuente