Meine Antwort ist der Beginn eines totalen Hacks, aber mir ist kein etablierter Weg bekannt, um das zu tun, was Sie verlangen.
Mein erster Schritt wäre, die Rangfolge Ihres Datensatzes zu ordnen. Sie können die proportionale Position in Ihrem Datensatz finden und dann in eine Normalverteilung umwandeln. Diese Methode wurde in Reynolds & Hewitt, 1996, verwendet. Siehe Beispiel-R-Code unten in PROCMiracle.
Sobald die Verteilung normal ist, wurde das Problem auf den Kopf gestellt - eine Frage der Anpassung der Kurtosis, aber nicht des Versatzes. Eine Google-Suche schlug vor, dass man die Verfahren von John & Draper, 1980, befolgen könnte, um die Kurtosis anzupassen, aber nicht den Versatz - aber ich konnte dieses Ergebnis nicht replizieren.
Meine Versuche, eine grobe Spreiz- / Verengungsfunktion zu entwickeln, die den eingegebenen (normalisierten) Wert verwendet und einen Wert proportional zur Position der Variablen auf der normalen Skala addiert oder subtrahiert, führen zu einer monotonen Anpassung, in der Praxis jedoch tendenziell eine bimodale Verteilung, die jedoch die gewünschten Werte für Schiefe und Kurtosis aufweist.
Mir ist klar, dass dies keine vollständige Antwort ist, aber ich dachte, es könnte einen Schritt in die richtige Richtung bedeuten.
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))))
}