Serial correlation and filtering using brms


#1

Hello,

I am trying to model a time series (life expectancy wy by year from 1900 to 2010) and GDP. I just started very simple

lm(wy ~ igdp_log)

Here an example of the results from a toy model.

Of course, this model has serial correlation. I can do filtering by using:

lm(I(wy - r1*lag_wy) ~ I(igdp_log - r1*lag_igdp_log)

Where r1 is the 1st serial correlation coefficient (0.846). The gdp coefficient goes from 1.30 to 0.71.

I am trying to replicate these results using brms. When I specify the autocor term I use:

autocor = cor_arr(~ 1, r=1)

The gdp coefficient I get is 0.15. Is there a way to replicate the coefficient of 0.70 using brms?

Thanks in advance!

  • Operating System: Capitan OSX
  • brms Version: 2.2.0

#2

cor_arr models autocorrelation of the response that is basically r1*lag_wy in your case, but not the autocorrelation of the predictor variable. Actually, cor_arr can be equivalently expressed as part of the predictor design matrix, so recently I deprecated cor_arr, because it is not really needed within the brms framework.

To express your model in brms, you can try the following model

bform <- bf(
wy ~ r * lag_wy + b * (igdp_log - r * lag_igdp_log),
r + b ~ 1, nl = TRUE
)
brm(bform, …)

I haven’t tested it myself but in the worst case, it is a step in the right direction ;-)


#3

Thanks, Paul.

It looks like your solution is doing the same as:

brm(formula = wy ~ 1 + igdp_log,
          autocor = cor_ar(~ year, p=1),
          data = chile)

I get the same coefficient for igpd_log (0.03).

I don’t know if it is possible, but I would like to only adjust the standard errors or uncertainty of the estimates (coefficient posterior distribution).

Thank you!


#4

What do you mean by “change”?


#5

Filter variables to remove correlation just change the precision of estimates, not the estimate or coefficient. I am just trying to figure out how to do something similar but using brms and the autocor feature.


#6

I understand. The thing is that by “filtering out” (i.e. modeling) the autocorrelation, you effectively change your generative model. This in turn may affect all your other parameters in an a-priori unknown way. Thus, I don’t think you goal is generally possible or sensible.


#7

Thanks, Paul. Your answer makes sense to me!