Abstract
We analyse multicollinearity using example from Gujarati’s Econometrics by Example, 2nd edition - regression and principal components analysis.This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
License: CC BY-SA 4.0
Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Econometria: exemplo multicolinearidade - horas de trabalho da mulher, Gujarati (2015, p.84-92 english second edition). Campo Grande-MS,Brasil: RStudio/Rpubs, 2019. Disponível em http://rpubs.com/amrofi/Gujarati_women_hours.
Os primeiros passos são criar ou abrir um diretório de trabalho. Se optar por criar um novo projeto, haverá a possibilidade de criar em uma pasta vazia. Em seguida, sugere-se que coloque os dados nesta pasta, se possível em um arquivo MS Excel e chame a planilha de ‘dados’.Neste caso, a planilha de dados será colocada dentro do código gerado pela função dput()
. Os dados básicos deste livro de Gujarati (2015) estão em https://www.macmillanihe.com/companion/gujarati-econometrics-by-example-2e/learning-resources/Data-sets/. Sugere-se copiar e colar o arquivo Table4_4.xls
para o diretório do projeto a fim de melhor realizar o exercício.
Usarei a tabela 4.4, que refere-se a um dataset de variáveis socioeconômicas de mulheres casadas que estão no mercado de trabalho. São dados cross-section de 753 mulheres casadas para o ano de 1975, e existem 325 mulheres que não trabalham e portanto apresentam zero horas de trabalho. Os dados básicos foram parte do estudo de Mroz (1987).
Aqui chamaremos os dados do arquivo .xls.
library(readxl)
Table4_4 <- read_excel("Table4_4.xls")
# View(Table4_4)
attach(Table4_4)
O arquivo básico contém 25 variáveis e 753 observações, a saber:
age, educ, exper, faminc, fathereduc, federaltax, hage,
heduc, hfathereduc, hhours, hmothereduc, hours, hsiblings,
hwage, kids618, kidsl6, largecity, lfp, mothereduc, mtr,
siblings, taxableinc, unemployment, wage, wage76
Utilizaremos apenas as variáveis que foram utilizadas em Gujarati (2015, p.84) a fim de reproduzir suas estimativas. São elas:
hours - horas trabalhadas em 1975 (variável dependente),
kidsl6 - número de crianças menores de 6 anos de idade,
kids618 - número de crianças entre 6 e 18 anos de idade,
age - idade da mulher em anos,
educ - anos de escola,
wage - salário estimado dos rendimentos,
hhours - horas de trabalho do marido,
hage - idade do marido,
heduc - anos de escola do marido,
hwage - salário por hora do marido em 1975,
faminc - renda familiar em 1975,
mtr - taxa marginal de imposto federal enfrentada pela mulher,
mothereduc - anos de escola da mãe,
fathereduc - anos de escola do pai,
unemployment - taxa de desemprego no país de residência,
exper - experiência atual no mercado de trabalho
Vou criar um subset dos dados para retirar as mulheres que não estavam no mercado de trabalho, ou seja, aquelas com zero horas de trabalho.
dados <- Table4_4[which(hours > 0), ]
detach(Table4_4)
attach(dados)
O modelo inicial é um modelo de regressão linear múltipla. Utilizarei a função nativa lm()
para estimação. Usarei as funções AIC
e BIC
e incorporarei à saída da regressão mod1
. Usarei o pacote stargazer
para exibir os resultados.
mod1 <- lm(hours ~ age + educ + exper + faminc + fathereduc + hage + heduc +
hhours + hwage + kids618 + kidsl6 + wage + mothereduc + mtr + unemployment,
data = dados)
mod1$AIC <- AIC(mod1)
mod1$BIC <- BIC(mod1)
library(stargazer)
stargazer(mod1, title = "Título: Resultado da Regressão", align = TRUE, type = "text",
style = "all", keep.stat = c("aic", "bic", "rsq", "adj.rsq", "n"))
Título: Resultado da Regressão
===============================================
Dependent variable:
---------------------------
hours
-----------------------------------------------
age -14.307
(9.661)
t = -1.481
p = 0.140
educ -18.398
(19.342)
t = -0.951
p = 0.343
exper 22.881***
(4.777)
t = 4.789
p = 0.00001
faminc 0.014**
(0.006)
t = 2.299
p = 0.023
fathereduc -7.471
(11.192)
t = -0.668
p = 0.505
hage -5.586
(8.938)
t = -0.625
p = 0.533
heduc -6.769
(13.988)
t = -0.484
p = 0.629
hhours -0.474***
(0.073)
t = -6.463
p = 0.000
hwage -141.782***
(16.618)
t = -8.532
p = 0.000
kids618 -24.509
(28.062)
t = -0.873
p = 0.383
kidsl6 -191.565**
(87.832)
t = -2.181
p = 0.030
wage -48.150***
(10.412)
t = -4.624
p = 0.00001
mothereduc -1.838
(11.900)
t = -0.154
p = 0.878
mtr -6,272.598***
(1,085.438)
t = -5.779
p = 0.000
unemployment -16.115
(10.637)
t = -1.515
p = 0.131
Constant 8,595.360***
(1,027.190)
t = 8.368
p = 0.000
-----------------------------------------------
Observations 428
R2 0.339
Adjusted R2 0.315
Akaike Inf. Crit. 6,766.572
Bayesian Inf. Crit. 6,835.577
===============================================
Note: *p<0.1; **p<0.05; ***p<0.01
A identificação da multicolinearidade, conforme Gujarati (2015), pode ser feita de várias formas. A análise de correlação permitirá ter uma ideia inicial de possível multicolinearidade. Neste caso, está pegando todas as variáveis do dataset para as 428 observações válidas. As correlações em módulo com valores acima de 0.8 podem indicar presença de relação linear entre as variáveis. Neste caso, preocuparemos com as variáveis que colocamos no mod1
e entre as variáveis explicativas do modelo, elas não estão no quadrante de correlação (duas a duas) acima de 0,5. Isto não exclui as correlações “múltiplas”, ou seja, a possível relação entre mais de duas variáveis, ou seja, a multicolinearidade.
# install.packages('corrplot')
library(corrplot)
corel <- cor(dados)
corrplot(corel, method = "number")
corel
taxableinc federaltax hsiblings hfathereduc
taxableinc 1.0000000000 9.673636e-01 -0.174378871 0.209166769
federaltax 0.9673636449 1.000000e+00 -0.145222647 0.173021340
hsiblings -0.1743788713 -1.452226e-01 1.000000000 -0.294841001
hfathereduc 0.2091667689 1.730213e-01 -0.294841001 1.000000000
hmothereduc siblings lfp hours kidsl6
taxableinc 0.232166431 -0.21367272 NA 0.10117308 0.033349609
federaltax 0.209559368 -0.17471305 NA 0.10202430 0.025108512
hsiblings -0.288789830 0.21970269 NA -0.01369382 -0.054010719
hfathereduc 0.516627457 -0.21263100 NA 0.14133085 -0.017959488
kids618 age educ wage
taxableinc -0.02248754 -1.689626e-02 -0.064448954 -0.03001339
federaltax -0.03333923 -6.226309e-05 -0.077587664 -0.04517348
hsiblings -0.01052657 4.927135e-02 -0.013846830 0.01842034
hfathereduc -0.01199897 -2.632866e-02 -0.007296299 -0.01847172
wage76 hhours hage heduc hwage
taxableinc 0.078242283 -0.06310674 -0.008581805 -0.03738014 -0.03900972
federaltax 0.035591554 -0.05605114 -0.002378438 -0.03747094 -0.04075278
hsiblings -0.007439234 -0.04518268 0.050455816 -0.05603035 -0.03902662
hfathereduc 0.051499653 0.02682878 0.018727652 -0.01464326 0.07093214
faminc mtr mothereduc fathereduc
taxableinc -0.029239230 0.017763874 -0.007600266 -0.01327076
federaltax -0.015703270 0.009003579 -0.005427587 -0.03777215
hsiblings -0.014993133 0.041926904 -0.052296563 -0.10947876
hfathereduc 0.039086993 -0.099937548 -0.021161401 0.08275203
unemployment largecity exper
taxableinc -0.012261521 -0.0002866718 0.03765013
federaltax -0.043243465 -0.0310761204 0.03886460
hsiblings -0.007702540 0.0104805584 0.09592813
hfathereduc -0.030700256 0.0898946518 -0.02437401
[ reached getOption("max.print") -- omitted 21 rows ]
Outra opção é utilizar o fator de inflação da variância (Variance inflation factor - VIF). O resultado da função vif
do pacote car
será:
library(car)
# vif
reg1.vif <- vif(mod1)
tabela <- cbind(VIF = reg1.vif, TOL = I(1/reg1.vif))
knitr::kable(tabela)
VIF | TOL | |
---|---|---|
age | 5.756163 | 0.1737268 |
educ | 2.021618 | 0.4946533 |
exper | 1.532452 | 0.6525489 |
faminc | 5.144349 | 0.1943881 |
fathereduc | 1.608908 | 0.6215396 |
hage | 5.224349 | 0.1914114 |
heduc | 1.864803 | 0.5362497 |
hhours | 1.887424 | 0.5298226 |
hwage | 3.643848 | 0.2744351 |
kids618 | 1.410795 | 0.7088202 |
kidsl6 | 1.225962 | 0.8156861 |
wage | 1.229041 | 0.8136425 |
mothereduc | 1.603344 | 0.6236963 |
mtr | 7.215127 | 0.1385977 |
unemployment | 1.077137 | 0.9283871 |
# VIF médio
c(VIFmedio = sum(reg1.vif)/length(reg1.vif))
VIFmedio
2.829688
Olhando os resultados, existe alguma relação colinear imperfeita entre as variáveis educacionais (fathereduc e mothereduc) e o resultado da educação da filha (educ). Outra questão pode ser levantada com respeito à inclusão das variáveis de crianças acima de 6 anos de idade (kids618), se ela deve estar no modelo. Ainda, as idades da mulher (age) e do marido (hage) estão correlacionadas. Assim, a alternativa adotada é a exclusão de algumas variáveis do modelo (fathereduc,hage,heduc,kids618,mothereduc).
mod2 <- lm(hours ~ age + educ + exper + faminc + hhours + hwage + kidsl6 + wage +
mtr + unemployment, data = dados)
mod2$AIC <- AIC(mod2)
mod2$BIC <- BIC(mod2)
library(stargazer)
stargazer(mod1, mod2, title = "Título: Resultado da Regressão", align = TRUE,
type = "text", style = "all", keep.stat = c("aic", "bic", "rsq", "adj.rsq",
"n"))
Título: Resultado da Regressão
================================================
Dependent variable:
----------------------------
hours
(1) (2)
------------------------------------------------
age -14.307 -17.727***
(9.661) (4.903)
t = -1.481 t = -3.616
p = 0.140 p = 0.0004
educ -18.398 -27.034*
(19.342) (15.795)
t = -0.951 t = -1.712
p = 0.343 p = 0.088
exper 22.881*** 24.203***
(4.777) (4.653)
t = 4.789 t = 5.201
p = 0.00001 p = 0.00000
faminc 0.014** 0.014**
(0.006) (0.006)
t = 2.299 t = 2.349
p = 0.023 p = 0.020
fathereduc -7.471
(11.192)
t = -0.668
p = 0.505
hage -5.586
(8.938)
t = -0.625
p = 0.533
heduc -6.769
(13.988)
t = -0.484
p = 0.629
hhours -0.474*** -0.486***
(0.073) (0.070)
t = -6.463 t = -6.904
p = 0.000 p = 0.000
hwage -141.782*** -144.973***
(16.618) (15.884)
t = -8.532 t = -9.127
p = 0.000 p = 0.000
kids618 -24.509
(28.062)
t = -0.873
p = 0.383
kidsl6 -191.565** -180.441**
(87.832) (86.370)
t = -2.181 t = -2.089
p = 0.030 p = 0.038
wage -48.150*** -47.433***
(10.412) (10.309)
t = -4.624 t = -4.601
p = 0.00001 p = 0.00001
mothereduc -1.838
(11.900)
t = -0.154
p = 0.878
mtr -6,272.598*** -6,351.293***
(1,085.438) (1,029.837)
t = -5.779 t = -6.167
p = 0.000 p = 0.000
unemployment -16.115 -16.504
(10.637) (10.559)
t = -1.515 t = -1.563
p = 0.131 p = 0.119
Constant 8,595.360*** 8,484.524***
(1,027.190) (987.595)
t = 8.368 t = 8.591
p = 0.000 p = 0.000
------------------------------------------------
Observations 428 428
R2 0.339 0.336
Adjusted R2 0.315 0.320
Akaike Inf. Crit. 6,766.572 6,758.751
Bayesian Inf. Crit. 6,835.577 6,807.460
================================================
Note: *p<0.1; **p<0.05; ***p<0.01
É possível observar que a alteração tornou o modelo 2 com maior \(R^2\) ajustado (Adjusted R2 = 0.320), e menores valores de Akaike (AIC = 6758) e Bayesian (Schwarz) (BIC = 6807). A variável unemployment continua não significativa, não afetando a variável dependente (hours). É possível extrair novos valores de VIF e TOL para o modelo 2.
library(car)
# vif
reg2.vif <- vif(mod2)
tabela2 <- cbind(VIF = reg2.vif, TOL = I(1/reg2.vif))
knitr::kable(tabela2)
VIF | TOL | |
---|---|---|
age | 1.493132 | 0.6697331 |
educ | 1.357462 | 0.7366687 |
exper | 1.464052 | 0.6830360 |
faminc | 4.883432 | 0.2047740 |
hhours | 1.757566 | 0.5689688 |
hwage | 3.352382 | 0.2982954 |
kidsl6 | 1.193771 | 0.8376813 |
wage | 1.213341 | 0.8241708 |
mtr | 6.540321 | 0.1528977 |
unemployment | 1.068847 | 0.9355873 |
# VIF médio
c(VIFmedio = sum(reg2.vif)/length(reg2.vif))
VIFmedio
2.432431
Conforme exposto por Gujarati(2015, p.88), ainda existe considerável colinearidade. As variáveis poderiam ser “mineradas” até encontrar o modelo melhor, mas Gujarati (2015) esclarece que tal procedimento de data fishing ou data mining retirando variáveis que “devem” estar no modelo podem tirar a legitimidade do modelo. É melhor deixar a variável não significativa no modelo pois existem razões teóricas ou práticas que indicam que deva estar.
Alternativas aparecem como a de utilizar o método de componentes principais para reduzir as variáveis do modelo (PCA ou Principal components analysis). Esta abordagem reduz o problema de multicolinearidade mas pode dificultar a interpretação desses componentes principais, pois agora não são as variáveis originais do modelo.
A extração desses componentes será feita com a função pca
. O resultado inclui 15 componentes principais em que para cada um tem-se a proporção da variância (=eigenvalue) e a variância acumulada de cada componente. Os componentes estão ranqueados do mais importante (PC1) para o menos importante (PC15).
attach(dados)
myvars <- c("hours", "age", "educ", "exper", "faminc", "fathereduc", "hage",
"heduc", "hhours", "hwage", "kids618", "kidsl6", "wage", "mothereduc", "mtr",
"unemployment")
dados2 <- dados[myvars]
pca1 <- prcomp(dados2[, -1], scale. = T)
summary(pca1)
Importance of components:
PC1 PC2 PC3 PC4 PC5 PC6
Standard deviation 1.8828 1.6975 1.20823 1.13864 1.01980 0.94035
Proportion of Variance 0.2363 0.1921 0.09732 0.08643 0.06933 0.05895
Cumulative Proportion 0.2363 0.4284 0.52574 0.61217 0.68150 0.74045
PC7 PC8 PC9 PC10 PC11 PC12
Standard deviation 0.90880 0.83573 0.8059 0.76642 0.64426 0.58902
Proportion of Variance 0.05506 0.04656 0.0433 0.03916 0.02767 0.02313
Cumulative Proportion 0.79552 0.84208 0.8854 0.92454 0.95221 0.97534
PC13 PC14 PC15
Standard deviation 0.42691 0.32348 0.28811
Proportion of Variance 0.01215 0.00698 0.00553
Cumulative Proportion 0.98749 0.99447 1.00000
summary(prcomp(dados2[, -1], rank. = 6, scale = TRUE))
Importance of first k=6 (out of 15) components:
PC1 PC2 PC3 PC4 PC5 PC6
Standard deviation 1.8828 1.6975 1.20823 1.13864 1.01980 0.94035
Proportion of Variance 0.2363 0.1921 0.09732 0.08643 0.06933 0.05895
Cumulative Proportion 0.2363 0.4284 0.52574 0.61217 0.68150 0.74045
O primeiro componente (PC1) corresponde a 23,63% do total com variância (eigenvalue) igual a
1.8828^2
[1] 3.544936
Posso escolher olhar apenas os seis primeiros e obter as loadings:
# apenas 6 PCs mais diretamente:
pz6 <- prcomp(dados2[, -1], rank. = 6, scale = TRUE)
print(pz6)
Standard deviations (1, .., p=15):
[1] 1.8827689 1.6974732 1.2082309 1.1386403 1.0198046 0.9403523 0.9088027
[8] 0.8357272 0.8059194 0.7664191 0.6442634 0.5890192 0.4269090 0.3234760
[15] 0.2881053
Rotation (n x k) = (15 x 6):
PC1 PC2 PC3 PC4 PC5
age 0.005233424 -0.52814056 0.11356561 -0.02084025 0.08913582
educ 0.382709064 0.07342791 0.27836863 0.06398997 -0.18787625
exper -0.039057190 -0.37289221 0.26733301 -0.02479082 -0.25519407
faminc 0.424283604 -0.10570460 -0.31395537 -0.17929011 0.02917374
fathereduc 0.265567786 0.14249699 0.45851851 0.08112254 0.28909389
hage -0.008198598 -0.51293274 0.10592894 -0.02127245 0.14071330
heduc 0.367918499 0.09059056 0.12886632 -0.01503319 -0.06864005
hhours 0.053224021 0.12890988 0.09853668 -0.71831985 -0.04927426
hwage 0.381685000 -0.09301603 -0.37268289 0.23971029 0.14143858
kids618 -0.056781025 0.32001427 -0.30919450 -0.06213606 0.29203852
kidsl6 0.013701393 0.27620487 0.01838755 0.27792466 -0.51459257
wage 0.231705483 -0.05163756 -0.03051288 0.05383397 -0.52639052
mothereduc 0.223754821 0.21445607 0.44988918 0.03075007 0.29879636
mtr -0.450533339 0.12731424 0.22836573 0.19744541 -0.01828146
unemployment 0.085702193 -0.07076033 -0.03858228 0.50801208 0.20849447
PC6
age -0.075121787
educ -0.149627465
exper -0.058126464
faminc 0.025538217
fathereduc 0.141788598
hage -0.032664981
heduc -0.230473213
hhours -0.461421852
hwage 0.185369465
kids618 -0.100726997
kidsl6 -0.163191364
wage 0.219409002
mothereduc 0.237586876
mtr 0.002995639
unemployment -0.710635224
Agora farei a regressão conforme os componentes principais (Gujarati, 2015, p.91), a partir dos resultados do objeto pca1
:
data1 <- data.frame(dados2[, 1], pca1$x[, 1], pca1$x[, 2], pca1$x[, 3], pca1$x[,
4], pca1$x[, 5], pca1$x[, 6])
colnames(data1) <- c("hours", "PC1", "PC2", "PC3", "PC4", "PC5", "PC6")
attach(data1)
reg3 <- lm(hours ~ ., data = data1)
summary(reg3)
Call:
lm(formula = hours ~ ., data = data1)
Residuals:
Min 1Q Median 3Q Max
-1544.5 -628.1 59.2 534.8 3683.5
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1302.930 36.572 35.627 < 2e-16 ***
PC1 -1.494 19.447 -0.077 0.938810
PC2 -84.042 21.570 -3.896 0.000114 ***
PC3 18.619 30.304 0.614 0.539293
PC4 -105.740 32.157 -3.288 0.001093 **
PC5 -4.789 35.904 -0.133 0.893956
PC6 56.356 38.937 1.447 0.148544
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 756.6 on 421 degrees of freedom
Multiple R-squared: 0.06338, Adjusted R-squared: 0.05003
F-statistic: 4.748 on 6 and 421 DF, p-value: 0.0001071
factoextra
devtools::install_github("kassambara/factoextra")
library(factoextra)
res.pca <- prcomp(dados2[, -1], scale = TRUE)
Visualizar eigenvalues (scree plot). Mostrar as porcentagens das variâncias explicadas por cada componente principal.
fviz_eig(res.pca, choice = "eigenvalue")
Gráfico dos indivíduos com perfil parecido que serão agrupados juntos.
fviz_pca_ind(res.pca,
col.ind = "cos2", # Color by the quality of representation
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE # Avoid text overlapping
)
Gráfico das variáveis que serão agrupadas. Variáveis correlacionadas positivas apontam para o mesmo lado do gráfico. Variáveis correlacionadas negativas apontam para lados opostos do gráfico.
fviz_pca_var(res.pca,
col.var = "contrib", # Cor por contribuições ao PC
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07"),
repel = TRUE # evitar sobreposição do texto
)
library(factoextra)
# Eigenvalues
eig.val <- get_eigenvalue(res.pca)
knitr::kable(eig.val)
eigenvalue | variance.percent | cumulative.variance.percent | |
---|---|---|---|
Dim.1 | 3.5448188 | 23.6321253 | 23.63213 |
Dim.2 | 2.8814154 | 19.2094359 | 42.84156 |
Dim.3 | 1.4598218 | 9.7321456 | 52.57371 |
Dim.4 | 1.2965018 | 8.6433455 | 61.21705 |
Dim.5 | 1.0400014 | 6.9333427 | 68.15040 |
Dim.6 | 0.8842625 | 5.8950833 | 74.04548 |
Dim.7 | 0.8259224 | 5.5061495 | 79.55163 |
Dim.8 | 0.6984399 | 4.6562660 | 84.20789 |
Dim.9 | 0.6495061 | 4.3300408 | 88.53793 |
Dim.10 | 0.5873982 | 3.9159881 | 92.45392 |
Dim.11 | 0.4150753 | 2.7671687 | 95.22109 |
Dim.12 | 0.3469436 | 2.3129575 | 97.53405 |
Dim.13 | 0.1822513 | 1.2150088 | 98.74906 |
Dim.14 | 0.1046367 | 0.6975781 | 99.44664 |
Dim.15 | 0.0830046 | 0.5533643 | 100.00000 |
# Results for Variables
res.var <- get_pca_var(res.pca)
res.var$coord # Coordinates
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
age 0.009853328 -0.89650447 0.13721348 -0.02372954 0.09090112
educ 0.720552730 0.12464191 0.33633357 0.07286156 -0.19159707
exper -0.073535664 -0.63297455 0.32300000 -0.02822783 -0.26024808
faminc 0.798827981 -0.17943073 -0.37933057 -0.20414695 0.02975152
fathereduc 0.500002774 0.24188484 0.55399621 0.09236939 0.29481927
hage -0.015436065 -0.87068961 0.12798661 -0.02422167 0.14350007
Dim.6 Dim.7 Dim.8 Dim.9 Dim.10
age -0.070640947 0.02049243 -0.26604698 0.178784557 -0.05096310
educ -0.140702534 -0.06710099 -0.21616376 -0.179708199 0.01642578
exper -0.054659355 0.01528986 0.26659936 -0.259875779 -0.49438405
faminc 0.024014921 0.04852204 0.15852175 0.148984587 -0.09752162
fathereduc 0.133331238 -0.04126890 0.01350925 0.267397886 0.07304306
hage -0.030716590 -0.01809737 -0.30931091 0.234829732 -0.01550325
Dim.11 Dim.12 Dim.13 Dim.14
age -0.06466258 -0.046719499 -0.0057847173 -0.1972513130
educ -0.16800910 0.420350199 0.0397579662 -0.0051148113
exper 0.17992197 0.003233826 0.0404311160 0.0064927771
faminc -0.01762699 0.077599504 -0.2281310411 -0.0860604202
fathereduc 0.43402416 0.063796954 0.0052393112 -0.0123419257
hage -0.06887810 -0.009872123 -0.0017027865 0.1958007284
Dim.15
age 0.1116748673
educ 0.0031750934
exper -0.0278207674
faminc -0.1329510176
fathereduc 0.0002813481
hage -0.0926807051
[ reached getOption("max.print") -- omitted 9 rows ]
res.var$contrib # Contributions to the PCs
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
age 0.002738873 27.8932450 1.28971481 0.04343158 0.79451944
educ 14.646622778 0.5391658 7.74890920 0.40947166 3.52974865
exper 0.152546412 13.9048600 7.14669405 0.06145847 6.51240111
faminc 18.001657623 1.1173463 9.85679726 3.21449438 0.08511074
fathereduc 7.052624919 2.0305394 21.02392197 0.65808658 8.35752765
hage 0.006721701 26.3100000 1.12209398 0.04525173 1.98002337
Dim.6 Dim.7 Dim.8 Dim.9 Dim.10
age 5.643283e-01 0.05084493 10.13415675 4.921265e+00 0.44215963
educ 2.238838e+00 0.54515317 6.69016346 4.972245e+00 0.04593242
exper 3.378686e-01 0.02830530 10.17628248 1.039797e+01 41.60986301
faminc 6.522005e-02 0.28506171 3.59789649 3.417429e+00 1.61908343
fathereduc 2.010401e+00 0.20620850 0.02612963 1.100862e+01 0.90829164
hage 1.067001e-01 0.03965442 13.69813473 8.490298e+00 0.04091785
Dim.11 Dim.12 Dim.13 Dim.14
age 1.00734711 0.629125732 1.836088e-02 3.718397e+01
educ 6.80046683 50.928819050 8.673166e-01 2.500202e-02
exper 7.79904623 0.003014217 8.969346e-01 4.028811e-02
faminc 0.07485647 1.735637323 2.855605e+01 7.078200e+00
fathereduc 45.38380730 1.173116042 1.506183e-02 1.455733e-01
hage 1.14297153 0.028090677 1.590925e-03 3.663908e+01
Dim.15
age 1.502479e+01
educ 1.214537e-02
exper 9.324721e-01
faminc 2.129516e+01
fathereduc 9.536423e-05
hage 1.034847e+01
[ reached getOption("max.print") -- omitted 9 rows ]
res.var$cos2 # Quality of representation
Dim.1 Dim.2 Dim.3 Dim.4
age 9.708808e-05 0.803720256 0.0188275385 0.0005630913
educ 5.191962e-01 0.015535605 0.1131202689 0.0053088075
exper 5.407494e-03 0.400656777 0.1043290007 0.0007968102
faminc 6.381261e-01 0.032195388 0.1438916792 0.0416759784
fathereduc 2.500028e-01 0.058508273 0.3069118048 0.0085321046
hage 2.382721e-04 0.758100390 0.0163805730 0.0005866895
Dim.5 Dim.6 Dim.7 Dim.8
age 0.0082630133 4.990143e-03 0.0004199397 0.0707809939
educ 0.0367094355 1.979720e-02 0.0045025423 0.0467267707
exper 0.0677290629 2.987645e-03 0.0002337798 0.0710752168
faminc 0.0008851529 5.767164e-04 0.0023543886 0.0251291445
fathereduc 0.0869184048 1.777722e-02 0.0017031223 0.0001824998
hage 0.0205922709 9.435089e-04 0.0003275148 0.0956732380
Dim.9 Dim.10 Dim.11 Dim.12
age 3.196392e-02 0.0025972378 0.0041812491 2.182712e-03
educ 3.229504e-02 0.0002698062 0.0282270583 1.766943e-01
exper 6.753542e-02 0.2444155938 0.0323719147 1.045763e-05
faminc 2.219641e-02 0.0095104672 0.0003107107 6.021683e-03
fathereduc 7.150163e-02 0.0053352889 0.1883769754 4.070051e-03
hage 5.514500e-02 0.0002403507 0.0047441925 9.745881e-05
Dim.13 Dim.14 Dim.15
age 3.346295e-05 3.890808e-02 1.247128e-02
educ 1.580696e-03 2.616129e-05 1.008122e-05
exper 1.634675e-03 4.215615e-05 7.739951e-04
faminc 5.204377e-02 7.406396e-03 1.767597e-02
fathereduc 2.745038e-05 1.523231e-04 7.915674e-08
hage 2.899482e-06 3.833793e-02 8.589713e-03
[ reached getOption("max.print") -- omitted 9 rows ]
GUJARATI, Damodar N.; PORTER, Dawn C. Econometria básica. 5.ed. Porto Alegre: AMGH/Bookman/McGraw-Hill do Brasil, 2011.
GUJARATI, Damodar N. Econometrics by example. 2nd edition. Palgrave-Macmillan Publishers Limited, 2015.
KASSAMBARA, Alboukadel; MUNDT, Fabian (2017). factoextra: Extract and Visualize the Results of Multivariate Data Analyses. R package version 1.0.5.999. Disponível em: http://www.sthda.com/english/rpkgs/factoextra
MROZ, T.A. The sensitivity of an empirical model of married women’s hours of work to economic and statistical assumptions. Econometrica, v.55, p.765-999. 1987. Disponível em: http://unionstats.gsu.edu/9220/Mroz_Econometrica_LaborSupply_1987.pdf.