IMPORTAÇÃO DE DADOS
library(readxl)
nome_arquivo <- 'wage1.xls'
if(nome_arquivo %in% dir(getwd())){
wages_file <- read_excel(nome_arquivo)
print("ARQUIVO IMPORTADO")}else{ print("ARQUIVO NÃO DISPONÍVEL")}
## [1] "ARQUIVO IMPORTADO"
REGRESSÃO LINEAR SIMPLES
library(stargazer)
reg1 <- lm(formula = wage~educ,data = wages_file)
tabela_reg1 <- stargazer(reg1, type = 'html',style = 'all')
,
|
|
|
|
Dependent variable:
|
,
|
|
|
,
|
|
wage
|
,
|
|
|
educ
|
0.541***
|
,
|
|
(0.053)
|
,
|
|
t = 10.167
|
,
|
|
p = 0.000
|
,
|
Constant
|
-0.905
|
,
|
|
(0.685)
|
,
|
|
t = -1.321
|
,
|
|
p = 0.188
|
,
|
|
|
Observations
|
526
|
,
|
R2
|
0.165
|
,
|
Adjusted R2
|
0.163
|
,
|
Residual Std. Error
|
3.378 (df = 524)
|
,
|
F Statistic
|
103.363*** (df = 1; 524) (p = 0.000)
|
,
|
|
|
Note:
|
p<0.1; p<0.05; p<0.01
|
,
VETORES DA REGRESSÃO
coef1 <- coef(reg1)
resid1 <- resid(reg1)
vals1 <- predict(reg1)
print('Coeficientes:')
print(coef1)
print('-------------------------------------------------')
print('Resíduos (amostra de 30):')
print(resid1[1:30])
print('-------------------------------------------------')
print('Valores (amostra de 30):')
print(vals1[1:30])
## [1] "Coeficientes:"
## (Intercept) educ
## -0.9048517 0.5413593
## [1] "-------------------------------------------------"
## [1] "Resíduos (amostra de 30):"
## 1 2 3 4 5 6
## -1.95010017 -2.35145943 -2.05010017 2.57397760 -0.29145943 0.99310354
## 7 8 9 10 11 12
## 2.41038502 -0.59145943 -1.99145943 9.88174428 -1.50689646 1.99718131
## 13 14 15 16 17 18
## 3.17854057 -0.09145943 16.60854057 9.57310354 1.90854057 4.49718131
## 19 20 21 22 23 24
## -1.99145943 -1.09145943 1.28854057 2.88854057 -1.42689646 -5.06145943
## 25 26 27 28 29 30
## 0.94989983 1.80310354 0.02310354 4.74310354 5.28446280 -0.17602240
## [1] "-------------------------------------------------"
## [1] "Valores (amostra de 30):"
## 1 2 3 4 5 6 7 8
## 5.050100 5.591459 5.050100 3.426022 5.591459 7.756896 8.839615 5.591459
## 9 10 11 12 13 14 15 16
## 5.591459 8.298256 7.756896 6.132819 5.591459 5.591459 5.591459 7.756896
## 17 18 19 20 21 22 23 24
## 5.591459 6.132819 5.591459 5.591459 5.591459 5.591459 7.756896 5.591459
## 25 26 27 28 29 30
## 5.050100 7.756896 7.756896 7.756896 7.215537 3.426022
COEFICIENTES PERCENTUAIS E ELASTICIDADE
wages_filt <- wages_file[which(wages_file$educ != 0),]
reg_pct <- lm(formula = log(wage) ~ educ,data = wages_file)
reg_el <- lm(formula = log(wage) ~ log(educ),data = wages_filt)
print('Coeficientes percentuais:')
print(coef(reg_pct))
print('-------------------------------------------------')
print('Coeficientes em elasticidade:')
print(coef(reg_el))
## [1] "Coeficientes percentuais:"
## (Intercept) educ
## 0.58377267 0.08274437
## [1] "-------------------------------------------------"
## [1] "Coeficientes em elasticidade:"
## (Intercept) log(educ)
## -0.4446768 0.8252071
COMPARAÇÃO ENTRE AS TRÊS REGRESSÕES
reg2 <- lm(formula = wage~ 0 + educ ,data = wages_file,)
reg3 <- lm(formula = wage~ 1 ,data = wages_file,)
tabela3 <- stargazer(reg1,reg2,reg3, type='html',style='all',
column.labels = c("completo", "pela origem","constante") )
,
|
|
|
|
Dependent variable:
|
,
|
|
|
,
|
|
wage
|
,
|
|
completo
|
pela origem
|
constante
|
,
|
|
(1)
|
(2)
|
(3)
|
,
|
|
|
educ
|
0.541***
|
0.473***
|
|
,
|
|
(0.053)
|
(0.011)
|
|
,
|
|
t = 10.167
|
t = 41.247
|
|
,
|
|
p = 0.000
|
p = 0.000
|
|
,
|
Constant
|
-0.905
|
|
5.896***
|
,
|
|
(0.685)
|
|
(0.161)
|
,
|
|
t = -1.321
|
|
t = 36.616
|
,
|
|
p = 0.188
|
|
p = 0.000
|
,
|
|
|
Observations
|
526
|
526
|
526
|
,
|
R2
|
0.165
|
0.764
|
0.000
|
,
|
Adjusted R2
|
0.163
|
0.764
|
0.000
|
,
|
Residual Std. Error
|
3.378 (df = 524)
|
3.381 (df = 525)
|
3.693 (df = 525)
|
,
|
F Statistic
|
103.363*** (df = 1; 524) (p = 0.000)
|
1,701.328*** (df = 1; 525) (p = 0.000)
|
|
,
|
|
|
Note:
|
p<0.1; p<0.05; p<0.01
|
,
par(bg = '#bad9ff')
plot(wages_file$educ,
wages_file$wage,
xlab = 'educ',
ylab = 'wage',
cex=0.5)
abline(reg1,col = 'blue',lwd=2,lty = 1)
abline(reg2,col = 'red',lwd=2,lty=2)
abline(reg3,col = 'dark green',lwd=2,lty=3)
legend("topleft",
c("completa","pela origem","constante"),
lwd=2,lty=1:3,
col = c('blue','red','dark green'))
AMOSTRAS ALEATÓRIAS
dens_medias <- function(n1,n2,n3){
medias1 <- numeric(1000)
medias2 <- numeric(1000)
medias3 <- numeric(1000)
for (i in 1:1000){
medias1[i] <- mean(rnorm(n1,0,1))
medias2[i] <- mean(rnorm(n2,0,1))
medias3[i] <- mean(rnorm(n3,0,1))
}
par(new)
plot(density(medias3),col = 'red', main = paste('Densidade das médias de n amostras (média = 0, dp = 1)'))
lines(density(medias2), col = 'blue')
lines(density(medias1), col = 'dark green')
abline(v=0,lty=2)
legend('topleft', legend = c(n3,n2,n1),lwd=2, col = c('red','blue','dark green'))
}
dens_medias(10,50,100)

Verificamos portanto que quanto maior o tamanho da amostra na simulação, mais próximo da média populacional tenderá a observação