Load packages.
rm(list = ls())
library(dplyr)
library(metafor)
library(ggplot2)
Read in data.
d = read.csv("InWordDB_artifical_seed.csv")
Step 1: Calculate effect sizes and variances for each row.
Two methods. First, using the reported group means and standard deviations.
d = mutate(d, pooled_SD = sqrt((SD_1 ^ 2 + SD_2 ^ 2) / 2),
d_calc_by_M = (x_1 - x_2) / pooled_SD)
Second method: Using reported t test-statistic.
d = mutate(d, corr = .5,
wc = sqrt(2 * (1 - corr)),
d_calc_by_t = (t / sqrt(n_1)) * wc)
Note, that for within-subject designs, we need to know the correlation between the two conditions. This is often not reported. Here we estimated it to be .5.
Compare effect sizes.
ggplot(d, aes(x = d_calc_by_t, y= d_calc_by_M)) +
geom_point(size = 3) +
geom_smooth(method= "lm") +
theme_bw()
Reasonabily compraable.
Put all effect sizes in same column
d = mutate(d, d_calc = ifelse(!is.na(d_calc_by_M),
d_calc_by_M, d_calc_by_t))
Now, get d variances.
d = mutate(d, d_var_calc = (1 / n_1) + (d_calc ^ 2 / (2 * n_1)) * 2 * (1 - corr))
Step 2: Fit random effect model
res <- rma(d_calc, d_var_calc, data = d)
forest(res, slab = d$short_cite)
res
Overall estimate: .18, with condfidience interval that includes 0. No evidence for the effect. Lots of evidence for heteroneity. Run fixed effect for comparison (method = “FE”)
Funnel plot
funnel(res)
Very heterogenous.
Step 3: Fit random effect model with moderators
Effect size as a function of age.
ggplot(d, aes(x = mean_age_1, y = d_calc)) +
geom_point(size = 3) +
geom_smooth(method= "lm") +
theme_bw()
Add age as a predictor of effect size.
res_age <- rma(d_calc ~ mean_age_1, d_var_calc, data = d)
res_age
forest(res_age, slab = d$short_cite)
funnel(res_age, slab = d$short_cite)
More variance acounted for by including age as a moderator.
This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.
Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Cmd+Shift+Enter.
plot(cars)
Add a new chunk by clicking the Insert Chunk button on the toolbar or by pressing Cmd+Option+I.
When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the Preview button or press Cmd+Shift+K to preview the HTML file).
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIAoqKioKKioqCgpMb2FkIHBhY2thZ2VzLgpgYGB7ciBzZXR1cCwgd2FybmluZyA9IEYsIG1lc3NhZ2UgPSBGfQpybShsaXN0ID0gbHMoKSkKCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkobWV0YWZvcikKbGlicmFyeShnZ3Bsb3QyKQpgYGAKClJlYWQgaW4gZGF0YS4KYGBge3J9CmQgPSByZWFkLmNzdigiSW5Xb3JkREJfYXJ0aWZpY2FsX3NlZWQuY3N2IikKYGBgCgojIyBTdGVwIDE6IENhbGN1bGF0ZSBlZmZlY3Qgc2l6ZXMgYW5kIHZhcmlhbmNlcyBmb3IgZWFjaCByb3cuCgpUd28gbWV0aG9kcy4gRmlyc3QsIHVzaW5nIHRoZSByZXBvcnRlZCBncm91cCBtZWFucyBhbmQgc3RhbmRhcmQgZGV2aWF0aW9ucy4KYGBge3J9CmQgPSBtdXRhdGUoZCwgcG9vbGVkX1NEICA9IHNxcnQoKFNEXzEgXiAyICsgU0RfMiBeIDIpIC8gMiksCiAgICAgICAgICAgZF9jYWxjX2J5X00gPSAoeF8xIC0geF8yKSAvIHBvb2xlZF9TRCkKYGBgCgpTZWNvbmQgbWV0aG9kOiBVc2luZyByZXBvcnRlZCB0IHRlc3Qtc3RhdGlzdGljLgpgYGB7cn0KZCA9IG11dGF0ZShkLCBjb3JyID0gLjUsCiAgICAgICAgICAgICAgd2MgPSBzcXJ0KDIgKiAoMSAtIGNvcnIpKSwKICAgICAgICAgICAgICBkX2NhbGNfYnlfdCA9ICh0IC8gc3FydChuXzEpKSAqIHdjKQpgYGAKTm90ZSwgdGhhdCBmb3Igd2l0aGluLXN1YmplY3QgZGVzaWducywgd2UgbmVlZCB0byBrbm93IHRoZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRoZSB0d28gY29uZGl0aW9ucy4gVGhpcyBpcyBvZnRlbiBub3QgcmVwb3J0ZWQuIEhlcmUgd2UgZXN0aW1hdGVkIGl0IHRvIGJlIC41LgoKQ29tcGFyZSBlZmZlY3Qgc2l6ZXMuCmBgYHtyLCAgd2FybmluZyA9IEZ9CmdncGxvdChkLCBhZXMoeCA9IGRfY2FsY19ieV90LCB5PSBkX2NhbGNfYnlfTSkpICsKICBnZW9tX3BvaW50KHNpemUgPSAzKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kPSAibG0iKSArCiAgdGhlbWVfYncoKQpgYGAKClJlYXNvbmFiaWx5IGNvbXByYWFibGUuCgoKUHV0IGFsbCBlZmZlY3Qgc2l6ZXMgaW4gc2FtZSBjb2x1bW4KYGBge3J9CmQgPSBtdXRhdGUoZCwgZF9jYWxjID0gaWZlbHNlKCFpcy5uYShkX2NhbGNfYnlfTSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkX2NhbGNfYnlfTSwgZF9jYWxjX2J5X3QpKQpgYGAKCk5vdywgZ2V0IGQgdmFyaWFuY2VzLgpgYGB7cn0KZCA9IG11dGF0ZShkLCBkX3Zhcl9jYWxjID0gKDEgLyBuXzEpICsgKGRfY2FsYyBeIDIgLyAoMiAqIG5fMSkpICogMiAqICgxIC0gY29ycikpCmBgYAoKIyMgU3RlcCAyOiBGaXQgcmFuZG9tIGVmZmVjdCBtb2RlbApgYGB7ciwgZmlnLmhlaWdodD0gNSwgZmlnLndpZHRoID0gOH0KcmVzIDwtIHJtYShkX2NhbGMsIGRfdmFyX2NhbGMsIGRhdGEgPSBkKQpmb3Jlc3QocmVzLCBzbGFiID0gZCRzaG9ydF9jaXRlKQpgYGAKCmBgYHtyfQpyZXMKYGBgCk92ZXJhbGwgZXN0aW1hdGU6IC4xOCwgd2l0aCBjb25kZmlkaWVuY2UgaW50ZXJ2YWwgdGhhdCBpbmNsdWRlcyAwLiBObyBldmlkZW5jZSBmb3IgdGhlIGVmZmVjdC4gTG90cyBvZiBldmlkZW5jZSBmb3IgaGV0ZXJvbmVpdHkuIFJ1biBmaXhlZCBlZmZlY3QgZm9yIGNvbXBhcmlzb24gKG1ldGhvZCA9ICJGRSIpCgpGdW5uZWwgcGxvdApgYGB7ciwgIHdhcm5pbmcgPSBGfQpmdW5uZWwocmVzKQpgYGAKClZlcnkgaGV0ZXJvZ2Vub3VzLgoKIyMgU3RlcCAzOiBGaXQgcmFuZG9tIGVmZmVjdCBtb2RlbCB3aXRoIG1vZGVyYXRvcnMKCkVmZmVjdCBzaXplIGFzIGEgZnVuY3Rpb24gb2YgYWdlLgpgYGB7ciwgIHdhcm5pbmcgPSBGfQpnZ3Bsb3QoZCwgYWVzKHggPSBtZWFuX2FnZV8xLCB5ID0gZF9jYWxjKSkgKwogIGdlb21fcG9pbnQoc2l6ZSA9IDMpICsKICBnZW9tX3Ntb290aChtZXRob2Q9ICJsbSIpICsKICB0aGVtZV9idygpCmBgYAoKQWRkIGFnZSBhcyBhIHByZWRpY3RvciBvZiBlZmZlY3Qgc2l6ZS4KYGBge3IsICB3YXJuaW5nID0gRiwgZmlnLmhlaWdodD0gNSwgZmlnLndpZHRoID0gOH0KcmVzX2FnZSA8LSBybWEoZF9jYWxjIH4gbWVhbl9hZ2VfMSwgZF92YXJfY2FsYywgZGF0YSA9IGQpCnJlc19hZ2UKZm9yZXN0KHJlc19hZ2UsIHNsYWIgPSBkJHNob3J0X2NpdGUpCmZ1bm5lbChyZXNfYWdlLCBzbGFiID0gZCRzaG9ydF9jaXRlKQpgYGAKCk1vcmUgdmFyaWFuY2UgYWNvdW50ZWQgZm9yIGJ5IGluY2x1ZGluZyBhZ2UgYXMgYSBtb2RlcmF0b3IuCgpUaGlzIGlzIGFuIFtSIE1hcmtkb3duXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBOb3RlYm9vay4gV2hlbiB5b3UgZXhlY3V0ZSBjb2RlIHdpdGhpbiB0aGUgbm90ZWJvb2ssIHRoZSByZXN1bHRzIGFwcGVhciBiZW5lYXRoIHRoZSBjb2RlLiAKClRyeSBleGVjdXRpbmcgdGhpcyBjaHVuayBieSBjbGlja2luZyB0aGUgKlJ1biogYnV0dG9uIHdpdGhpbiB0aGUgY2h1bmsgb3IgYnkgcGxhY2luZyB5b3VyIGN1cnNvciBpbnNpZGUgaXQgYW5kIHByZXNzaW5nICpDbWQrU2hpZnQrRW50ZXIqLiAKCmBgYHtyfQpwbG90KGNhcnMpCmBgYAoKQWRkIGEgbmV3IGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqSW5zZXJ0IENodW5rKiBidXR0b24gb24gdGhlIHRvb2xiYXIgb3IgYnkgcHJlc3NpbmcgKkNtZCtPcHRpb24rSSouCgpXaGVuIHlvdSBzYXZlIHRoZSBub3RlYm9vaywgYW4gSFRNTCBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvZGUgYW5kIG91dHB1dCB3aWxsIGJlIHNhdmVkIGFsb25nc2lkZSBpdCAoY2xpY2sgdGhlICpQcmV2aWV3KiBidXR0b24gb3IgcHJlc3MgKkNtZCtTaGlmdCtLKiB0byBwcmV2aWV3IHRoZSBIVE1MIGZpbGUpLgo=