Mi respuesta es el comienzo de un hack total, pero no conozco ninguna forma establecida de hacer lo que pides.
Mi primer paso sería ordenar por orden su conjunto de datos; puede encontrar la posición proporcional en su conjunto de datos y luego transformarlo en una distribución normal; este método se utilizó en Reynolds y Hewitt, 1996. Vea el código R de muestra a continuación en PROCMiracle.
Una vez que la distribución es normal, el problema se ha vuelto loco: una cuestión de ajustar la curtosis pero no sesgarla. Una búsqueda en Google sugirió que uno podría seguir los procedimientos de John & Draper, 1980 para ajustar la curtosis pero no la asimetría, pero no pude replicar ese resultado.
Mis intentos de desarrollar una función cruda de expansión / estrechamiento que toma el valor de entrada (normalizado) y agrega o resta un valor proporcional a la posición de la variable en la escala normal resulta en un ajuste monótono, pero en la práctica tiende a crear una distribución bimodal a través de una que tiene los valores deseados de asimetría y curtosis.
Me doy cuenta de que esta no es una respuesta completa, pero pensé que podría proporcionar un paso en la dirección correcta.
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))))
}