<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Dear Wolfgang,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sorry – I was mistaken about the output as one of the models didn’t re-run.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So when both the spatial and non-spatial models show spatially-autocorrelated residuals (and an identical model), this means that the model fitting hasn’t accounted for any spatial signal in the data? </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>#First, the spatial random effects model</p><p class=MsoNormal>(heh3<-rma.mv(yi=yi, V=vi, random = ~ Decimal.Longtitude + Decimal.Latitude | Habitat3,data=subby,method="REML",dist="gcd", struct="SPGAU"))</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Multivariate Meta-Analysis Model (k = 27; method: REML)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Variance Components:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>outer factor: Habitat3             (nlvls = 6)</p><p class=MsoNormal>inner term:   ~Decimal.Longti[...] (nlvls = 11)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>             estim    sqrt  fixed </p><p class=MsoNormal>tau^2       0.0000  0.0000     no </p><p class=MsoNormal>rho        20.7485             no </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Test for Heterogeneity:</p><p class=MsoNormal>Q(df = 26) = 13.8933, p-val = 0.9744</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Model Results:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>estimate      se     zval    pval    ci.lb   ci.ub </p><p class=MsoNormal> -0.0292  0.0954  -0.3061  0.7595  -0.2161  0.1577    </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>---</p><p class=MsoNormal>Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> #non-spatial model</p><p class=MsoNormal> </p><p class=MsoNormal>> (heh<-rma.mv(yi=yi, V=vi, random = list(~ 1 | Habitat3), data=subby,method="REML"))</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Multivariate Meta-Analysis Model (k = 27; method: REML)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Variance Components:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>            estim    sqrt  nlvls  fixed    factor </p><p class=MsoNormal>sigma^2    0.0000  0.0000      6     no  Habitat3 </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Test for Heterogeneity:</p><p class=MsoNormal>Q(df = 26) = 13.8933, p-val = 0.9744</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Model Results:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>estimate      se     zval    pval    ci.lb   ci.ub </p><p class=MsoNormal> -0.0292  0.0954  -0.3061  0.7595  -0.2161  0.1577    </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>---</p><p class=MsoNormal>Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> </p><p class=MsoNormal>> #calculate Moran's I using the ape package</p><p class=MsoNormal>> require(ape)</p><p class=MsoNormal>> site.dists <- as.matrix(dist(cbind(subby$Decimal.Longtitude, subby$Decimal.Latitude)))</p><p class=MsoNormal>>         site.dists.inv <- 1/site.dists</p><p class=MsoNormal>>         diag(site.dists.inv) <- 0</p><p class=MsoNormal>>       site.dists.inv[is.infinite(site.dists.inv)] <- 0</p><p class=MsoNormal>> Moran.I(resid(heh3), site.dists.inv)</p><p class=MsoNormal>$observed</p><p class=MsoNormal>[1] -0.325002</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$expected</p><p class=MsoNormal>[1] -0.03846154</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$sd</p><p class=MsoNormal>[1] 0.1025168</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$p.value</p><p class=MsoNormal>[1] 0.005189014</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> Moran.I(resid(heh), site.dists.inv)</p><p class=MsoNormal>$observed</p><p class=MsoNormal>[1] -0.325002</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$expected</p><p class=MsoNormal>[1] -0.03846154</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$sd</p><p class=MsoNormal>[1] 0.1025168</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$p.value</p><p class=MsoNormal>[1] 0.005189014</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you,</p><p class=MsoNormal>Grace</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:wolfgang.viechtbauer@maastrichtuniversity.nl">Viechtbauer, Wolfgang (SP)</a><br><b>Sent: </b>Friday, August 21, 2020 2:01 AM<br><b>To: </b><a href="mailto:apold@umass.edu">Grace Pold</a>; <a href="mailto:r-sig-meta-analysis@r-project.org">r-sig-meta-analysis@r-project.org <r-sig-meta-analysis@r-project.org></a><br><b>Subject: </b>RE: metafor - specifying spatial random effects</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Dear Grace,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Can you post the output of both models?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Best,</p><p class=MsoNormal>Wolfgang</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>>-----Original Message-----</p><p class=MsoNormal>>From: Grace Pold [mailto:apold@umass.edu]</p><p class=MsoNormal>>Sent: Friday, 21 August, 2020 5:21</p><p class=MsoNormal>>To: Viechtbauer, Wolfgang (SP); r-sig-meta-analysis@r-project.org <r-sig-</p><p class=MsoNormal>>meta-analysis@r-project.org></p><p class=MsoNormal>>Subject: RE: metafor - specifying spatial random effects</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>Dear Wolfgang,</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>I have a follow-up question.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>When comparing the spatial and the non-spatial models, I have different</p><p class=MsoNormal>>parameter estimates as expected. However, the residuals are identical for</p><p class=MsoNormal>>the two models. Is it expected that there would be the same residuals for</p><p class=MsoNormal>>the spatial and non-spatial models?</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>Thank you for your assistance,</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>Grace</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>From: Viechtbauer, Wolfgang (SP)</p><p class=MsoNormal>>Sent: Thursday, August 20, 2020 4:28 AM</p><p class=MsoNormal>>To: Grace Pold; r-sig-meta-analysis@r-project.org <r-sig-meta-analysis@r-</p><p class=MsoNormal>>project.org></p><p class=MsoNormal>>Subject: RE: metafor - specifying spatial random effects</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>Dear Grace,</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>you need to create a variable that is a constant, so:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>datasub$const <- 1</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>and then you can use:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>random = ~ Longitude + Latitude | const</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>The post you are referring to is outdated. At that time, the rma.mv()</p><p class=MsoNormal>>function did not yet have spatial correlation structures. Now you can just</p><p class=MsoNormal>>use the 'struct' argument to specify the spatial correlation structure and</p><p class=MsoNormal>>the optimization is done for you.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>With respect to your second question: To me, the choice (whether to include</p><p class=MsoNormal>>location as a fixed or a random effect) comes down to whether I am actually</p><p class=MsoNormal>>interested in differences between the specific locations that make up the</p><p class=MsoNormal>>spatial configuration of your data points (in which case I would use a fixed</p><p class=MsoNormal>>effect) or I just want to account for possible dependency due to the spatial</p><p class=MsoNormal>>configuration (in which case I would use a random effect).</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>Best,</p><p class=MsoNormal>>Wolfgang</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>>-----Original Message-----</p><p class=MsoNormal>>>From: R-sig-meta-analysis [mailto:r-sig-meta-analysis-bounces@r-</p><p class=MsoNormal>>project.org]</p><p class=MsoNormal>>>On Behalf Of Grace Pold</p><p class=MsoNormal>>>Sent: Thursday, 20 August, 2020 0:41</p><p class=MsoNormal>>>To: r-sig-meta-analysis@r-project.org <r-sig-meta-analysis@r-project.org></p><p class=MsoNormal>>>Subject: [R-meta] metafor - specifying spatial random effects</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>Hello,</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>I have a dataset of effect sizes taken at different places in the northern</p><p class=MsoNormal>>>hemisphere, sometimes in close proximity, and sometimes in distant</p><p class=MsoNormal>>>locations.</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>I have two questions. The first is specifically related to metafor and</p><p class=MsoNormal>>model</p><p class=MsoNormal>>>specification, and the second is more generally related to spatial random</p><p class=MsoNormal>>>effects (which I don’t think I will get answered, but thought I would throw</p><p class=MsoNormal>>>it in anyway).</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>First, I couldn’t find any examples of how to specify the model to include</p><p class=MsoNormal>>>spatial random effects outside of the function help text. So I was hoping</p><p class=MsoNormal>>>someone could tell me if the following specification for a geographic</p><p class=MsoNormal>>>distance model is correct:</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>rma.mv(yi=yi, V=vi, mods=~moderator1, random = ~ Longitude+ Latitude|</p><p class=MsoNormal>>>moderator1,data=datub,method="REML", dist="gcd", struct="SPEXP")</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>when there is a moderator like habitat type in my analysis. And:</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>rma.mv(yi=yi, V=vi, random = ~ Longitude+Latitude|StudyID,</p><p class=MsoNormal>>>data=datasub,method="REML", dist="gcd", struct="SPEXP")</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>when I do not include moderators (StudyID is just the unique datapoint ID</p><p class=MsoNormal>>>and so each StudyID only has one effect size value associated with it). I</p><p class=MsoNormal>>>chose gcd as the distance because the curvature of the earth matters in my</p><p class=MsoNormal>>>data, and have no rationale for choosing SPEXP for structure.</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>The help text says “Let d denote the distance between two points that share</p><p class=MsoNormal>>>the same level of the outer variable (if all true effects are allowed to be</p><p class=MsoNormal>>>spatially correlated, simply set outer to a constant)”, so intuitively I</p><p class=MsoNormal>>>wanted to write the model as</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>rma.mv(yi=yi, V=vi, random = ~ Longitude+Latitude|1,</p><p class=MsoNormal>>>data=datasub,method="REML", dist="gcd", struct="SPEXP")</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>(ie with a “1” as the “outer” variable rather than a unique datapoint ID)</p><p class=MsoNormal>>>because there is no “distance between two points sharing the same level” of</p><p class=MsoNormal>>>StudyID because those are unique. However, it gives me a “Error in</p><p class=MsoNormal>>>eval(predvars, data, env) : object 'Latitude' not found” error unless I</p><p class=MsoNormal>>>include one of the named variables.</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>I also wanted to check that the “parameter optimization” mentioned in the</p><p class=MsoNormal>>>blog post here [https://stat.ethz.ch/pipermail/r-sig-meta-analysis/2017-</p><p class=MsoNormal>>>November/000371.html] on a previous approach to including spatial</p><p class=MsoNormal>>similarity</p><p class=MsoNormal>>>matrices is accounted for in the most recent version of metafor. Or are</p><p class=MsoNormal>>>there additional steps I would need to complete?</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>Second, if you wanted to know whether to include geographic location as a</p><p class=MsoNormal>>>categorical (ex. New York vs. Beijing) versus geographic distance random</p><p class=MsoNormal>>>effect versus not at all, would you suggest extracting the residuals and</p><p class=MsoNormal>>>checking to see which model has done the best job of removing spatial</p><p class=MsoNormal>>>correlation, if any exists, using Moran’s I?</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>Thank you so much for your time and input,</p><p class=MsoNormal>>><o:p> </o:p></p><p class=MsoNormal>>>Grace Pold</p><p class=MsoNormal>>>Postdoctoral researcher</p><p class=MsoNormal>>>Cal Poly NRES</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>