La mia risposta è l'inizio di un hack totale, ma non sono a conoscenza di alcun modo stabilito per fare ciò che chiedi.
Il mio primo passo sarebbe quello di classificare in ordine il tuo set di dati, puoi trovare la posizione proporzionale nel tuo set di dati e poi trasformarlo in una distribuzione normale, questo metodo è stato usato in Reynolds & Hewitt, 1996. Vedi il codice R di seguito in PROCMiracle.
Una volta che la distribuzione è normale, il problema è stato risolto, una questione di regolazione della curtosi ma non di inclinazione. Una ricerca su Google ha suggerito che si potrebbero seguire le procedure di John & Draper, 1980 per regolare la curtosi ma non l'inclinazione, ma non ho potuto replicare quel risultato.
I miei tentativi di sviluppare una funzione di spreading / restringimento del greggio che prende il valore di input (normalizzato) e aggiunge o sottrae un valore da esso proporzionale alla posizione della variabile sulla scala normale provoca un aggiustamento monotonico, ma in pratica tende a creare una distribuzione bimodale, sebbene abbia i valori di asimmetria e curtosi desiderati.
Mi rendo conto che questa non è una risposta completa, ma ho pensato che potesse fornire un passo nella giusta direzione.
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))))
}