Ivan Jacob Agaloos Pesigan 2025-07-22
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.0760 20000 0.3385 0.6366
#> PCTGRT 0.3915 0.0766 20000 0.2366 0.5372
#> PCTSUPP 0.2632 0.0749 20000 0.1178 0.4113
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.0683 20000 0.3502 0.6175
#> PCTGRT 0.3915 0.0719 20000 0.2403 0.5214
#> PCTSUPP 0.2632 0.0767 20000 0.1061 0.4063
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.0790 20000 0.3259 0.6338
#> PCTGRT 0.3915 0.0822 20000 0.2192 0.5415
#> PCTSUPP 0.2632 0.0856 20000 0.0894 0.4230
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.0614 20000 0.6477 0.8873
#> adj 0.7906 0.0658 20000 0.6225 0.8793
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.0683 20000 0.0503 0.3177
#> PCTGRT 0.1177 0.0548 20000 0.0254 0.2386
#> PCTSUPP 0.0569 0.0374 20000 0.0060 0.1490
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.0861 20000 0.2242 0.5637
#> PCTGRT 0.3430 0.0832 20000 0.1592 0.4885
#> PCTSUPP 0.2385 0.0783 20000 0.0774 0.3860
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.1192 20000 0.1804 0.6503
#> PCTGRT 0.3757 0.1157 20000 0.1076 0.5546
#> PCTSUPP 0.2254 0.1127 20000 0.0255 0.4559
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.1417 20000 -0.1752 0.3756
#> NARTIC-PCTSUPP 0.2319 0.1322 20000 -0.0351 0.4816
#> PCTGRT-PCTSUPP 0.1282 0.1371 20000 -0.1480 0.3915
Documentation
See GitHub Pages for package documentation.