- 23 Jul, 2023
- read
El contenido presentado en este artículo está destinado únicamente para fines académicos. Las opiniones expresadas se basan en mi comprensión e investigación personal. Es importante tener en cuenta que el campo de los grandes datos y los lenguajes de programación discutidos, como Python, R, Power BI, Tableau y SQL, son dinámicos y están en constante evolución. Este artículo tiene como objetivo fomentar el aprendizaje, la exploración y la discusión dentro del campo en lugar de proporcionar respuestas definitivas. Se recomienda la discreción del lector.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from statsmodels.formula.api import ols
marketing1 = pd.read_csv(r'D:\helen\Documents\PythonScripts\datasets\kaggle\ifood_df.csv')
marketing1.head()
OUTPUT
Se crea una nueva columna
La función llamada YearsEducation que toma una fila de datos como entrada y calcula el número total de años de educación según el nivel de educación especificado en la fila. La función itera sobre diferentes niveles educativos (educación_PhD, educación_Máster, educación_Graduación, educación_Básico) y agrega el número correspondiente de años a la variable años.
def YearsEducation(row):
years = 0
if row['education_PhD'] == 1:
years += 2 # Add 2 years for PhD
if row['education_Master'] == 1:
years += 2 # Add 2 years for master's degree
if row['education_Graduation'] == 1:
years += 5 # Add 5 years for graduation
if row['education_Basic'] == 1:
years += 10 # Add 10 years for basic
years += 1 # Add 2 years for basic PhD
years += 1 # Add 2 years for Master
years += 3 # Add 5 years for Graduation
years += 5 # Add 10 years for Basic
return years
marketing1['YearsEducation'] = marketing1.apply(YearsEducation, axis=1)
Creamos una nueva columna - variable
Hagamos lo mismo con JobExperience
def JobExperience(row):
years = 0
if row['education_PhD'] == 1:
years += 2 # Add 2 year of JobExperience
if row['education_Master'] == 1:
years += 2 # Add 2 years of JobExperience
if row['education_Graduation'] == 1:
years += 5 # Add 5 years of JobExperience
if row['education_Basic'] == 1:
years += 1 # Add 1 years of JobExperience
years += 1 # Add 1 years for PhD
years += 1 # Add 2 years for Master
years += 3 # Add 5 years for Graduation
years += 1 # Add 1 years for Basic
return years
marketing1['JobExperience'] = marketing1.apply(JobExperience, axis=1)
Creamos una nueva columna - variable para completar el modelo
Calcular el cuadradado de la variable in Python usando pow() metodo. JobExperienceSquare
marketing1['JobExperienceSquared'] = marketing1['JobExperience'].apply(lambda x: pow(x, 2))
Se calcula el modelo de Regresion Multiple
Income_vs_YearsEducation1 = ols("Income ~ YearsEducation + JobExperience + JobExperienceSquared",
data=marketing1).fit()
print(Income_vs_YearsEducation1.params)
OUTPUT
Intercept 4306.238982
YearsEducation -3482.609229
JobExperience 17753.208824
JobExperienceSquared -788.168509
dtype: float64
El valor de intercepción de 4306.238982 representa el ingreso estimado cuando YearsEducation es cero. El coeficiente de la variable YearsEducation es -3482, lo que indica que el promedio, por cada año adicional de educación, el ingreso esperado disminuye en aproximadamente $3482 y por cada año de JobExperience los Income obtenidos serán $17753 y JobExperienceSqueared es positivo hasta cierto punto donde comenzará a disminuir en -788 los Income
Se incluye la variable categórica marital status en el modelo de regresión sin usar dummy coding or one-hot encoding. En su lugar, usemos los levels de la variable como parámetros en la fórmula del modelo.
Income_vs_numcateg = ols("Income ~ YearsEducation + JobExperience + JobExperienceSquared + maritalstatus + 0",
data=marketing1).fit()
print(Income_vs_numcateg.params)
OUTPUT
maritalstatus[Divorced] 5168.166512
maritalstatus[Married] 4660.514211
maritalstatus[Single] 4707.647165
maritalstatus[Together] 4927.548932
maritalstatus[Widow] 9181.141773
YearsEducation -3469.387292
JobExperience 17571.756723
JobExperienceSquared -778.507442
dtype: float64
Aqui una interpretacion:
estado civilDivorced: En promedio, las personas divorciadas tienen un aumento estimado en los ingresos de $5.168.17 unidades respecto al nivel de referencia. estado civilMarried: En promedio, las personas que están casadas tienen un aumento estimado en los ingresos de $4.660,51 unidades respecto al nivel de referencia. estado civilSingle: En promedio, las personas solteras tienen un aumento estimado en los ingresos de $4.707.65 unidades respecto al nivel de referencia. estado civilTogether: En promedio, las personas que están en una relación (juntos) tienen un incremento estimado en los ingresos de $4.927.55 unidades en comparación con el nivel de referencia. estado civilWidow: En promedio, las personas que enviudan tienen un aumento estimado en los ingresos de $9.181.14 unidades respecto al nivel de referencia.
Además, los valores negativos del coeficiente para YearsEducation sugieren que un aumento en los años de educación está asociado con una disminución en los ingresos, en igualdad de condiciones. Los coeficientes positivos para JobExperience y JobExperienceSquared sugieren que los niveles más altos de experiencia laboral (y su término al cuadrado) están asociados con ingresos más altos.