Data-Transformation

轉換以增加正常 rv 的峰度和偏度

  • November 13, 2012

我正在研究一種算法,該算法依賴於觀察結果s 是正態分佈的,我想根據經驗測試算法對這個假設的魯棒性。

為此,我正在尋找一系列轉換這將逐漸破壞正常的. 例如,如果s 是正常的 他們有偏斜和峰度,並且很高興找到一個逐漸增加兩者的轉換序列。

我的想法是模擬一些正態分佈的數據並測試算法。在每個轉換後的數據集上測試算法,看看輸出有多少變化。

請注意,我不控制模擬的分佈s,所以我無法使用泛化正態分佈的分佈(例如偏斜的廣義誤差分佈)來模擬它們。

這可以使用來自的 sinh-arcsinh 變換來完成

瓊斯,MC 和 Pewsey A.(2009 年)。Sinh-arcsinh 分佈生物計量學 96:761-780。

轉換定義為

在哪裡和. 當將此變換應用於普通 CDF 時,它產生一個單峰分佈,其參數在van Zwet (1969)的意義上,分別控制偏度和峰度 (Jones and Pewsey, 2009 ) 。此外,如果和,我們得到原始的正態分佈。請參閱以下 R 代碼。

fs = function(x,epsilon,delta) dnorm(sinh(delta*asinh(x)-epsilon))*delta*cosh(delta*asinh(x)-epsilon)/sqrt(1+x^2)

vec = seq(-15,15,0.001)

plot(vec,fs(vec,0,1),type="l")
points(vec,fs(vec,1,1),type="l",col="red")
points(vec,fs(vec,2,1),type="l",col="blue")
points(vec,fs(vec,-1,1),type="l",col="red")
points(vec,fs(vec,-2,1),type="l",col="blue")

vec = seq(-5,5,0.001)

plot(vec,fs(vec,0,0.5),type="l",ylim=c(0,1))
points(vec,fs(vec,0,0.75),type="l",col="red")
points(vec,fs(vec,0,1),type="l",col="blue")
points(vec,fs(vec,0,1.25),type="l",col="red")
points(vec,fs(vec,0,1.5),type="l",col="blue")

因此,通過選擇適當的參數序列,您可以生成一系列具有不同偏度和峰度的分佈/變換,並使它們看起來與您想要的正態分佈相似或不同。

下圖顯示了 R 代碼產生的結果。對於*(一)* 和, 和*(ii)* 和.

在此處輸入圖像描述

在此處輸入圖像描述

這個分佈的模擬很簡單,因為您只需要使用.

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

comments powered by Disqus