library("readxl")
library("tidyverse")
library("lubridate")
library("tseries")
library("forecast")
library("knitr")
dados <- read_excel("dados trabalho.xls", range = "A3:G247")
# Estrutura 1: DataFrame com as variáveis
df <- dados %>%
unite(col = "Data", Ano, Trimestre, sep = ": Q") %>%
mutate("Data" = yq(Data))
# Estrutura 2: lista de TimeSerie para cada variável
df_ts <- dados %>% select(-c("Ano", "Trimestre"))
df_ts <- ts(df_ts, start = c(1947,1), end = c(2007,4), frequency = 4)
RPD <- df_ts[ ,1]
PIB <- df_ts[ ,2]
DCP <- df_ts[ ,3]
LC <- df_ts[ ,4]
DIV <- df_ts[ ,5]
par(mfrow = c(1,1))
plot(RPD, main = "Renda Real")
acf(RPD, 36, main = "ACF Renda Real")
pacf(RPD, 36, main = "PACF Renda Real")
plot(PIB, main = "PIB")
acf(PIB, 36, main = "ACF PIB")
pacf(PIB, 36, main = "PACF PIB")
plot(DCP, main = "Despesas Reais")
acf(DCP, 36, main = "ACF Despesas Reais")
pacf(DCP, 36, main = "PACF Despesas Reais")
plot(LC, main = "Lucros Corporativos")
acf(LC, 36, main = "ACF Lucros Corporativos")
pacf(LC, 36, main = "PACF Lucros Corporativos")
plot(DIV, main = "Dividendos Corporativos")
acf(DIV, 36, main = "ACF Dividendos Corporativos")
pacf(DIV, 36, main = "PACF Dividendos Corporativos")
Em primeiro lugar, é provado que todas as séries apresentam tendência altista bem definida ao longo do tempo. Além disso, há uma queda exponencial das autocorrelações em todas as variáveis, demonstrando que todas as variáveis podem apresentam um perfil autorregressivo do tipo AR confirmado pelas correlações parciais que apresentam a primeiras defasagens estatisticamente significativas. Porém, ao avaliar as variáveis LC e DIV, segundo o mesmo critério da correlação parcial, observa-se que existem outras defasagens significativas entre as últimas defasagens. Intuitivamente as séries temporais para as variáveis, DCP, PIB e RPD, demonstram certo equilíbrio temporal em torno de uma média constante ao longo do tempo. Esse fato, ajuda a presumir a estacionariedade estrita das séries. Devido as oscilações nas últimas defasagens parece que não se LC e DIV não seguem o mesmo comportamento.
adf.test(RPD)
##
## Augmented Dickey-Fuller Test
##
## data: RPD
## Dickey-Fuller = 0.18989, Lag order = 6, p-value = 0.99
## alternative hypothesis: stationary
adf.test(PIB)
##
## Augmented Dickey-Fuller Test
##
## data: PIB
## Dickey-Fuller = -0.12974, Lag order = 6, p-value = 0.99
## alternative hypothesis: stationary
adf.test(DCP)
##
## Augmented Dickey-Fuller Test
##
## data: DCP
## Dickey-Fuller = 0.65642, Lag order = 6, p-value = 0.99
## alternative hypothesis: stationary
adf.test(LC)
##
## Augmented Dickey-Fuller Test
##
## data: LC
## Dickey-Fuller = -0.66114, Lag order = 6, p-value = 0.973
## alternative hypothesis: stationary
adf.test(DIV)
##
## Augmented Dickey-Fuller Test
##
## data: DIV
## Dickey-Fuller = 4.3541, Lag order = 6, p-value = 0.99
## alternative hypothesis: stationary
As variáveis macroeconômicas apresentaram Z-valor em módulo maior que o valor crítico, em todos os casos testados com o teste ADF, e ao nível de significância de 5%. Portanto, a hipótese nula de que φ = 1 (séries contém raiz unitária) não é rejeitada, provando que as séries não são estacionárias.
pp.test(RPD)
##
## Phillips-Perron Unit Root Test
##
## data: RPD
## Dickey-Fuller Z(alpha) = 0.022845, Truncation lag parameter = 4,
## p-value = 0.99
## alternative hypothesis: stationary
pp.test(PIB)
##
## Phillips-Perron Unit Root Test
##
## data: PIB
## Dickey-Fuller Z(alpha) = 0.018858, Truncation lag parameter = 4,
## p-value = 0.99
## alternative hypothesis: stationary
pp.test(DCP)
##
## Phillips-Perron Unit Root Test
##
## data: DCP
## Dickey-Fuller Z(alpha) = 1.144, Truncation lag parameter = 4, p-value =
## 0.99
## alternative hypothesis: stationary
pp.test(LC)
##
## Phillips-Perron Unit Root Test
##
## data: LC
## Dickey-Fuller Z(alpha) = 5.7899, Truncation lag parameter = 4, p-value
## = 0.99
## alternative hypothesis: stationary
pp.test(DIV)
##
## Phillips-Perron Unit Root Test
##
## data: DIV
## Dickey-Fuller Z(alpha) = 7.5859, Truncation lag parameter = 4, p-value
## = 0.99
## alternative hypothesis: stationary
Em nenhum dos testes de Phillips – Perron, para as variáveis macroeconômicas, os Z-valores em módulo foram maiores do que os níveis de significância a 5%. Consequentemente, não temos evidência para rejeitar a hipótese nula de que as séries apresentam raiz unitária, coincidindo com os resultados obtidos no exercício anterior.
Com relação ao teste ADF apresentar resultados contrários ao teste de Phillips–Perron é necessário observar que no teste ADF se considera que o termo de erro é um Ruído Branco \[\epsilon_{t} ~\sim N(0,\sigma^{2})\], ou seja, que tem variância constante e é não autocorrelacionado.
Se este não for o caso (como geralmente ocorre com dados financeiros) o melhor teste seria o de Phillips–Perron, dado por: \[\Delta r_{t} = \mu + \beta_{t} + \rho_{t-1} + \epsilon_{t}\] em que µ, β e ρ tem seus testes-t corrigidos para os problemas de autocorrelação e heterocedasticidade do ruído branco.
\[DIV_{t} = \beta_0 + \beta_1 LC_{t} + \epsilon_{t}\] ##### Você esperaria que essa regressão sofresse o fenômeno da regressão espúria? Por quê? Explique detalhadamente.
Tudo indica que a regressão seria espúria pelo simples fato de que as duas séries não são estacionárias, partindo dos testes ADF e PP feitos anteriormente. Isso significa que se as duas séries forem colocadas em uma regressão uma contra a outra, pode-se encontrar valores para R² alto e β1 significativo mesmo que ambas não tenham nenhuma ligação teórica ou empírica. Nesse caso, as séries possuem ligação dado ao que fora postulado que os dividendos dependem dos lucros.
# Variáveis que contém as Séries das Primeiras Diferenças
diff_RPD = diff(RPD, lag = 1, differences = 1)
diff_PIB = diff(PIB, lag = 1, differences = 1)
diff_DCP = diff(DCP, lag = 1, differences = 1)
diff_LC = diff(LC, lag = 1, differences = 1)
diff_DIV = diff(DIV, lag = 1, differences = 1)
plot(diff_RPD, main = "Renda Real Primeira Diferença")
plot(diff_PIB, main = "PIB Primeira Diferença")
plot(diff_DCP, main = "Despesas Reais Primeira Diferença")
plot(diff_LC, main = "Lucros Corporativos Primeira Diferença")
plot(diff_DIV, main = "Dividendos Corporativos Primeira Diferença")
Após retiradas as diferenças, que mostram grandes oscilações, percebe-se que há uma leve tendência de crescimento com o passar dos trimestres, portanto as três primeiras séries não parecem ser estacionárias. As duas últimas séries parecem ser estacionárias, com uma grande oscilação nos trimestres finais. Porém, os valores oscilam ao redor de uma média zero.
par(mfrow = c(1,1))
acf(diff_RPD, 36, main = "ACF Renda Real Primeira Diferença")
pacf(diff_RPD, 36, main = "PACF Renda Real Primeira Diferença")
acf(diff_PIB, 36, main = "ACF PIB Primeira Diferença")
pacf(diff_PIB, 36, main = "PACF PIB Primeira Diferença")
acf(diff_DCP, 36, main = "ACF Despesas Reais Primeira Diferença")
pacf(diff_DCP, 36, main = "PACF Despesas Reais Primeira Diferença")
acf(diff_LC, 36, main = "ACF Lucros Corporativos Primeira Diferença")
pacf(diff_LC, 36, main = "PACF Lucros Corporativos Primeira Diferença")
acf(diff_DIV, 36, main = "ACF Dividendos Corporativos Primeira Diferença")
pacf(diff_DIV, 36, main = "PACF Dividendos Corporativos Primeira Diferença")
Após a primeira diferenciação em todas as séries o número de defasagens estatisticamente significantes elevou-se tanto para as ACF e PACF.
Em primeiro lugar, é importante verificar empiricamente se as séries são estacionárias, antes de realizar a regressão.
adf.test(diff_DIV) # série estacionária, p-valor < 5%
##
## Augmented Dickey-Fuller Test
##
## data: diff_DIV
## Dickey-Fuller = -3.5672, Lag order = 6, p-value = 0.03696
## alternative hypothesis: stationary
adf.test(diff_LC) # série estacionária, p-valor < 5%
##
## Augmented Dickey-Fuller Test
##
## data: diff_LC
## Dickey-Fuller = -4.05, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
pp.test(diff_DIV) # série estacionária, p-valor < 5%
##
## Phillips-Perron Unit Root Test
##
## data: diff_DIV
## Dickey-Fuller Z(alpha) = -320.15, Truncation lag parameter = 4, p-value
## = 0.01
## alternative hypothesis: stationary
pp.test(diff_LC) # série estacionária, p-valor < 5%
##
## Phillips-Perron Unit Root Test
##
## data: diff_LC
## Dickey-Fuller Z(alpha) = -187.6, Truncation lag parameter = 4, p-value
## = 0.01
## alternative hypothesis: stationary
Realizando a regressão linear:
\[\Delta DIV_{t} = \beta_0 + \beta_1 \Delta LC_{t} + \epsilon_{t}\]
reg = lm(diff_DIV ~ diff_LC)
summary(reg)
##
## Call:
## lm(formula = diff_DIV ~ diff_LC)
##
## Residuals:
## Min 1Q Median 3Q Max
## -90.144 -3.326 -2.718 -0.286 123.416
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.444886 0.789931 4.361 1.92e-05 ***
## diff_LC -0.009761 0.032895 -0.297 0.767
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 11.95 on 241 degrees of freedom
## Multiple R-squared: 0.0003652, Adjusted R-squared: -0.003783
## F-statistic: 0.08805 on 1 and 241 DF, p-value: 0.7669
O valor de R² é realmente baixo, mostrando baixo poder de explicação das variações da primeira diferença dos Dividendos Corporativos em função das variações na primeira diferença dos Lucros Corporativos. Assim sendo a regressão é espúria.
Sim, pois ele se demonstrou estatisticamente significante dado seu p-valor menor do que 5%.
O valor para β1 também demonstrou-se não significativo ao nível de significância de 5%, logo o valor obtido para a primeira diferença de DIV (variável dependente) seria, em média, igual a aproximadamente 3,44 ao longo do tempo.
res = residuals(reg)
adf.test(res)
##
## Augmented Dickey-Fuller Test
##
## data: res
## Dickey-Fuller = -3.5081, Lag order = 6, p-value = 0.04263
## alternative hypothesis: stationary
pp.test(res)
##
## Phillips-Perron Unit Root Test
##
## data: res
## Dickey-Fuller Z(alpha) = -320.42, Truncation lag parameter = 4, p-value
## = 0.01
## alternative hypothesis: stationary
Dado o p-valor < 5% nos dois testes, podemos concluir que a série de resíduos da regressão é estacionária.
O primeiro passo foi verificar se a série é estacionária, e pode ser ajustada em um modelo do tipo ARIMA/SARIMA sem a necessidade de tirar sua primeira diferença.
adf.test(RPD) # série não-estacionária, p-valor < 5%
##
## Augmented Dickey-Fuller Test
##
## data: RPD
## Dickey-Fuller = 0.18989, Lag order = 6, p-value = 0.99
## alternative hypothesis: stationary
pp.test(RPD) # série nao-estacionária, p-valor < 5%
##
## Phillips-Perron Unit Root Test
##
## data: RPD
## Dickey-Fuller Z(alpha) = 0.022845, Truncation lag parameter = 4,
## p-value = 0.99
## alternative hypothesis: stationary
O comando em R que otimiza o ajuste dos parâmetros para um modelo da classe arima é o auto.arima
. Ele estima cada um dos parâmetros (P = parte autoregressiva, d = grau da diferença que estacionariza a série, q = ordem da média móvel) de forma a minimizar os critérios de informação AIC e BIC.
mod_RPD = auto.arima(RPD)
mod_RPD
## Series: RPD
## ARIMA(2,2,2)(1,0,1)[4]
##
## Coefficients:
## ar1 ar2 ma1 ma2 sar1 sma1
## -0.9366 -0.0734 -0.1859 -0.6492 0.6414 -0.8314
## s.e. 0.1568 0.0905 0.1429 0.1187 0.1051 0.0695
##
## sigma^2 estimated as 1543: log likelihood=-1230.24
## AIC=2474.47 AICc=2474.95 BIC=2498.89
Podemos observar que o modelo ARIMA (2,2,2) x SARIMA (1,0,1,4) minimiza os critérios de informação e portanto é o mais adequado para representar a série RPD.
forecast(mod_RPD, h = 4)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2008 Q1 8745.826 8695.488 8796.164 8668.841 8822.811
## 2008 Q2 8814.333 8747.364 8881.302 8711.912 8916.754
## 2008 Q3 8874.309 8787.931 8960.687 8742.205 9006.413
## 2008 Q4 8912.274 8810.626 9013.923 8756.816 9067.732
Acima estão representadas as as previsões para os próximos 4 trimestres feitas pelo modelo obtido, na aba “Forecast”.
mod_PIB = auto.arima(PIB)
mod_PIB
## Series: PIB
## ARIMA(2,2,1)
##
## Coefficients:
## ar1 ar2 ma1
## 0.2262 0.1754 -0.9689
## s.e. 0.0654 0.0655 0.0140
##
## sigma^2 estimated as 1644: log likelihood=-1238.88
## AIC=2485.75 AICc=2485.92 BIC=2499.71
forecast(mod_PIB, h = 4)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2008 Q1 11743.57 11691.60 11795.54 11664.09 11823.05
## 2008 Q2 11801.60 11718.12 11885.09 11673.92 11929.29
## 2008 Q3 11866.37 11751.36 11981.37 11690.48 12042.25
## 2008 Q4 11930.93 11787.22 12074.63 11711.15 12150.70
mod_DCP = auto.arima(DCP)
mod_DCP
## Series: DCP
## ARIMA(0,2,1)(0,0,2)[4]
##
## Coefficients:
## ma1 sma1 sma2
## -0.7760 -0.1467 -0.1365
## s.e. 0.0486 0.0654 0.0592
##
## sigma^2 estimated as 495.4: log likelihood=-1093.39
## AIC=2194.78 AICc=2194.95 BIC=2208.74
forecast(mod_DCP, h = 4)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2008 Q1 8397.847 8369.322 8426.371 8354.223 8441.471
## 2008 Q2 8459.067 8413.983 8504.151 8390.117 8528.017
## 2008 Q3 8513.387 8452.244 8574.530 8419.877 8606.897
## 2008 Q4 8568.146 8490.603 8645.689 8449.555 8686.737
mod_LC = auto.arima(LC)
mod_LC
## Series: LC
## ARIMA(1,2,3)(0,0,1)[4]
##
## Coefficients:
## ar1 ma1 ma2 ma3 sma1
## -0.2645 -0.4778 -0.6451 0.2207 0.3074
## s.e. 0.1948 0.1871 0.1308 0.0916 0.0786
##
## sigma^2 estimated as 421.7: log likelihood=-1073.24
## AIC=2158.48 AICc=2158.84 BIC=2179.42
forecast(mod_LC, h = 4)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2008 Q1 1477.240 1450.922 1503.557 1436.991 1517.489
## 2008 Q2 1505.295 1463.008 1547.581 1440.623 1569.967
## 2008 Q3 1521.403 1470.647 1572.159 1443.779 1599.027
## 2008 Q4 1554.637 1494.650 1614.624 1462.895 1646.380
mod_DIV = auto.arima(DIV)
mod_DIV
## Series: DIV
## ARIMA(0,2,2)(0,0,2)[4]
##
## Coefficients:
## ma1 ma2 sma1 sma2
## -1.2147 0.3236 -0.0826 0.1043
## s.e. 0.0623 0.0644 0.0736 0.0622
##
## sigma^2 estimated as 114.7: log likelihood=-916.27
## AIC=1842.55 AICc=1842.8 BIC=1859.99
forecast(mod_DIV, h = 4)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2008 Q1 850.9781 837.2541 864.7021 829.9890 871.9671
## 2008 Q2 873.4968 856.0470 890.9466 846.8096 900.1840
## 2008 Q3 896.3773 875.0442 917.7104 863.7511 929.0035
## 2008 Q4 918.5325 893.1429 943.9221 879.7024 957.3625