betaMC: Monte Carlo for Regression Effect Sizes
Ivan Jacob Agaloos Pesigan
Source:vignettes/betaMC.Rmd
betaMC.Rmd
Description
Generates Monte Carlo confidence intervals for standardized
regression coefficients (beta) and other effect sizes, including
multiple correlation, semipartial correlations, improvement in
R-squared, squared partial correlations, and differences in standardized
regression coefficients, for models fitted by lm()
.
betaMC
combines ideas from Monte Carlo confidence intervals
for the indirect effect (Pesigan and Cheung, 2023: http://doi.org/10.3758/s13428-023-02114-4) and the
sampling covariance matrix of regression coefficients (Dudgeon, 2017: http://doi.org/10.1007/s11336-017-9563-z) to generate
confidence intervals effect sizes in regression.
Installation
You can install the CRAN release of betaMC
with:
install.packages("betaMC")
You can install the development version of betaMC
from
GitHub with:
if (!require("remotes")) install.packages("remotes")
remotes::install_github("jeksterslab/betaMC")
Example
In this example, a multiple regression model is fitted using program
quality ratings (QUALITY
) as the regressand/outcome
variable and number of published articles attributed to the program
faculty members (NARTIC
), percent of faculty members
holding research grants (PCTGRT
), and percentage of program
graduates who received support (PCTSUPP
) as
regressor/predictor variables using a data set from 1982 ratings of 46
doctoral programs in psychology in the USA (National Research Council, 1982). Confidence
intervals for the standardized regression coefficients are generated
using the BetaMC()
function from the betaMC
package.
df <- betaMC::nas1982
Regression
Fit the regression model using the lm()
function.
object <- lm(QUALITY ~ NARTIC + PCTGRT + PCTSUPP, data = df)
Monte Carlo Sampling Distribution of Parameters
Normal-Theory Approach
mvn <- MC(object, type = "mvn")
Asymptotic distribution-free Approach
adf <- MC(object, type = "adf")
Heteroskedasticity Consistent Approach (HC3)
hc3 <- MC(object, type = "hc3")
Standardized Regression Slopes
Normal-Theory Approach
BetaMC(mvn, alpha = 0.05)
#> Call:
#> BetaMC(object = mvn, alpha = 0.05)
#>
#> Standardized regression slopes
#> type = "mvn"
#> est se R 2.5% 97.5%
#> NARTIC 0.4951 0.0759 20000 0.3381 0.6340
#> PCTGRT 0.3915 0.0772 20000 0.2390 0.5411
#> PCTSUPP 0.2632 0.0743 20000 0.1174 0.4099
Asymptotic distribution-free Approach
BetaMC(adf, alpha = 0.05)
#> Call:
#> BetaMC(object = adf, alpha = 0.05)
#>
#> Standardized regression slopes
#> type = "adf"
#> est se R 2.5% 97.5%
#> NARTIC 0.4951 0.0676 20000 0.3513 0.6142
#> PCTGRT 0.3915 0.0707 20000 0.2428 0.5208
#> PCTSUPP 0.2632 0.0772 20000 0.1041 0.4102
Heteroskedasticity Consistent Approach (HC3)
BetaMC(hc3, alpha = 0.05)
#> Call:
#> BetaMC(object = hc3, alpha = 0.05)
#>
#> Standardized regression slopes
#> type = "hc3"
#> est se R 2.5% 97.5%
#> NARTIC 0.4951 0.0796 20000 0.3251 0.6375
#> PCTGRT 0.3915 0.0820 20000 0.2191 0.5388
#> PCTSUPP 0.2632 0.0856 20000 0.0904 0.4277
Other Effect Sizes
The betaMC
package also has functions to generate Monte
Carlo confidence intervals for other effect sizes such as
RSqMC()
for multiple correlation coefficients (R-squared
and adjusted R-squared), DeltaRSqMC()
for improvement in
R-squared, SCorMC()
for semipartial correlation
coefficients, PCorMC()
for squared partial correlation
coefficients, and DiffBetaMC()
for differences of
standardized regression coefficients.
Multiple Correlation Coefficients (R-squared and adjusted R-squared)
RSqMC(hc3, alpha = 0.05)
#> Call:
#> RSqMC(object = hc3, alpha = 0.05)
#>
#> R-squared and adjusted R-squared
#> type = "hc3"
#> est se R 2.5% 97.5%
#> rsq 0.8045 0.0620 20000 0.6466 0.8883
#> adj 0.7906 0.0664 20000 0.6214 0.8803
Improvement in R-squared
DeltaRSqMC(hc3, alpha = 0.05)
#> Call:
#> DeltaRSqMC(object = hc3, alpha = 0.05)
#>
#> Improvement in R-squared
#> type = "hc3"
#> est se R 2.5% 97.5%
#> NARTIC 0.1859 0.0694 20000 0.0499 0.3235
#> PCTGRT 0.1177 0.0543 20000 0.0250 0.2349
#> PCTSUPP 0.0569 0.0378 20000 0.0062 0.1509
Semipartial Correlation Coefficients
SCorMC(hc3, alpha = 0.05)
#> Call:
#> SCorMC(object = hc3, alpha = 0.05)
#>
#> Semipartial correlations
#> type = "hc3"
#> est se R 2.5% 97.5%
#> NARTIC 0.4312 0.0872 20000 0.2235 0.5688
#> PCTGRT 0.3430 0.0830 20000 0.1583 0.4846
#> PCTSUPP 0.2385 0.0784 20000 0.0784 0.3885
Squared Partial Correlation Coefficients
PCorMC(hc3, alpha = 0.05)
#> Call:
#> PCorMC(object = hc3, alpha = 0.05)
#>
#> Squared partial correlations
#> type = "hc3"
#> est se R 2.5% 97.5%
#> NARTIC 0.4874 0.1197 20000 0.1751 0.6493
#> PCTGRT 0.3757 0.1155 20000 0.1043 0.5530
#> PCTSUPP 0.2254 0.1126 20000 0.0254 0.4569
Differences of Standardized Regression Coefficients
DiffBetaMC(hc3, alpha = 0.05)
#> Call:
#> DiffBetaMC(object = hc3, alpha = 0.05)
#>
#> Differences of standardized regression slopes
#> type = "hc3"
#> est se R 2.5% 97.5%
#> NARTIC-PCTGRT 0.1037 0.1418 20000 -0.1736 0.3791
#> NARTIC-PCTSUPP 0.2319 0.1331 20000 -0.0378 0.4826
#> PCTGRT-PCTSUPP 0.1282 0.1372 20000 -0.1464 0.3871
Documentation
See GitHub Pages for package documentation.