Regresión múltiple en Python

En Python, podemos realizar una regresión múltiple utilizando bibliotecas como numpy, pandas y scikit-learn. La regresión múltiple es una técnica estadística que se utiliza para predecir una variable dependiente (objetivo) en función de dos o más variables independientes (predictores).


Importar las bibliotecas necesarias

Lo primero que debes hacer es importar las bibliotecas que necesitarás para realizar la regresión múltiple. Utilizaremos numpy, pandas, y sklearn.

# Importar las bibliotecas necesarias
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
  • numpy y pandas se utilizan para manipular y procesar datos.
  • LinearRegression de sklearn.linear_model se utiliza para crear y entrenar el modelo de regresión lineal.
  • train_test_split de sklearn.model_selection se utiliza para dividir los datos en conjuntos de entrenamiento y prueba.
  • mean_squared_error y r2_score de sklearn.metrics se utilizan para evaluar el rendimiento del modelo.

Crear un DataFrame con los datos

A continuación, creamos un DataFrame de Pandas con nuestros datos. Puedes utilizar tus propios datos o los datos proporcionados en el ejemplo. Asegúrate de que las columnas tengan la misma longitud.

data = {
    'Presupuesto (EUR)': [5000, 3500, 6000, 4500, 5500, 4200, 6800, 3200, 4900, 3800, 6100, 4300, 4700, 6900, 3300, 5000, 3600, 5200, 4400, 5600, 6100, 4100, 3400, 5000, 4800, 6700, 3500, 5300, 5100, 3700, 5900],
    'Clics': [12000, 8000, 15000, 10000, 11000, 9200, 16000, 7500, 10500, 8200, 14500, 9500, 11000, 15700, 7600, 10800, 8200, 12600, 8400, 14400, 9000, 7500, 9000, 7500, 11300, 10700, 15200, 8000, 11600, 12400, 8400],
    'Conversiones': [450, 320, 580, 390, 420, 350, 620, 290, 400, 315, 560, 365, 420, 605, 295, 410, 315, 480, 375, 430, 565, 345, 290, 435, 410, 590, 310, 445, 475, 320, 550]
}

df = pd.DataFrame(data)

Se puede dar el caso, que tengamos los datos en un archivo, por ejemplo en un .csv o en algún otro formato, en ese caso tendríamos que hacer referencia a ese archivo. Los datos del dataframe deberían tener este aspecto en una tabla:

Presupuesto (EUR)ClicsConversiones
500012000450
35008000320
600015000580
450010000390
550011000420
42009200350
680016000620
32007500290
490010500400
38008200315
610014500560
43009500365
470011000420
690015700605
33007600295
500010800410
36008200315
520012600480
44008400375
560014400430
61009000565
41007500345
34009000290
50007500435
480011300410
670010700590
350015200310
53008000445
510011600475
370012400320
59008400550

Seleccionar las características y la variable objetivo

Define las características (variables independientes) y la variable objetivo (variable dependiente) que deseas utilizar en la regresión. En nuestro ejemplo, utilizamos ‘Presupuesto (EUR)’ y ‘Clics’ como características, y ‘Conversiones’ como la variable objetivo.

# Seleccionar columnas del DataFrame
X = df[['Presupuesto (EUR)', 'Clics']]
y = df['Conversiones']

Codificar variables categóricas

Si tienes variables categóricas en tus datos, debes codificarlas antes de usarlas en el modelo. En nuestro ejemplo, no tenemos variables categóricas.


Dividir los datos en conjuntos de entrenamiento y prueba

Es importante dividir los datos en conjuntos de entrenamiento y prueba para evaluar el rendimiento del modelo. Utilizamos train_test_split para hacer esto.

# Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Crear y entrenar el modelo de regresión

Creamos una instancia del modelo de regresión lineal y lo ajustamos a los datos de entrenamiento.

# Importar la biblioteca scikit-learn
from sklearn.linear_model import LinearRegression

# Crear un modelo de regresión lineal
model = LinearRegression()

# Entrenar el modelo con los datos de entrenamiento
model.fit(X_train, y_train

Evaluar el modelo

Evaluamos el rendimiento del modelo utilizando métricas como el error cuadrático medio (MSE) y el coeficiente de determinación (R2).

# Importar las bibliotecas necesarias
import numpy as np
from sklearn.metrics import mean_squared_error, r2_score

# Realizar predicciones usando un modelo
y_pred = model.predict(X_test)

# Calcular el Mean Squared Error (MSE) y R-squared (R2)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

# Imprimir los resultados
print(f"Mean Squared Error (MSE): {mse:.2f}")
print(f"R-squared (R2): {r2:.2f}")

Hacer Predicciones

Finalmente, podemos usar el modelo entrenado para hacer predicciones en nuevos datos. Reemplaza X_new con los nuevos valores que deseas predecir.

# Ejemplo de nuevos datos
X_new = np.array([[5500, 11500]])
y_new = model.predict(X_new)

print(f"Predicción de Conversiones: {y_new[0]:.2f}")
print(f"R-squared (R2): {r2:.2f}")

Ejemplo completo de la regresión múltiple en Python

Puedes calcular métricas como el error cuadrático medio (MSE) o el coeficiente de determinación (R2) para evaluar el modelo en función de tus necesidades específicas.

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.model_selection import train_test_split

# Crear un DataFrame con los datos
data = {
    'Presupuesto (EUR)': [5000, 3500, 6000, 4500, 5500, 4200, 6800, 3200, 4900, 3800, 6100, 4300, 4700, 6900, 3300, 5000, 3600, 5200, 4400, 5600, 6100, 4100, 3400, 5000, 4800, 6700, 3500, 5300, 5100, 3700, 5900],
    'Clics': [12000, 8000, 15000, 10000, 11000, 9200, 16000, 7500, 10500, 8200, 14500, 9500, 11000, 15700, 7600, 10800, 8200, 12600, 8400, 14400, 9000, 7500, 9000, 7500, 11300, 10700, 15200, 8000, 11600, 12400, 8400],
    'Conversiones': [450, 320, 580, 390, 420, 350, 620, 290, 400, 315, 560, 365, 420, 605, 295, 410, 315, 480, 375, 430, 565, 345, 290, 435, 410, 590, 310, 445, 475, 320, 550]
}

df = pd.DataFrame(data)

# Seleccionar características y variable objetivo
X = df[['Presupuesto (EUR)', 'Clics']]
y = df['Conversiones']

# Dividir los datos en conjuntos de entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear y entrenar el modelo de regresión
model = LinearRegression()
model.fit(X_train, y_train)

# Hacer predicciones en el conjunto de prueba
y_pred = model.predict(X_test)

# Calcular el coeficiente de determinación (R2)
r2 = r2_score(y_test, y_pred)

# Calcular el error cuadrático medio (MSE)
mse = mean_squared_error(y_test, y_pred)

# Imprimir resultados
print(f'Coeficiente de Determinación (R2): {r2:.2f}')
print(f'Error Cuadrático Medio (MSE): {mse:.2f}')

# Hacer una predicción para nuevos datos
nuevo_dato = np.array([[4000, 9000]])  # Aquí puedes ingresar el presupuesto y clics para hacer una predicción
prediccion = model.predict(nuevo_dato)
print(f'La predicción de Conversiones es: {prediccion[0]:.2f}')

Resultado:

Coeficiente de Determinación (R2): 0.86
Error Cuadrático Medio (MSE): 468.27
La predicción de Conversiones es: 348.87
  • Coeficiente de Determinación (R2): Este valor mide la proporción de la variabilidad en la variable dependiente (conversiones) que es explicada por el modelo. R2 varía entre 0 y 1, donde 1 indica que el modelo explica toda la variabilidad y 0 indica que el modelo no explica ninguna. Cuanto más cercano a 1, mejor. Si R2 es alto (por ejemplo, 0.80), significa que el modelo es capaz de predecir bastante bien las conversiones en función del presupuesto y los clics.
  • Error Cuadrático Medio (MSE): El MSE es una medida de cuán cerca están las predicciones del modelo de los valores reales de la variable dependiente. Cuanto menor sea el MSE, mejor será el modelo en términos de precisión de las predicciones. El MSE es una medida de «ajuste» del modelo a los datos. Valores bajos de MSE indican un buen ajuste.

Interpretación de la regresión múltiple en Python

para interpretar los resultados, debes prestar atención a R2 y MSE. Un alto R2 y un bajo MSE son indicativos de un buen modelo de regresión múltiple que puede predecir eficazmente las conversiones en función del presupuesto y los clics. Sin embargo, es importante recordar que estos valores deben evaluarse en el contexto de los datos y el problema específico que estás abordando.

  • Coeficiente de Determinación (R2): Si el R2 es cercano a 1, significa que el modelo explica bien la variabilidad en las conversiones en función del presupuesto y los clics. En este caso, el modelo puede usarse para hacer predicciones fiables. Si es bajo, podría ser necesario considerar otras variables o métodos para mejorar la predicción.
  • Error Cuadrático Medio (MSE): Un MSE bajo indica que las predicciones del modelo son cercanas a los valores reales de las conversiones. Por ejemplo, si el MSE es 100, esto significa que, en promedio, las predicciones del modelo están a 10 unidades de distancia de los valores reales en términos de conversiones. Cuanto más bajo sea el MSE, mejor será la calidad de las predicciones.

¡Eso es todo! Ahora tienes un modelo de regresión múltiple que puede predecir las conversiones en función del presupuesto, los clics y la plataforma de marketing. Puedes utilizar este modelo para hacer predicciones en nuevos datos de marketing.

Este es solo un ejemplo básico de cómo realizar una regresión múltiple en Python. Puedes personalizar y ajustar el modelo según tus necesidades específicas.