1

I'm working with a large longitudinal dataset of firm-year observations. For some time now I have been using lme4to implement crossed (non-nested) effects for year and firm-ID groups.

My goal is now to correct for the serial correlation in the firm-group dimension. Based on chl's and fabians' answers to this question (as well as Ben Bolker's comment on the latter), I've assumed this is impossible with lmer(), but is feasible with nlme::lme().

I have been able to implement crossed effects in nlme based on the discussion in Pinheiro & Bates (2000, sec. 4.2.2, pp. 163-6). In principle then, I believe I can use the correlation = AR1() speficiation in lme() to control for autocorrelation.

My strong preference, however, would be to implement such a correlation specification in lmer() because:

  1. lme4 is much, much (much) faster
  2. nlme requires crossed effects to be nested in some higher group -- without such a higher level grouping I'm forced to create an arbitrary dummy for groupedData to which all observations belong (e.g., here). This creates issues interpreting the relative levels of variation between the two crossed groups and the residual variance because some of the variation appears to be captured by the higher-level dummy group.

I got excited when I found the feature request #224 on GitHub, but alas it doesn't seem like there's much movement on the flexLambda front (please let me know if I'm wrong!).

lme4 v1.1-10

I've just noticed that the latest (Oct. 2015) version of lme4 contains a vcconv command that can

Convert between representation of (co-)variance structures (EXPERIMENTAL.)

Based on the source code, it seems that maybe the sdcor2cov option could allow one to specify a correlation structure such as AR(1).

So my questions are:

  1. Is this interpretation of the vcconv function correct?
  2. If so, does the user supply the correlation (e.g., AR(1)) parameters or are they determined internally in lmer()?
  3. How does one implement this function properly?
Community
  • 1
  • 1
Tony Beans
  • 175
  • 1
  • 11
  • I do mean to get to this one of these days soon. Unfortunately `vcconv` does *not* do what you want; it's just for converting between log-Cholesky, variance-covariance, and std dev-correlation scale. https://rpubs.com/bbolker/6298 has *some* information on this topic, but it's mostly just a brain dump ... – Ben Bolker Feb 01 '16 at 03:15
  • @BenBolker thanks for the confirmation. I thought I was being overly optimistic in my interpretation of vcconv. And, after posting this question, I found the clear statement in the lme4 documentation that is "does _not_ currently implement nlme’s features for modeling heteroscedasticity and correlation". Anyhow, I'm looking forward to having more control over the VarCov matrices! It's a great package. Thanks. – Tony Beans Feb 02 '16 at 10:05

0 Answers0