Skip to content
Prev 2757 / 5632 Next

[R-meta] Outlier and influence cases 3-level meta-analysis

Dear Daniel,

No fudamental issues, except that I have not yet implemented all of this for 'rma.mv' objects. Assuming that you have installed the 'devel' version of metafor (https://wviechtb.github.io/metafor/#installation), things like rstandard(), rstudent(), cooks.distance(), and dfbetas() are however already available to you, which are some of the main tools for detecting outliers and/or influential cases anyway (covariance ratios would also be nice, but not yet available). There is also hatvalues() and weights(), but these may be a bit less accessible.

One issue in more complex models is the question at which 'level' we want to detect outliers / influential cases. For rma.mv objects, things like rstandard() and cooks.distance() have a 'cluster' argument, which can be used to specify a grouping variable. For example:

dat <- dat.konstantopoulos2011
res <- rma.mv(yi, vi, random = ~ 1 | district/school, data=dat)
cooks.distance(res)

will compute the Cook's distances for each individual estimate, while

cooks.distance(res, cluster=dat$district)

will compute the Cook's distances for each level of 'district'. Or easier for interpretation:

plot(cooks.distance(res), type="o", pch=19)

suggests maybe 2 somewhat influential estimates and

plot(cooks.distance(res, cluster=dat$district), type="o", pch=19)

one influential district (probably the one with those 2 estimates, but I haven't checked).

Best,
Wolfgang