Normal-Distribution

如何將尖峰分佈轉換為正態分佈?

  • February 6, 2014

假設我有一個想要轉換為正態的leptokurtic 變量。哪些轉換可以完成這項任務?我很清楚轉換數據可能並不總是可取的,但作為一種學術追求,假設我想將數據“錘擊”成常態。此外,從圖中可以看出,所有值都是嚴格正數。

我嘗試了各種轉換(幾乎我以前見過的任何東西,包括等),但它們都不是特別好。是否有眾所周知的變換可以使尖峰分佈更正常?

請參見下面的正態 QQ 圖示例:

在此處輸入圖像描述

我使用重尾 Lambert W x F 分佈來描述和轉換細峰數據。有關更多詳細信息和參考,請參閱(我的)以下帖子:

這是一個使用LambertWR包的可重現示例。

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

的 qqplotyy與原始帖子中的 qqplot 非常接近,並且數據確實略微呈尖峰態,峰度為 5。因此,Lambert W 可以很好地描述您的數據帶輸入的高斯分佈和尾部參數(這意味著只有時刻才能訂購存在)。

現在回到你的問題:如何讓這個 leptokurtic 數據再次正常?好吧,我們可以使用 MLE(或矩量法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())將數據反變換到輸入,這 - 按照設計 - 應該非常接近正常值。

# 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

瞧!

引用自:https://stats.stackexchange.com/questions/85687

comments powered by Disqus