Как преобразовать лептокуротическое распределение в нормальное состояние?


12

Предположим, у меня есть лептокуртическая переменная, которую я хотел бы преобразовать в нормальное состояние. Какие преобразования могут выполнить эту задачу? Мне хорошо известно, что преобразование данных может быть не всегда желательным, но в качестве академической цели, предположим, что я хочу «вбить» данные в нормальное русло. Кроме того, как видно из сюжета, все значения строго положительные.

Я пробовал различные преобразования (почти все, что я видел раньше, в том числе и т. Д.), Но ни один из них не работает особенно хорошо. Существуют ли общеизвестные преобразования, делающие лептокуротические распределения более нормальными?1X,X,asinh(X)

Смотрите пример нормального графика QQ ниже:

введите описание изображения здесь


5
Вы знакомы с вероятностным интегральным преобразованием ? Он был вызван в нескольких темах на этом сайте , если вы хотите увидеть его в действии.
whuber

8
Вам нужно что-то, что работает симметрично (переменная «середина»), но также учитывает знак. Ничто из того, что вы пробовали, не подходит близко, если у вас нет «середины». Используйте медиану для «среднего» и попробуйте кубический корень отклонений, помня реализовать кубический корень как знак (.) * Abs (.) ^ (1/3). Никаких гарантий и очень специальные, но это должно подтолкнуть в правильном направлении.
Ник Кокс

1
А почему ты называешь это платикюртик? Если я не пропустил что-то, похоже, что у него более высокий эксцесс, чем обычно.
Glen_b

3
@Glen_b Я думаю, что это правильно: это leptokurtic. Но оба эти термина довольно глупы, за исключением того, что они допускают ссылку на оригинальный мультфильм Студента в « Биометрике» . Критерий - куртоз; значения высокие или низкие или (даже лучше) количественно.
Ник Кокс

3
t6

Ответы:


12

Я использую распределения Ламберта W x F с тяжелым хвостом, чтобы описать и преобразовать лептокуртические данные. Смотрите (мои) следующие посты для более подробной информации и ссылок:

Вот воспроизводимый пример с использованием пакета 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×XN(2000,400)δ=0.25

Теперь вернемся к вашему вопросу: как снова сделать эти лептокуротические данные нормальными? Ну, мы можем оценить параметры распределения, используя 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()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

Вуаля!


Я фанат и начал работать над версией python для обучения по принципу scikit-learn: github.com/gregversteeg/gaussianize
Грег Вер Стиг

Георг, возможно ли дать вам более интуитивное объяснение того, как работает ваше преобразование?
азурический

Z=Uexp(δ/2U2)Uδ>0Z

9

sign(.)abs(.)13Ymedian(Y)

Хотя преобразование корня куба не сработало хорошо, оказалось, что квадратный корень и более неясный корень с тремя четвертями работают хорошо.

Вот исходный график плотности ядра, соответствующий графику QQ лептокуртической переменной в исходном вопросе:

введите описание изображения здесь


После применения преобразования квадратного корня к отклонениям график QQ выглядит следующим образом:

введите описание изображения здесь

Лучше, но это может быть ближе.


Удар еще немного, применение преобразования корня три четверти к отклонениям дает:

введите описание изображения здесь


И конечная плотность ядра этой преобразованной переменной выглядит следующим образом:

введите описание изображения здесь

Выглядит близко ко мне.


8

Во многих случаях просто не может быть монотонного преобразования простой формы, которое даст результат, близкий к нормальному.

Например, представьте, что у нас есть распределение, представляющее собой конечную смесь логнормальных распределений различных параметров. Лог-преобразование преобразует любой из компонентов смеси в нормальность, но смесь нормалей в преобразованных данных оставляет вас с чем-то, что не является нормальным.

Или же это может быть относительно приятное преобразование, но не одной из форм, которые вы могли бы попробовать - если вы не знаете распределение данных, вы можете не найти его. Например, если данные были распределены по гамме, вы даже не найдете точное преобразование в нормальное состояние (которое, безусловно, существует), если я не скажу вам точно, что такое распределение (хотя вы можете наткнуться на преобразование кубического корня, которое в этом case делает его довольно близким к нормальному, пока параметр формы не слишком мал).

Есть множество способов, которыми данные могут выглядеть достаточно поддающимися преобразованию, но которые не выглядят великолепно ни в одном из списка очевидных преобразований.

Если вы можете предоставить нам доступ к данным, вполне возможно, что мы либо обнаружим преобразование, которое подходит, или что мы можем показать вам, почему вы его не найдете.

Просто из-за визуального впечатления это выглядит скорее как смесь двух нормалей с разными шкалами. Есть только небольшой намек на асимметрию, который вы легко можете наблюдать случайно. Вот пример выборки из смеси двух нормалей с общим средним значением - как вы видите, она очень похожа на ваш график (но другие выборки могут выглядеть более тяжелыми или более легкими с хвостами) - при этом размере выборки существует много изменений в порядке статистика за 1 сд по обе стороны от среднего значения).

введите описание изображения здесь

На самом деле вот ваши и мои накладываются:

введите описание изображения здесь


Это, безусловно, выглядит как смесь двух нормальных распределений разного масштаба, отличное наблюдение.
Подрыватель
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.