Métodos estadísticos para la toma de deciones

2. Caso Inflación y Salario minímo

Mediante un modelo se busca determinar el comportamiento de estas dos variables tomando como variable dependiente SALARIO MINIMO LEGAL MENSUAL (SMLM) y como variable independiente INFLACION en Colombia:

Los siguientes datos corresponden a la INFLACION y al SALARIO MINIMO LEGAL MENSUAL (SMLM) desde el año 1999 para Colombia.

library(readxl)
require(ggplot2)
require(lmtest)
require(plotly)
inflacion_salario <- read_excel("C:/Users/pocho/Desktop/R/inflacion_salario.xlsx")
inflacion_salario
## # A tibble: 17 × 3
##      año inflacion   SMLM
##    <dbl>     <dbl>  <dbl>
##  1  1999      9.23 236460
##  2  2000      8.75 260100
##  3  2001      7.65 286000
##  4  2002      6.99 309000
##  5  2003      6.49 332000
##  6  2004      5.5  358000
##  7  2005      4.85 381500
##  8  2006      4.48 408000
##  9  2007      5.69 433700
## 10  2008      7.67 461500
## 11  2009      2    496900
## 12  2010      3.17 515000
## 13  2011      3.73 535600
## 14  2012      2.44 566700
## 15  2013      1.94 589500
## 16  2014      3.66 616027
## 17  2015      6.77 644350

a. Modelo de regresión líneal simple:

## Análisis Bivariado
g2=ggplot(data = inflacion_salario, mapping = aes(x=inflacion,y=SMLM))+geom_point()+theme_bw()+geom_smooth(method = "lm")
ggplotly(g2)
## `geom_smooth()` using formula 'y ~ x'

Para continuar deseamos conocer que tanta correlación tienen estas dos variables y estan se explican en un 70%.

## Correlación de Pearson
cor(inflacion_salario$inflacion,inflacion_salario$SMLM)
## [1] -0.7086581

Modelos:

Modelo1

Ahora, se realizará el primero modelo de regresión lineal simple para determinar su el r\(^2\)

mod_inf=lm(SMLM~inflacion, data = inflacion_salario)
mod_inf
## 
## Call:
## lm(formula = SMLM ~ inflacion, data = inflacion_salario)
## 
## Coefficients:
## (Intercept)    inflacion  
##      648486       -39489

La ecacuación de regresión es \[y=648486 + (-39489x)\]

ESto quiere decir que el promedio de el salario mínimo sin estimar la inflacion es de 648.486 y cuando aumenta la inflación disminuye el salario mínimo en 39.489.

Ahora, para poder determinar que tanto el salario mínimo es explicado por la inflación se encontrara el r\(^2\) y determinar la significancia de los de los supuestos

summary(mod_inf)
## 
## Call:
## lm(formula = SMLM ~ inflacion, data = inflacion_salario)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -75463 -63456 -42854  17623 263207 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   648486      58947   11.00  1.4e-08 ***
## inflacion     -39489      10151   -3.89  0.00145 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 94130 on 15 degrees of freedom
## Multiple R-squared:  0.5022, Adjusted R-squared:  0.469 
## F-statistic: 15.13 on 1 and 15 DF,  p-value: 0.00145
p1= 0.00145

El valor de r\(^2\):0.469, es decir que la variable explica en un 46,9% el modelo con un p-value: 0.00145

Partiendo de este resultado es necesario realizar otro modelo utilizando la trasnformación para poder encontrar un el r\(^2\) más alto.

Modelo2

Ahora, se realizará el primero modelo de regresión lineal simple para determinar su el r\(^2\)

mod_inf2=lm(SMLM~log(inflacion), data = inflacion_salario)
mod_inf2
## 
## Call:
## lm(formula = SMLM ~ log(inflacion), data = inflacion_salario)
## 
## Coefficients:
##    (Intercept)  log(inflacion)  
##         712980         -175481

La ecacuación de regresión es \[y=712980 + (-175481x)\]

ESto quiere decir que el promedio de el salario mínimo sin estimar la inflacion es de 712.980 y cuando aumenta la inflación disminuye el salario mínimo en 175.481.

Ahora, para poder determinar que tanto el salario mínimo es explicado por la inflación se encontrara el r\(^2\) y determinar la significancia de los de los supuestos

summary(mod_inf2)
## 
## Call:
## lm(formula = SMLM ~ log(inflacion), data = inflacion_salario)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -94445 -62759 -41824  25832 266979 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      712980      80886   8.815 2.56e-07 ***
## log(inflacion)  -175482      49169  -3.569   0.0028 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 98110 on 15 degrees of freedom
## Multiple R-squared:  0.4592, Adjusted R-squared:  0.4232 
## F-statistic: 12.74 on 1 and 15 DF,  p-value: 0.002798
p2= 0.002798

El valor de r\(^2\):0.4232, es decir que la variable explica en un 42,32% el modelo con un p-value: 0.002798, lo cual no mejora la significancia con respecto al modelo1 mod_inf

Continuaremos haciendo un tercer modelo utilizando la trasnformación en x para poder encontrar un el r\(^2\) más alto.

Modelo3

Ahora, se realizará el primero modelo de regresión lineal simple para determinar su el r\(^2\)

mod_inf3=lm(log(SMLM)~inflacion, data = inflacion_salario)
mod_inf3
## 
## Call:
## lm(formula = log(SMLM) ~ inflacion, data = inflacion_salario)
## 
## Coefficients:
## (Intercept)    inflacion  
##     13.4855      -0.1012

La ecacuación de regresión es \[y=13.4855 + (-0.1012x)\]

ESto quiere decir que el promedio de el salario mínimo sin estimar la inflacion es de 13.48 y cuando aumenta la inflación disminuye el salario mínimo en 0.1012 lo cual no parece correcto

Ahora, para poder determinar que tanto el salario mínimo es explicado por la inflación se encontrara el r\(^2\) y determinar la significancia de los de los supuestos

summary(mod_inf3)
## 
## Call:
## lm(formula = log(SMLM) ~ inflacion, data = inflacion_salario)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.17778 -0.14056 -0.11307  0.07049  0.57569 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 13.48553    0.13378 100.806  < 2e-16 ***
## inflacion   -0.10121    0.02304  -4.393 0.000524 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2136 on 15 degrees of freedom
## Multiple R-squared:  0.5627, Adjusted R-squared:  0.5335 
## F-statistic:  19.3 on 1 and 15 DF,  p-value: 0.0005238
p3= 0.0005238

El valor de r\(^2\):0.5335, es decir que la variable explica en un 53,35% el modelo con un p-value: 0.0005238, lo cual mejora la significancia con respecto al modelo1 mod_inf2

Continuaremos haciendo un ultimo modelo utilizando la trasnformación en x para poder encontrar un el r\(^2\) más alto.

Modelo4

Ahora, se realizará el primero modelo de regresión lineal simple para determinar su el r\(^2\)

mod_inf4=lm(log(SMLM)~log(inflacion), data = inflacion_salario)
mod_inf4
## 
## Call:
## lm(formula = log(SMLM) ~ log(inflacion), data = inflacion_salario)
## 
## Coefficients:
##    (Intercept)  log(inflacion)  
##        13.6383         -0.4418

La ecacuación de regresión es \[y=13.6383 + (-0.4418x)\]

ESto quiere decir que el promedio de el salario mínimo sin estimar la inflacion es de 13.6383 y cuando aumenta la inflación disminuye el salario mínimo en 0.4418 lo cual no parece correcto

Ahora, para poder determinar que tanto el salario mínimo es explicado por la inflación se encontrara el r\(^2\) y determinar la significancia de los de los supuestos

summary(mod_inf4)
## 
## Call:
## lm(formula = log(SMLM) ~ log(inflacion), data = inflacion_salario)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.2829 -0.1381 -0.0585  0.1100  0.5827 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     13.6383     0.1890  72.165  < 2e-16 ***
## log(inflacion)  -0.4418     0.1149  -3.846  0.00159 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2292 on 15 degrees of freedom
## Multiple R-squared:  0.4965, Adjusted R-squared:  0.4629 
## F-statistic: 14.79 on 1 and 15 DF,  p-value: 0.001588
p4= 0.001588

El valor de r\(^2\):0.4629, es decir que la variable explica en un 46.29% el modelo con un p-value: 0.001588, lo cual no mejora la significancia con respecto al modelo1 mod_inf3

Analizaremos cada uno de los modelos para validar el mas optimo junto con sus p-value

library(memisc)
memisc::mtable(mod_inf,mod_inf2,mod_inf3,mod_inf4)
## 
## Calls:
## mod_inf: lm(formula = SMLM ~ inflacion, data = inflacion_salario)
## mod_inf2: lm(formula = SMLM ~ log(inflacion), data = inflacion_salario)
## mod_inf3: lm(formula = log(SMLM) ~ inflacion, data = inflacion_salario)
## mod_inf4: lm(formula = log(SMLM) ~ log(inflacion), data = inflacion_salario)
## 
## =======================================================================
##                      mod_inf        mod_inf2     mod_inf3   mod_inf4   
##                   -------------  --------------  ---------  ---------  
##                       SMLM            SMLM       log(SMLM)  log(SMLM)  
## -----------------------------------------------------------------------
##   (Intercept)     648485.931***   712979.637***  13.486***  13.638***  
##                   (58946.792)     (80885.492)    (0.134)    (0.189)    
##   inflacion       -39489.329**                   -0.101***             
##                   (10151.411)                    (0.023)               
##   log(inflacion)                 -175481.461**              -0.442**   
##                                   (49168.933)               (0.115)    
## -----------------------------------------------------------------------
##   R-squared            0.502           0.459      0.563      0.496     
##   N                   17              17         17         17         
## =======================================================================
##   Significance: *** = p < 0.001; ** = p < 0.01; * = p < 0.05
pvalores=data.frame(p1,p2,p3,p4)
names(pvalores)=c("pvalor modelo1","pvalor modelo2","pvalor modelo3","pvalor modelo4")
pvalores
##   pvalor modelo1 pvalor modelo2 pvalor modelo3 pvalor modelo4
## 1        0.00145       0.002798      0.0005238       0.001588

Con lo anterior se utilizará el modelo3 mod_inf para las pruebas de hipótesis teniendo en cuenta su r\(^2\) y su p_value, es decir que no se tuvo en cuenta el modelo con la transformación lineal-logaritmica (log-lin) ya que las predicciones no eran correctas

b. Prueba de significancia del modelo:

Hipotesis a: Que sucede cuando la inflación es de 5,1

*R* Se podría estimar el comportamiento de salario de 447.090.4 y se moverá entre un rango entre 398.119.2 y 496061.5

ph3=predict(mod_inf,list(inflacion=5.1),interval = "confidence",level = 0.95)
ph3
##        fit      lwr      upr
## 1 447090.4 398119.2 496061.5

Hipotesis b: Que sucede cuando la inflación es de 8,31

R Se podría estimar el comportamiento de salario de 332571.3 y se moverá entre un rango entre 257424.5 y 407718.1

ph4=predict(mod_inf,list(inflacion=8,31),interval = "confidence",level = 0.95)
ph4
##        fit      lwr      upr
## 1 332571.3 257424.5 407718.1

c. Coeficientes del modelo:

Los estimados hacen alusión a la fórmula \[y=\hat{\beta}_{0} + (\hat{\beta}_{1} x_{1})\]

summary(mod_inf)
## 
## Call:
## lm(formula = SMLM ~ inflacion, data = inflacion_salario)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -75463 -63456 -42854  17623 263207 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   648486      58947   11.00  1.4e-08 ***
## inflacion     -39489      10151   -3.89  0.00145 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 94130 on 15 degrees of freedom
## Multiple R-squared:  0.5022, Adjusted R-squared:  0.469 
## F-statistic: 15.13 on 1 and 15 DF,  p-value: 0.00145

El estimado \(\hat{\beta}_{0}\) manifiesta que el salario sin estimar la inflación es de 648486.

El estimado \(\hat{\beta}_{1}\) expresa que, por cada 1% de inflación disminuye la pryección de salarios -39489. Ademias de ello su significancia es buena (0.00145 **)

d. Análisis de los residuos y que supuesto no se cumple:

e=mod_inf$residuals
summary(e)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  -75463  -63456  -42854       0   17623  263207
barplot(e)

Se puede evidenciar que se cumple el supuesto que la media de los errores es 0

Otro supuesto que se puede comprobar es \(\delta^2\) de los errores, que para el modelo tiene un p-value = 3.171e-06

require(lmtest)
lmtest::gqtest(mod_inf)
## 
##  Goldfeld-Quandt test
## 
## data:  mod_inf
## GQ = 140.68, df1 = 7, df2 = 6, p-value = 3.171e-06
## alternative hypothesis: variance increases from segment 1 to 2

Ahora, vamos a verificar la covarianza de los errores, en el cual p-value = 0.0002714

dwtest(mod_inf)
## 
##  Durbin-Watson test
## 
## data:  mod_inf
## DW = 0.68432, p-value = 0.0002714
## alternative hypothesis: true autocorrelation is greater than 0

Validez del modelo:

Se realizará una validacion cruzada para poder evaluar el poder predictivo del modelo.

## segmentación de datos
id_modelo2 = sample(1:17, size = 13)
inf_modelar = inflacion_salario[id_modelo2,]
inf_validar = inflacion_salario[id_modelo2,]

##estimar el modelo set de modelar
mod_inf_modelar = lm(SMLM~inflacion, data= inflacion_salario)

## predecir el set de validacion
inf_pred = predict(mod_inf_modelar,list(inflacion=inf_validar$inflacion))

## comparar datos de modelo y reales

inflacion_real = inf_validar$SMLM
error = inflacion_real - inf_pred
res2 = data.frame(inflacion_real,inf_pred,error)
res2
##    inflacion_real inf_pred      error
## 1          236460 283999.4 -47539.425
## 2          260100 302954.3 -42854.303
## 3          332000 392200.2 -60200.186
## 4          566700 552132.0  14568.031
## 5          644350 381143.2 263206.826
## 6          461500 345602.8 115897.222
## 7          589500 571876.6  17623.367
## 8          535600 501190.7  34409.266
## 9          381500 456962.7 -75462.686
## 10         433700 423791.6   9908.351
## 11         616027 503955.0 112072.013
## 12         515000 523304.8  -8304.758
## 13         496900 569507.3 -72607.273

e. Graficas de residuales:

residual= mod_inf$residuals
residuales=data.frame(residual)

residuales
##      residual
## 1  -47539.425
## 2  -42854.303
## 3  -60392.564
## 4  -63455.522
## 5  -60200.186
## 6  -73294.622
## 7  -75462.686
## 8  -63573.737
## 9    9908.351
## 10 115897.222
## 11 -72607.273
## 12  -8304.758
## 13  34409.266
## 14  14568.031
## 15  17623.367
## 16 112072.013
## 17 263206.826
barplot(residuales$residual)