## Lendo dados do Grupo
dados <-read_excel("..\\Dados\\Grupo5.xlsx",sheet = "dados", col_names = TRUE)
head(dados)
## # A tibble: 6 x 13
## N UA lrenda renda sexo age age2 Defi Defc Demi Demc Desupi
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 12 6.03 415 0 29 841 0 0 1 0 0
## 2 2 166 7.50 1800 1 33 1089 0 1 0 0 0
## 3 3 259 6.52 678 0 22 484 0 0 1 0 0
## 4 4 372 6.62 750 1 27 729 0 1 0 0 0
## 5 5 435 5.63 280 1 16 256 1 0 0 0 0
## 6 6 536 6.52 679 1 34 1156 1 0 0 0 0
## # ... with 1 more variable: Desupc <dbl>
Percebe-se pela análise da base de dados as seguintes variáveis: lrenda, renda, sexo, age, age2, Defi, Defc, Demi, Demc, Desupi e Desupc, das quais uma inspeção prévia nos permitiu verificar Irenda como o logaritmo natural de renda, age2 como o quadrado de age e as demais são variáveis do tipo binárias.
Dessa forma, é esperado que haja multicolineariade entre age e age2, dado que elas são a mesma variável com uma transformação matemática. O que justifica o aparecimento de age2 é o modelo teórico proposto que sustenta que a renda de um trabalhador pode ser melhor predita pela inserção dessa variável quadrada.
Escolhemos três modelos de análise:
Linear - Linear: definido pela variável EqLinear Log - Linear: definido pela variável EqLogLinear Log - Log: definido pela variável EqLogLog
Ressalta-se que no caso do modelo EqLogLog as variáveis age e age2 foram transformadas. Todavia, é provavel que haja multicolinearidade perfeita nesta transformação.
options(scipen = 999)
# estimando o modelo linear
EqLinear <- lm(renda~sexo+age+age2+Defi+Defc+Demi + Demc + Desupi + Desupc, data = dados)
summary(EqLinear)
##
## Call:
## lm(formula = renda ~ sexo + age + age2 + Defi + Defc + Demi +
## Demc + Desupi + Desupc, data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5180.0 -817.4 -261.9 356.6 12760.5
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4412.885 2762.337 -1.598 0.113
## sexo 700.854 554.543 1.264 0.209
## age 185.414 120.664 1.537 0.128
## age2 -1.645 1.430 -1.150 0.253
## Defi 51.823 1323.167 0.039 0.969
## Defc 677.164 1429.342 0.474 0.637
## Demi 1277.346 1857.425 0.688 0.493
## Demc 1845.055 1282.179 1.439 0.153
## Desupi 1992.718 1499.507 1.329 0.187
## Desupc 5902.875 1405.007 4.201 0.0000577 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2657 on 100 degrees of freedom
## Multiple R-squared: 0.3393, Adjusted R-squared: 0.2798
## F-statistic: 5.706 on 9 and 100 DF, p-value: 0.000002316
# estimando o modelo loglinear
EqLogLinear <- lm(lrenda~sexo+age+age2+Defi+Defc+Demi + Demc + Desupi + Desupc, data = dados)
summary(EqLogLinear)
##
## Call:
## lm(formula = lrenda ~ sexo + age + age2 + Defi + Defc + Demi +
## Demc + Desupi + Desupc, data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.39318 -0.37310 -0.03453 0.30482 1.96971
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.5885395 0.6333276 7.245 0.0000000000917 ***
## sexo 0.3617904 0.1271413 2.846 0.00538 **
## age 0.0852934 0.0276650 3.083 0.00265 **
## age2 -0.0008854 0.0003280 -2.700 0.00815 **
## Defi -0.0786331 0.3033656 -0.259 0.79601
## Defc 0.2301542 0.3277088 0.702 0.48412
## Demi 0.2219269 0.4258564 0.521 0.60343
## Demc 0.7456115 0.2939682 2.536 0.01275 *
## Desupi 0.9307101 0.3437955 2.707 0.00798 **
## Desupc 1.7710014 0.3221294 5.498 0.0000002951616 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6092 on 100 degrees of freedom
## Multiple R-squared: 0.514, Adjusted R-squared: 0.4702
## F-statistic: 11.75 on 9 and 100 DF, p-value: 0.000000000001986
# estimando o modelo loglog
EqLogLog <- lm(lrenda~sexo+log(age)+log(age2)+Defi+Defc+Demi + Demc + Desupi + Desupc, data = dados)
summary(EqLogLog)
##
## Call:
## lm(formula = lrenda ~ sexo + log(age) + log(age2) + Defi + Defc +
## Demi + Demc + Desupi + Desupc, data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.42078 -0.32959 -0.02206 0.32105 1.82451
##
## Coefficients: (1 not defined because of singularities)
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.5616 0.7644 5.968 0.0000000359 ***
## sexo 0.3988 0.1286 3.100 0.00250 **
## log(age) 0.5190 0.1857 2.794 0.00622 **
## log(age2) NA NA NA NA
## Defi -0.1487 0.3078 -0.483 0.63013
## Defc 0.1766 0.3333 0.530 0.59734
## Demi 0.1536 0.4330 0.355 0.72358
## Demc 0.7145 0.2993 2.387 0.01884 *
## Desupi 0.8979 0.3503 2.563 0.01184 *
## Desupc 1.7851 0.3283 5.437 0.0000003780 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6214 on 101 degrees of freedom
## Multiple R-squared: 0.4893, Adjusted R-squared: 0.4489
## F-statistic: 12.1 on 8 and 101 DF, p-value: 0.000000000005479
# colocando todas as regressões estimadas juntas para análise:
screenreg(list(EqLinear, EqLogLinear, EqLogLog), digits = 4,
stars = c(0.01, 0.05, 0.1), ci.force = TRUE,
custom.model.names = c("Modelo Linear", "Modelo Log-Linear", "Modelo Log-Log"),
caption = "Multiple model types and single row", label = "tab:3",
include.adjrs = TRUE, include.bic = TRUE)
##
## ===========================================================================
## Modelo Linear Modelo Log-Linear Modelo Log-Log
## ---------------------------------------------------------------------------
## (Intercept) -4412.8846 4.5885 * 4.5616 *
## [-9826.9650; 1001.1958] [ 3.3472; 5.8298] [ 3.0635; 6.0598]
## sexo 700.8542 0.3618 * 0.3988 *
## [ -386.0295; 1787.7378] [ 0.1126; 0.6110] [ 0.1467; 0.6508]
## age 185.4144 0.0853 *
## [ -51.0833; 421.9120] [ 0.0311; 0.1395]
## age2 -1.6448 -0.0009 *
## [ -4.4485; 1.1589] [-0.0015; -0.0002]
## Defi 51.8234 -0.0786 -0.1487
## [-2541.5353; 2645.1821] [-0.6732; 0.5160] [-0.7520; 0.4547]
## Defc 677.1639 0.2302 0.1766
## [-2124.2956; 3478.6234] [-0.4121; 0.8725] [-0.4766; 0.8299]
## Demi 1277.3459 0.2219 0.1536
## [-2363.1408; 4917.8327] [-0.6127; 1.0566] [-0.6951; 1.0022]
## Demc 1845.0555 0.7456 * 0.7145 *
## [ -667.9691; 4358.0800] [ 0.1694; 1.3218] [ 0.1278; 1.3011]
## Desupi 1992.7180 0.9307 * 0.8979 *
## [ -946.2612; 4931.6971] [ 0.2569; 1.6045] [ 0.2114; 1.5845]
## Desupc 5902.8754 * 1.7710 * 1.7851 *
## [ 3149.1114; 8656.6395] [ 1.1396; 2.4024] [ 1.1416; 2.4286]
## log(age) 0.5190 *
## [ 0.1550; 0.8831]
## ---------------------------------------------------------------------------
## R^2 0.3393 0.5140 0.4893
## Adj. R^2 0.2798 0.4702 0.4489
## Num. obs. 110 110 110
## ===========================================================================
## * Null hypothesis value outside the confidence interval.
Como pode ser verificado na tabela que compara os três modelos, há uma perda de significância do modelo log-linear para o modelo log-log. De fato, apareceu um Na na variável age2, o que nos levou a deixar de lado este modelo e seguir trabalhando com os dois primeiros.
A seguir, para os modelos linear e log-linear, performamos o teste reset.
#Teste Reset Para modelo Linear Linear
resettest(EqLinear, power = 2, type = "regressor", data = dados)
##
## RESET test
##
## data: EqLinear
## RESET = 0.052486, df1 = 9, df2 = 91, p-value = 1
#Teste Reset Para modelo Log Linear
resettest(EqLogLinear, power = 2, type = "regressor", data = dados)
##
## RESET test
##
## data: EqLogLinear
## RESET = 0.14309, df1 = 9, df2 = 91, p-value = 0.9982
Para ambos os modelos, p-valor > 0,05 de modo que rejeitamos a hipótese nula de que a forma funcional não esta adequada.
Para avaliar a presença de Multicolinearidade, transformamos as variáveis do data frame em numéricas e calculamos Fiv e Tol.
# transformação das variáveis para numéricas
sexo<-as.numeric(dados$sexo)
age<-as.numeric(dados$age)
age2<-as.numeric(dados$age2)
Defi<-as.numeric(dados$Defi)
Defc<-as.numeric(dados$Defc)
Demi<-as.numeric(dados$Demi)
Demc<-as.numeric(dados$Demc)
Desupi<-as.numeric(dados$Desupi)
Desupc <-as.numeric(dados$Desupc)
# calculando o valor de Fiv e Tol
vi <- data.frame(sexo,age, age2, Defi, Defc, Demi, Demc, Desupi,Desupc)
pairs(vi)
fiv<-vif(vi)
FIV<-as.vector(fiv)
TOL<-as.vector(1/fiv)
fiv_tol<-round(cbind.data.frame(FIV, TOL),4)
fiv_tol
## FIV TOL
## 1 1.1582 0.8634
## 2 37.6237 0.0266
## 3 37.2482 0.0268
## 4 4.5108 0.2217
## 5 3.3171 0.3015
## 6 1.8835 0.5309
## 7 6.0455 0.1654
## 8 2.6317 0.3800
## 9 3.4161 0.2927
cor(as.matrix(dados[3:8]))
## lrenda renda sexo age age2 Defi
## lrenda 1.00000000 0.84718406 0.04954888 0.11129888 0.06054600 -0.3427693
## renda 0.84718406 1.00000000 -0.02950961 0.15432003 0.12332561 -0.2114688
## sexo 0.04954888 -0.02950961 1.00000000 0.06760864 0.05081268 0.2004727
## age 0.11129888 0.15432003 0.06760864 1.00000000 0.98578677 0.2643811
## age2 0.06054600 0.12332561 0.05081268 0.98578677 1.00000000 0.2717951
## Defi -0.34276929 -0.21146882 0.20047271 0.26438108 0.27179508 1.0000000
cor(as.matrix(vi))
## sexo age age2 Defi Defc
## sexo 1.000000000 0.06760864 0.050812676 0.20047271 0.13277604
## age 0.067608644 1.00000000 0.985786768 0.26438108 -0.08261395
## age2 0.050812676 0.98578677 1.000000000 0.27179508 -0.07385213
## Defi 0.200472709 0.26438108 0.271795083 1.00000000 -0.18823055
## Defc 0.132776037 -0.08261395 -0.073852133 -0.18823055 1.00000000
## Demi -0.134693115 -0.18916212 -0.170785879 -0.09988065 -0.07111527
## Demc 0.006919711 -0.15868794 -0.158595062 -0.40408663 -0.28771069
## Desupi -0.088924847 -0.01189371 -0.010202578 -0.15348462 -0.10928143
## Desupc -0.237047450 0.01467205 -0.005192555 -0.19635081 -0.13980227
## Demi Demc Desupi Desupc
## sexo -0.13469311 0.006919711 -0.08892485 -0.237047450
## age -0.18916212 -0.158687942 -0.01189371 0.014672048
## age2 -0.17078588 -0.158595062 -0.01020258 -0.005192555
## Defi -0.09988065 -0.404086629 -0.15348462 -0.196350808
## Defc -0.07111527 -0.287710690 -0.10928143 -0.139802266
## Demi 1.00000000 -0.152667731 -0.05798793 -0.074183183
## Demc -0.15266773 1.000000000 -0.23460148 -0.300122524
## Desupi -0.05798793 -0.234601485 1.00000000 -0.113995831
## Desupc -0.07418318 -0.300122524 -0.11399583 1.000000000
Como pode ser avaliado pelas tabelas de covariância e pelo valor de TOL há apenas multicolinearidade para os parâmetros age e age2, conforme era de se esperar.
Corrigir essa questão não é algo trivial, dado que a formula funcional esta adequada e ambos os parâmetros são significativos para o modelo Log linear, este será aquele que adotaremos daqui para frente.
Além disso, a partir de agora, uma nova equação será gerada, utiizando apenas os parâmetros significativos ja econtrados: sexo, age, age2, Def, Desupi, Desupc. Entende-se que essa mudança seja melhor para prever a variável dependente renda.
Escolhemos a variável EqlogLinearStar para representar este novo modelo que pode ser estimado abaixo:
EqlogLinearStar <- lm(lrenda~sexo+age+age2+Defi + Desupi + Desupc, data = dados)
summary(EqlogLinearStar)
##
## Call:
## lm(formula = lrenda ~ sexo + age + age2 + Defi + Desupi + Desupc,
## data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.39287 -0.40214 -0.04482 0.36440 2.19461
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.1496600 0.5511373 9.344 0.00000000000000213 ***
## sexo 0.3499367 0.1309819 2.672 0.008775 **
## age 0.0859690 0.0286082 3.005 0.003335 **
## age2 -0.0009051 0.0003410 -2.654 0.009212 **
## Defi -0.6175125 0.1631134 -3.786 0.000258 ***
## Desupi 0.3806861 0.2284963 1.666 0.098742 .
## Desupc 1.2188520 0.1953044 6.241 0.00000000980656488 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6384 on 103 degrees of freedom
## Multiple R-squared: 0.4503, Adjusted R-squared: 0.4183
## F-statistic: 14.06 on 6 and 103 DF, p-value: 0.00000000001233
Uma vez escolhido o novo modelo funcional, seguimos para a investigação de heterocedasticia no modelo. Fizemos uma inspeção visual que sugere presença de heterocedasticia. É preciso tomar certo cuidado, pois com exceção de age e age2 as demais variáveis explicativas são binárias e não faria muito sentido uma inspeção visual.
Se elevarmos age ao quadrado, obtemos age2 de modo que podemos utilizar essa variável diretamente para a inspeção visual.
A seguir conduzimos o teste de Breusch-Pagan obtendo como resultado a ausência de heterocedasticia, com p-valor de 0,07279 > que 0,05. Em outras palavras ficamos com a hipótese nula de que os resíduos são homocedasticos. Todavia, fizemos a correção para critérios didáticos e não obtivemos melhoras para o método GLS.
resEqStarq <-(EqlogLinearStar$residuals^2)
lmrendaq <- (EqlogLinearStar$fitted.values^2)
ageq<- age^2
par(mfrow=c(1,2))
plot(lmrendaq, resEqStarq, xlab = "Quadrado da renda estimada",
ylab = "Resíduos quadráticos",
main="Estimativas para Reg. linear")
plot(ageq,resEqStarq, xlab = "Quadrado de idade estimada",
ylab = "Resíduos quadráticos",
main="Estimativas para Reg. linear")
bptest(EqlogLinearStar)
##
## studentized Breusch-Pagan test
##
## data: EqlogLinearStar
## BP = 11.55, df = 6, p-value = 0.07279
kable(tidy(bptest(EqlogLinearStar)),
caption="Breusch-Pagan heteroskedasticity test")
| statistic | p.value | parameter | method |
|---|---|---|---|
| 11.55019 | 0.0727894 | 6 | studentized Breusch-Pagan test |
O método escolhido foi o de Mínimos Quadrados Generalizados- GLS, uma vez que o tipo de variáveis binárias impossibilitaria utilizarmos o método de Mínimos Quadrados Ponderados (MQP) - WLS.
EqlogLinearStar <- lm(lrenda~sexo+age+age2+Defi + Desupi + Desupc, data = dados)
summary(EqlogLinearStar)
##
## Call:
## lm(formula = lrenda ~ sexo + age + age2 + Defi + Desupi + Desupc,
## data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.39287 -0.40214 -0.04482 0.36440 2.19461
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.1496600 0.5511373 9.344 0.00000000000000213 ***
## sexo 0.3499367 0.1309819 2.672 0.008775 **
## age 0.0859690 0.0286082 3.005 0.003335 **
## age2 -0.0009051 0.0003410 -2.654 0.009212 **
## Defi -0.6175125 0.1631134 -3.786 0.000258 ***
## Desupi 0.3806861 0.2284963 1.666 0.098742 .
## Desupc 1.2188520 0.1953044 6.241 0.00000000980656488 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6384 on 103 degrees of freedom
## Multiple R-squared: 0.4503, Adjusted R-squared: 0.4183
## F-statistic: 14.06 on 6 and 103 DF, p-value: 0.00000000001233
EqlogLinearStar_hc3<-coeftest(EqlogLinearStar, vcov = vcovHC(EqlogLinearStar, "HC3"))
class(EqlogLinearStar_hc3)
## [1] "coeftest"
library(texreg)
# Plotando os três modelos de regressão
screenreg(list(EqLogLinear,EqlogLinearStar, EqlogLinearStar_hc3),
digits = 4, stars = c(0.01, 0.05, 0.1),
custom.model.names = c("Modelo Log Linear", "Modelo Star","Star_hc3"),
caption = "Multiple model types and single row", label = "tab:2",
include.adjrs = TRUE, include.bic = TRUE)
##
## =========================================================
## Modelo Log Linear Modelo Star Star_hc3
## ---------------------------------------------------------
## (Intercept) 4.5885 *** 5.1497 *** 5.1497 ***
## (0.6333) (0.5511) (0.5163)
## sexo 0.3618 *** 0.3499 *** 0.3499 **
## (0.1271) (0.1310) (0.1402)
## age 0.0853 *** 0.0860 *** 0.0860 ***
## (0.0277) (0.0286) (0.0286)
## age2 -0.0009 *** -0.0009 *** -0.0009 **
## (0.0003) (0.0003) (0.0004)
## Defi -0.0786 -0.6175 *** -0.6175 ***
## (0.3034) (0.1631) (0.1428)
## Defc 0.2302
## (0.3277)
## Demi 0.2219
## (0.4259)
## Demc 0.7456 **
## (0.2940)
## Desupi 0.9307 *** 0.3807 * 0.3807
## (0.3438) (0.2285) (0.2627)
## Desupc 1.7710 *** 1.2189 *** 1.2189 ***
## (0.3221) (0.1953) (0.2569)
## ---------------------------------------------------------
## R^2 0.5140 0.4503
## Adj. R^2 0.4702 0.4183
## Num. obs. 110 110
## =========================================================
## *** p < 0.01; ** p < 0.05; * p < 0.1
Qual é o melhor modelo estimado? Por quê? R: O modelo log-linear ajustado é o melhor. Pois ele estatisticamente significativo comm p-valor menor e variáveis com maior poder explicativo. Para este exercício, descartamos as variáveis não significativas, chegando ao modelo Log Linear Star como o melhor cujas variáveis são: sexo, age, age2, Defi, Desupi e Desupc
Interprete os parâmetros age e age2. Qual a relação entre as variáveis com a renda? R: Os parâmetros têm uma alta correlação entre si, pois age2 é age elevado ao quadrado. São os que apresentam tol menor que 0,1, e portanto, multicolinearidade. Entretanto, como são significativos, não foram adotadas medidas corretivas. Age tem um maior poder explicativo no modelo que consideramos o melhor, porém está abaixo de outros parâmetros, como desupc. Adotar age2 é condizente com a literatura, pois a medida que um indivíduo envelhece ele terá um papel negativo (inclinação negativa) para frear o aumento da renda. Desta forma, a renda aumenta com a idade até um certo ponto, quando passa a diminuir influenciada pelo parametro age2, num peso menor que age.
Interprete os parâmetros Desupc e Demc. Qual possui um maior impacto na renda do indivíduo? Explique. R: Para isso, teremos que olhar para os modelos linear e log-linear, pois o demc foi retirado no ajuste do log-linear. Em ambos os modelos, desupc mostra significância estatística maior que demc, isto é, temos o primeiro com valores menores que o segundo na coluna Pr(>|t|). Sendo Desupc uma variável binária com valor 1 se o chefe de família tem ensino superior completo - zero caso contrário. e Demc uma variável binária com valor 1 se o chefe de família tem ensino médio completo - zero caso contrário. Ensino superior tem maior impacto sobre a renda média de um indivíduo do que ensino médio, corroborando o que sugere a litera