[R-meta] Accounting for uncertainty in a mixed-effects regression

Cesar Terrer Moreno cesar.terrer at me.com
Fri Feb 9 12:39:15 CET 2018


Hi Wolfgang, 

Yes, the approach works as expected, thanks a lot. 
César

> On 8 Feb 2018, at 15:44, Viechtbauer Wolfgang (SP) <wolfgang.viechtbauer at maastrichtuniversity.nl> wrote:
> 
> Thanks for the follow-up. Are you now getting some sensible SEs for regions with low coverage?
> 
> Best,
> Wolfgang
> 
>> -----Original Message-----
>> From: Cesar Terrer Moreno [mailto:cesar.terrer at me.com]
>> Sent: Wednesday, 07 February, 2018 15:42
>> To: Viechtbauer Wolfgang (SP)
>> Cc: Michael Dewey; r-sig-meta-analysis at r-project.org
>> Subject: Re: [R-meta] Accounting for uncertainty in a mixed-effects
>> regression
>> 
>> Downloading the latest version via your link solved the issue. Thanks!
>> César
>> 
>>> On 6 Feb 2018, at 19:35, Viechtbauer Wolfgang (SP)
>> <wolfgang.viechtbauer at maastrichtuniversity.nl> wrote:
>>> 
>>> There is some (convoluted) code in predict.rma() that allows matching
>> of terms by names. So, for example, if the variables in the model are
>> called "X", "Y", and "Z", then one could do 'newmods = c(Z=3, X=1, Y=2)'
>> or any other order and the function puts things in the correct order. In
>> fact, it does partial matching, so if the variables are called "Xblah",
>> "Yblah", "Zblah", then 'newmods = c(Z=3, X=1, Y=2)' would still work.
>> There was a bug in that part of the code that would trip up the partial
>> matching when there are interactions. I fixed that a while ago in the
>> 'devel' version. Make sure to install this:
>>> 
>>> https://github.com/wviechtb/metafor#installation
>>> 
>>> With this installed, I have no problems running this (and as you
>> already figured out, since predict() by default adds the intercept
>> automatically, it needs to be removed from what you feed to newmods):
>>> 
>>> ### silly madeup test data
>>> k <- 500
>>> dat <- data.frame(yi = rnorm(k, 0, 1),
>>>                 vi = rep(.01, k),
>>>                 MAP = runif(k, 0, 1),
>>>                 MAT = runif(k, 0, 1),
>>>                 CO2dif = runif(k, 0, 1),
>>>                 Biome = sample(c("ARef", "Boreal_Forest",
>> "Tropical_Forest"), k, replace=TRUE))
>>> 
>>> res <- rma(yi, vi, mods = ~ MAP + MAT*CO2dif + Biome, data=dat)
>>> res
>>> 
>>> X <- model.matrix(~ MAP + MAT*CO2dif + Biome, data=dat)
>>> X <- X[,-1]
>>> 
>>> sav <- predict(res, newmods = X)
>>> sav
>>> 
>>> Best,
>>> Wolfgang



More information about the R-sig-meta-analysis mailing list