Exercício 1

Considere o seguinte modelo de regressão linear múltipla:
\(Yi = β0 + β1Xi + β2X2 + Ui\)
em que ui tem média zero e variância \(σ^2\).

(V ou F) Erros de medida da variável dependente reduzem as variâncias dos estimadores de MQO de βhat1 e βhat2.

Resposta:

Falso, erros de medida da variável dependente são uma fonte adicional de variabilidade nos dados o que ode acarretar em um viés para os estimadores e (ou) uma redução na eficiência dos Estimadores

Exercício 2

2) Suponha que você queira estimar um modelo que relaciona o número de crimes ocorridos no campus às matrícula de alunos em em um grupo de faculdades. A amostra não é uma amostra aleatória de faculdades, pois muitas delas não registraram crimes em 2019 no campus. Você acha que a falha das faculdades em informar os crimes pode ser vista como uma seleção de amostra exógena? Explique.

Resposta:

Faculdades com altos índices de criminalidade têm um incentivo para não relatar estatísticas de crimes, já que os potenciais alunos podem considerar o crime no campus como um fator importante ao decidir onde cursar a faculdade, tornando assim a seleção da amostra, neste caso, indiscutivelmente endógena. Se isso for verdade, a probabilidade de ser incluído na amostra está inversamente relacionada a u na equação do crime. Para uma determinada dimensão da faculdade, um valor maior de u implica em mais crimes e, consequentemente, uma menor probabilidade de que a faculdade relate seus números de crimes

Exercícios Práticos

A base de dados “PNAD2021_modificada” em .Rda contém xxxx observações das seguintes variáveis da PNAD Contínua do 1o trimestre de 2021:

• SIT_domicilio: Situação local do domicílio (Urbano ou Rural)
• Rendimento: Rendimento no último mês em R$
• Educ: Anos de Estudo em anos
• Sexo: Sexo (Masculino ou Feminino)
• Cor: Cor/raça (Branca, Preta, Amarela, Parda, Indígena ou Não declarado)
• Idade: Idade em anos
• UF: Estado brasileiro

Os dados faltantes estão indicados por 99999.

Instruções

• Etapa 1: Importe para o RStudio a base de dados com load(). Verifique com comando anyNA() a existência de NA (dados faltantes), analise a classe das variáveis str()e as estatísticas descritivas summary().

#encoding
options(encoding = "UTF-8") #codificação dos caracteres
options(scipen = 999) #desliga a notação científica
rm(list = ls()) #limpa o environment


#packages
library(tidyverse) 
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.0     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(zoo)
## 
## Attaching package: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(lmtest)
library(sandwich)
library(stargazer) 
## 
## Please cite as: 
## 
##  Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
##  R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
library(hrbrthemes)
library(lmtest)
library(zoo)
library(sandwich)


setwd("C:/Users/rafael.souza/Documents/R_Projects/Lista 2")

load("PNAD2021_modificada.Rda")

pnad <- PNAD2021_modificada

anyNA(pnad)
## [1] FALSE
pnad <- na.omit(pnad)

• Etapa 2: Retire os valores faltantes indicados por 99999. Iremos estimar o modelo apenas para o Estado de São Paulo (indicado pelo no 35 na coluna UF da base). Filtre os dados diferentes de 99999 e paulistas com o comando filter do pacote dplyr.

str(pnad)
## 'data.frame':    302263 obs. of  8 variables:
##  $ SIT_domicilio: Factor w/ 2 levels "Rural","Urbano": 2 2 2 2 2 2 2 2 2 2 ...
##  $ NUM_moradores: num  6 6 6 6 6 2 2 4 4 4 ...
##  $ Renda        : num  1045 1045 99999 99999 99999 ...
##  $ Educ         : num  5 10 10 12 12 0 5 12 7 1 ...
##  $ Sexo         : Factor w/ 2 levels "Masculino","Feminino": 2 2 2 1 2 2 1 2 1 1 ...
##  $ Cor          : Factor w/ 6 levels "Branca","Amarela",..: 5 5 5 5 5 5 5 1 1 1 ...
##  $ Idade        : num  39 20 16 73 59 37 31 44 20 8 ...
##  $ UF           : chr  "11" "11" "11" "11" ...
##  - attr(*, "na.action")= 'omit' Named int [1:17635] 6 44 83 88 99 100 127 142 154 200 ...
##   ..- attr(*, "names")= chr [1:17635] "6" "44" "83" "88" ...
summary(pnad)
##  SIT_domicilio   NUM_moradores       Renda             Educ       
##  Rural : 76219   Min.   : 1.00   Min.   :    10   Min.   : 0.000  
##  Urbano:226044   1st Qu.: 2.00   1st Qu.:  1800   1st Qu.: 5.000  
##                  Median : 3.00   Median : 99999   Median : 9.000  
##                  Mean   : 3.56   Mean   : 61372   Mean   : 8.563  
##                  3rd Qu.: 4.00   3rd Qu.: 99999   3rd Qu.:12.000  
##                  Max.   :21.00   Max.   :300000   Max.   :16.000  
##         Sexo                   Cor             Idade             UF           
##  Masculino:145195   Branca       :120017   Min.   :  5.00   Length:302263     
##  Feminino :157068   Amarela      :  1449   1st Qu.: 21.00   Class :character  
##                     Indígena     :  1239   Median : 38.00   Mode  :character  
##                     Não declarado:    59   Mean   : 39.06                     
##                     Parda        :154621   3rd Qu.: 55.00                     
##                     Preta        : 24878   Max.   :110.00
pnad <- pnad %>% 
  filter(Cor != "Não declarado") %>% 
  mutate(Cor = ifelse(Cor %in% c("Indígena","Parda","Preta"),"Pretos ou Pardos",Cor)) %>% 
  mutate(Cor = ifelse(Cor %in% "Amarela","Branca",Cor))

pnad <- pnad %>%
  mutate(Cor = ifelse(Cor %in% c("1", "2"), "Branca", Cor))

unique(pnad$Cor)
## [1] "Pretos ou Pardos" "Branca"
pnad <- pnad %>%
  filter(Renda != 99999, UF == "35")

unique(pnad$UF)
## [1] "35"

• Etapa 3: Com o comando lm estime a seguinte regressão linear múltipla:

\(ln(Renda) = β0 + β1Educ + β2SexoFeminino + β3CorAmarela + β4CorIndígena + β5CorNãodeclarado + β6Parda+ β7CorPreta + β8Idade + β9Idade2 + β10DomicilioUrbano + β11Educ ∗ SexoFeminino + u\)

modelo <- lm(log(Renda) ~ Educ + Sexo + Cor + Idade + I(Idade^2) + SIT_domicilio + Educ:Sexo, data = pnad)

summary(modelo)
## 
## Call:
## lm(formula = log(Renda) ~ Educ + Sexo + Cor + Idade + I(Idade^2) + 
##     SIT_domicilio + Educ:Sexo, data = pnad)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.7182 -0.3612 -0.0109  0.3538  4.2238 
## 
## Coefficients:
##                        Estimate  Std. Error t value             Pr(>|t|)    
## (Intercept)          5.03309074  0.06453916  77.985 < 0.0000000000000002 ***
## Educ                 0.09491124  0.00243526  38.974 < 0.0000000000000002 ***
## SexoFeminino        -0.62733157  0.04514265 -13.897 < 0.0000000000000002 ***
## CorPretos ou Pardos -0.13523622  0.01409175  -9.597 < 0.0000000000000002 ***
## Idade                0.06120328  0.00276017  22.174 < 0.0000000000000002 ***
## I(Idade^2)          -0.00054214  0.00003157 -17.175 < 0.0000000000000002 ***
## SIT_domicilioUrbano  0.11003362  0.01871448   5.880       0.000000004236 ***
## Educ:SexoFeminino    0.02263917  0.00361888   6.256       0.000000000411 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6822 on 10635 degrees of freedom
## Multiple R-squared:  0.3146, Adjusted R-squared:  0.3141 
## F-statistic: 697.4 on 7 and 10635 DF,  p-value: < 0.00000000000000022

3) Indique V ou F:

a) Em nosso modelo, utilizamos a variável Idade como proxy da Experiência no mercado de trabalho.
Resposta: Verdadeiro


b) No teste RESET, não rejeitamos a hipótese nula de que nosso modelo foi especificado corretamente em um nível de significância de α = 5%.

reset_test <- resettest(modelo, power = 2)
reset_test
## 
##  RESET test
## 
## data:  modelo
## RESET = 604.05, df1 = 1, df2 = 10634, p-value < 0.00000000000000022

Resposta: Falso, p-value < 0.00000000000000022. Rejeita-se a hipotese Nula. Com isso podemos dizer que há evidências de falta de especificação do modelo, o que sugere que a forma funcional do modelo pode ser inadequada


c) Ao testar o modelo estimado acima contra um modelo em que fazemos o logaritmo natural da variável Idade, ou seja, ln(Idade) no lugar de Idade e Idade2. Rejeitamos as hipóteses nulas, em qualquer nível de significância usual.

modelo2 <- lm(log(Renda) ~ Educ + Sexo + Cor + log(Idade) + SIT_domicilio + Educ:Sexo, data = pnad)

summary(modelo2)
## 
## Call:
## lm(formula = log(Renda) ~ Educ + Sexo + Cor + log(Idade) + SIT_domicilio + 
##     Educ:Sexo, data = pnad)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.7031 -0.3624 -0.0135  0.3546  4.1953 
## 
## Coefficients:
##                      Estimate Std. Error t value             Pr(>|t|)    
## (Intercept)          4.209765   0.084539  49.797 < 0.0000000000000002 ***
## Educ                 0.097454   0.002434  40.033 < 0.0000000000000002 ***
## SexoFeminino        -0.615752   0.045379 -13.569 < 0.0000000000000002 ***
## CorPretos ou Pardos -0.123623   0.014129  -8.749 < 0.0000000000000002 ***
## log(Idade)           0.623953   0.019847  31.439 < 0.0000000000000002 ***
## SIT_domicilioUrbano  0.113686   0.018813   6.043       0.000000001564 ***
## Educ:SexoFeminino    0.022447   0.003639   6.169       0.000000000711 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6859 on 10636 degrees of freedom
## Multiple R-squared:  0.3071, Adjusted R-squared:  0.3067 
## F-statistic: 785.6 on 6 and 10636 DF,  p-value: < 0.00000000000000022
reset_test <- resettest(modelo2, power = 2)  # power = 2 para testar se há falta de forma funcional quadrática
reset_test
## 
##  RESET test
## 
## data:  modelo2
## RESET = 521.46, df1 = 1, df2 = 10635, p-value < 0.00000000000000022
# Executar o teste de Encompassing
encomptest(modelo,modelo2)

Resposta: Verdadeiro. Com isso concluímos que o modelo expandido que inclui todas as variáveis do Modelo 1 e do Modelo 2, além de log(Idade), é preferível aos modelos individuais. Isso implica que o modelo expandido tem um melhor ajuste aos dados do que os modelos individuais.


d) Os valores extremos dos resíduos padronizados são -5,455 e 6,217.

## Resíduos padrões para todas observações
studres = rstudent(modelo)
## Exibir valor extremos
min(studres)
## [1] -5.458409
max(studres)
## [1] 6.204099

Resposta: Verdadeiro


e) Pelo histograma de densidade dos resíduos padronizados, é possível observar barras isoladas nas extrem- idades. Portanto, há outliers em nossa estimação.

hist(studres, freq = FALSE, breaks = 100)
lines(density(studres), lwd=2)

Resposta: falso.