Moja odpowiedź to początek totalnego włamania, ale nie znam żadnego ustalonego sposobu robienia tego, o co prosisz.
Moim pierwszym krokiem byłoby uporządkowanie zestawu danych, aby znaleźć proporcjonalną pozycję w zestawie danych, a następnie przekształcenie go w rozkład normalny. Metodę tę zastosowano w Reynolds i Hewitt, 1996. Zobacz przykładowy kod R poniżej w PROCMiracle.
Gdy rozkład jest normalny, problem został odwrócony - kwestia dostosowania kurtozy, ale nie przekrzywienia. Wyszukiwarka google zasugerowała, że można zastosować procedury John & Draper, 1980, aby dostosować kurtozę, ale nie przekrzywienie - ale nie mogłem powtórzyć tego wyniku.
Moje próby opracowania prymitywnej funkcji rozprzestrzeniania / zwężania, która przyjmuje wartość wejściową (znormalizowaną) i dodaje lub odejmuje wartość od niej proporcjonalną do położenia zmiennej w normalnej skali, powoduje monotoniczną korektę, ale w praktyce ma tendencję do tworzenia rozkład bimodalny, chociaż taki, który ma pożądane wartości skośności i kurtozy.
Zdaję sobie sprawę, że nie jest to pełna odpowiedź, ale pomyślałem, że może to stanowić krok we właściwym kierunku.
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))))
}