Saya menggunakan distribusi berat ekor Lambert W x F untuk menggambarkan dan mengubah data leptokurtik. Lihat (saya) posting berikut untuk detail dan referensi lebih lanjut:
Berikut adalah contoh yang dapat direproduksi menggunakan paket 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
The qqplot yy
sangat dekat dengan qqplot Anda di pos asli dan data memang sedikit leptokurtic dengan kurtosis 5. Oleh karena itu data Anda dapat digambarkan dengan baik oleh distribusi Lambert W Gaussian dengan input dan parameter ekor (yang menyiratkan bahwa hanya beberapa saat hingga pesanan ada).X ∼ N ( 2000 , 400 ) δ = 0,2 ≤ 5×X∼ N( 2000 , 400 )δ= 0,2≤ 5
Sekarang kembali ke pertanyaan Anda: bagaimana membuat data leptokurtik ini menjadi normal kembali? Kita dapat memperkirakan parameter distribusi menggunakan MLE (atau untuk metode saat menggunakan 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.
dan kemudian menggunakan transformasi inversif bijective (berdasarkan W_delta()
) untuk mengubah data menjadi input , yang - menurut desain - harus sangat dekat dengan normal.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
Voila!