Transformación cuantil con distribución gaussiana: implementación de Sklearn

8

Esta podría ser una pregunta vaga, pero me pregunto cómo se implementa la transformación cuantil de Scikit-Learn .

Me pregunto cómo se puede transformar un conjunto de datos sesgado en una distribución normal como esta .

Por lo general, scikit-learn proporciona un enlace a la wiki, pero no esta transformación.

¿Alguien puede señalarme en la dirección correcta?

Gracias

usuario1157751
fuente

Respuestas:

12

Sí, parece estar descrito en algunos lugares diferentes, sin ningún enlace a ningún documento.

La documentación de la clase resume el algoritmo de la siguiente manera:

La transformación se aplica en cada característica de forma independiente. La función de densidad acumulativa de una entidad se usa para proyectar los valores originales. Los valores de características de datos nuevos / no vistos que caen por debajo o por encima del rango ajustado se asignarán a los límites de la distribución de salida. Tenga en cuenta que esta transformación no es lineal. Puede distorsionar las correlaciones lineales entre las variables medidas en la misma escala, pero hace que las variables medidas en diferentes escalas sean más directamente comparables.

Y la guía del usuario agrega información nueva:

Sin embargo, al realizar una transformación de rango, suaviza las distribuciones inusuales y está menos influenciado por los valores atípicos que los métodos de escala. Sin embargo, distorsiona las correlaciones y las distancias dentro y entre las características.

Específicamente, para una transformación normal:

Por lo tanto, la mediana de la entrada se convierte en la media de la salida, centrada en 0. La salida normal se recorta de modo que el mínimo y el máximo de la entrada, correspondientes a los cuantiles 1e-7 y 1 - 1e-7 respectivamente, no se vuelvan infinitos bajo la transformación.

La solicitud de extracción de GitHub para este estimador hace referencia a una anterior que muestra que originalmente se llamaría un "escalador de rango".

En términos más generales, este documento proporciona un buen resumen de las diversas formas en que se pueden implementar tales "transformaciones normales inversas (INT)":

Los INT son formas de transformar la distribución de la muestra de una variable continua para que parezca más distribuida normalmente. Hay varios tipos de INT. La primera distinción que hacemos es entre INT basados ​​en rango y no basados ​​en rango. Los INT no basados ​​en rangos implican asumir una función de distribución acumulativa particular (CDF) para los datos observados, estimar los parámetros de esa distribución, convertir los puntajes observados en cuantiles estimados del CDF y luego convertir estos cuantiles en desviaciones normales estándar usando el inverso normal (o función probit). Estos INT no basados ​​en rangos generalmente se denominan cópulas (Basrak et al. 2004; Li et al. 2006) y no se considerarán más. Vale la pena señalar, sin embargo, que los INT basados ​​en el rango pueden expresarse como un caso especial del método de cópula en el que se usa el CDF empírico en lugar de restringir el CDF a alguna familia de distribuciones. Es decir, cada momento se estima a partir de los datos y los cuantiles se convierten en funciones simples de los rangos.

Los INT basados ​​en el rango implican un paso preliminar de convertir una variable en rangos y se pueden subdividir en dos clases: las que involucran un elemento estocástico y las que son deterministas. Somos conscientes de que solo hay un INT que involucra un elemento estocástico y este enfoque se conoce como el uso de "desviaciones normales aleatorias" (Conover 1980). Un elemento disuasorio para este enfoque es que cada investigador que aplique el mismo método al mismo conjunto de datos obtendrá una respuesta ligeramente diferente, lo que podría ser insatisfactorio para algunos. Este enfoque tiene la ventaja teórica de evitar la granularidad en la distribución de los valores de P, un problema que a menudo afecta muchas pruebas no paramétricas. Sin embargo, la naturaleza estocástica de estos INT parece desanimar a los investigadores y rara vez, si es que alguna vez, se usan.

Los INT deterministas basados ​​en rangos se pueden clasificar en aquellos que usan puntajes normales esperados (Fisher y Yates, 1938) versus aquellos que usan la transformación inversa del cuantil de muestra (o rango fraccional) para aproximar los puntajes normales esperados. Mediante la integración numérica, Harter (1961) ha proporcionado la tabla más completa de puntajes normales esperados. Los INT que implican la transformación hacia atrás de los rangos fraccionarios para aproximar los puntajes normales esperados de Fisher y Yates (Maritz 1982) parecen ser los más utilizados en la investigación genética y serán el foco principal de atención. En los rangos de transformación inversa, se necesita un desplazamiento fraccional para evitar que las observaciones mínimas y máximas se transformen en infinito negativo y positivo, respectivamente.

Al mirar el QuantileTransformercódigo , parece el último elemento de la lista: un INT determinista basado en rangos que calcula una variable de rango modificada.

Sin embargo, es una implementación relativamente simple:

  1. calcular rangos empíricos, usando numpy.percentile
  2. modificar el ranking a través de la interpolación, usando numpy.interp
  3. mapear a una distribución Normal invirtiendo el CDF, usando scipy.stats.norm.ppf

teniendo cuidado de lidiar con los límites en las extremidades.

Representarlo como un mapeo muy simplificado, es decir, ignorar la lógica de interpolación y delimitación, seríayyo=Φ-1(F(Xyo)), dónde F y Φ representan los CDF de una distribución normal empírica y estándar, respectivamente.

AG
fuente
Qué excelente y minuciosa respuesta. Esto fue muy útil para mí. Gracias por incluir el mapeo simplificado al final para una conceptualización más fácil.
Lobo solitario
1

si a es qth qutantile, q en [0, 1]. Luego, después de la asignación, el valor correspondiente a a es norm.ppf (q). ppf es el inverso de cdf.

RyanChia
fuente
Este enfoque no está bien basado en la teoría estadística. Primero, nos interesan las distribuciones condicionales, no las distribuciones marginales. En segundo lugar, no nos importan mucho las distribuciones de predictores, solo la distribución condicional de Y dado X. En tercer lugar, existen enfoques basados ​​en principios para una regresión robusta, como los modelos semiparamétricos que no necesitan que se especifique la transformación de Y.
Frank Harrell