
Last chance! 50% off unlimited learning
Sale ends in
Corrects Pearson correlations (r) for range restriction and/or measurement error
correct_r(
correction = c("meas", "uvdrr_x", "uvdrr_y", "uvirr_x", "uvirr_y", "bvdrr", "bvirr"),
rxyi,
ux = 1,
uy = 1,
rxx = 1,
ryy = 1,
ux_observed = TRUE,
uy_observed = TRUE,
rxx_restricted = TRUE,
rxx_type = "alpha",
k_items_x = NA,
ryy_restricted = TRUE,
ryy_type = "alpha",
k_items_y = NA,
sign_rxz = 1,
sign_ryz = 1,
n = NULL,
conf_level = 0.95,
correct_bias = FALSE,
zero_substitute = .Machine$double.eps
)
Data frame(s) of observed correlations (rxyi
), operational range-restricted correlations corrected for measurement error in Y only (rxpi
), operational range-restricted correlations corrected for measurement error in X only (rtyi
), and range-restricted true-score correlations (rtpi
),
range-corrected observed-score correlations (rxya
), operational range-corrected correlations corrected for measurement error in Y only (rxpa
), operational range-corrected correlations corrected for measurement error in X only (rtya
), and range-corrected true-score correlations (rtpa
).
Type of correction to be applied. Options are "meas", "uvdrr_x", "uvdrr_y", "uvirr_x", "uvirr_y", "bvdrr", "bvirr"
Vector of observed correlations.
NOTE: Beginning in psychmeta version 2.5.2, rxyi
values of exactly 0 in individual-correction meta-analyses are replaced with a functionally equivalent value via the zero_substitute
argument to facilitate the estimation of effective sample sizes.
Vector of u ratios for X.
Vector of u ratios for Y.
Vector of reliability coefficients for X.
Vector of reliability coefficients for Y.
Logical vector in which each entry specifies whether the corresponding ux value is an observed-score u ratio (TRUE
) or a true-score u ratio. All entries are TRUE
by default.
Logical vector in which each entry specifies whether the corresponding uy value is an observed-score u ratio (TRUE
) or a true-score u ratio. All entries are TRUE
by default.
Logical vector in which each entry specifies whether the corresponding rxx value is an incumbent reliability (TRUE
) or an applicant reliability. All entries are TRUE
by default.
String vector identifying the types of reliability estimates supplied (e.g., "alpha", "retest", "interrater_r", "splithalf"). See the documentation for ma_r
for a full list of acceptable reliability types.
Numeric vector identifying the number of items in each scale.
Logical vector in which each entry specifies whether the corresponding rxx value is an incumbent reliability (TRUE
) or an applicant reliability. All entries are TRUE
by default.
Vector of signs of the relationships between X variables and the selection mechanism.
Vector of signs of the relationships between Y variables and the selection mechanism.
Optional vector of sample sizes associated with the rxyi correlations.
Confidence level to define the width of the confidence interval (default = .95).
Logical argument that determines whether to correct error-variance estimates for small-sample bias in correlations (TRUE
) or not (FALSE
).
For sporadic corrections (e.g., in mixed artifact-distribution meta-analyses), this should be set to FALSE
, the default).
Value to be used as a functionally equivalent substitute for exactly zero effect sizes to facilitate the estimation of effective sample sizes. By default, this is set to .Machine$double.eps
.
The correction for measurement error is: _TP=_XY_XX_YYrtp = rxy / sqrt(rxx * ryy)
The correction for univariate direct range restriction is: _TP_a=[_XY_iu_X_YY_i(1u_X^2-1)_XY_i^2_YY_i+1]/_XX_artpa = (rxyi / (ux * sqrt(ryyi) * sqrt((1 / ux^2 - 1) * rxyi^2 / ryyi + 1))) / sqrt(rxxa)
The correction for univariate indirect range restriction is: _TP_a=_XY_iu_T_XX_i_YY_i(1u_T^2-1)_XY_i^2_XX_i_YY_i+1rtpa = rxyi / (ut * sqrt(rxxi * ryyi) * sqrt((1 / ut^2 - 1) * rxyi^2 / (rxxi * ryyi) + 1))
The correction for bivariate direct range restriction is: _TP_a=_XY_i^2-12_XY_iu_Xu_Y+sign(_XY_i)(1-_XY_i^2)^24_XY_iu_X^2u_Y^2+1_XX_a_YY_artpa = (((rxyi^2 - 1)/(2 * rxyi)) * ux * uy + sign[rxyi] * sqrt(((1 - rxyi^2)^2) / (4 * rxyi) * ux^2 * uy^2 + 1)) / (sqrt(rxxa * ryya))
The correction for bivariate indirect range restriction is: _TP_a=_XY_iu_Xu_Y+|1-u_X^2||1-u_Y^2|_XX_a_YY_artpa = (rxyi * ux * uy + lambda * sqrt(abs(1 - ux^2) * abs(1 - uy^2)) / (sqrt(rxxa * ryya))
where the lambda value allows u_Xux and u_Yuy to fall on either side of unity so as to function as a two-stage correction for mixed patterns of range restriction and range enhancement. The value is computed as: =sign[_ST_a_SP_a(1-u_X)(1-u_Y)]sign(1-u_X)(u_X,1u_X)+sign(1-u_Y)(u_Y,1u_Y)(u_X,1u_X)(u_Y,1u_Y) = sign[rsta * rspa * (1 - ux) * (1 - uy)] * (sign[1 - ux ] * min(ux, 1/ux) + sign[1 - uy] * min(uy, 1/uy)) / (min(ux, 1/ux) * min(uy,1/uy))
Alexander, R. A., Carson, K. P., Alliger, G. M., & Carr, L. (1987). Correcting doubly truncated correlations: An improved approximation for correcting the bivariate normal correlation when truncation has occurred on both variables. Educational and Psychological Measurement, 47(2), 309–315. tools:::Rd_expr_doi("10.1177/0013164487472002")
Dahlke, J. A., & Wiernik, B. M. (2020). Not restricted to selection research: Accounting for indirect range restriction in organizational research. Organizational Research Methods, 23(4), 717–749. tools:::Rd_expr_doi("10.1177/1094428119859398")
Hunter, J. E., Schmidt, F. L., & Le, H. (2006). Implications of direct and indirect range restriction for meta-analysis methods and findings. Journal of Applied Psychology, 91(3), 594–612. tools:::Rd_expr_doi("10.1037/0021-9010.91.3.594")
Le, H., Oh, I.-S., Schmidt, F. L., & Wooldridge, C. D. (2016). Correction for range restriction in meta-analysis revisited: Improvements and implications for organizational research. Personnel Psychology, 69(4), 975–1008. tools:::Rd_expr_doi("10.1111/peps.12122")
Schmidt, F. L., & Hunter, J. E. (2015). Methods of meta-analysis: Correcting error and bias in research findings (3rd ed.). Sage. tools:::Rd_expr_doi("10.4135/9781483398105"). pp. 43-44, 140–141.
## Correction for measurement error only
correct_r(correction = "meas", rxyi = .3, rxx = .8, ryy = .8,
ux_observed = TRUE, uy_observed = TRUE, rxx_restricted = TRUE, ryy_restricted = TRUE)
correct_r(correction = "meas", rxyi = .3, rxx = .8, ryy = .8,
ux_observed = TRUE, uy_observed = TRUE, rxx_restricted = TRUE, ryy_restricted = TRUE, n = 100)
## Correction for direct range restriction in X
correct_r(correction = "uvdrr_x", rxyi = .3, ux = .8, rxx = .8, ryy = .8,
ux_observed = TRUE, uy_observed = TRUE, rxx_restricted = TRUE, ryy_restricted = TRUE)
correct_r(correction = "uvdrr_x", rxyi = .3, ux = .8, rxx = .8, ryy = .8,
ux_observed = TRUE, uy_observed = TRUE, rxx_restricted = TRUE, ryy_restricted = TRUE, n = 100)
## Correction for indirect range restriction in X
correct_r(correction = "uvirr_x", rxyi = .3, ux = .8, rxx = .8, ryy = .8,
ux_observed = TRUE, uy_observed = TRUE, rxx_restricted = TRUE, ryy_restricted = TRUE)
correct_r(correction = "uvirr_x", rxyi = .3, ux = .8, rxx = .8, ryy = .8,
ux_observed = TRUE, uy_observed = TRUE, rxx_restricted = TRUE, ryy_restricted = TRUE, n = 100)
## Correction for direct range restriction in X and Y
correct_r(correction = "bvdrr", rxyi = .3, ux = .8, uy = .8, rxx = .8, ryy = .8,
ux_observed = TRUE, uy_observed = TRUE, rxx_restricted = TRUE, ryy_restricted = TRUE)
correct_r(correction = "bvdrr", rxyi = .3, ux = .8, uy = .8, rxx = .8, ryy = .8,
ux_observed = TRUE, uy_observed = TRUE, rxx_restricted = TRUE, ryy_restricted = TRUE, n = 100)
## Correction for indirect range restriction in X and Y
correct_r(correction = "bvirr", rxyi = .3, ux = .8, uy = .8, rxx = .8, ryy = .8,
ux_observed = TRUE, uy_observed = TRUE, rxx_restricted = TRUE, ryy_restricted = TRUE)
correct_r(correction = "bvirr", rxyi = .3, ux = .8, uy = .8, rxx = .8, ryy = .8,
ux_observed = TRUE, uy_observed = TRUE, rxx_restricted = TRUE, ryy_restricted = TRUE, n = 100)
Run the code above in your browser using DataLab