[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