Becker-Aloe-Cheung-2019.RmdWe load the necessary packages as well as the data set for the
example. Because for this example we are using only complete data we
remove the the two studies with NA (i.e., Study 6 and Study
17).
library(mars)
becker09 <- na.omit(becker09) # ommiting studies with NA
becker09
#> ID N Team Cognitive_Performance Somatic_Performance
#> 1 1 142 I -0.55 -0.48
#> 2 3 37 I 0.53 -0.12
#> 4 10 14 I -0.39 -0.17
#> 6 22 100 I 0.23 0.08
#> 7 26 51 T -0.52 -0.43
#> 8 28 128 T 0.14 0.02
#> 9 36 70 T -0.01 -0.16
#> 10 38 30 I -0.27 -0.13
#> Selfconfidence_Performance Somatic_Cognitive Selfconfidence_Cognitive
#> 1 0.66 0.47 -0.38
#> 2 0.03 0.52 -0.48
#> 4 0.19 0.21 -0.54
#> 6 0.51 0.45 -0.29
#> 7 0.16 0.57 -0.18
#> 8 0.13 0.56 -0.53
#> 9 0.42 0.62 -0.46
#> 10 0.15 0.63 -0.68
#> Selfconfidence_Somatic
#> 1 -0.46
#> 2 -0.40
#> 4 -0.43
#> 6 -0.44
#> 7 -0.26
#> 8 -0.27
#> 9 -0.54
#> 10 -0.71Next, we create a list, which will be imputed in our other functions.
becker09_list <- df_to_corr(becker09,
variables = c('Cognitive_Performance',
'Somatic_Performance',
'Selfconfidence_Performance',
'Somatic_Cognitive',
'Selfconfidence_Cognitive',
'Selfconfidence_Somatic'),
ID = 'ID')
becker09_list
#> $`1`
#> Performance Cognitive Somatic Selfconfidence
#> Performance 1.00 -0.55 -0.48 0.66
#> Cognitive -0.55 1.00 0.47 -0.38
#> Somatic -0.48 0.47 1.00 -0.46
#> Selfconfidence 0.66 -0.38 -0.46 1.00
#>
#> $`3`
#> Performance Cognitive Somatic Selfconfidence
#> Performance 1.00 0.53 -0.12 0.03
#> Cognitive 0.53 1.00 0.52 -0.48
#> Somatic -0.12 0.52 1.00 -0.40
#> Selfconfidence 0.03 -0.48 -0.40 1.00
#>
#> $`10`
#> Performance Cognitive Somatic Selfconfidence
#> Performance 1.00 -0.39 -0.17 0.19
#> Cognitive -0.39 1.00 0.21 -0.54
#> Somatic -0.17 0.21 1.00 -0.43
#> Selfconfidence 0.19 -0.54 -0.43 1.00
#>
#> $`22`
#> Performance Cognitive Somatic Selfconfidence
#> Performance 1.00 0.23 0.08 0.51
#> Cognitive 0.23 1.00 0.45 -0.29
#> Somatic 0.08 0.45 1.00 -0.44
#> Selfconfidence 0.51 -0.29 -0.44 1.00
#>
#> $`26`
#> Performance Cognitive Somatic Selfconfidence
#> Performance 1.00 -0.52 -0.43 0.16
#> Cognitive -0.52 1.00 0.57 -0.18
#> Somatic -0.43 0.57 1.00 -0.26
#> Selfconfidence 0.16 -0.18 -0.26 1.00
#>
#> $`28`
#> Performance Cognitive Somatic Selfconfidence
#> Performance 1.00 0.14 0.02 0.13
#> Cognitive 0.14 1.00 0.56 -0.53
#> Somatic 0.02 0.56 1.00 -0.27
#> Selfconfidence 0.13 -0.53 -0.27 1.00
#>
#> $`36`
#> Performance Cognitive Somatic Selfconfidence
#> Performance 1.00 -0.01 -0.16 0.42
#> Cognitive -0.01 1.00 0.62 -0.46
#> Somatic -0.16 0.62 1.00 -0.54
#> Selfconfidence 0.42 -0.46 -0.54 1.00
#>
#> $`38`
#> Performance Cognitive Somatic Selfconfidence
#> Performance 1.00 -0.27 -0.13 0.15
#> Cognitive -0.27 1.00 0.63 -0.68
#> Somatic -0.13 0.63 1.00 -0.71
#> Selfconfidence 0.15 -0.68 -0.71 1.00There are currently three options for the variance-covariance matrix of the correlation matrix (i.e, simple, average, and weighted) for this example we selected the weighted option.
#olkin_siotani(becker09_list, becker09$N, type = 'simple')
#olkin_siotani(becker09_list, becker09$N, type = 'average')
olkin_siotani(becker09_list, becker09$N, type = 'weighted')
#> [[1]]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.0068964508 0.0034592598 -0.0024249951 -0.0007709388 0.0019806619
#> [2,] 0.0034592598 0.0066061710 -0.0022932962 -0.0002788858 0.0008637677
#> [3,] -0.0024249951 -0.0022932962 0.0053155444 0.0001634926 -0.0001362802
#> [4,] -0.0007709388 -0.0002788858 0.0001634926 0.0037574849 -0.0013337746
#> [5,] 0.0019806619 0.0008637677 -0.0001362802 -0.0013337746 0.0048166300
#> [6,] 0.0010242015 0.0018602041 -0.0005187913 -0.0013441468 0.0021616446
#> [,6]
#> [1,] 0.0010242015
#> [2,] 0.0018602041
#> [3,] -0.0005187913
#> [4,] -0.0013441468
#> [5,] 0.0021616446
#> [6,] 0.0048308442
#>
#> [[2]]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.026467460 0.013276078 -0.0093067379 -0.0029587381 0.0076014592
#> [2,] 0.013276078 0.025353413 -0.0088012989 -0.0010703186 0.0033150004
#> [3,] -0.009306738 -0.008801299 0.0204001974 0.0006274581 -0.0005230214
#> [4,] -0.002958738 -0.001070319 0.0006274581 0.0144206177 -0.0051188104
#> [5,] 0.007601459 0.003315000 -0.0005230214 -0.0051188104 0.0184854450
#> [6,] 0.003930719 0.007139162 -0.0019910370 -0.0051586176 0.0082960414
#> [,6]
#> [1,] 0.003930719
#> [2,] 0.007139162
#> [3,] -0.001991037
#> [4,] -0.005158618
#> [5,] 0.008296041
#> [6,] 0.018539997
#>
#> [[3]]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.069949715 0.035086777 -0.024596379 -0.007819522 0.020089571
#> [2,] 0.035086777 0.067005449 -0.023260576 -0.002828699 0.008761072
#> [3,] -0.024596379 -0.023260576 0.053914807 0.001658282 -0.001382271
#> [4,] -0.007819522 -0.002828699 0.001658282 0.038111633 -0.013528285
#> [5,] 0.020089571 0.008761072 -0.001382271 -0.013528285 0.048854390
#> [6,] 0.010388330 0.018867784 -0.005262026 -0.013633489 0.021925252
#> [,6]
#> [1,] 0.010388330
#> [2,] 0.018867784
#> [3,] -0.005262026
#> [4,] -0.013633489
#> [5,] 0.021925252
#> [6,] 0.048998563
#>
#> [[4]]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.009792960 0.0049121488 -0.0034434930 -0.0010947331 0.0028125399
#> [2,] 0.004912149 0.0093807628 -0.0032564806 -0.0003960179 0.0012265501
#> [3,] -0.003443493 -0.0032564806 0.0075480730 0.0002321595 -0.0001935179
#> [4,] -0.001094733 -0.0003960179 0.0002321595 0.0053356286 -0.0018939599
#> [5,] 0.002812540 0.0012265501 -0.0001935179 -0.0018939599 0.0068396147
#> [6,] 0.001454366 0.0026414898 -0.0007366837 -0.0019086885 0.0030695353
#> [,6]
#> [1,] 0.0014543662
#> [2,] 0.0026414898
#> [3,] -0.0007366837
#> [4,] -0.0019086885
#> [5,] 0.0030695353
#> [6,] 0.0068597988
#>
#> [[5]]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.019201883 0.0096316644 -0.0067519471 -0.0021465355 0.0055147841
#> [2,] 0.009631664 0.0183936526 -0.0063852560 -0.0007765056 0.0024050003
#> [3,] -0.006751947 -0.0063852560 0.0148001432 0.0004552147 -0.0003794469
#> [4,] -0.002146536 -0.0007765056 0.0004552147 0.0104620168 -0.0037136468
#> [5,] 0.005514784 0.0024050003 -0.0003794469 -0.0037136468 0.0134110091
#> [6,] 0.002851698 0.0051793917 -0.0014444778 -0.0037425265 0.0060186967
#> [,6]
#> [1,] 0.002851698
#> [2,] 0.005179392
#> [3,] -0.001444478
#> [4,] -0.003742526
#> [5,] 0.006018697
#> [6,] 0.013450586
#>
#> [[6]]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.0076507501 0.0038376163 -0.0026902289 -0.0008552602 0.0021972968
#> [2,] 0.0038376163 0.0073287209 -0.0025441255 -0.0003093890 0.0009582423
#> [3,] -0.0026902289 -0.0025441255 0.0058969321 0.0001813746 -0.0001511859
#> [4,] -0.0008552602 -0.0003093890 0.0001813746 0.0041684598 -0.0014796561
#> [5,] 0.0021972968 0.0009582423 -0.0001511859 -0.0014796561 0.0053434489
#> [6,] 0.0011362236 0.0020636639 -0.0005755341 -0.0014911629 0.0023980745
#> [,6]
#> [1,] 0.0011362236
#> [2,] 0.0020636639
#> [3,] -0.0005755341
#> [4,] -0.0014911629
#> [5,] 0.0023980745
#> [6,] 0.0053592178
#>
#> [[7]]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.013989943 0.0070173555 -0.0049192757 -0.0015639044 0.0040179142
#> [2,] 0.007017355 0.0134010897 -0.0046521151 -0.0005657398 0.0017522145
#> [3,] -0.004919276 -0.0046521151 0.0107829615 0.0003316564 -0.0002764542
#> [4,] -0.001563904 -0.0005657398 0.0003316564 0.0076223265 -0.0027056569
#> [5,] 0.004017914 0.0017522145 -0.0002764542 -0.0027056569 0.0097708781
#> [6,] 0.002077666 0.0037735568 -0.0010524053 -0.0027266979 0.0043850504
#> [,6]
#> [1,] 0.002077666
#> [2,] 0.003773557
#> [3,] -0.001052405
#> [4,] -0.002726698
#> [5,] 0.004385050
#> [6,] 0.009799713
#>
#> [[8]]
#> [,1] [,2] [,3] [,4] [,5]
#> [1,] 0.032643200 0.016373829 -0.0114783100 -0.003649110 0.0093751330
#> [2,] 0.016373829 0.031269209 -0.0108549353 -0.001320060 0.0040885004
#> [3,] -0.011478310 -0.010854935 0.0251602435 0.000773865 -0.0006450598
#> [4,] -0.003649110 -0.001320060 0.0007738650 0.017785429 -0.0063131995
#> [5,] 0.009375133 0.004088500 -0.0006450598 -0.006313200 0.0227987155
#> [6,] 0.004847887 0.008804966 -0.0024556123 -0.006362295 0.0102317844
#> [,6]
#> [1,] 0.004847887
#> [2,] 0.008804966
#> [3,] -0.002455612
#> [4,] -0.006362295
#> [5,] 0.010231784
#> [6,] 0.022865996Below we fitted fixed and random-effects models and extracted some more detail information from objects that are not directly output by the functions. First, we see results under fixed-effect models.
mars(data = becker09, studyID = 'ID',
effectID = 'numID', sample_size = 'N',
effectsize_type = 'cor',
estimation_method = 'FE',
varcov_type = 'weighted',
variable_names = c('Cognitive_Performance', 'Somatic_Performance',
'Selfconfidence_Performance',
'Somatic_Cognitive',
'Selfconfidence_Cognitive',
'Selfconfidence_Somatic')) |>
summary()
#> Results generated with MARS:v 0.5.1.1
#> Thursday, April 2, 2026
#>
#> Model Type:
#> multivariate
#>
#> Estimation Method:
#> Fixed/Common Effect
#>
#> Model Formula:
#> NULL
#>
#> Data Summary:
#> Number of Effect Sizes: 48
#> Number of Fixed Effects: 6
#> Number of Random Effects: 0
#>
#> Random Components:
#> NULL
#>
#> Fixed Effects Estimates:
#> attribute estimate SE z_test p_value lower upper
#> 1 -0.1020 0.04138 -2.465 1.369e-02 -0.1831 -0.02091
#> 2 -0.1774 0.04050 -4.380 1.189e-05 -0.2567 -0.09799
#> 3 0.3622 0.03633 9.971 2.035e-23 0.2910 0.43342
#> 4 0.5192 0.03054 16.999 8.362e-65 0.4593 0.57904
#> 5 -0.4159 0.03458 -12.028 2.543e-33 -0.4837 -0.34813
#> 6 -0.4144 0.03463 -11.968 5.257e-33 -0.4823 -0.34657
#>
#> Model Fit Statistics:
#> NULL
#>
#> Q Error: 230.642 (42), p < 0.0001
#>
#> I2 (General):
#> 81.79
#>
#> Residual Diagnostics: not availableNow we fit a random-effects model and extract some objects from this output.
model_out_random <- mars(data = becker09, studyID = 'ID',
effectID = 'numID', sample_size = 'N',
effectsize_type = 'cor',
varcov_type = 'weighted',
variable_names = c('Cognitive_Performance', 'Somatic_Performance',
'Selfconfidence_Performance',
'Somatic_Cognitive',
'Selfconfidence_Cognitive',
'Selfconfidence_Somatic'))
summary(model_out_random)
#> Results generated with MARS:v 0.5.1.1
#> Thursday, April 2, 2026
#>
#> Model Type:
#> multivariate
#>
#> Estimation Method:
#> Restricted Maximum Likelihood
#>
#> Model Formula:
#> NULL
#>
#> Data Summary:
#> Number of Effect Sizes: 48
#> Number of Fixed Effects: 6
#> Number of Random Effects: 6
#>
#> Random Components:
#> ri_1 ri_2 ri_3 ri_4 ri_5 ri_6
#> ri_1 0.13204 0.07630 -0.03144 0.003058 -0.018150 0.0022236
#> ri_2 0.99878 0.04420 -0.01698 0.001532 -0.009861 0.0008355
#> ri_3 -0.42074 -0.39284 0.04229 -0.007313 0.009630 -0.0122546
#> ri_4 0.23176 0.20062 -0.97927 0.001319 -0.001498 0.0022776
#> ri_5 -0.62514 -0.58701 0.58603 -0.516444 0.006384 -0.0024641
#> ri_6 0.09632 0.06256 -0.93797 0.987249 -0.485426 0.0040360
#>
#> Fixed Effects Estimates:
#> attribute estimate SE z_test p_value lower upper
#> 1 -0.09773 0.13777 -0.7093 4.781e-01 -0.3677 0.172299
#> 2 -0.17556 0.08620 -2.0367 4.168e-02 -0.3445 -0.006613
#> 3 0.31868 0.08406 3.7911 1.500e-04 0.1539 0.483438
#> 4 0.52720 0.03335 15.8070 2.785e-56 0.4618 0.592564
#> 5 -0.41756 0.04590 -9.0968 9.305e-20 -0.5075 -0.327591
#> 6 -0.40071 0.04182 -9.5821 9.510e-22 -0.4827 -0.318750
#>
#> Model Fit Statistics:
#> logLik Dev AIC BIC AICc
#> 18.63 -37.25 16.75 63.67 29.48
#>
#> Q Error: 230.642 (42), p < 0.0001
#>
#> I2 (General):
#> names values
#> ri_1 94.53
#> ri_2 85.26
#> ri_3 84.69
#> ri_4 14.71
#> ri_5 45.51
#> ri_6 34.56
#>
#> I2 (Jackson):
#> names values
#> ri_1 90.98
#> ri_2 77.93
#> ri_3 81.33
#> ri_4 16.14
#> ri_5 43.25
#> ri_6 31.42
#>
#> I2 (Between): 83.393
#>
#> Residual Diagnostics:
#> n n_finite_raw mean_raw sd_raw rmse mae q_pearson mean_abs_studentized
#> 48 48 -0.02155 0.2127 0.2116 0.1646 133.5 1.419
#> max_abs_studentized prop_abs_studentized_gt2 prop_abs_studentized_gt3
#> 5.006 0.2708 0.1042
#>
#> Normality (whitened residuals): test n_tested statistic p_value
#> shapiro_wilk_whitened 48 0.9789 0.5351
#>
#> Heteroscedasticity trend (|raw residual| ~ fitted): n corr_abs_raw_fitted slope p_value
#> 48 -0.002893 -0.001091 0.9844Now, we are ready to input the average correlation matrix and its variance covariance matrix and our own function to appropriate estimate SE via the multivariate delta method.
model <- "## Regression paths
Performance ~ Cognitive + Somatic + Selfconfidence
Selfconfidence ~ Cognitive + Somatic
"
mars(data = becker09, studyID = 'ID',
effectID = 'numID', sample_size = 'N',
effectsize_type = 'cor',
varcov_type = 'weighted',
variable_names = c('Cognitive_Performance', 'Somatic_Performance',
'Selfconfidence_Performance',
'Somatic_Cognitive',
'Selfconfidence_Cognitive',
'Selfconfidence_Somatic')) |>
path_model(model = model) |>
summary()
#> Results generated with MARS:v 0.5.1.1
#> Thursday, April 2, 2026
#>
#> Model Type:
#> multivariate
#>
#> Average Correlation Matrix:
#> Performance Cognitive Somatic Selfconfidence
#> Performance 1.00000000 -0.09772505 -0.1755555 0.3186811
#> Cognitive -0.09772505 1.00000000 0.5271955 -0.4175566
#> Somatic -0.17555552 0.52719552 1.0000000 -0.4007139
#> Selfconfidence 0.31868112 -0.41755660 -0.4007139 1.0000000
#>
#> Synthesis options:
#> method: model
#> transform: none
#> missing_corr: available
#> attenuation: none
#> pd_adjust: none
#> pd_adjusted: FALSE
#> min eigen (before/after): 0.4579 / 0.4579
#>
#>
#> Model Fitted:
#> ## Regression paths
#> Performance ~ Cognitive + Somatic + Selfconfidence
#> Selfconfidence ~ Cognitive + Somatic
#>
#>
#> Fixed Effects:
#> predictor outcome estimate
#> Cognitive -> Performance Cognitive Performance 0.08320193
#> Somatic -> Performance Somatic Performance -0.09267954
#> Selfconfidence -> Performance Selfconfidence Performance 0.31628465
#> Cognitive -> Selfconfidence Cognitive Selfconfidence -0.28571118
#> Somatic -> Selfconfidence Somatic Selfconfidence -0.25008827
#> standard_errors test_statistic p_value
#> Cognitive -> Performance 0.15424803 0.5394035 5.896085e-01
#> Somatic -> Performance 0.06355173 -1.4583323 1.447490e-01
#> Selfconfidence -> Performance 0.10217385 3.0955539 1.964457e-03
#> Cognitive -> Selfconfidence 0.03848677 -7.4236215 1.139605e-13
#> Somatic -> Selfconfidence 0.05226246 -4.7852375 1.707853e-06
#>
#>
#> Fit Statistics:
#> Type Value
#> 1 Model Chi-Square 14.232 (2), 8e-04
#> 2 Null Model Chi-Square 642.267 (6)
#> 3 CFI 0.981
#> 4 TLI 0.942
#> 5 RMSEA 0.103 [0.048, 0.166]
#> 6 SRMR 0.232
#> 7 CFI (raw) 0.981
#> 8 TLI (raw) 0.942We now subset the data to obtain results only for the studies that reported on Team sports.
becker09_T <- subset(becker09, becker09$Team == "T")
mars(data = becker09_T, studyID = 'ID',
effectID = 'numID', sample_size = 'N',
effectsize_type = 'cor',
varcov_type = 'weighted',
variable_names = c('Cognitive_Performance', 'Somatic_Performance',
'Selfconfidence_Performance',
'Somatic_Cognitive',
'Selfconfidence_Cognitive',
'Selfconfidence_Somatic')) |>
summary()
#> Results generated with MARS:v 0.5.1.1
#> Thursday, April 2, 2026
#>
#> Model Type:
#> multivariate
#>
#> Estimation Method:
#> Restricted Maximum Likelihood
#>
#> Model Formula:
#> NULL
#>
#> Data Summary:
#> Number of Effect Sizes: 18
#> Number of Fixed Effects: 6
#> Number of Random Effects: 6
#>
#> Random Components:
#> ri_1 ri_2 ri_3 ri_4 ri_5 ri_6
#> ri_1 0.1130 0.07311 0.0092211 0.0012152 -0.0604182 -0.015519
#> ri_2 0.9841 0.04884 0.0003635 -0.0003558 -0.0388984 -0.004654
#> ri_3 0.1886 0.01131 0.0211620 0.0042598 -0.0056177 -0.020890
#> ri_4 0.1232 -0.05486 0.9978097 0.0008612 -0.0007899 -0.004167
#> ri_5 -0.9996 -0.97903 -0.2147932 -0.1497170 0.0323231 0.008958
#> ri_6 -0.3186 -0.14531 -0.9909653 -0.9799229 0.3438406 0.020999
#>
#> Fixed Effects Estimates:
#> attribute estimate SE z_test p_value lower upper
#> 1 -0.1245 0.2048 -0.608 5.432e-01 -0.52587 0.27686
#> 2 -0.1853 0.1425 -1.300 1.936e-01 -0.46463 0.09407
#> 3 0.2329 0.1043 2.232 2.563e-02 0.02837 0.43740
#> 4 0.5825 0.0455 12.803 1.581e-37 0.49335 0.67171
#> 5 -0.3928 0.1160 -3.385 7.123e-04 -0.62024 -0.16535
#> 6 -0.3534 0.1015 -3.482 4.970e-04 -0.55223 -0.15448
#>
#> Model Fit Statistics:
#> logLik Dev AIC BIC AICc
#> 11.04 -22.09 31.91 45 171.9
#>
#> Q Error: 50.049 (12), p < 0.0001
#>
#> I2 (General):
#> names values
#> ri_1 94.43
#> ri_2 88.00
#> ri_3 76.06
#> ri_4 11.45
#> ri_5 82.91
#> ri_6 75.92
#>
#> I2 (Jackson):
#> names values
#> ri_1 90.45
#> ri_2 80.82
#> ri_3 66.53
#> ri_4 14.25
#> ri_5 80.55
#> ri_6 69.67
#>
#> I2 (Between): 85.57905
#>
#> Residual Diagnostics:
#> n n_finite_raw mean_raw sd_raw rmse mae q_pearson mean_abs_studentized
#> 18 18 -0.001024 0.1739 0.169 0.137 43.57 1.607
#> max_abs_studentized prop_abs_studentized_gt2 prop_abs_studentized_gt3
#> 4.228 0.3333 0.1667
#>
#> Normality (whitened residuals): test n_tested statistic p_value
#> shapiro_wilk_whitened 18 0.9467 0.3754
#>
#> Heteroscedasticity trend (|raw residual| ~ fitted): n corr_abs_raw_fitted slope p_value
#> 18 -0.4088 -0.1174 0.0921
# random_model2 <- fit_model(data = input_metafor2, effect_size = 'yi',
# var_cor = 'V', moderators = ~ -1 + factor(outcome),
# random_params = ~ factor(outcome) | factor(study))
model <- "## Regression paths
Performance ~ Cognitive + Somatic + Selfconfidence
Selfconfidence ~ Cognitive + Somatic
"
mars(data = becker09_T, studyID = 'ID',
effectID = 'numID', sample_size = 'N',
effectsize_type = 'cor',
varcov_type = 'weighted',
variable_names = c('Cognitive_Performance', 'Somatic_Performance',
'Selfconfidence_Performance',
'Somatic_Cognitive',
'Selfconfidence_Cognitive',
'Selfconfidence_Somatic')) |>
path_model(model = model) |>
summary()
#> Results generated with MARS:v 0.5.1.1
#> Thursday, April 2, 2026
#>
#> Model Type:
#> multivariate
#>
#> Average Correlation Matrix:
#> Performance Cognitive Somatic Selfconfidence
#> Performance 1.0000000 -0.1245052 -0.1852835 0.2328833
#> Cognitive -0.1245052 1.0000000 0.5825293 -0.3927931
#> Somatic -0.1852835 0.5825293 1.0000000 -0.3533514
#> Selfconfidence 0.2328833 -0.3927931 -0.3533514 1.0000000
#>
#> Synthesis options:
#> method: model
#> transform: none
#> missing_corr: available
#> attenuation: none
#> pd_adjust: none
#> pd_adjusted: FALSE
#> min eigen (before/after): 0.4095 / 0.4095
#>
#>
#> Model Fitted:
#> ## Regression paths
#> Performance ~ Cognitive + Somatic + Selfconfidence
#> Selfconfidence ~ Cognitive + Somatic
#>
#>
#> Fixed Effects:
#> predictor outcome estimate
#> Cognitive -> Performance Cognitive Performance 0.03091904
#> Somatic -> Performance Somatic Performance -0.13336533
#> Selfconfidence -> Performance Selfconfidence Performance 0.19790329
#> Cognitive -> Selfconfidence Cognitive Selfconfidence -0.28298310
#> Somatic -> Selfconfidence Somatic Selfconfidence -0.18850547
#> standard_errors test_statistic p_value
#> Cognitive -> Performance 0.25963286 0.1190875 9.052060e-01
#> Somatic -> Performance 0.08357794 -1.5957002 1.105558e-01
#> Selfconfidence -> Performance 0.16481859 1.2007340 2.298544e-01
#> Cognitive -> Selfconfidence 0.06463949 -4.3778671 1.198464e-05
#> Somatic -> Selfconfidence 0.12485595 -1.5097837 1.310986e-01
#>
#>
#> Fit Statistics:
#> Type Value
#> 1 Model Chi-Square 3.541 (2), 0.1703
#> 2 Null Model Chi-Square 320.778 (6)
#> 3 CFI 0.995
#> 4 TLI 0.985
#> 5 RMSEA <NA>
#> 6 SRMR 0.205
#> 7 CFI (raw) 0.995
#> 8 TLI (raw) 0.985Similarly, we now subset the data to obtain results only for the studies that reported on Individual sports.
becker09_I <- subset(becker09, becker09$Team == "I")
mars(data = becker09_I, studyID = 'ID',
effectID = 'numID', sample_size = 'N',
effectsize_type = 'cor',
varcov_type = 'weighted',
variable_names = c('Cognitive_Performance', 'Somatic_Performance',
'Selfconfidence_Performance',
'Somatic_Cognitive',
'Selfconfidence_Cognitive',
'Selfconfidence_Somatic')) |>
summary()
#> Results generated with MARS:v 0.5.1.1
#> Thursday, April 2, 2026
#>
#> Model Type:
#> multivariate
#>
#> Estimation Method:
#> Restricted Maximum Likelihood
#>
#> Model Formula:
#> NULL
#>
#> Data Summary:
#> Number of Effect Sizes: 30
#> Number of Fixed Effects: 6
#> Number of Random Effects: 6
#>
#> Random Components:
#> ri_1 ri_2 ri_3 ri_4 ri_5 ri_6
#> ri_1 0.1947 0.07611 -0.06016 0.0019442 0.013587 0.020934
#> ri_2 0.8004 0.04644 -0.02143 0.0005689 0.004876 0.002171
#> ri_3 -0.5330 -0.38875 0.06543 -0.0073449 0.024501 0.005810
#> ri_4 0.1400 0.08385 -0.91206 0.0009911 -0.004008 -0.001602
#> ri_5 0.2251 0.16541 0.70027 -0.9306854 0.018709 0.009662
#> ri_6 0.5284 0.11220 0.25297 -0.5667741 0.786688 0.008063
#>
#> Fixed Effects Estimates:
#> attribute estimate SE z_test p_value lower upper
#> 1 -0.08366 0.20961 -0.3991 6.898e-01 -0.49448 0.32717
#> 2 -0.18290 0.11427 -1.6006 1.095e-01 -0.40687 0.04107
#> 3 0.33753 0.12616 2.6754 7.464e-03 0.09026 0.58480
#> 4 0.49047 0.04563 10.7499 5.934e-27 0.40105 0.57990
#> 5 -0.46567 0.07947 -5.8600 4.629e-09 -0.62142 -0.30992
#> 6 -0.49761 0.06086 -8.1767 2.917e-16 -0.61689 -0.37833
#>
#> Model Fit Statistics:
#> logLik Dev AIC BIC AICc
#> 11.39 -22.79 31.21 63.02 59.21
#>
#> Q Error: 190.914 (24), p < 0.0001
#>
#> I2 (General):
#> names values
#> ri_1 95.77
#> ri_2 84.36
#> ri_3 88.37
#> ri_4 10.33
#> ri_5 68.49
#> ri_6 48.36
#>
#> I2 (Jackson):
#> names values
#> ri_1 93.27
#> ri_2 78.52
#> ri_3 88.30
#> ri_4 10.41
#> ri_5 65.30
#> ri_6 49.12
#>
#> I2 (Between): 86.61927
#>
#> Residual Diagnostics:
#> n n_finite_raw mean_raw sd_raw rmse mae q_pearson mean_abs_studentized
#> 30 30 -0.00836 0.2292 0.2255 0.1753 56.54 1.273
#> max_abs_studentized prop_abs_studentized_gt2 prop_abs_studentized_gt3
#> 3.477 0.2 0.06667
#>
#> Normality (whitened residuals): test n_tested statistic p_value
#> shapiro_wilk_whitened 30 0.9765 0.7262
#>
#> Heteroscedasticity trend (|raw residual| ~ fitted): n corr_abs_raw_fitted slope p_value
#> 30 0.1292 0.04919 0.4961
model <- "## Regression paths
Performance ~ Cognitive + Somatic + Selfconfidence
Selfconfidence ~ Cognitive + Somatic
"
mars(data = becker09_I, studyID = 'ID',
effectID = 'numID', sample_size = 'N',
effectsize_type = 'cor',
varcov_type = 'weighted',
variable_names = c('Cognitive_Performance', 'Somatic_Performance',
'Selfconfidence_Performance',
'Somatic_Cognitive',
'Selfconfidence_Cognitive',
'Selfconfidence_Somatic')) |>
path_model(model = model) |>
summary()
#> Results generated with MARS:v 0.5.1.1
#> Thursday, April 2, 2026
#>
#> Model Type:
#> multivariate
#>
#> Average Correlation Matrix:
#> Performance Cognitive Somatic Selfconfidence
#> Performance 1.00000000 -0.08365722 -0.1829037 0.3375338
#> Cognitive -0.08365722 1.00000000 0.4904710 -0.4656691
#> Somatic -0.18290372 0.49047104 1.0000000 -0.4976124
#> Selfconfidence 0.33753379 -0.46566906 -0.4976124 1.0000000
#>
#> Synthesis options:
#> method: model
#> transform: none
#> missing_corr: available
#> attenuation: none
#> pd_adjust: none
#> pd_adjusted: FALSE
#> min eigen (before/after): 0.4593 / 0.4593
#>
#>
#> Model Fitted:
#> ## Regression paths
#> Performance ~ Cognitive + Somatic + Selfconfidence
#> Selfconfidence ~ Cognitive + Somatic
#>
#>
#> Fixed Effects:
#> predictor outcome estimate
#> Cognitive -> Performance Cognitive Performance 0.11331663
#> Somatic -> Performance Somatic Performance -0.05883077
#> Selfconfidence -> Performance Selfconfidence Performance 0.36102692
#> Cognitive -> Selfconfidence Cognitive Selfconfidence -0.29180068
#> Somatic -> Selfconfidence Somatic Selfconfidence -0.35449264
#> standard_errors test_statistic p_value
#> Cognitive -> Performance 0.23310865 0.4861108 6.268886e-01
#> Somatic -> Performance 0.13568243 -0.4335916 6.645850e-01
#> Selfconfidence -> Performance 0.14686845 2.4581652 1.396489e-02
#> Cognitive -> Selfconfidence 0.06212490 -4.6970007 2.640095e-06
#> Somatic -> Selfconfidence 0.08749422 -4.0516119 5.086599e-05
#>
#>
#> Fit Statistics:
#> Type Value
#> 1 Model Chi-Square 19.292 (2), 1e-04
#> 2 Null Model Chi-Square 427.845 (6)
#> 3 CFI 0.959
#> 4 TLI 0.877
#> 5 RMSEA 0.164 [0.09, 0.247]
#> 6 SRMR 0.27
#> 7 CFI (raw) 0.959
#> 8 TLI (raw) 0.877Here we compute the synthetic partial correlation from the average correlation matrix.
# partial corr matrix
part_cor <- round(corpcor::vec2sm(model_out_random$beta_r),3)
diag(part_cor) <- 1
part_cor
#> [,1] [,2] [,3] [,4]
#> [1,] 1.000 -0.098 -0.176 0.319
#> [2,] -0.098 1.000 0.527 -0.418
#> [3,] -0.176 0.527 1.000 -0.401
#> [4,] 0.319 -0.418 -0.401 1.000
# var-cov matrix of partials
Psy <- model_out_random$varcov_beta
round(mars:::var_path(part_cor, Psy, type = 'pcor'), 4)
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> [1,] 0.0175 0.0010 0.0047 0.0005 -0.0073 0.0018
#> [2,] 0.0010 0.0029 0.0031 -0.0006 0.0004 -0.0016
#> [3,] 0.0047 0.0031 0.0079 -0.0013 -0.0002 -0.0022
#> [4,] 0.0005 -0.0006 -0.0013 0.0016 -0.0003 0.0012
#> [5,] -0.0073 0.0004 -0.0002 -0.0003 0.0058 -0.0027
#> [6,] 0.0018 -0.0016 -0.0022 0.0012 -0.0027 0.0035Here we work with partial correlation for each study and then synthesize that information.
#---------------------------------------------------------------------
# Create a data set with 8 complete studies
#---------------------------------------------------------------------
library(corpcor)
R <- becker09_list
R$"6" <- NULL
R$"17" <- NULL
n <- becker09$N[c(-3, -5)]
#------------------------------------------------------------------
# first replace NA by zeros
RR <- R # redefine list
PR <- lapply(RR, cor2pcor)
pr <- unlist(lapply(PR, '[[', 4))
var_pr <- (1-pr^2)^2 / (n - 3 -1)
#> Warning in (1 - pr^2)^2/(n - 3 - 1): longer object length is not a multiple of
#> shorter object length
#id <- becker09$ID[c(-3, -5)]
dat_pr <- data.frame(cbind("id" =becker09$ID, pr, var_pr))
mars(formula = pr ~ 1,
data = dat_pr, studyID = 'id',
variance = 'var_pr', varcov_type = 'univariate',
structure = 'univariate',
estimation_method = "MLE") |> summary()
#> Results generated with MARS:v 0.5.1.1
#> Thursday, April 2, 2026
#>
#> Model Type:
#> univariate
#>
#> Estimation Method:
#> Maximum Likelihood
#>
#> Model Formula:
#> pr ~ 1
#>
#> Data Summary:
#> Number of Effect Sizes: 8
#> Number of Fixed Effects: 1
#> Number of Random Effects: 1
#>
#> Random Components:
#> term var SD
#> intercept 0.05691 0.2386
#>
#> Fixed Effects Estimates:
#> attribute estimate SE z_test p_value lower upper
#> (Intercept) 0.2916 0.09402 3.101 0.001927 0.1073 0.4759
#>
#> Model Fit Statistics:
#> logLik Dev AIC BIC AICc
#> -0.5591 7.118 5.118 5.277 35.12
#>
#> Q Error: 64.183 (7), p < 0.0001
#>
#> I2 (General): 89.30451
#>
#> Residual Diagnostics:
#> n n_finite_raw mean_raw sd_raw rmse mae q_pearson mean_abs_studentized
#> 8 8 -0.02248 0.2681 0.2518 0.2201 7.51 0.9032
#> max_abs_studentized prop_abs_studentized_gt2 prop_abs_studentized_gt3
#> 1.609 0 0
#>
#> Normality (whitened residuals): test n_tested statistic p_value
#> shapiro_wilk_whitened 8 0.954 0.7517
#>
#> Heteroscedasticity trend (|raw residual| ~ fitted): n corr_abs_raw_fitted slope p_value
#> 8 NA NA NA