I have randomly broken down a very large dataset into 20 equal-sized blocks. I have fit a logistic model with random effects on each block with R (lme4).
Say my model is simply:

lmer(y ~ X + Y + (1|city/ID), family = binomial, REML=FALSE))

y = a + b·X + c·Y + random term 

This gives me the intercept and each coefficient, and their standard errors and p-values on each block. I have the output as a data.frame (or data.table) with one row per block and one column per coefficient and std.errors and p-values, but I can change it.

Now I would like to combine all the results to get a "global" or "averaged" model. For example, for the coefficients "b":

  • I calculate the global b as the weighted average of all bi.
  • I calculate the standard error or p-value of the global b.

How can I get that standard error of the coefficients? Any solution with a formula or an R package function would be great. How do I combine the standard errors to get a global standard error and then compute a p-value? I think it's a kind of meta-analysis.


You are faced here with a multivariate meta-analysis problem. The estimates of $b$ and $c$ will be correlated so you cannot just synthesises them separately. You need to extract the variance covariance matrix of the coefficients which is probably done via vcov() and then use one of the many R packages which support multivariate meta-analysis. The CRAN Task View on MetaAnalysis has a list, search for the section headed Multivariate meta-analysis. (Disclaimer: I maintain the Task View)

Further questions about meta-analysis in R might be better directed to the mailing list set up for that https://stat.ethz.ch/mailman/listinfo/r-sig-meta-analysis//

Of course the obvious question is why you want to do it this way rather than just fitting an overall model since you have the original data but that may relate to your unstated scientific question.

  • $\begingroup$ Because the overall model has 50 million rows, it needs too much RAM memory even using Julia or special packages. Then I need to get the covariance matrix on each block. And the difficult part will be to find the proper package and function to perform the meta-analysis, there are too many options. $\endgroup$
    – skan
    Feb 7 '19 at 10:24
  • $\begingroup$ Assuming that as in your example you have two predictors then the next question is why you think you need to use all 50 million to get a trustworthy result. A 10% random sample will be indistinguishable from the main analysis. $\endgroup$
    – mdewey
    Feb 8 '19 at 11:39
  • $\begingroup$ I know, but I just want to prove it experimentally. Anyway my dataset has many missing data and many categorical variables and when you sample it some combinations don't appear anymore. $\endgroup$
    – skan
    Feb 8 '19 at 20:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.