Ejercicio de regresión lineal multiple: El objetivo es utulizar el set de datos de “Prestige” , el cual presenta los resultados de un estudio realizado en Canadá sobre el prestigio de las profesiones.
En este caso práctico trabajaremos con el set de datos de “Prestige” disponible en la librería car del paquete carData.
El dataset Prestige esta compuesto por 102 observaciones y 6 columnas. Las observaciones son ocupaciones. Este dataset contiene las siguientes columnas:
type: Tipo de ocupación. Un factor con niveles: bc, Blue Collar; prof, Professional, Managerial, and Technical; wc, White Collar.
# Usaremos los datos de Prestige disponibles en la libreria car
library(car)
## Loading required package: carData
# Cargamos los datos
data(Prestige)
# vemos los primeros 5 registros
head(Prestige)
## education income women prestige census type
## gov.administrators 13.11 12351 11.16 68.8 1113 prof
## general.managers 12.26 25879 4.02 69.1 1130 prof
## accountants 12.77 9271 15.70 63.4 1171 prof
## purchasing.officers 11.42 8865 9.11 56.8 1175 prof
## chemists 14.62 8403 11.68 73.5 2111 prof
## physicists 15.64 11030 5.13 77.6 2113 prof
# con este comando se puede ver el detalle del dataset
?Prestige
## starting httpd help server ...
## done
# Vemos la estructura
str(Prestige)
## 'data.frame': 102 obs. of 6 variables:
## $ education: num 13.1 12.3 12.8 11.4 14.6 ...
## $ income : int 12351 25879 9271 8865 8403 11030 8258 14163 11377 11023 ...
## $ women : num 11.16 4.02 15.7 9.11 11.68 ...
## $ prestige : num 68.8 69.1 63.4 56.8 73.5 77.6 72.6 78.1 73.1 68.8 ...
## $ census : int 1113 1130 1171 1175 2111 2113 2133 2141 2143 2153 ...
## $ type : Factor w/ 3 levels "bc","prof","wc": 2 2 2 2 2 2 2 2 2 2 ...
#Estadísticos principales
summary(Prestige)
## education income women prestige
## Min. : 6.380 Min. : 611 Min. : 0.000 Min. :14.80
## 1st Qu.: 8.445 1st Qu.: 4106 1st Qu.: 3.592 1st Qu.:35.23
## Median :10.540 Median : 5930 Median :13.600 Median :43.60
## Mean :10.738 Mean : 6798 Mean :28.979 Mean :46.83
## 3rd Qu.:12.648 3rd Qu.: 8187 3rd Qu.:52.203 3rd Qu.:59.27
## Max. :15.970 Max. :25879 Max. :97.510 Max. :87.20
## census type
## Min. :1113 bc :44
## 1st Qu.:3120 prof:31
## Median :5135 wc :23
## Mean :5402 NA's: 4
## 3rd Qu.:8312
## Max. :9517
# Nombre de las columnas
colnames(Prestige)
## [1] "education" "income" "women" "prestige" "census" "type"
Como siempre antes de iniciar con la construcción de los modelos de regresión, es importarte apoyarse en el análsis gráfico para enterder y conocer mucho mejor los datos disponibles, con esto ver si es necesario realizar algun tipo de preprocesamiento de la información.
# Diagrama de dispersión y valores de correlación
library(psych)
##
## Attaching package: 'psych'
## The following object is masked from 'package:car':
##
## logit
pairs.panels(Prestige,gap=0)
#Revisión de la distribución de los datos
attach(Prestige)
## The following object is masked from package:psych:
##
## income
## The following object is masked from package:datasets:
##
## women
par(mfrow=c(2,2))
hist(prestige, col="blue", breaks=20)
hist(education, col="blue", breaks=20)
hist(income, col="blue", breaks=20)
hist(women, col="blue", breaks=20)
#matriz de correlación
round(cor(x = Prestige[c(4,1,2,3)], method = "pearson"),2)
## prestige education income women
## prestige 1.00 0.85 0.71 -0.12
## education 0.85 1.00 0.58 0.06
## income 0.71 0.58 1.00 -0.44
## women -0.12 0.06 -0.44 1.00
Nota: Podemos ver que el prestigio esta relacionado con la educación y con el ingreso
# Heat maps de la correlación
#install.packages(corrplot)
library(corrplot)
## Warning: package 'corrplot' was built under R version 3.6.1
## corrplot 0.84 loaded
corrplot(corr = cor(x = Prestige[c(4,1,2,3)], method = "pearson"), method = "number")
# Construimos un modelo de regresion multiple (variables independientes)
Mod_Mult_1 = lm(prestige ~ education + women, data = Prestige)
summary(Mod_Mult_1)
##
## Call:
## lm(formula = prestige ~ education + women, data = Prestige)
##
## Residuals:
## Min 1Q Median 3Q Max
## -28.010 -4.069 1.050 5.027 18.942
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -8.75416 3.54213 -2.471 0.015164 *
## education 5.42780 0.31612 17.170 < 2e-16 ***
## women -0.09305 0.02719 -3.422 0.000904 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.652 on 99 degrees of freedom
## Multiple R-squared: 0.7521, Adjusted R-squared: 0.7471
## F-statistic: 150.2 on 2 and 99 DF, p-value: < 2.2e-16
El valor de R2 =0.7521 indica que el 75.21% de la variabilidad en la prestige puede ser explicada por educacion y women. también vemos que las variables education y women son significantiva.
# Generamos un segundo modelo de regresion multiple, incluyendo una variable
# adicional (income) al modelo
Mod_Mult_2 <- lm(prestige ~ education + women + income, data = Prestige)
# Revisamos todo lo aprendido
summary(Mod_Mult_2)
##
## Call:
## lm(formula = prestige ~ education + women + income, data = Prestige)
##
## Residuals:
## Min 1Q Median 3Q Max
## -19.8246 -5.3332 -0.1364 5.1587 17.5045
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -6.7943342 3.2390886 -2.098 0.0385 *
## education 4.1866373 0.3887013 10.771 < 2e-16 ***
## women -0.0089052 0.0304071 -0.293 0.7702
## income 0.0013136 0.0002778 4.729 7.58e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.846 on 98 degrees of freedom
## Multiple R-squared: 0.7982, Adjusted R-squared: 0.792
## F-statistic: 129.2 on 3 and 98 DF, p-value: < 2.2e-16
El valor de R2 =0.7982, mejor que el modelo anterior, indica que el 79.82% de la variabilidad en la prestige puede ser explicada por educacion, income y women. también vemos que las tres variables son significantiva.
Ahora vamos a probar el modelo con todas las variables predictoras
## Modelo 3 con todas las variables
Mod_Mult_3 = lm(prestige ~., data = Prestige)
summary(Mod_Mult_3)
##
## Call:
## lm(formula = prestige ~ ., data = Prestige)
##
## Residuals:
## Min 1Q Median 3Q Max
## -12.9863 -4.9813 0.6983 4.8690 19.2402
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.213e+01 8.018e+00 -1.513 0.13380
## education 3.933e+00 6.535e-01 6.019 3.64e-08 ***
## income 9.946e-04 2.601e-04 3.824 0.00024 ***
## women 1.310e-02 3.018e-02 0.434 0.66524
## census 1.156e-03 6.183e-04 1.870 0.06471 .
## typeprof 1.077e+01 4.676e+00 2.303 0.02354 *
## typewc 2.877e-01 3.139e+00 0.092 0.92718
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.037 on 91 degrees of freedom
## (4 observations deleted due to missingness)
## Multiple R-squared: 0.841, Adjusted R-squared: 0.8306
## F-statistic: 80.25 on 6 and 91 DF, p-value: < 2.2e-16
Análisis
con base en los resultados del modelo se puede concluir que:
El modelo de regresión lineal con todas las variables como predictores, explica el 84,1% de la varianza observada en el prestigio de la profesión.
El p-value del modelo es significativo (<2.2e−16), en concecuencia, se puede afirmar que el modelo es útil y que existe una relación entre los predictores y la variable respuesta, o al menos uno de los coeficientes es distinto a 0.
Los predictores que parecen tener una relación estadísticamente significativa con la variable respuesta son: education, income y el tipo de profesión.
R2_mod1 =0.7521
R2_mod2 =0.7982
R2_mod3 =0.841
# Comparacion de los modelos
metodo = c("Modelo 1", "Modelo 2", "Modelo 3")
R_cuadrado = c(R2_mod1, R2_mod2, R2_mod3)
resultados <- data.frame(metodo, R_cuadrado)
resultados
## metodo R_cuadrado
## 1 Modelo 1 0.7521
## 2 Modelo 2 0.7982
## 3 Modelo 3 0.8410
# Gráfico comparativo
library(ggplot2)
##
## Attaching package: 'ggplot2'
## The following objects are masked from 'package:psych':
##
## %+%, alpha
ggplot(data = resultados, aes(x = reorder(metodo, R_cuadrado),
y = R_cuadrado)) +
geom_bar(stat = "identity", fill="#1bd999", position='dodge') +
ggtitle("Comparativo Modelos de Regresión lineal multiple")+
labs(x = "método de Clasificación", y = expression("R_cuadrado"))
Análisis final
Una vez implementados los 4 modelos y analizados sus resultados, podemos ver que el modelo 3, es decir, el modelo con todas las variables, es el que mejor predice el resultado, sin embargo, en este modelo no todas las varibles son significativas