Efeitos Fixos: as escolhas que mudam seus resultados.
- Fernanda Kelly
- 15 de jul.
- 15 min de leitura
Atualizado: 17 de jul.
Voltei! E voltei para falar dela como prometido no post anterior. A tal da Modelagem de Efeitos Fixos e, as vezes, de Efeitos Aleatórios (de acordo com os economistas rs), mas vamos lá...
A minha forma de pensar os dados é bem diferente de muitos aí que trabalham com dados e aplicam modelagem, talvez seja pela minha formação, mas sei que é também a minha forma de encarar esse universo de dados e de múltiplas modelagens disponíveis, ainda mais agora na era da Inteligência Artificial (IA). No meu ponto de vista, acho J-U-S-T-O trabalhar a modelagem dos dados retratando a sua real forma de coleta e estrutura. Para mim, isso é tratar o dado como ele realmente nasceu e vem sobrevivendo a muitas mãos.
E é isso que muda TUDO.
Vejo muito por aí a galera só enfiando modelagem que sequer fazem sentido para a estrutura dos dados, mas faz sentido para o hype e para o linkedin (rs).
E tá tudo bem, tá?
Cada um faz o seu corre como acha que tem que correr. Mas, o meu corre de hoje, é falar sobre Efeitos Fixos e Aleatórios e, ao mesmo tempo, pensar a seguinte hipótese,
"A seca (ou estiagem) afeta a produtividade agrícola dos municípios?"
Você já parou para pensar nisso? Não? Pois é, essa é uma pergunta bem sincera e válida para se fazer, visto que o Agro é Pop, é Tech, é T-U-D-O. E pensando nisso, muitos governos possuem políticas públicas voltadas a este público e, vou te dizer, é muito dinheiro envolvido.
Há vários mecanismos de fomento, como o PRONAF, PRONAMP, no caso do Rio Grande do Sul, temos o Irriga+RS, Plano Safra, Apoio a Cadeias Específicas e várias outras formas de incentivo aos casos de irrigação, por exemplo. Claro, cada uma tem a sua finalidade e valor investido, por exemplo, o Irriga+RS oferece 20% do valor do projeto para implementação ou ampliação de sistemas de irrigação e reservatórios de água.
Fer, e o que o Estado tem a ver com isso? Por que tanto dinheiro investido nessa área?
Há muitas formas de se pensar sobre os investimentos de um Estado no agro, mas, vamos pensar no contexto econômico. Se o PIB é dado pela equação abaixo,

o que resta para o Estado se não fomentar Agropecuária, Indústria e Serviços? Pois é, o PIB é um dos principais indicadores para avaliar a economia de um Estado, visto que ele mede o tamanho da economia, orienta políticas públicas, atrai investimentos e reflete a atração de emprego e renda. E claro, como é possível ver na equação,
temos um Valor Adicionado (VA) somente para a Agropecuária,
e é por isso que é T-Ã-O importante modelar os impactos de fenômenos como a estiagem na produção de soja, milho, uva ou seja lá qual for a semente de maior produtividade e de interesse em fomentar do Estado.
Tudo está interligado.
Nada é por acaso. Nem mesmo os investimentos em irrigação. E, por isso, vamos estudar o fenômeno da estiagem em produção agrícolas utilizando a modelagem de Efeito Fixo (EF) para entender a modelagem e como programá-la em R.
Vamos juntes?
O primeiro pacote que encontrei para a modelagem EF foi o pacote chamado fixest.
install.packages("fixest")
library(fixest)Nesse pacote, vamos utilizar a função feols, que estima o método de mínimos quadrados ordinários (OLS) com qualquer número de efeitos fixos. A justificativa de utilizar este método é devido ao comportamento dos dados, uma vez que cada município possui sua própria identidade de clima, solo, altitude e temperatura e, claro, a característica dos dados serem anuais ou mensais, também nos indica que a utilização de uma modelagem clássica não faz sentido algum.
O nosso objetivo é comparar os municípios?
Não! O nosso objetivo é conseguir modelar quando o mesmo município sofreu uma seca/estiagem maior, ao longo dos anos, sua produtividade foi alterada? Ou seja, a comparação é dentro do próprio município. E aqui há uma grande questão, o município deve ser tratado como efeito fixo ou aleatório na modelagem? Se a gente tratar o município como Efeito Aleatório (RE), passamos a utilizar diferenças ENTRE municípios e diferenças ao longo do tempo. Na dúvida, os economistas utilizam o teste clássico de Hausman. Suas hipóteses são as descritas abaixo.
Hipótese nula (H₀): o modelo de efeitos aleatórios é consistente; portanto, RE é adequado.
Hipótese alternativa (H₁): os efeitos individuais estão correlacionados com as regressoras; portanto, FE é o modelo consistente.
Para a aplicação desse teste utilizaremos o pacote plm, que também é um pacote que modela Efeitos Fixos e Aleatórios e, vou te dizer, faz isso muito bem.
install.packages("plm")
library(plm)A estrutura do teste é a seguinte.
plm::phtest(fe, re)Sendo fe o modelo com as estimativas de Efeito Fixo e re o modelo com as estimativas de Efeito Aleatório.
Vamos praticar?
O pacote plm possui algumas bases de dados voltadas a este problema que estamos desenhando, porém os dados é sobre criminalidade.
Mudei a temática para você ampliar a forma visual e estruturada dos dados e da modelagem. Veja que o município continua com a mesma ideia do nosso exemplo climático, o que é alterado são as variáveis a qual estaremos trabalhando, ao invés de trabalhar com a produção de sementes, agora vamos visualizar se o aumento da probabilidade de prisão reduz a taxa de criminalidade.
library(plm)
data("Crime", package = "plm")
fe <- plm(lcrmrte ~ lprbarr + lpolpc,
data = Crime,
index = c("county","year"),
model = "within"
)em que,
lcrmrte = log da taxa de criminalidade cometido per capita
lprbarr = log da probabilidade de prisão
lpolpc = log do número de policiais per capita
re <- plm(lcrmrte ~ lprbarr + lpolpc,
data = Crime,
index = c("county","year"),
model = "random"
)Os modelos within e random sãoas modelagens de efeito fixo e aleatório, respectivamente. Se você vai me acompanhar passo a passo, sugiro ir lendo e copiando os códigos em sua máquina e, caso tenha dúvidas, comenta aqui ou me chama no linkedin.
Vamos lá...
Aplicando o teste de Hausman.
plm::phtest(fe, re)Resultado:
Hausman Test
data: lcrmrte ~ lprbarr + lpolpc
chisq = 166.79, df = 2, p-value < 2.2e-16
alternative hypothesis: one model is inconsistentOu seja, rejeita-se a hipótese nula, o que indica que o modelo consistente é o de Efeitos Fixos. Porém, se você abrir aí em sua máquina os dados, vai ver que eles são perfeitos, o que no mundo REAL, isso quase não existe. Já pensou se:
Em alguns anos não temos as observações de determinados municípios?
Essa característica traz consigo o importante conceito de dados balanceados e desbalanceados. E esse não é um problema, mas é algo a ser acompanhado de perto. Mas vamos lá, a não coleta ou registro do dado é devido a falta de coleta direta OU, no caso da base de crimes, o município saiu da coleta longitudinal porque houve uma reforma policial enorme e o cenário dele foi alterado drasticamente? Nesse caso poderemos ter estimativas enviesadas, ou seja,
dados desbalanceados necessitam de uma justificativa plausível para a falta de observações ao longo do tempo.Observando a modelagem, no mínimo espero que você esteja se perguntando o que são cada um desses parâmetros utilizados. Os mais importantes, nesse momento, são:
index: Panel setting
effect: "individual", "time", "twoways", "nested". Este parâmetro indica quais efeitos fixos serão absorvidos antes da estimação.
model: Fixed effects option ou Random effects option
model | one of "pooling", "within", "between", "random" "fd", or "ht" |
A parte de modelar os dados é a mais fácil, o que faz diferenciar a análise é conseguir entender se essa modelagem realmente é boa e se ela está trazendo estimativas confiáveis. Pensa comigo, se essa modelagem está sendo observada ao longo do tempo,
qual é o comportamento/efeito do tempo?
Atente-se, indicar o tempo (year) no parâmetro index, não é a mesma coisa que indicar dentro da fórmula de modelagem. Veja abaixo.
fe2 <- plm(lcrmrte ~ lprbarr + lpolpc + factor(year),
data = Crime,
model = "within"
)
OU
fe_2 <- plm(
lcrmrte ~ lprbarr + lpolpc,
data = Crime,
index = c("county", "year"),
model = "within",
effect = "twoways"
)Atenção: Aqui o parâmetro effect igual a "twoways" controla simultaneamente diferenças permanentes entre os municípios e choques comuns de cada ano.
Se for utilizar a função feols, a forma correta e equivalente ao plm é,
fe_2_feols <- fixest::feols(
lcrmrte ~ lprbarr + lpolpc | county + year,
data = Crime
)A variável year passa a fazer parte da modelagem e, claro, o resultado é o seguinte:
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
lprbarr -0.0820001 0.0291554 -2.8125 0.0050970 **
lpolpc 0.2400593 0.0260628 9.2108 < 2.2e-16 ***
factor(year)82 0.0038668 0.0239960 0.1611 0.8720406
factor(year)83 -0.0877064 0.0240139 -3.6523 0.0002856 ***
factor(year)84 -0.1408019 0.0240821 -5.8467 8.754e-09 ***
factor(year)85 -0.1425390 0.0240763 -5.9203 5.766e-09 ***
factor(year)86 -0.0797468 0.0240114 -3.3212 0.0009578 ***
factor(year)87 -0.0076245 0.0240507 -0.3170 0.7513547
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Total Sum of Squares: 17.991
Residual Sum of Squares: 13.747
R-Squared: 0.23591
Adj. R-Squared: 0.096595
F-statistic: 20.5318 on 8 and 532 DF, p-value: < 2.22e-16Agora mudou bastante. Além do efeito fixo de cada município, o modelo inclui uma dummy para cada ano.

em que,
αi = efeito fixo do município;
λt = efeito fixo do ano.
É muito legal né?
Por isso é MUITO importante entender o que cada parâmetro faz dentro da função que estamos utilizando, visto que podemos nos enganar achando que o parâmetro index esteja controlando o tempo. E claro, entender o que você quer responder também muda tudo: Estimar ano a ano é relevante? Fica aí o questionamento a você que vai modelar no futuro.
Voltando... Como lá no início desse post falei sobre o pacote fixest e da função feols. Abaixo coloquei a linha de código de como seria modelar o que fizemos anteriormente com essa função.
fixest::feols(lcrmrte ~ lprbarr + lpolpc| county + year,
data = Crime)A saída do código e as estimativas são idênticas.
Estimate Std. Error t value Pr(>|t|)
lprbarr -0.082000 0.029155 -2.81252 0.005097 **
lpolpc 0.240059 0.026063 9.21080 < 2.2e-16 ***O que isso significa?
Que você pode trabalhar com ambos. Mas, Fê, é isso e nada mais? Infelizmente não é bem assim. Agora chegou o momento de entender tudo aquilo que a maioria dos analistas/pesquisadores correm em modelagens como essa:
Será que existe tendência?
O painel é desbalanceado ou balanceado?
Qual o comportamento da correlação? Há multicolinearidade?
Em qual formato utilizar a matriz de variância e covariância?
Os erros possuem heterocedasticidade?
Há dependência entre os municípios?
Mas, apesar de alguns pressupostos sejam esquecidos pelos economistas, na modelagem de Efeitos Fixos isso não é muito diferente, uma vez que estamos trabalhando com dados repetidos ao longo do tempo e, consequentemente, todos esses questionamentos devem ser feitos e testados. E você,
acha que existe tendência?
Se sim, o único jeito de saber é testando e, caso você ache que não, também tem que testar (rs). Nesse caso, uma forma muito utilizada pela literatura é a utilização do tempo em seu próprio tempo t (linear) e também o tempo em seu tempo quadrático. E você deve estar se perguntando,
Como é que a gente faz isso, Fê?
Eu tinha essa mesma dúvida nas minhas modelagens e quando lia artigos a confusão tomava conta de mim. O segredo é pensar a variável year como uma escadinha crescente iniciando do 0. Veja abaixo.
Crime <- Crime %>%
dplyr::mutate(t = year - min(year),
t2 = t^2)Year | t | t^2 |
1981 | 0 | 0 |
1982 | 1 | 1 |
1983 | 2 | 4 |
1984 | 3 | 9 |
1985 | 4 | 16 |
1986 | 5 | 25 |
1987 | 6 | 36 |
Modelando,
fe3 <- plm(lcrmrte ~ lprbarr + lpolpc + t + t2,
data = Crime,
model = "within"
)
summary(fe3)Resultado,
Oneway (individual) effect Within Model
Call: plm(formula = lcrmrte ~ lprbarr + lpolpc + t + t2, data = Crime, model = "within")
Balanced Panel: n = 90, T = 7, N = 630
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-0.71775 -0.07239 0.00222 0.07335 0.67391
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
lprbarr -0.0800236 0.0294823 -2.7143 0.006856 **
lpolpc 0.2327958 0.0263067 8.8493 < 2.2e-16 ***
t -0.0953757 0.0117541 -8.1142 3.360e-15 ***
t2 0.0144583 0.0018803 7.6892 7.126e-14 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Total Sum of Squares: 17.991
Residual Sum of Squares: 14.195
R-Squared: 0.21097
Adj. R-Squared: 0.074062
F-statistic: 35.8277 on 4 and 536 DF, p-value: < 2.22e-16É importante, antes de tudo, dizer que t e t^2 são diferentes de factor(year), tá? Não vamos confundir as coisas.
Se você prestou B-E-M atenção, a estimativa de lprbarr e lpolpc não mudaram muito, então o ponto de atenção se volta ao tempo. Os tempos são SUPER significativos, tanto o linear quanto o quadrático.
Fê, mas por quê estamos supondo que os municípios se comportam dessa forma no tempo?
Estamos supondo que existe essa tendência na tentativa de conseguir identificar se essa tendência existe e se, de alguma forma, ela seja positiva. Veja que a tendência é,

e, o ponto mínimo,

ou seja, de acordo com as nossas estimativas, t* (-(-0.095)/2*0.014) é aproximadamente 3,3. O mínimo ocorre aproximadamente entre os anos 1984 e 1985. Agora vou te deixar uma tarefa bem importante: modelar com factor(year) e entender que esse ponto mínimo também pode ser visto na modelagem.
Então qual devo usar, Fer?
Você concorda comigo que supor um movimento quadrático do tempo é um tanto inseguro, né? Pois é, eu também acho muito inseguro. Nem tudo é linear e, é exatamente isso que nos leva a utilizar alguma variável com o intuito de observar essa curva de uma forma mais natural e não linear. Se você é mais entendido de modelagem, talvez você tenha entendido que devido a forma que estamos utilizando o tempo, teremos uma única suposição para T-O-D-O-S os municípios. É como se todos os municípios tivessem a mesma curva de tempo, porém, cada município deveria, ao menos os que estão em COREDES diferentes, ter sua própria curva de tempo.
Mas aí é coisa demais...
E é mesmo. É muita informação e detalhes importantes que não podem ser esquecidos e muito menos ignorados. Veja a modelagem abaixo. Lembrando que a modelagem considera que cada município possui a sua própria curva de tempo.
fe_trend <- plm(lcrmrte ~ lprbarr + lpolpc +
factor(county):t + factor(county):t2,
data = Crime,
index = c("county", "year"),
model = "within"
)O resultado, neste caso, é gigantesco, e, por isso, vou trazer somente as estatísticas iniciais. É muito importante ressaltar que até o momento estamos utilizando summary, sem algum parâmetro em específico.
summary(fe_trend)
Oneway (individual) effect Within Model
Call:
plm(formula = lcrmrte ~ lprbarr + lpolpc + factor(county):t +
factor(county):t2, data = Crime, model = "within", index = c("county",
"year"))
Balanced Panel: n = 90, T = 7, N = 630
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-0.60457 -0.04377 -0.00207 0.04757 0.55585
Coefficients:
Estimate Std. Error t-value Pr(>|t|)
lprbarr -5.4861e-02 3.6241e-02 -1.5138 0.1309633
lpolpc 2.5270e-01 4.1716e-02 6.0575 3.499e-09 ***
Total Sum of Squares: 17.991
Residual Sum of Squares: 6.2213
R-Squared: 0.6542
Adj. R-Squared: 0.39243
F-statistic: 3.72124 on 182 and 358 DF, p-value: < 2.22e-16Veja que o R-Squared chegou a 0.6542. Se essa é uma das suas medidas de qualidade da modelagem feita, acredito que tivemos um salto significativo indicando a curva para cada município. Os coeficientes de tempo, geralmente, em artigos ou outras pesquisas, não são interpretados, eles são tratados apenas como uma medida de controle da modelagem, mas, veja que a variável lprbarr passa a ser não significativa ao nível de 95% de significância.
Após essa análise, podemos testar se continuamos com a modelagem fe_trend ou a fe. Veja como testar e comparar as duas modelagens abaixo.
plm::pFtest(fe_trend, fe)Resultado,
F test for individual effects
data: lcrmrte ~ lprbarr + lpolpc + factor(county):t + factor(county):t2
F = 3.1079, df1 = 180, df2 = 358, p-value < 2.2e-16
alternative hypothesis: significant effects
ou seja, seguimos com a modelagem fe_trend.
Outro ponto importante é verificar o comportamento do erro padrão da nossa modelagem, visto que dados em painel frequentemente apresentam heterocedasticidade e autocorrelação dentro das unidades em estudo.
Como assim, Fê?
Nas modelagens, além de estimar os famosos coeficientes betas, há também o cálculo da incerteza desse coeficiente, que é retratado através da estimativa Std. Error. TUDOOOOOOO isso para lhe dizer que na estimação, o coeficiente continua igual, mas o t-value fica errado, o p-value fica errado e os intervalos de confiança ficam errados, caso a gente não dê a devida importância ao erro padrão.
Um exemplo prático de erro padrão que implica em decisões erradas, é modelar colheita no Rio Grande do Sul no ano da enchente. O erro do município que não foi afetado pela enchente, mas é fronteiriço com um que seja, é afetado de alguma forma. E lembrando, a economia do Estado também é afetada. É como se fosse um efeito dominó: Todo mundo cai de alguma forma, ou seja, o erro de um município deixa de ser independente do outro.
E como "fugir" ou verificar se há essa dependência?
Há dois testes (super famosos) que avaliam essa dependência. São eles:
Breusch-Pagan LM
plm::pcdtest(fe_trend, test = "lm")
Breusch-Pagan LM test for cross-sectional dependence in panels
data: lcrmrte ~ lprbarr + lpolpc + factor(county):t + factor(county):t2
chisq = 7729.1, df = 4005, p-value < 2.2e-16
alternative hypothesis: cross-sectional dependencePesaran CD
plm::pcdtest(fe_trend, test = "cd")
Pesaran CD test for cross-sectional dependence in panels
data: lcrmrte ~ lprbarr + lpolpc + factor(county):t + factor(county):t2
z = 19.382, p-value < 2.2e-16
alternative hypothesis: cross-sectional dependenceAmbos testam a dependência transversal. Em ambos os testes tivemos o resultado de que rejeitamos a hipótese nula de que eles são independentes, ou seja, teremos que adicionar erros robustos em nossa modelagem.
Fer, e qual erro vamos escolher?
Nós temos a disposição matrizes de variância e covariância bem interessantes no pacote lmtest. No parâmetro method da função coeftest, nós encontramos os seguintes métodos:
"white1" - para heterocedasticidade geral, mas sem autocorrelação. Recomendado para efeitos aleatórios.
"white2" - é "white1" restrito a uma variância comum dentro dos grupos. Recomendado para efeitos aleatórios.
"arellano" - heterocedasticidade e autocorrelação. Recomendado para efeitos fixos.
Porém, além de indicar o método que iremos utilizar, há o parâmetro type, que possui as seguintes opções:
"HC0": consistente com heteroscedasticidade. O padrão.
"sss": correção inspirada no Stata para painéis.
"HC1", "HC2", "HC3": Recomendado para amostras pequenas. HC3 dá menos peso às observações influentes.
"HC4": amostras pequenas com observações influentes.
Há também o parâmetro cluster, que tem como indicação "group" e "time". Ao utilizar group, a intenção é agrupar por unidade do painel. Em nosso exemplo, cada county é o nosso group. Ele permite correlação dos resíduos ao longo do tempo dentro do mesmo município, já com o time acontece o contrário. Os resíduos podem ser correlacionados entre os municípios no mesmo ano.
E sabe o que é MUITO importante?
Entender a estrutura do parâmetro vcov. Este é o parâmetro onde inserimos o method e type que estudamos acima. O mais utilizado é o vcovHC que é o Heteroscedasticity-Consistent Covariance Matrix Estimation, mas abaixo trago os demais que estão disponíveis:
vcovSCC Driscoll and Kraay (1998) Robust Covariance Matrix Estimator.
vcovNW Newey and West (1987) Robust Covariance Matrix Estimator.
vcovG Generic Lego building block for Robust Covariance Matrix Estimators.
vcovDC Double-Clustering Robust Covariance Matrix Estimator.
vcovBK Beck and Katz Robust Covariance Matrix Estimators.
Lembrando que, cada uma dessas estruturas possuem formas diferentes de correção e, no nosso exemplo, o mais favorável a ser utilizado é o vcovSCC.
E por que usar essa estrutura de correção?
Segundo Driscoll & Kraay (1998), ele é consistente na presença de:
heterocedasticidade;
autocorrelação serial;
dependência transversal (cross-sectional dependence).
E isso é T-U-D-O que queremos corrigir. Para essa correção, é necessário utilizar o pacote lmtest, como dito anteriormente.
library(lmtest)Aplicando a correção no modelo fe_trend,
lmtest::coeftest(fe_trend,
vcov.= vcovSCC(
fe_trend,
type = "HC1",
cluster = c("group" , "time"))
)Resultado,
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
lprbarr -0.054861009 0.103777142 -0.5286 0.5973810
lpolpc 0.252695520 0.101060473 2.5004 0.0128504 *A utilização de erros padrão de Driscoll–Kraay aumentou substancialmente os erros padrão estimados, indicando que a inferência baseada nos erros convencionais eram M-U-I-T-O otimistas. Apesar disso, o coeficiente associado à variável lpolpc permaneceu estatisticamente significativo ao nível de 95% de significância, enquanto lprbarr permaneceu estatisticamente não significativo.
O que tudo isso quer nos dizer?
Relembrando,
lcrmrte = log da taxa de criminalidade cometido per capita
lprbarr = log da probabilidade de prisão
lpolpc = log do número de policiais per capita
Esse modelo compara cada município consigo mesmo ao longo do tempo. Ou seja, a pergunta não é,
Municípios com mais policiais têm menos crimes?
Mas sim,
Quando um mesmo município aumenta seu número de policiais ao longo do tempo, mantendo constantes suas características fixas e sua tendência temporal própria, a taxa de criminalidade se altera?
Essa diferença é fundamental: saber fazer a pergunta certa e entender o que a modelagem te traz como resultado. E, nesse caso, o exemplo prático foi voltado a uma base de dados que retrata Crimes em municípios, mas T-O-D-A essa visão pode ser extrapolada para várias áreas, assim como para a área da agricultura que foi o primeiro exemplo de construção de ideia que tivemos sobre o tema.
Interpretando o modelo, como as duas variáveis estão em logaritmo, o coeficiente é uma elasticidade. Assim, 0.2527 nos traz que um aumento de 1% no número de policiais per capita está associado, em média, a um aumento de aproximadamente 0,25% na taxa de criminalidade, considerando apenas a variação dentro de cada município ao longo do tempo.
Isso significa que mais policiais aumentam o crime?
Não! Essa é uma interpretação causal que não pode ser feita apenas com esse modelo. O sinal positivo provavelmente reflete um problema clássico de causalidade reversa. Em muitos municípios, quando o crime aumenta, o governo responde contratando mais policiais. Logo, temos o aumento de crimes e, em decorrência do aumento de crimes teremos mais policiais, não necessariamente, temos mais policiais devido ao aumento de crime.
Esse fenômeno é amplamente discutido na literatura de economia do crime.Já para lprbarr, o coeficiente negativo sugere que um aumento na probabilidade de prisão estaria associado a uma redução da criminalidade. Entretanto, o resultado não é estatisticamente diferente de zero. Logo, não há evidências suficientes para concluir que mudanças na probabilidade de prisão alteram a taxa de criminalidade, após controlar pelos efeitos fixos, pelas tendências específicas de cada município e utilizar erros padrão robustos.
E claro, voltando ao post sobre Modelos Mistos, e comparando com Efeitos Fixos e Aleatórios,
qual é a diferença?
Senta que lá vem história...
As duas modelagens são ótimas, mas elas são diferentes. Em EF o alpha da modelagem, por exemplo, faz com que cada município tenha o seu próprio intercepto, mas todos eles possuem a mesma inclinação, o que faz com que cada município seja comparado consigo mesmo ao longo dos anos. Cada município apenas começa de um nível diferente. Já em MM, nós não estimamos um intercepto para cada município, mas sim consideramos que esse intercepto é uma realização aleatória de uma população maior, ou seja, ao invés de estimar 497 interceptos para o Rio Grande do Sul, nós vamos estimar somente uma variância. O interesse deixa de ser "qual é o intercepto do município A?" e passa a ser "quanto os municípios variam entre si?".
Conseguiu entender?
Em Efeitos Fixos queremos remover viés. O foco é obter β sem contaminação das características fixas. É o modelo favorito dos economistas e, em Modelos Mistos, queremos modelar a estrutura hierárquica dos dados. Aqui o o foco é entender:
quanto da variabilidade está entre municípios;
quanto está dentro dos municípios;
como os municípios diferem entre si.
É o modelo favorito da Bioestatística, Psicologia, Ecologia e Epidemiologia.
Sacou?
É uma diferença importante e só fui entender depois de escrever esses dois posts e, sinceramente, espero que você tenha gostado.
Plus: Este foi escrito com base em uma análise que estou construindo no trabalho e, acho bem importante, trazer que em alguns cenários de dados devemos pesquisar ainda mais Efeitos Fixos e seus parâmetros, principalmente na questão da matriz de variância e covariância. No meu caso, o que fez sentido foi utilizar o cluster com município e ano e o seu pode ser diferente, ou seja, E-S-T-U-D-E.
Exemplo:
fe_fix <- fixest::feols(ln_ren ~ irrigado | municipio + ano,
panel.id = ~municipio + ano,
data = base_a)
summary(fe_fix , vcov = ~municipio + ano)Até o próximo post.
Fernanda Kelly R. Silva | Estatística
Referências
DRISCOLL, John C.; KRAAY, Aart C. Consistent covariance matrix estimation with spatially dependent panel data. Review of economics and statistics, v. 80, n. 4, p. 549-560, 1998.


Comentários