Learn R Programming

psychmeta (version 2.6.4)

correct_r: Correct correlations for range restriction and/or measurement error

Description

Corrects Pearson correlations (r) for range restriction and/or measurement error

Usage

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
)

Value

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).

Arguments

correction

Type of correction to be applied. Options are "meas", "uvdrr_x", "uvdrr_y", "uvirr_x", "uvirr_y", "bvdrr", "bvirr"

rxyi

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.

ux

Vector of u ratios for X.

uy

Vector of u ratios for Y.

rxx

Vector of reliability coefficients for X.

ryy

Vector of reliability coefficients for Y.

ux_observed

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.

uy_observed

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.

rxx_restricted

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.

rxx_type, ryy_type

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.

k_items_x, k_items_y

Numeric vector identifying the number of items in each scale.

ryy_restricted

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.

sign_rxz

Vector of signs of the relationships between X variables and the selection mechanism.

sign_ryz

Vector of signs of the relationships between Y variables and the selection mechanism.

n

Optional vector of sample sizes associated with the rxyi correlations.

conf_level

Confidence level to define the width of the confidence interval (default = .95).

correct_bias

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).

zero_substitute

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.

Details

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))

References

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.

Examples

Run this code
## 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