Regressão linear simples e log-log

Iniciando A base de dados.

O código abaixo faz a leitura da base de dados. Não se esqueça de carregar as bliotecas disponíveis no código .Rmd.

library(readxl)
Dados <- read_excel("Dados_Atv1.xls",sheet = "Dados", col_names = TRUE)
View(Dados)

Regressão linear simples.

Escolhemos a soja como variável independente e a partir dela tentaremos prever ou explicar o comportamento do dolar.

Com o resultado do teste Anova e do comando summary, verificamos: R² de 0.1501 e R² ajustado de 0.1467.

Para o 95% de confiança, não foi encontrada significância.

Conforme pode ser evidenciado no gráfico abaixo, plotamos os pontos da dispersão dolar por soja e a linha vermelha indica a regressão linear.

eq_dolar_soja <- lm(soja ~ dol, data = Dados)
summary(eq_dolar_soja)
## 
## Call:
## lm(formula = soja ~ dol, data = Dados)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -45.096 -19.967  -7.366  26.016  42.397 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -93.337     34.508  -2.705  0.00731 ** 
## dol           42.504      6.448   6.592 2.63e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 24.4 on 246 degrees of freedom
## Multiple R-squared:  0.1501, Adjusted R-squared:  0.1467 
## F-statistic: 43.45 on 1 and 246 DF,  p-value: 2.628e-10
anova(eq_dolar_soja)
## Analysis of Variance Table
## 
## Response: soja
##            Df Sum Sq Mean Sq F value    Pr(>F)    
## dol         1  25877 25876.6  43.451 2.628e-10 ***
## Residuals 246 146500   595.5                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(Dados$dol, Dados$soja, col = "blue", main = "Regressão linear soja e dol",
     xlab = "dolar em pontos", ylab= "soja em  R$ / Saca", pch = 20,)
abline(eq_dolar_soja, col="red")

Achando os intervalos de Confiança Mínimos e Máximos

library(dplyr)
dft_ic95 <- data.frame(confint(eq_dolar_soja, level = 0.95),coef(eq_dolar_soja))
colnames(dft_ic95)[1] = "Min" 
colnames(dft_ic95)[2] = "Max" 
colnames(dft_ic95)[3] = "Predito"
dft_ic95 %>% relocate("Predito", .after = "Min") 
##                    Min   Predito       Max
## (Intercept) -161.30566 -93.33671 -25.36775
## dol           29.80347  42.50384  55.20421
Xi <- 0:100
minIC95 <- dft_ic95[1,1] + dft_ic95[2,1]*Xi
maxC95 <- dft_ic95[1,2] + dft_ic95[2,2]*Xi
#caso queira plotar os intervalos de confiança de contorno. 

Conforme evidenciado, os invervalos de confiança para nível crítico de 5% todos incluem o 0.

Efeitos Marginais e Elasticidades.

Para o modelo linear:

O efeito marginal será: beta2,

e a elasticidade beta2 * Xi/Yi, utilando-se valores médios dos dados.

e_mg_ln <- dft_ic95[2,3]
el_ln <- dft_ic95[2,3]* mean(Dados$dol)/mean(Dados$soja)
e_mg_ln
## [1] 42.50384
el_ln
## [1] 1.697048

Regressão linear Log Log.

A seguir, transformaos as variáveis X e Y usando o comando log() e refizemos o processo de regressão.

Para O R² encontramos valor de 0.1793 e R² ajustado de 0.1759

Neste caso, teremos efeito marginal beta2 * Xi/Yi e elasticidae beta2.

Curisosamente, para 95% de confiança, os intervalos de confiança não incluem 0, todavia a regressão não foi significativa para este intervalo.

eq_loglog_dolar_soja <- lm(log(soja) ~ log(dol), data = Dados)
summary(eq_loglog_dolar_soja)
## 
## Call:
## lm(formula = log(soja) ~ log(dol), data = Dados)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.34366 -0.14677 -0.04606  0.19461  0.30892 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   1.7561     0.4260   4.123 5.12e-05 ***
## log(dol)      1.8629     0.2541   7.330 3.31e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1833 on 246 degrees of freedom
## Multiple R-squared:  0.1793, Adjusted R-squared:  0.1759 
## F-statistic: 53.73 on 1 and 246 DF,  p-value: 3.307e-12
anova(eq_loglog_dolar_soja)
## Analysis of Variance Table
## 
## Response: log(soja)
##            Df Sum Sq Mean Sq F value    Pr(>F)    
## log(dol)    1 1.8061 1.80608  53.727 3.307e-12 ***
## Residuals 246 8.2695 0.03362                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(log(Dados$dol),log(Dados$soja), col = "blue", main = "Regressão linear log-log soja e dol",
     xlab = "dolar em pontos (log)", ylab= "soja em  R$ / Saca (log)", pch = 20,)
abline(eq_loglog_dolar_soja, col="red")

library(dplyr)
dft_ic95log <- data.frame(confint(eq_loglog_dolar_soja, level = 0.95),coef(eq_loglog_dolar_soja))
colnames(dft_ic95log)[1] = "Min" 
colnames(dft_ic95log)[2] = "Max" 
colnames(dft_ic95log)[3] = "Predito"
dft_ic95log %>% relocate("Predito", .after = "Min") 
##                   Min  Predito      Max
## (Intercept) 0.9171293 1.756109 2.595089
## log(dol)    1.3622868 1.862871 2.363456
e_mg_log <- dft_ic95log[2,3]* mean(log(Dados$dol))/mean(log(Dados$soja))
el_log <- dft_ic95log[2,3]
e_mg_log
## [1] 0.6399288
el_log
## [1] 1.862871