Introducción al análisis exploratorio de datos

1

¿Qué es y para qué sirve el análisis exploratorio de datos?

2

¿Cómo hacer un análisis exploratorio de datos?

3

Tipos de análisis de datos

4

Tipos de datos y análisis de variables

5

Herramientas de software para el análisis exploratorio de datos

6

Conociendo nuestros datos: palmerpenguins

7

Recolección de datos, limpieza y validación

8

Ejercicio de validación de datos

Quiz: Introducción al análisis exploratorio de datos

Análisis univariado

9

Explorando una variable categórica: conteos y proporciones

10

Estadística descriptiva aplicada: medidas de tendencia central

11

Estadística descriptiva aplicada: medidas de dispersión

12

Ejercicio de obtención de medidas de dispersión

13

Estadística descriptiva aplicada: distribuciones

14

Estadística descriptiva aplicada: funciones de densidad de probabilidad

15

Bonus: Teorema del límite central

Quiz: Análisis univariado

Análisis bivariado

16

Estableciendo relaciones: gráficos de puntos

17

Estableciendo relaciones: gráficos de violín y boxplots

18

Estableciendo relaciones: matrices de correlación

19

Limitantes de los coeficientes de correlación lineal

20

Estableciendo relaciones: análisis de regresión simple

21

Limitaciones del análisis de regresión simple

Quiz: Análisis bivariado

Análisis multivariado

22

Análisis de regresión múltiple

23

Visualización del análisis de regresión múltiple

24

Análisis de regresión logística

25

Paradoja de Simpson

26

¿Qué hacer cuando tengo muchas variables?

Quiz: Análisis multivariado

Conclusiones

27

Diversidad de gráficas al explorar datos

28

Continúa aprendiendo sobre EDA

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Aprende Inglés, Programación, AI, Ciberseguridad y mucho más.

Antes: $249

Currency
$209
Suscríbete

Termina en:

4 Días
8 Hrs
31 Min
48 Seg

Estableciendo relaciones: matrices de correlación

18/28
Recursos

Aportes 24

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Resaltar valores con Pandas

penguins_df.corr().style.highlight_between(left=0.65, right=.99,color='lightgreen')

Matrices de Correlación

La correlación expresa hasta que punto dos variables estan relacionadas entre si. Es decir, si cambian conjuntamente. Para cuantificar que tanto estan relacionadas, se utiliza el concepto de Coeficiente de Correlacion.

Coeficiente de Correlación: cuantifica la intensidad de la relación lineal entre dos variables en un análisis de correlación

La Correlación no implica causalidad. Causalidad implica “Cuando algo (la causa) genera otra cosa (efecto)

Correlacion no implica causalidad

Para los que no les gusta usar la función assign, acá les dejo otra forma de hacerlo usando la función apply:

Un valor maś fácil de recordar para cmap y que también nos ayuda mucho a diferenciar es 'coolwarm'

sns.heatmap(
    preprocess_penguins_df.corr(),
    annot= True,
    cmap='coolwarm'
);

Este código nos da la siguiente gráfica:
.

Otra forma de pasar variables categóricas a numéricas.

processed_penguins_df['numeric_sex']= processed_penguins_df['sex'].map({'female':0, 'male':1})

la variable con mas correlaciones es la del peso del pinguino, q se relaciona fuertemente con el de largo de la aleta y se puede ententeder el porque, a mayor tamaño de aleta mas peso, la variable con la relacion negativa mas alta es la del tamaño de la aleta y la profundidad del pico, aunque no es muy alta (llegando al 60%) es una correlacion interesante, se podria crear un hipotesis de porque esto,tipo si les permite nadar mejor,a ver si se encuentra una correlacion directa

Al haber hecho el sexo una variable discreta que solo puede tomar un valor de 0 o 1 al graficar se obtiene dos líneas horizontales, lo cual no muestra ninguna relación entre las dos variables para el ejemplo tome (bill_length_mm), por lo que el coeficiente de Pearson no tiene sentido en este caso.

los coeficiente que muestra el cluster map solo son valores teniendo en cuenta las varianzas del sexo respecto a la variable bill_length.

la correlación en su naturaleza es aplicada a variables de base cuantitativa por ende no hace sentido aplicarla a variables de tipo categórica o nominal asi estan puedan expresarse como un numero.

Ahora, para hallar la correlación se debe coocar así:
processed_penguins_df.corr(numeric_only=True)

18. Estableciendo relaciones: matrices de correlación

“Expresa hasta qué punto dos variables están relacionadas entre sí. Es decir, si cambian conjuntamente.”

Coeficiente de correlación: utilizamos Correlación de Pearson

Cuantifica la intensidad de la relación lineal entre dos variables en un análisis de correlación.

r = 1 correlación positiva r = 0 sin correlación r = -1 correlación negativa

Correlación no implica causalidad

Causalidad Cuando algo (la causa) genera otra cosa (efecto)

Correlación Cuando dos o más eventos aparentan estar relacionados

Según la representación de la matriz podría decir que los que más se destacan son la correlación fuerte positiva entre el tamaño de las alas y el peso. También la correlación moderada positiva entre el tamaño de las alas y largo del pico. Y que la profundidad del pico y el tamaño del las alas tenga una correlación moderada negativa.

Comentarios sobre correlación de Pearson

  • diseñado para variables cuantitativas continuas
  • la variable ‘year’ no es variable cuantitativa, puede ser variable categórica ordinal o variable temporal
  • Por más que a ‘Male’ le asignemos 1 y a ‘Female’ le asignemos 0, la variable ‘sex’ no se convierte en variable cuantitativa, siguen siendo variable categórica nominal dicotómica.

Si queremos el heatmap sin la columna del año:

heatmap_without_year = processed_penguins_df.loc[:, processed_penguins_df.columns!='year']
sns.heatmap(data=heatmap_without_year.corr(),
            cmap=sns.color_palette("coolwarm", as_cmap=True),
            center=0,
            vmin=-1,
            vmax=1,
            linewidth=1,
            annot=True)

Excelente las explicaciones del profe. Deja ejemplos super simples y muy claros.

### Interpretación de un Heatmap Basado en una Matriz de Correlación #### Concepto Un heatmap, o mapa de calor, basado en una matriz de correlación es una herramienta visual que representa la correlación entre variables en un conjunto de datos. La matriz de correlación es una tabla que muestra los coeficientes de correlación entre variables. Estos coeficientes pueden variar de -1 a 1, donde -1 indica una correlación negativa perfecta, 0 ninguna correlación, y 1 una correlación positiva perfecta. El heatmap utiliza colores para representar estos valores, facilitando la identificación de relaciones entre las variables. La matriz de correlación se calcula utilizando el coeficiente de Pearson para variables cuantitativas o el coeficiente de Spearman para variables que no siguen una distribución normal o son ordinales. El heatmap se genera típicamente con bibliotecas de visualización en lenguajes de programación como Python (usando bibliotecas como Matplotlib, Seaborn) o R.
Métodos para el cálculo de la correlación, solo los 3 primeros los verán en sklearn: * `pearson` (ρ): El valor por defecto. Variables <u>cuantitativas </u>con distribución normal. Debe de cumplir con Homocedasticidad, significa que la varianza permanezca igual a lo largo de toda la variable, esto se visualiza si se mantiene la misma dispersión en las distintas zonas de la variable. Dos test estadísticos utilizados para contrastar la homocedasticidad son: test de *Goldfeld-Quandt* y el de *Breusch-Pagan*. * `spearman` (r): <u>Cualitativas </u>(ordinales o continua), sin distribución normal. También es una alternativa a pearson para variables cuantitativas de distribución NO normal. Menos sensible a outliers. * `kendall` (𝜏): <u>Cualitativas</u> (continuas u ordinales), sin distribución normal. Preferible cuando no hay muchos datos. Suele utilizarse en lugar del coeficiente de Spearman cuando el número de observaciones es pequeño o los valores se acumulan en una región * jackknife correlation: Una alternativa más robusta contra los outliers. Consiste en calcular todos los posibles coeficientes de correlación entre dos variables si se excluye cada vez una de las observaciones. El promedio de todas las *Jackknife correlations* calculadas atenúa en cierta medida el efecto del *outlier*. Para variables ordinales y cuantitativas. Mejor con gran cantidad de datos (muestra grande)Si dos variables tienen un pico o un valle común en una única observación, por ejemplo por un error de lectura, la correlación va a estar dominada por este registro a pesar de que entre las dos variables no haya correlación real alguna. Lo mismo puede ocurrir en la dirección opuesta. Si dos variables están altamente correlacionadas excepto para una observación en la que los valores son muy dispares, entonces la correlación existente quedará enmascarada. Cuando el estudio requiere minimizar al máximo la presencia de falsos positivos, a pesar de que se incremente la de falsos negativos, se puede seleccionar como valor de correlación el menor de entre todos los calculados en el proceso de *Jackknife*. A pesar de eso, si los outliers son muy extremos su influencia seguirá siendo notable. Quizás no logres amortiguar el efecto del outlier, pero sí puede al menos ayudarte a identificar la observación a la que pertenece Aquí les dejo un link para que aumenten sus conocimientos en el correlaciones, para qué tipo de datos se aplican y qué otras cosas hay que evaluar respecto a ellas [Correlacion lineal con python (cienciadedatos.net)](https://cienciadedatos.net/documentos/pystats05-correlacion-lineal-python.html)

Por alguna razon al momento de ejecutar, no me sale la nueva variable en la grafica y no entiendo porque si el codigo es exactamente el mismo que el de la clase

Las quejas pueden ser interpretadas como aporte, cuando existe un sistema de calidad. Espero que Platzi lo tenga…

Deepnote es un sitio que en Colombia funciona demasiado mal y muy lento; cada lección en Platzi me está tomando 5 veces más de tiempo que en cualquier otro curso.

Para colmo de males, este curso, aunque es excelente porque es muy completo, es una réplica del que está disponible y aún más completo y explicado en Deepnote.

Por favor, nunca más vuelvan a diseñar cursos en Deepnote y, si lo hacen, generen una alternativa distinta para poder seguirlo.

Creo que, en este caso, asignar el valor 1 al género masculino y el valor 0 al género femenino, para codificar la variable categórica sex es correcto.

Sin embargo, hay que tener en cuenta que, en algunos casos, asignar valores numéricos arbitrarios a las variables categóricas puede no ser apropiado, especialmente si los valores numéricos no tienen un significado real. En estos casos, es mejor utilizar técnicas de codificación de variables categóricas más avanzadas, como la codificación one-hot (o one-of-K), que crea una columna separada para cada categoría, y asigna el valor 1 en la columna correspondiente a la categoría y 0 en las demás columnas.

  • Las matrices de correlación son herramientas de visualización que se utilizan para entender las relaciones entre diferentes variables en un conjunto de datos. Una matriz de correlación es una tabla que muestra las correlaciones (normalmente coeficientes de correlación de Pearson) entre todas las posibles pares de variables en un conjunto de datos.

  • En una matriz de correlación, las celdas que están en la diagonal principal siempre son iguales a 1, ya que cada variable está perfectamente correlacionada con sí misma. Las celdas fuera de la diagonal principal indican el grado de correlación entre dos variables diferentes. El valor de una correlación puede variar entre -1 y 1, donde un valor de -1 indica una correlación negativa perfecta (las dos variables se mueven en direcciones opuestas), un valor de 0 indica que no hay correlación, y un valor de 1 indica una correlación positiva perfecta (las dos variables se mueven en la misma dirección).

  • Las matrices de correlación son útiles para explorar la relación entre diferentes variables y pueden ser utilizadas para identificar posibles relaciones importantes para análisis posteriores. Además, las matrices de correlación pueden ser utilizadas para identificar posibles problemas de multicolinealidad en un modelo de regresión.

  • Para crear una matriz de correlación en Python, podemos utilizar la biblioteca pandas. Por ejemplo, para crear una matriz de correlación para las variables numéricas en el conjunto de datos penguins, podemos utilizar el siguiente código:


Otra forma de viasualizarlo por categorias

from scipy.stats import pointbiserialr, spearmanr



# Calculamos el coeficiente de correlación de punto-biserie para las variables categóricas
island_corr, _ = pointbiserialr(penguins['island'].cat.codes, penguins['body_mass_g'])
sex_corr, _ = pointbiserialr(penguins['sex'].cat.codes, penguins['body_mass_g'])

# Calculamos el coeficiente de correlación de rango de Spearman para la variable numérica discreta
spearman_corr, _ = spearmanr(penguins['body_mass_g'], penguins['bill_depth_mm'])

# Creamos la matriz de correlación
corr_matrix = pd.DataFrame({'island': [1.0, island_corr, 0.0], 
                            'sex': [sex_corr, 1.0, 0.0],
                            'body_mass_g': [0.0, spearman_corr, 1.0]},
                            index=['island', 'sex', 'body_mass_g'])

# Mostramos la matriz de correlación
sns.heatmap(corr_matrix, cmap='coolwarm', annot=True)

Code:

# Heatmap matriz de correlaciones
# ==============================================================================
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(5, 5))

sns.heatmap(
    preprocess_penguins_df.corr(),
    annot     = True,
    cbar      = False,
    annot_kws = {"size": 8},
    vmin      = -1,
    vmax      = 1,
    center    = 0,
    cmap      = sns.diverging_palette(20, 220, n=200),
    square    = True,
    ax        = ax
)

ax.set_xticklabels(
    ax.get_xticklabels(),
    rotation = 45,
    horizontalalignment = 'right',
)

ax.tick_params(labelsize = 10) 

hola esto fue lo que hice para incluir las variables categóricas

data = df.copy()
d_object = data.loc[:,data.dtypes == object]
data.loc[:,data.dtypes == object] = d_object.apply(lambda s:pd.factorize(s)[0])