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) | Clics | Conversiones |
---|---|---|
5000 | 12000 | 450 |
3500 | 8000 | 320 |
6000 | 15000 | 580 |
4500 | 10000 | 390 |
5500 | 11000 | 420 |
4200 | 9200 | 350 |
6800 | 16000 | 620 |
3200 | 7500 | 290 |
4900 | 10500 | 400 |
3800 | 8200 | 315 |
6100 | 14500 | 560 |
4300 | 9500 | 365 |
4700 | 11000 | 420 |
6900 | 15700 | 605 |
3300 | 7600 | 295 |
5000 | 10800 | 410 |
3600 | 8200 | 315 |
5200 | 12600 | 480 |
4400 | 8400 | 375 |
5600 | 14400 | 430 |
6100 | 9000 | 565 |
4100 | 7500 | 345 |
3400 | 9000 | 290 |
5000 | 7500 | 435 |
4800 | 11300 | 410 |
6700 | 10700 | 590 |
3500 | 15200 | 310 |
5300 | 8000 | 445 |
5100 | 11600 | 475 |
3700 | 12400 | 320 |
5900 | 8400 | 550 |
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.