O modelo de regressão com dados em painel possui uma característica especial: se constitui de uma dimensão temporal e outra espacial. Isto porque a mesma unidade de corte transversal (família, países, etc.) é acompanhada ao longo do tempo. Por exemplo, a produção industrial mensal dos Estados brasileiros em função da taxa de juros no período de 2015-2016. Têm-se então a 624 (26x24) observações combinadas: de cada um dos 26 Estados (exluindo o Distrito Federal) e 24 observações para os meses.
Dentre os benefícios da regressão com dados em painel (Gujarati e Porter 2011):
Devido à heterogeneidade da análise entre indivíduos, empresas, estados, países, etc., esta técnica pode levar em conta estas variáveis individuais específicas;
Maior informação, maior variabilidade e menor colinearidade entre variáveis, devido à combinaçãod e séries temporais e dados com corte transversal;
Dados em painel são mais adequados ao estudo da dinâmica da mudança (emprego, renda, etc).
Detecta e mede melhor os efeitos em comparação aos estudos transversais puros ou em séries temporais puras;
Possibilidade de modelos comportamentais mais complexos;
Minimização do viés decorrente da agregação de pessoas e/ou empresas nos grandes conjuntos.
A base de dados utilizada neste exemplo (“Grunfeld”) é proveniente do pacote AER. É constituída da variável dependente do nível de investimento (“invest”) de diversas empresas (“firm”), bem como das variáveis explicativas de seu valor de mercado (“value”) e do valor do estoque de capital (“capital”) durante o período de 1935-1954 (20 anos). Portanto pretende-se descobrir os determinantes do valor do nível investimento das firmas durente o período.
require(AER)
data(Grunfeld, package="AER")
Após carregada a base para o estudo, serão selecionadas quatro empresas (“General Electric”, “General Motors”, “US Steel” e “Westinghouse”) para fins de análise dos dados. Utiliza-se o pacote plm e a função pdata.frame para alocar a base de dados para a análise de regressão de dados em painel, uma vez que é necessário definir o atributo individual (“firm”) e temporal (“year”) das observações. Para isso utiliza-se o argumento index, como segue:
require(plm)
Grunfeld=subset(Grunfeld, firm %in% c("General Electric",
"General Motors",
"US Steel",
"Westinghouse"))
Grunfeld=pdata.frame(Grunfeld, index=c("firm","year"))
head(Grunfeld)
Nossa base de dados possui igualmente 20 informações para cada empresa, se constituindo em um painel equilibrado. Caso o número de informações para cada empresa fossem desiguais, teríamos um painel desequilibrado.
summary(Grunfeld)
invest value capital
Min. : 12.93 Min. : 191.5 Min. : 0.8
1st Qu.: 55.27 1st Qu.:1192.3 1st Qu.: 118.1
Median : 199.75 Median :1971.2 Median : 254.7
Mean : 290.92 Mean :2229.5 Mean : 357.3
3rd Qu.: 459.77 3rd Qu.:2795.0 3rd Qu.: 368.9
Max. :1486.70 Max. :6241.7 Max. :2226.3
firm year
General Motors :20 1935 : 4
US Steel :20 1936 : 4
General Electric:20 1937 : 4
Westinghouse :20 1938 : 4
1939 : 4
1940 : 4
(Other):56
Uma questão interessante emerge para a análise de regressão de dados em painel, em virtude da interação de variáveis individuais (“firm”) com a série temporal (“year”): a elevação da complexidade da análise. Desta forma, várias possibilidades de análise de modelos de regressão surgem, dentre elas:
regressão considerando que o intercepto do modelo e seus coeficientes angulares são constantes ao londo do tempo e no espaço, sendo que o termo de erro capta a diferença no tempo e entre os indivíduos (POOLED);
regressão considerando que os coeficientes angulares são constantes e o intercepto varia entre os indivíduos (EFEITOS FIXOS);
regressão considerando que o intercepto assume um valor médio comum entre os indivíduos e os coeficientes angulares variam ao longo do tempo e também entre indivíduos (EFEITOS ALEATÓRIOS).
Abaixo é demonstrada a evolução do investimento de acordo com cada empresa estudada:
coplot(invest ~ year|firm, type="b", data=Grunfeld)
Este modelo trata de “empilhar” todas as observações da base de dados, ignorando a estrutura de dados em painel. Desta forma, todas as observações são tratadas como não correlacionadas para os indivíduos, com erros homoscedásticos para com os indivíduos. Trata-se, portanto, da forma mais simplista e ingênua pois desconsidera as dimensões de tempo e espaço combinados, ao mesmo tempo que estima a regressão pelo método dos Mínimos Quadrados Ordinários (MQO) (Gujarati e Porter 2011). Desta forma:
\(\begin{matrix} Y_{it} = \beta_1+\beta_2X_{2it} + \beta_3X_{3it} +u_{it}\\ i=1,2,3,4\\ t=1,2,\dots,20 \end{matrix}\)
em que i corresponde à i-nésima unidade de corte transversal e t o t-nésimo período de tempo.
Para executar este modelo de regressão é necessário utilizar a função plm, juntamente com as variáveis dependente e independentes, indicando a base de dados (data) e o tipo da regressão (“pooling”).
reg.pooled=plm(invest~value+capital,
data=Grunfeld, model="pooling")
summary(reg.pooled)
Pooling Model
Call:
plm(formula = invest ~ value + capital, data = Grunfeld, model = "pooling")
Balanced Panel: n = 4, T = 20, N = 80
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-319.6766 -99.9523 1.9647 65.9905 336.2072
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
(Intercept) -62.831841 29.725385 -2.1137 0.03778 *
value 0.110521 0.013776 8.0230 9.186e-12 ***
capital 0.300463 0.049399 6.0823 4.273e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Total Sum of Squares: 6410400
Residual Sum of Squares: 1572700
R-Squared: 0.75466
Adj. R-Squared: 0.74829
F-statistic: 118.424 on 2 and 77 DF, p-value: < 2.22e-16
A estimação da regressão pooled averiguou alta significância estatística nas variáveis dependentes (“value” e “capital”), indicando sinal positivo para os coeficientes (em consonância com a literatura), bem como um valor de R2 alto. Este tipo de modelo não faz diferenciação entre a influência/diferença das empresas na variável investimento e nem se a resposta do investimento às variáveis explicativas é a mesma ao longo do tempo. Isto faz com que não se saiba se existe heterogeneidade entre as empresas. A comparação do modelo pooled com as regressões de efeitos fixos e efeitos aleatórios, que serão estimados na sequência, servirá mostrar ao pesquisador qual é o melhor modelo dentre eles.
O modelo de regressão com efeitos fixos considera, como visto anteriormente, que os valores dos interceptos para cada regressão (\(\alpha_i\)) variam de acordo com o efeito de cada indivíduo (“firma”) e que os coeficientes de declividade (das variáveis independentes “value” e “capital”) para cada equação são os mesmos para cada empresa, conforme equação abaixo:
\(invest_{it} = value_{1it} + capital_{2it} + \alpha_i + \varepsilon_{it}\) em que i=1,…,4, t=1,…,20 (painel balanceado).
Desta forma, o intercepto da equação é diferente para cada empresa, mas o efeito das variáveis independentes é o mesmo sobre a variável independente. Isto indica que existe características especiais em cada empresa influenciando o investimento, como por exemplo o estilo de gestão (Gujarati e Porter 2011).
Abaixo é montada a regressão de efeitos fixos:
reg.ef=plm(invest~value+capital,
data=Grunfeld, model="within")
summary(reg.ef)
Oneway (individual) effect Within Model
Call:
plm(formula = invest ~ value + capital, data = Grunfeld, model = "within")
Balanced Panel: n = 4, T = 20, N = 80
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-184.6581 -48.2612 9.3252 40.5471 197.6681
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
value 0.108400 0.017566 6.1711 3.3e-08 ***
capital 0.345058 0.026708 12.9195 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Total Sum of Squares: 2171500
Residual Sum of Squares: 422220
R-Squared: 0.80556
Adj. R-Squared: 0.79242
F-statistic: 153.291 on 2 and 74 DF, p-value: < 2.22e-16
Nota-se que o impacto do valor da empresa (“value”) e do capital (“capital”) é positivo sobre o investimento (“invest”), para todas as empresas como visto acima. Inclusive, há significância estatística para estas variáveis. No entanto, ainda resta definir o efeito dos interceptos de cada empresa, como segue:
summary(fixef(reg.ef))
Estimate Std. Error t-value Pr(>|t|)
General Motors -85.515 73.490 -1.1636 0.248310
US Steel 94.988 36.664 2.5907 0.011530 *
General Electric -246.228 35.938 -6.8515 1.857e-09 ***
Westinghouse -59.386 20.233 -2.9351 0.004439 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
com este resultado é possível observar que o efeito das firmas sobre o investimento parece ser diferente para cada indivíduo. Desta forma, somente a empresa US Steel consta com efeito positivo sobre o investimento. Por outo lado, a fórmula da regressão é apresentada de maneira diversa, por exemplo: invest=−85,515+0,108400value+0,345058capital para a regressão considerando a General Motors; invest=94.988+0,108400value+0,345058capital considerando a firma US Steel e assim por diante.
Outra forma de visualizar a equação de efeitos fixos é utilizando a função lm para definir a regressão, definindo a variável “firm” como um fator:
summary(lm(invest~value+capital+as.factor(firm),
data=Grunfeld))
Call:
lm(formula = invest ~ value + capital + as.factor(firm), data = Grunfeld)
Residuals:
Min 1Q Median 3Q Max
-184.658 -48.261 9.325 40.547 197.668
Coefficients:
Estimate Std. Error t value
(Intercept) -85.51533 73.48978 -1.164
value 0.10840 0.01757 6.171
capital 0.34506 0.02671 12.919
as.factor(firm)US Steel 180.50295 45.71679 3.948
as.factor(firm)General Electric -160.71218 46.62236 -3.447
as.factor(firm)Westinghouse 26.12959 64.94348 0.402
Pr(>|t|)
(Intercept) 0.248310
value 3.3e-08 ***
capital < 2e-16 ***
as.factor(firm)US Steel 0.000178 ***
as.factor(firm)General Electric 0.000938 ***
as.factor(firm)Westinghouse 0.688591
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 75.54 on 74 degrees of freedom
Multiple R-squared: 0.9341, Adjusted R-squared: 0.9297
F-statistic: 209.9 on 5 and 74 DF, p-value: < 2.2e-16
Note que o intercepto definido (-85,51533) refere-se à presença da empresa General Motors. Caso seja evidenciada a presença da empresa US Steel, o valor do intercepto passa para 94,988 (= -85,51533 + 180,50295), a mesma lógica vale para as demais empresas.
No modelo de regressão com efeitos aleatórios, os efeitos individuais das firmas (“firms”) são considerados variáveis aleatórias, ao contrário do modelo visto anteriormente. Desta forma:
\(Y_{1i}=\beta_{1i}+\beta_2X_{2it}+\beta_3X_{3it}+u_{it}\)
onde β1i é variável aleatória com valor médio β1, e o intercepto para a empresa individual é dado por (Gujarati e Porter 2011):
\(\beta_{1i} = \beta_{1}+\varepsilon_{i} \quad i=1,2,\dots,N\)
em que εi é um termo de erro de média zero e variânvia σ2ε. Assim, as empresas possuem um valor médio para o intercepto (=β1), sendo que as diferenças refletem o termo de erro εi. Obtêm-se:
\(\begin{matrix} Y_{it}=\beta_1+\beta_2X_{2it}+\beta_3X_{3it}+ w_{it}\\ w_{it}=\varepsilon_i+u_{it} \end{matrix}\)
O erro composto wit é formado por εi - elemento de corte transversal dos indivíduos e uit, que é o elemento da série temporal e do corte transversal (Gujarati e Porter 2011). Desta forma, assume-se que os erros individuais não estão correlacionados entre si e também não estão correlacionados entre aquelas unidades de corte transversal e das séries temporais.
A montagem deste tipo de regressão é feita através da função plm, incluindo como modelo “random” e como método “walhus”, como segue:
reg.ea=plm(invest~value+capital,
data=Grunfeld, model="random",
random.method = "walhus")
summary(reg.ea)
Oneway (individual) effect Random Effect Model
(Wallace-Hussain's transformation)
Call:
plm(formula = invest ~ value + capital, data = Grunfeld, model = "random",
random.method = "walhus")
Balanced Panel: n = 4, T = 20, N = 80
Effects:
var std.dev share
idiosyncratic 5786.52 76.07 0.294
individual 13872.63 117.78 0.706
theta: 0.8571
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-193.8933 -46.1737 1.3543 41.9791 198.1051
Coefficients:
Estimate Std. Error z-value Pr(>|z|)
(Intercept) -72.632165 68.908322 -1.0540 0.2919
value 0.107899 0.016658 6.4773 9.339e-11 ***
capital 0.344258 0.026868 12.8128 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Total Sum of Squares: 2258100
Residual Sum of Squares: 446130
R-Squared: 0.80243
Adj. R-Squared: 0.7973
Chisq: 312.731 on 2 DF, p-value: < 2.22e-16
Os resultados corroboram com a direção dos sinais para as variáveis dependentes “value” e “capital”, ambos positivos. Por outro lado, os resultados do modelo de efeitos aleatórios trazem os valores sobre a variância dos erros, primeiramente voltado ao componente de corte transversal (específico dos indivíduos) denominado individual, e outro fator idissiossincrático, o qual varia com o tempo e também com o corte transversal, denominado idiosyncratic.
Após a evidenciação dos modelos de regressão dos tipos agrupado (pooled), de efeitos fixos e de efeitos aleatórios, é preciso efetuar os testes para definir qual é o melhor modelo e que por consequência deverá ser considerado.
Inicialmente compara-se o modelo Pooled com a regressão de Efeitos Fixos (within). Para isto utiliza-se o Teste F ou teste F de Chow. A hipótese nula é de que há igualdade nos interceptos e nas inclinações para todos os indivíduos, caracterizando o modelo de dados agrupados (pooled). A função utilizada é pFtest() do pacote plm.
require(plm)
pFtest(reg.ef,reg.pooled)
F test for individual effects
data: invest ~ value + capital
F = 67.215, df1 = 3, df2 = 74, p-value < 2.2e-16
alternative hypothesis: significant effects
Como o valor p é inferior a 0,05, o modelo de Efeitos Fixos é melhor do que o modelo Pooled.
O teste desenvolvido por Breusch e Pagan (1980) compara as estimativas entre os modelos, verificando se σ2α=0, sendo que:
\(\begin{matrix} H_{0}: \sigma^{2}_{\alpha} = 0 \\ H_{1}: \sigma^{2}_{\alpha} \neq 0 \end{matrix}\)
Desta forma, a aceitação da hipótese nula implica que o modelo de dados agrupados (pooled) é preferível. A função plmtest efetua este teste:
plmtest(reg.pooled, type="bp")
Lagrange Multiplier Test - (Breusch-Pagan) for balanced
panels
data: invest ~ value + capital
chisq = 378.44, df = 1, p-value < 2.2e-16
alternative hypothesis: significant effects
Como o p valor foi inferior a 0,05 o modelo de Efeitos Aleatórios é superior ao modelo Pooled.
O teste de Hausmann (Hausman 1978) efetua a especificação dos modelos de Efeito Fixo e de Efeitos Aleatórios, sendo que se o teste rejeitar a hipótese nula, o modelo de Efeitos Fixos é o mais adequado.
\(\begin{matrix} H_0: \alpha_{i} \text{ não são correlacionados com } X_{it} \\ H_1: \alpha_{i} \text{ são correlacionados com } X_{it} \end{matrix}\)
A função a ser utilizada para este teste é phtest:
phtest(reg.ef,reg.ea)
Hausman Test
data: invest ~ value + capital
chisq = 0.074639, df = 2, p-value = 0.9634
alternative hypothesis: one model is inconsistent
Como o valor p foi superior a 0,05 o modelo de Efeitos Aleatórios foi considerado superior ao modelo de Efeitos Fixos.
A dependência cross-sectional se apresenta em panieis com longas séries de tempo. A hipótese nula é de que os resíduos através dos indivíduos não estão correlacionados. Como resultado, nossa regressão aceita a hipótese nula do teste de Pesaran (2015):
pcdtest(reg.ea, test="cd")
Pesaran CD test for cross-sectional dependence in panels
data: invest ~ value + capital
z = 0.30924, p-value = 0.7571
alternative hypothesis: cross-sectional dependence
Segue o já conhecido teste para verificar a normalidade dos resíduos. Como resultado, foi aprovada a hipótese nula (H0 ) de normalidade nos resíduos da regressão.
shapiro.test(reg.ea$residuals)
Shapiro-Wilk normality test
data: reg.ea$residuals
W = 0.99198, p-value = 0.9045
Abaixo o teste para homocedasticidade (variância constante) dos resíduos de Breusch-Pagan (1979):
library(lmtest)
bptest(reg.ea)
studentized Breusch-Pagan test
data: reg.ea
BP = 7.5567, df = 2, p-value = 0.02286
Como a hipótese nula é a de que não há homocedasticidade nos resíduos e o p-value foi inferior a 0,05, há problemas nos resíduos da regressão, portanto as variáveis apresentam problemas de heterocedasticidade. Algumas soluções são possíveis, como a transformação das variáveis.
A hipótese nula do teste de correlação serial do teste Breusch-Godfrey/Wooldridge (Breusch 1978) é a de que não se encontra esta característica na série. Abaixo o resultado do teste, sendo que aprovou a hipótese nula, ou seja, não há problemas de correlação serial nos dados, pois o p-value é superior a 0,05.
# teste Breusch-Godfrey/Wooldridge - EFEITOS ALEATÓRIOS
pbgtest(reg.ea)
Breusch-Godfrey/Wooldridge test for serial correlation in
panel models
data: invest ~ value + capital
chisq = 26.17, df = 20, p-value = 0.1603
alternative hypothesis: serial correlation in idiosyncratic errors
Pode ser efetuado o teste para verificar a presença de efeitos não observados de tempo ou individuais nos modelos de dados em painel (Wooldridge 2010). A hipótse nula é a não correlação entre os erros do mesmo grupo. Observa-se que para o efeito tempo (“time”) há aceitação da hipótese alternativa, mostrando a correlação entre erros, ao contrário do efeito individual:
# teste Wooldridge - POOLED
pwtest(reg.pooled)
Wooldridge's test for unobserved individual effects
data: formula
z = 1.4015, p-value = 0.1611
alternative hypothesis: unobserved effect
pwtest(reg.pooled, effect = "time")
Wooldridge's test for unobserved time effects
data: formula
z = -3.2447, p-value = 0.001176
alternative hypothesis: unobserved effect
O teste de Dickey-Fuller prova se a série é estocástica, sendo que a hipótese nula é de que a série possui raiz unitária (não-estacionaridade). Abaixo o resultado do teste, sendo que observou-se que a série é não estacionária, ou seja, tem problemas para a regressão pois o p-value aprovou a hipótese nula. Desta forma, algumas saídas são possíveis, como a transformação da série ou mesmo a utilização da primeira diferença da série.
require(tseries)
adf.test(Grunfeld$invest, k=2)
Augmented Dickey-Fuller Test
data: Grunfeld$invest
Dickey-Fuller = -3.3705, Lag order = 2, p-value = 0.06629
alternative hypothesis: stationary
Breusch, Trevor S. 1978. «Testing for autocorrelation in dynamic linear models». Australian Economic Papers 17 (31): 334–55.
Breusch, Trevor S, e Adrian R Pagan. 1979. «A simple test for heteroscedasticity and random coefficient variation». Econometrica: Journal of the Econometric Society, 1287–94.
Breusch, Trevor Stanley, e Adrian Rodney Pagan. 1980. «The Lagrange multiplier test and its applications to model specification in econometrics». The Review of Economic Studies 47 (1): 239–53.
Gujarati, Damodar N., e Down C Porter. 2011. Econometria básica. 5a ed. New York: Mc Graw Hill. https://doi.org/10.1126/science.1186874.
Hausman, Jerry A. 1978. «Specification tests in econometrics». Econometrica: Journal of the econometric society, 1251–71.
Pesaran, M Hashem. 2015. «Testing weak cross-sectional dependence in large panels». Econometric Reviews 34 (6-10): 1089–1117.
Wooldridge, Jeffrey M. 2010. Econometric analysis of cross section and panel data. MIT Press.