Correlaciones En estadística, la correlación o dependencia es cualquier relación estadística, causal o no, entre dos variables aleatorias o datos bivariantes. En el sentido más amplio, la correlación es cualquier asociación estadística, aunque comúnmente se refiere al grado en que un par de variables están relacionadas linealmente.
Ejemplos conocidos de fenómenos dependientes son la correlación entre la altura de los padres y la de sus hijos y la correlación entre el precio de un bien y la cantidad que los consumidores están dispuestos a comprar, representada por la llamada curva de demanda. Las correlaciones son útiles porque pueden indicar una relación predictiva que se puede aprovechar en la práctica.
Por ejemplo, una compañía eléctrica puede producir menos energía en un día cálido basándose en la correlación entre la demanda de electricidad y el clima. En este ejemplo, existe una relación causal porque el clima extremo hace que la gente utilice más electricidad para calentarse o refrescarse
Sin embargo, en general, la presencia de una correlación no es suficiente para inferir la presencia de una relación causal (es decir, la correlación no implica causalidad). Formalmente, las variables aleatorias son dependientes si no satisfacen una propiedad matemática de independencia probabilística. En el lenguaje informal, correlación es sinónimo de dependencia.
Esencialmente, la correlación es la medida de la relación entre dos o más variables. Existen varios coeficientes de correlación. El más común es el coeficiente de correlación de Pearson, que sólo es sensible a una relación lineal entre dos variables (que puede estar presente incluso cuando una variable es una función no lineal de la otra)
Se han desarrollado otros coeficientes de correlación -como la correlación de rangos de Spearman- que son más robustos que el de Pearson, es decir, más sensibles a las relaciones no lineales. La información mutua también puede aplicarse para medir la dependencia entre dos variables. Aquí podemos ver correlaciones con un valor de 0
, pero que efectivamente existe algún tipo de correlación:
Las correlaciones se puntúan de -1 a 1 e indican si existe una fuerte relación lineal, ya sea en sentido positivo o negativo. Sin embargo, hay muchas relaciones no lineales que este tipo de puntuación simplemente no detecta. Además, la correlación sólo se define para las columnas numéricas. Por lo tanto, dejamos fuera todas las columnas categóricas.
Lo mismo ocurrirá si transformamos las columnas categóricas, porque no son ordinales y si hacemos OneHotEncoding
acabaremos con un array con muchos valores diferentes (con alta cardinalidad). La simetría en las correlaciones significa que la correlación es la misma si calculamos la correlación de A y B o la correlación de B y A. Sin embargo, las relaciones en el mundo real rara vez son simétricas. Lo más frecuente es que las relaciones sean asimétricas
Un ejemplo rápido: una columna con 2 valores únicos (Verdadero
o Falso
por ejemplo) nunca podrá predecir perfectamente otra columna con 100
valores únicos. Pero lo contrario podría ser cierto. Está claro que la asimetría es importante porque es muy común en el mundo real.
Alguna vez te has preguntado:
0
si no hay relación y la puntuación debe ser 1
si hay una relación perfectaEn resumen, una puntuación asimétrica y agnóstica del tipo de datos para las relaciones predictivas entre dos columnas que van de 0
a 1
. Pues bien, existe la librería Predictive Power Score y se puede encontrar en el siguiente enlace: Puntaje de Poder Predictivo
Así que, ¡vamos a trabajar la librería!
Primero tenemos que instalarla con el siguiente comando pip install ppscore
, ejecutelo en la siguiente celda
!pip3 install ppscore
Requirement already satisfied: ppscore in /home/daniel/Desktop/datacademy_project/notebooks/lib/python3.6/site-packages (1.1.1) Collecting pandas<2.0.0,>=1.0.0 Downloading pandas-1.1.5-cp36-cp36m-manylinux1_x86_64.whl (9.5 MB) |████████████████████████████████| 9.5 MB 7.4 MB/s eta 0:00:01 Requirement already satisfied: scikit-learn<1.0.0,>=0.20.2 in /home/daniel/Desktop/datacademy_project/notebooks/lib/python3.6/site-packages (from ppscore) (0.23.2) Requirement already satisfied: pytz>=2017.2 in /home/daniel/Desktop/datacademy_project/notebooks/lib/python3.6/site-packages (from pandas<2.0.0,>=1.0.0->ppscore) (2020.1) Requirement already satisfied: numpy>=1.15.4 in /home/daniel/Desktop/datacademy_project/notebooks/lib/python3.6/site-packages (from pandas<2.0.0,>=1.0.0->ppscore) (1.19.5) Requirement already satisfied: python-dateutil>=2.7.3 in /home/daniel/Desktop/datacademy_project/notebooks/lib/python3.6/site-packages (from pandas<2.0.0,>=1.0.0->ppscore) (2.8.1) Requirement already satisfied: scipy>=0.19.1 in /home/daniel/Desktop/datacademy_project/notebooks/lib/python3.6/site-packages (from scikit-learn<1.0.0,>=0.20.2->ppscore) (1.5.2) Requirement already satisfied: threadpoolctl>=2.0.0 in /home/daniel/Desktop/datacademy_project/notebooks/lib/python3.6/site-packages (from scikit-learn<1.0.0,>=0.20.2->ppscore) (2.1.0) Requirement already satisfied: joblib>=0.11 in /home/daniel/Desktop/datacademy_project/notebooks/lib/python3.6/site-packages (from scikit-learn<1.0.0,>=0.20.2->ppscore) (0.16.0) Requirement already satisfied: six>=1.5 in /home/daniel/Desktop/datacademy_project/notebooks/lib/python3.6/site-packages (from python-dateutil>=2.7.3->pandas<2.0.0,>=1.0.0->ppscore) (1.15.0) ERROR: apache-airflow 2.0.0 has requirement sqlalchemy<2,>=1.3.18, but you'll have sqlalchemy 1.3.13 which is incompatible. Installing collected packages: pandas Attempting uninstall: pandas Found existing installation: pandas 0.25.3 Uninstalling pandas-0.25.3: Successfully uninstalled pandas-0.25.3 Successfully installed pandas-1.1.5 WARNING: You are using pip version 20.1.1; however, version 21.0.1 is available. You should consider upgrading via the '/home/daniel/Desktop/datacademy_project/notebooks/bin/python -m pip install --upgrade pip' command.
En primer lugar, no hay una única forma de calcular la puntuación de poder predictivo. De hecho, hay muchas formas posibles de calcular una puntuación que cumpla los requisitos mencionados anteriormente. Por lo tanto, pensemos en el PPS como un marco para una familia de puntuaciones. Digamos que tenemos dos columnas y queremos calcular el PPS de X
prediciendo Y
. En este caso, tratamos Y
como nuestra variable objetivo y X
como nuestra (única) característica.
Ahora podemos calcular un Árbol de Decisión con validación cruzada y calcular una métrica de evaluación adecuada.
También se pueden utilizar otras puntuaciones como el ROC, etc. pero dejemos esas dudas por un segundo porque tenemos otro problema. La mayoría de las métricas de evaluación no tienen sentido si no se comparan con una línea de base. No importa que tengamos una puntuación de 0,9
si hay posibles puntuaciones de 0,95
. Y también importa mucho si es la primera persona que consigue una puntuación superior a 0,7
. Por lo tanto, tenemos que "normalizar" nuestra puntuación de evaluación. ¿Y cómo se normaliza una puntuación? Se define un límite inferior y otro superior y se relativiza la puntuación
Entonces, ¿cuáles deberían ser los límites superior e inferior? Empecemos por el límite superior porque suele ser más fácil: un F1
perfecto es 1
. Un "MAE" perfecto es "0".
¿Pero qué pasa con el límite inferior? En realidad, no podemos responder en términos absolutos. El límite inferior depende de la métrica de evaluación y de su conjunto de datos. Es el valor alcanzado por un predictor "ingenuo".
Pero, ¿qué es un modelo ingenuo? Para un problema de clasificación, predecir siempre la clase más común es bastante ingenuo. Para un problema de regresión, predecir siempre el valor medio es bastante ingenuo.
Para tener una mejor idea del PPS y sus diferencias con la correlación veamos este versus. Ahora tenemos las correlaciones entre x
e y
y viceversa