Моя відповідь - це початки тотальної хаки, але я не знаю жодного усталеного способу робити те, що ви просите.
Першим моїм кроком було б ранжувати порядок набору даних, ви зможете знайти пропорційну позицію у вашому наборі даних, а потім перетворити його на звичайний розподіл. Цей метод був використаний у Reynolds & Hewitt, 1996. Див. Зразок R-коду нижче в PROCMiracle.
Коли розподіл нормальний, то проблема повернута на голову - питання коригування куртозу, але не перекос. Пошук у Google запропонував дотримуватися процедур John & Draper 1980 р. Для коригування куртозу, але не перекосу, але я не міг повторити цей результат.
Мої спроби розробити функцію сирого розповсюдження / звуження, яка приймає вхідне (нормалізоване) значення і додає або віднімає з нього значення, пропорційне положенню змінної в нормальній шкалі, призводить до монотонного регулювання, але на практиці має тенденцію створювати бімодальний розподіл, хоча такий, що має бажані значення косості та куртозу.
Я усвідомлюю, що це не повна відповідь, але я думав, що це може стати кроком у правильному напрямку.
PROCMiracle <- function(datasource,normalrank="BLOM")
{
switch(normalrank,
"BLOM" = {
rmod <- -3/8
nmod <- 1/4
},
"TUKEY" = {
rmod <- -1/3
nmod <- 1/3
},
"VW" ={
rmod <- 0
nmod <- 1
},
"NONE" = {
rmod <- 0
nmod <- 0
}
)
print("This may be doing something strange with NA values! Beware!")
return(scale(qnorm((rank(datasource)+rmod)/(length(datasource)+nmod))))
}