Learn R Programming

psychmeta (version 2.3.4)

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

Description

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

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.

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

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

Details

The correction for measurement error is: $$\rho_{TP}=\frac{\rho_{XY}}{\sqrt{\rho_{XX}\rho_{YY}}}$$

The correction for univariate direct range restriction is: $$\rho_{TP_{a}}=\left[\frac{\rho_{XY_{i}}}{u_{X}\sqrt{\rho_{YY_{i}}}\sqrt{\left(\frac{1}{u_{X}^{2}}-1\right)\frac{\rho_{XY_{i}}^{2}}{\rho_{YY_{i}}}+1}}\right]/\sqrt{\rho_{XX_{a}}}$$

The correction for univariate indirect range restriction is: $$\rho_{TP_{a}}=\frac{\rho_{XY_{i}}}{u_{T}\sqrt{\rho_{XX_{i}}\rho_{YY_{i}}}\sqrt{\left(\frac{1}{u_{T}^{2}}-1\right)\frac{\rho_{XY_{i}}^{2}}{\rho_{XX_{i}}\rho_{YY_{i}}}+1}}$$

The correction for bivariate direct range restriction is: $$\rho_{TP_{a}}=\frac{\frac{\rho_{XY_{i}}^{2}-1}{2\rho_{XY_{i}}}u_{X}u_{Y}+\mathrm{sign}\left(\rho_{XY_{i}}\right)\sqrt{\frac{\left(1-\rho_{XY_{i}}^{2}\right)^{2}}{4\rho_{XY_{i}}}u_{X}^{2}u_{Y}^{2}+1}}{\sqrt{\rho_{XX_{a}}\rho_{YY_{a}}}}$$

The correction for bivariate indirect range restriction is: $$\rho_{TP_{a}}=\frac{\rho_{XY_{i}}u_{X}u_{Y}+\lambda\sqrt{\left|1-u_{X}^{2}\right|\left|1-u_{Y}^{2}\right|}}{\sqrt{\rho_{XX_{a}}\rho_{YY_{a}}}}$$

where the \(\lambda\) value allows \(u_{X}\) and \(u_{Y}\) 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 \(\lambda\) value is computed as: $$\lambda=\mathrm{sign}\left[\rho_{ST_{a}}\rho_{SP_{a}}\left(1-u_{X}\right)\left(1-u_{Y}\right)\right]\frac{\mathrm{sign}\left(1-u_{X}\right)\min\left(u_{X},\frac{1}{u_{X}}\right)+\mathrm{sign}\left(1-u_{Y}\right)\min\left(u_{Y},\frac{1}{u_{Y}}\right)}{\min\left(u_{X},\frac{1}{u_{X}}\right)\min\left(u_{Y},\frac{1}{u_{Y}}\right)}$$

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<U+2013>315. https://doi.org/10.1177/0013164487472002

Dahlke, J. A., & Wiernik, B. M. (2018). One of these artifacts is not like the others: Accounting for indirect range restriction in organizational and psychological research. Manuscript submitted for review.

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<U+2013>612. https://doi.org/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<U+2013>1008. https://doi.org/10.1111/peps.12122

Schmidt, F. L., & Hunter, J. E. (2015). Methods of meta-analysis: Correcting error and bias in research findings (3rd ed.). Thousand Oaks, CA: SAGE. https://doi.org/10/b6mg. pp. 43-44, 140<U+2013>141.

Examples

Run this code
# NOT RUN {
## Correction for measurement error only
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 = "meas", 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 direct range restriction in X
correct_r(correction = "uvdrr_x", 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 = "uvdrr_x", 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
correct_r(correction = "uvirr_x", 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 = "uvirr_x", 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 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