Meta-analysis of the IQ~income correlation. The previous Strenze meta-analysis is deflated by the fact that he frequently used samples of young adults or ones that were selected for educational attainment – this meta-analysis uses roughly representative datasets such as the PIAAC, NLSY, CFPS, and UK Biobank to avoid this issue, and also corrects for test reliability.
im <- imeta
im$se <- sqrt(1-im$r^2)/sqrt(im$n-2)
im$cohort <- im$year - im$age
im$code <- countrycode(im$country, origin='country.name', destination='iso3c')
im$code[im$country=='North Ireland'] <- 'IRL'
im$corrr <- im$r/sqrt(im$testreliability*.85)
plot(im$corrr, im$r)
metaobj <- metafor::rma(yi=corrr, sei=se, data=im)
summary(metaobj)
Random-Effects Model (k = 41; tau^2 estimator: REML)
logLik deviance AIC BIC AICc
47.0673 -94.1347 -90.1347 -86.7569 -89.8104
tau^2 (estimated amount of total heterogeneity): 0.0049 (SE = 0.0012)
tau (square root of estimated tau^2 value): 0.0699
I^2 (total heterogeneity / total variability): 95.26%
H^2 (total variability / sampling variability): 21.10
Test for Heterogeneity:
Q(df = 40) = 463.1361, p-val < .0001
Model Results:
estimate se zval pval ci.lb ci.ub
0.3700 0.0115 32.1495 <.0001 0.3474 0.3926 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
funnel(metaobj, xlab='Correlation between IQ and income', cex = .7, cex.lab = 1.25)
text(im$corrr, im$se, labels = im$country, cex = .88, pos = 1)
metaobj <- metafor::rma(yi=corrr, sei=se, data=im, mods = ~ country)
summary(metaobj)
Mixed-Effects Model (k = 41; tau^2 estimator: REML)
logLik deviance AIC BIC AICc
11.3512 -22.7023 47.2977 45.4045 2567.2977
tau^2 (estimated amount of residual heterogeneity): 0.0019 (SE = 0.0012)
tau (square root of estimated tau^2 value): 0.0437
I^2 (residual heterogeneity / unaccounted variability): 87.10%
H^2 (unaccounted variability / sampling variability): 7.75
R^2 (amount of heterogeneity accounted for): 61.02%
Test for Residual Heterogeneity:
QE(df = 7) = 56.3170, p-val < .0001
Test of Moderators (coefficients 2:34):
QM(df = 33) = 81.7865, p-val < .0001
Model Results:
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1