Uso le distribuzioni Lambert W x F della coda pesante per descrivere e trasformare i dati leptokurtic. Vedi (i miei) post seguenti per maggiori dettagli e riferimenti:
Ecco un esempio riproducibile usando il pacchetto LambertW R.
library(LambertW)
set.seed(1)
theta.tmp <- list(beta = c(2000, 400), delta = 0.2)
yy <- rLambertW(n = 100, distname = "normal",
theta = theta.tmp)
test_norm(yy)
## $seed
## [1] 267509
##
## $shapiro.wilk
##
## Shapiro-Wilk normality test
##
## data: data.test
## W = 1, p-value = 0.008
##
##
## $shapiro.francia
##
## Shapiro-Francia normality test
##
## data: data.test
## W = 1, p-value = 0.003
##
##
## $anderson.darling
##
## Anderson-Darling normality test
##
## data: data
## A = 1, p-value = 0.01
yy
×X∼ N( 2000 , 400 )δ= 0,2≤ 5
Ora torniamo alla tua domanda: come rendere di nuovo normali questi dati leptokurtici? Bene, possiamo stimare i parametri della distribuzione usando MLE (o per i metodi di utilizzo dei momenti IGMM()
),
mod.Lh <- MLE_LambertW(yy, distname = "normal", type = "h")
summary(mod.Lh)
## Call: MLE_LambertW(y = yy, distname = "normal", type = "h")
## Estimation method: MLE
## Input distribution: normal
##
## Parameter estimates:
## Estimate Std. Error t value Pr(>|t|)
## mu 2.05e+03 4.03e+01 50.88 <2e-16 ***
## sigma 3.64e+02 4.36e+01 8.37 <2e-16 ***
## delta 1.64e-01 7.84e-02 2.09 0.037 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## --------------------------------------------------------------
##
## Given these input parameter estimates the moments of the output random variable are
## (assuming Gaussian input):
## mu_y = 2052; sigma_y = 491; skewness = 0; kurtosis = 13.
W_delta()
X
# get_input() handles does the right transformations automatically based on
# estimates in mod.Lh
xx <- get_input(mod.Lh)
test_norm(xx)
## $seed
## [1] 218646
##
## $shapiro.wilk
##
## Shapiro-Wilk normality test
##
## data: data.test
## W = 1, p-value = 1
##
##
## $shapiro.francia
##
## Shapiro-Francia normality test
##
## data: data.test
## W = 1, p-value = 1
##
##
## $anderson.darling
##
## Anderson-Darling normality test
##
## data: data
## A = 0.1, p-value = 1
Ecco!