Ejercicio resuelto correlación
Ejercicio: Determinar si hay correlación entre dos series de datos
Supongamos que tenemos dos series de datos que representan la temperatura diaria y el número de helados vendidos durante un mes. Queremos determinar si existe una correlación entre estas dos variables.
Datos:
- Serie 1: Temperatura diaria (en grados Celsius) durante 30 días.
- Serie 2: Número de helados vendidos durante esos mismos días.
Objetivo:
Debemos calcular la correlación entre ambas series para determinar si la venta de helados aumenta o disminuye a medida que la temperatura cambia.
Paso 1: Generar los datos
Vamos a simular dos series de datos para este ejercicio.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Fijar una semilla para reproducibilidad
np.random.seed(42)
# Serie 1: Temperatura diaria (en grados Celsius) durante 30 días
temperaturas = np.random.normal(loc=25, scale=5, size=30)
# Serie 2: Número de helados vendidos (relacionado con la temperatura)
# Se genera una relación lineal aproximada, pero con ruido aleatorio
helados_vendidos = 3 * temperaturas + np.random.normal(loc=0, scale=10, size=30)
# Crear un DataFrame con ambas series
df = pd.DataFrame({'Temperatura': temperaturas, 'Helados vendidos': helados_vendidos})
# Mostrar las primeras filas del DataFrame
print(df.head())
En este código:
- Generamos una serie de temperaturas con una media de 25°C y una desviación estándar de 5°C.
- El número de helados vendidos tiene una relación aproximadamente lineal con la temperatura, pero con un poco de ruido aleatorio añadido para simular variaciones.
Paso 2: Visualización de los datos
Antes de calcular la correlación, podemos visualizar la relación entre ambas variables utilizando un gráfico de dispersión.
# Gráfico de dispersión para visualizar la relación entre las variables
plt.figure(figsize=(8,6))
sns.scatterplot(x='Temperatura', y='Helados vendidos', data=df)
plt.title('Relación entre Temperatura y Helados Vendidos')
plt.xlabel('Temperatura (°C)')
plt.ylabel('Helados Vendidos')
plt.show()
Este gráfico te permitirá ver si parece haber una relación positiva o negativa entre las dos variables.
Paso 3: Calcular la correlación
Para determinar si existe una correlación significativa entre la temperatura y la venta de helados, calculamos el coeficiente de correlación de Pearson.
# Calcular la correlación entre la temperatura y los helados vendidos
correlacion = df.corr()
print(f"\nCorrelación entre Temperatura y Helados Vendidos:\n{correlacion}")
El coeficiente de correlación de Pearson nos dará un valor entre -1 y 1:
- 1: Correlación positiva perfecta.
- 0: No hay correlación.
- -1: Correlación negativa perfecta.
Paso 4: Interpretación del resultado
Si el coeficiente es cercano a 1, indicará que las ventas de helados tienden a aumentar conforme aumenta la temperatura. Si es cercano a -1, entonces las ventas disminuyen a medida que la temperatura aumenta. Si está cercano a 0, no habrá una relación significativa entre ambas variables.
Ejemplo de Salida
Supongamos que la salida es algo así:
Correlación entre Temperatura y Helados Vendidos:
Temperatura Helados vendidos
Temperatura 1.000000 0.785489
Helados vendidos 0.785489 1.000000
Esto indica que hay una correlación positiva moderada entre la temperatura y la venta de helados ((0.785)), lo que sugiere que, en general, cuando la temperatura aumenta, las ventas de helados también aumentan.
Aquí está el código completo, con algunas variaciones:
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from scipy.stats import pearsonr # Serie 1: Temperatura diaria (en grados Celsius) durante 30 días temperaturas = np.random.normal(loc=25, scale=5, size=30) # Serie 2: Número de helados vendidos (relacionado con la temperatura) # Se genera una relación lineal aproximada, pero con ruido aleatorio helados_vendidos = 3 * temperaturas + np.random.normal(loc=0, scale=10, size=30) # Crear un DataFrame con ambas series df = pd.DataFrame({'Temperatura': temperaturas, 'Helados vendidos': helados_vendidos}) # Mostrar las primeras filas del DataFrame print(df.head()) # Gráfico de dispersión para visualizar la relación entre las variables sns.lmplot(x='Temperatura', y='Helados vendidos', data=df, height=6, aspect=1.5) plt.title('Relación entre Temperatura y Helados Vendidos', pad=-30) plt.xlabel('Temperatura (°C)') plt.ylabel('Helados Vendidos') plt.show() print(df,df.iloc[0,0]) # Calcular la correlación entre la temperatura y los helados vendidos correlacion = df.corr() print(f"\nCorrelación entre Temperatura y Helados Vendidos:\n{correlacion}") correlacion, coef_p=pearsonr(df['Temperatura'],df['Helados vendidos']) print(f"\nCorrelación entre Temperatura y Helados Vendidos:\n{correlacion}") print(f"\nCoeficiente p:\n{coef_p}")
Resumen del Ejercicio:
- Generamos dos series de datos simulando temperaturas diarias y ventas de helados.
- Visualizamos la relación entre ambas variables.
- Calculamos la correlación utilizando el coeficiente de Pearson.
- Interpretamos el resultado para determinar si hay correlación.
Este tipo de análisis es útil en situaciones donde se busca identificar relaciones entre variables, por ejemplo, para la predicción de ventas, análisis de tendencias o la toma de decisiones en marketing.