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

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

20 Días
0 Hrs
47 Min
48 Seg

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

23/28
Recursos

Aportes 19

Preguntas 7

Ordenar por:

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

-stakeholder: y si nos devolvemos por la bascula?

-Data Analyst: no hombre, mejor construyamos 5 modelos para predecir el peso y luego los graficamos para ver cual se ajusta mejor a los datos que ya tenemos.

-stakeholder: pero…

-Data Analyst: import statsmodels.formula.api as smf

Visualizacion del Analisis de Regresion Multiple

Para tener una comparacion optima del comportamiento de cada modelo con el comportamiento de los datos, primero creamos una tabla de comparacion con la prediccion de cada modelo y los datos reales.

  • Creacion Tabla de Resultados
models_result = pd.DataFrame(
    dict(
        actual_value = preprocessed_penguins_df.body_mass_g,
        prediction_model_1 = model_1.predict(),
        prediction_model_2 = model_2.predict(),
        prediction_model_3 = model_3.predict(),
        prediction_model_4 = model_4.predict(),
        prediction_model_5 = model_5.predict(),
        species=preprocessed_penguins_df.species,
        sex=preprocessed_penguins_df.sex
    )
)

models_result 

La distribucion que se muestra en values_result esta un poco sesgada. Ahora ubicamos el modelo que mas concuerda con la distribución de value_result. A simple vista notamos que la distribucion que mas se asemeja es la del modelo 5

  • Grafica de los resultados de la tabla mediante la Funcion de Distribucion Acumulada (ECDFs)
sns.ecdfplot(
    data=models_result
)
  • Grafica de solo el comportamiento de los datos reales y el modelo que mas se asemeja
sns.ecdfplot(
    data=models_result.select_columns(['actual_value', 'prediction_model_5'])
)

Debemos asegurarnos que el modelo no este simulando el ruido en los datos sino la cualidad que se desea.

  • Grafica de los resultados de la tabla mediante la Densidad de Probabilidad
sns.kdeplot(
    data=models_result,
    cumulative=True #genera curvas suavizadas de tipo acumulativas
)

Pudimos haber encontrado las mismas conclusiones del modelo 5 si en el Analisis Exporatorio hubieramos experimentado con un grafico entre la longitud de las aletas y el peso de los pinguinos utilizando el sexo como variable categorica. El analisis exploratorio de los datos es sumamente importante ya que nos ayuda a intuir el modelo desde el inicio y de esa manera a ahorrar tiempo.

sns.lmplot(
    data=preprocessed_penguins_df,
    x='flipper_length_mm',
    y='body_mass_g',
    hue='sex',
    height=10
)

En esta visualización podemos observar que hay una relación entre el peso la especie y la longitud del pico. Donde la especie Chinstrap y Adelie tienen pesos similares, aunque los Adelie tienen una menor longitud en su pico. Caso contrario de los Gentoo quienes tienen un peso mayor (en relación a las otras especies) pero una longitud de pico similar a los Chinstrap.

para los que no están usando Deep note y quieren ver los histogramas

fig, ax = plt.subplots(1, 6, figsize=(20, 6))

for i, model in enumerate(models_results.columns[0:6]):
    sns.histplot(
        data=models_results,
        x=model,
        # hue='species',
        ax=ax[i],
    )
fig, axes = plt.subplots(2, 3, figsize=(18, 10))

fig.suptitle('Comparacion Modelos')

sns.ecdfplot(ax=axes[0, 0], data=models_results.select_columns(['actual_value','prediction_model_1']))
sns.ecdfplot(ax=axes[0, 1], data=models_results.select_columns(['actual_value','prediction_model_2']))
sns.ecdfplot(ax=axes[0, 2], data=models_results.select_columns(['actual_value','prediction_model_3']))
sns.ecdfplot(ax=axes[1, 0], data=models_results.select_columns(['actual_value','prediction_model_4']))
sns.ecdfplot(ax=axes[1, 1], data=models_results.select_columns(['actual_value','prediction_model_5']))
sns.ecdfplot(ax=axes[1, 2], data=models_results.select_columns(['actual_value','prediction_model_6']))

¿Que pasaría si no sólo consideramos el sexo, sino también la especie? Les dejo el código para que lo visualicen:

#Hacemos un nuevo DF para no alterar el que venimos trabajando

processed_penguins_df_2 = processed_penguins_df

#Creamos una nueva columna que tome el sexo y la especie de cada pingüino

processed_penguins_df_2['sex_species'] = processed_penguins_df_2['sex']+'_'+processed_penguins_df_2['species']
processed_penguins_df_2['sex_species']

#Graficamos

sns.lmplot(
    data = processed_penguins_df,
    x = 'flipper_length_mm',
    y = 'body_mass_g',
    hue = 'sex_species',   
    height = 15
)
model_result=pd.DataFrame(
    dict(
        actual_value=processed_penguins_df1.body_mass_g,
        prediction_model_1= model_1.predict(),
        prediction_model_2= model_2.predict(),
        prediction_model_3= model_3.predict(),
        prediction_model_4= model_4.predict(),
        prediction_model_5= model_5.predict(),
        species =processed_penguins_df1.species,
        sex=processed_penguins_df1.sex 
    )
)
model_result```
model_results = pd.DataFrame(
    dict(actual_value=processed_penguins_df.body_mass_g,
         prediction_model_1 = model_1.predict(),
         prediction_model_2 = model_2.predict(),
         prediction_model_3 = model_3.predict(),
         prediction_model_4 = model_4.predict(),
         prediction_model_5 = model_5.predict(),
         species = processed_penguins_df.species,
         sex = processed_penguins_df.sex)
)

sns.pairplot(data=model_results)

Así se puede visualizar mucho mejor ❤️

fig, axes = plt.subplots(3,5, figsize=(35,30))

for i in range(0,5):
  axes[0,i].set_title("prediction_model_"+str((i+1)))
  axes[1,i].set_title("prediction_model_"+str((i+1)))
  axes[2,i].set_title("prediction_model_"+str((i+1)))
  sns.ecdfplot(data=model_results[["actual_values",("prediction_model_"+str((i+1)))]], ax=axes[0,i]); ##ECDF
  sns.kdeplot(data=model_results[["actual_values",("prediction_model_"+str((i+1)))]], ax=axes[1,i]);  ##PDF´s
  sns.kdeplot(data=model_results[["actual_values",("prediction_model_"+str((i+1)))]], ax=axes[2,i], cumulative=True);  ##Acumulada PDF´s 
  • Una forma común de visualizar los resultados de un análisis de regresión múltiple es mediante gráficos de dispersión, que muestran la relación entre la variable de respuesta y las variables predictoras. Podemos utilizar la biblioteca de visualización “seaborn” para crear gráficos de dispersión con líneas de regresión ajustadas al modelo.

  • Por ejemplo, si queremos visualizar la relación entre la masa corporal y la longitud del pico para cada especie de pingüino, podemos utilizar el siguiente código:
import seaborn as sns

sns.lmplot(x='bill_length_mm', y='body_mass_g', hue='species', data=penguins)

  • Este código creará un gráfico de dispersión con una línea de regresión ajustada para cada especie de pingüino, lo que nos permitirá comparar visualmente las relaciones entre las variables para cada especie. Si queremos incluir más variables predictoras en el modelo, podemos utilizar el parámetro “col” para crear subgráficos para cada combinación de variables.

  • También podemos utilizar gráficos residuales para evaluar la adecuación del modelo y detectar posibles patrones de residuos. Por ejemplo, podemos crear un gráfico de residuos para cada variable predictor y la variable de respuesta utilizando el siguiente código:
import matplotlib.pyplot as plt

fig, axs = plt.subplots(ncols=3, figsize=(15, 5))

sns.residplot(x='bill_length_mm', y='body_mass_g', data=penguins, ax=axs[0])
sns.residplot(x='bill_depth_mm', y='body_mass_g', data=penguins, ax=axs[1])
sns.residplot(x='species', y='body_mass_g', data=penguins, ax=axs[2])

plt.tight_layout()

  • Este código creará un gráfico de residuos para cada variable predictor, que muestra la diferencia entre los valores observados y los valores predichos por el modelo. Si el modelo es adecuado, esperamos que los residuos se distribuyan de manera aleatoria alrededor de cero y no muestren patrones evidentes. Si hay patrones en los residuos, puede indicar que el modelo no es adecuado para los datos.

  • En general, la visualización es una herramienta importante para el análisis de regresión múltiple y puede ayudar a identificar patrones y anomalías en los datos que pueden ser difíciles de detectar solo con análisis numéricos.

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

  • Desde el inicio se puede empezar analizando múltiples variables y después comenzar a crear los modelos de interés
  • La magia de explorar es que te puede ayudar a ahorrar demasiado tiempo
  • Explorar es la herramienta fundamental

Amo todo lo que se puede hacer con Seaborn:

sns.lmplot(
    data=neo_pre_df_peng,
    x='flipper_length_mm',
    y='body_mass_g',
    hue='sex',
    height=10
)

plt.show()
Que buen curso, se va disfrutando aprender cosas nuevas. Y todo lo que falta :D ![](https://static.platzi.com/media/user_upload/image-f666e45e-24d5-4be5-987c-730f184fa24e.jpg) ![](https://static.platzi.com/media/user_upload/image-874b6ab1-0436-411a-a0c3-731314d9d713.jpg)
En visual studio code, hay una extension llamada data wrangler de microsoft que muestra las tablas de manera similar a lo que se ve en el curso
fig, axes = plt.subplots(3, 5, figsize=(35, 30))

for i in range(5):
    model_name = "prediction_model_" + str(i + 1)
    
    axes[0, i].set_title(model_name)
    axes[1, i].set_title(model_name)
    axes[2, i].set_title(model_name)
    
    data_subset = models_results[["actual_value", model_name]]
    
    sns.ecdfplot(data=data_subset, ax=axes[0, i])
    sns.kdeplot (data=data_subset, ax=axes[1, i])
    sns.kdeplot (data=data_subset, ax=axes[2, i], cumulative=True)

plt.tight_layout()
plt.show()

No me quedaba del todo claro el tema, así que encontré estos artículos que explican detalladamente cómo leer Regresión lineal múltiple y cómo Aplicar regresión Lineal múltiple

👾✨

Gráfico con los modelos que mejor se ajustan

model_results_adjusted = model_results.loc[:, ~model_results.columns.isin(['prediction_model_1', 'prediction_model_2', 'prediction_model_3'])]
sns.kdeplot(data=model_results_adjusted)

What is a model? / Que es un modelo?

In statistics, a model is a mathematical representation of a system, process or relationship. In the context of analyzing the relationship between two or more variables, a model is a way of describing how those variables are related to each other.

A model can take many forms, such as a linear regression model, a generalized linear model, a decision tree model, or a neural network model, among others. In general, the purpose of a model is to provide a simplified representation of a complex reality, which can help us understand the relationship between variables and make predictions about future outcomes.

Models are built using statistical and mathematical techniques, and they often involve making assumptions about the nature of the relationship between variables. The quality of a model can be evaluated by assessing how well it fits the data, how well it generalizes to new data, and how well it performs in making predictions.

Excelente clase! Explicación muy detallada, de forma clara y concisa, como siempre. Gracias profe