The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

MultiLevelOptimalBayes

MultiLevelOptimalBayes (MLOB)

MLOB is an R package for estimating between-group effects in multilevel latent variable models using an optimally regularized Bayesian estimator. It is especially useful for small-sample settings, low ICC data, and hierarchical models commonly used in psychology, education, and social sciences.

Features

Installation

To install the development version from GitHub:

install.packages("devtools")
devtools::install_github("MLOB-dev/MLOB")

MLOB is available on CRAN under the GPL-3 license. To install the released version:

install.packages("MultiLevelOptimalBayes")

View the Vignette

After installing the package, run the following to open the introductory vignette:

vignette("MultiLevelOptimalBayes-Intro")

Examples

library(MultiLevelOptimalBayes)

Fit a model on the iris dataset

result <- mlob(Sepal.Length ~ Sepal.Width + Petal.Length, data = iris,
               group = "Species", conf.level = 0.95)

View results

summary(result)
#> Call:
#>  mlob(Sepal.Length ~ Sepal.Width + Petal.Length, data = iris, group = Species, conf.level = 0.95) 
#> 
#> Summary of Coefficients:
#>                     Estimate Std. Error Lower CI (95%) Upper CI (95%)   Z value
#> beta_b             0.8308711  1.4655556    -2.04156502      3.7033072 0.5669325
#> gamma_Petal.Length 0.4679522  0.2582579    -0.03822406      0.9741285 1.8119567
#>                      Pr(>|z|) Significance
#> beta_b             0.57076004             
#> gamma_Petal.Length 0.06999289            .
#> 
#> 
#> For comparison, summary of coefficients from unoptimized analysis (ML):
#>                     Estimate   Std. Error Lower CI (95%) Upper CI (95%)
#> beta_b             0.6027440 5.424780e+15  -1.063237e+16   1.063237e+16
#> gamma_Petal.Length 0.4679522 2.582579e-01  -3.822406e-02   9.741285e-01
#>                         Z value   Pr(>|z|) Significance
#> beta_b             1.111094e-16 1.00000000             
#> gamma_Petal.Length 1.811957e+00 0.06999289            .
#> 
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Note:
#>   The standard error from unoptimized ML estimation is about 3.701518e+17% larger than the standard error obtained through our optimization procedure,
#>   meaning that the optimized estimates are more accurate.
#>   Concerning the estimates themselves, the unoptimized ML estimates may
#>   differ greatly from the optimized estimates and should not be reported.
#>   As the optimized estimates are always at least as accurate as the
#>   unoptimized ML estimates,
#>   please use them and their corresponding standard errors (first table of
#>   output) for interpretation and reporting.
#>   For more information, see Dashuk et al. (2025).

Available Methods

The mlob_result object supports a comprehensive set of methods that follow standard R conventions:

Display Methods

print(result)      # Display coefficients, standard errors, confidence intervals, Z-values, and p-values
#> Call:
#>  mlob(Sepal.Length ~ Sepal.Width + Petal.Length, data = iris, group = Species, conf.level = 0.95) 
#> 
#> Coefficients
#>     beta_b gamma_Petal.Length
#>  0.8308711          0.4679522
#> 
#> Standard_Error
#>    beta_b gamma_Petal.Length
#>  1.465556          0.2582579
#> 
#> Confidence_Interval (95%)
#>                          Lower     Upper
#> beta_b             -2.04156502 3.7033072
#> gamma_Petal.Length -0.03822406 0.9741285
#> 
#> Z value
#>     beta_b gamma_Petal.Length
#>  0.5669325           1.811957
#> 
#> p value
#>   beta_b gamma_Petal.Length
#>  0.57076         0.06999289
summary(result)   # Comprehensive summary with significance stars and comparison to unoptimized ML
#> Call:
#>  mlob(Sepal.Length ~ Sepal.Width + Petal.Length, data = iris, group = Species, conf.level = 0.95) 
#> 
#> Summary of Coefficients:
#>                     Estimate Std. Error Lower CI (95%) Upper CI (95%)   Z value
#> beta_b             0.8308711  1.4655556    -2.04156502      3.7033072 0.5669325
#> gamma_Petal.Length 0.4679522  0.2582579    -0.03822406      0.9741285 1.8119567
#>                      Pr(>|z|) Significance
#> beta_b             0.57076004             
#> gamma_Petal.Length 0.06999289            .
#> 
#> 
#> For comparison, summary of coefficients from unoptimized analysis (ML):
#>                     Estimate   Std. Error Lower CI (95%) Upper CI (95%)
#> beta_b             0.6027440 5.424780e+15  -1.063237e+16   1.063237e+16
#> gamma_Petal.Length 0.4679522 2.582579e-01  -3.822406e-02   9.741285e-01
#>                         Z value   Pr(>|z|) Significance
#> beta_b             1.111094e-16 1.00000000             
#> gamma_Petal.Length 1.811957e+00 0.06999289            .
#> 
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Note:
#>   The standard error from unoptimized ML estimation is about 3.701518e+17% larger than the standard error obtained through our optimization procedure,
#>   meaning that the optimized estimates are more accurate.
#>   Concerning the estimates themselves, the unoptimized ML estimates may
#>   differ greatly from the optimized estimates and should not be reported.
#>   As the optimized estimates are always at least as accurate as the
#>   unoptimized ML estimates,
#>   please use them and their corresponding standard errors (first table of
#>   output) for interpretation and reporting.
#>   For more information, see Dashuk et al. (2025).

Statistical Methods

coef(result)                    # Extract coefficients as a data frame
#>      beta_b gamma_Petal.Length
#> 1 0.8308711          0.4679522
se(result)                      # Extract standard errors
#>             beta_b gamma_Petal.Length 
#>          1.4655556          0.2582579
vcov(result)                    # Extract variance-covariance matrix (diagonal only)
#>             beta_b gamma_Petal.Length 
#>         2.14785309         0.06669717
confint(result)                 # Extract confidence intervals
#>                           2.5%     97.5%
#> beta_b             -2.04156502 3.7033072
#> gamma_Petal.Length -0.03822406 0.9741285
confint(result, "beta_b")       # Extract CI for specific parameter
#>             2.5%    97.5%
#> beta_b -2.041565 3.703307
confint(result, level = 0.99)   # Extract CI with different confidence level
#>                          0.5%    99.5%
#> beta_b             -2.9441499 4.605892
#> gamma_Petal.Length -0.1972762 1.133181

Utility Methods

as.data.frame(result)           # Convert results to a data frame format
#>                     Estimate Std. Error Lower CI (95%) Upper CI (95%)   Z value
#> beta_b             0.8308711  1.4655556    -2.04156502      3.7033072 0.5669325
#> gamma_Petal.Length 0.4679522  0.2582579    -0.03822406      0.9741285 1.8119567
#>                      Pr(>|z|)
#> beta_b             0.57076004
#> gamma_Petal.Length 0.06999289
dim(result)                     # Get dimensions (number of parameters)
#> [1] 1 2
length(result)                  # Get number of parameters
#> [1] 2
names(result)                   # Get parameter names
#> [1] "beta_b"             "gamma_Petal.Length"

Update Method

updated_result <- update(result, conf.level = 0.99)  # Update model with new parameters
summary(updated_result)
#> Call:
#>  mlob(Sepal.Length ~ Sepal.Width + Petal.Length, data = data, group = Species, conf.level = 0.99, jackknife = FALSE) 
#> 
#> Summary of Coefficients:
#>                     Estimate Std. Error Lower CI (99%) Upper CI (99%)   Z value
#> beta_b             0.8308711  1.4655556     -2.9441499       4.605892 0.5669325
#> gamma_Petal.Length 0.4679522  0.2582579     -0.1972762       1.133181 1.8119567
#>                      Pr(>|z|) Significance
#> beta_b             0.57076004             
#> gamma_Petal.Length 0.06999289            .
#> 
#> 
#> For comparison, summary of coefficients from unoptimized analysis (ML):
#>                     Estimate   Std. Error Lower CI (99%) Upper CI (99%)
#> beta_b             0.6027440 5.424780e+15  -1.397331e+16   1.397331e+16
#> gamma_Petal.Length 0.4679522 2.582579e-01  -1.972762e-01   1.133181e+00
#>                         Z value   Pr(>|z|) Significance
#> beta_b             1.111094e-16 1.00000000             
#> gamma_Petal.Length 1.811957e+00 0.06999289            .
#> 
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Note:
#>   The standard error from unoptimized ML estimation is about 3.701518e+17% larger than the standard error obtained through our optimization procedure,
#>   meaning that the optimized estimates are more accurate.
#>   Concerning the estimates themselves, the unoptimized ML estimates may
#>   differ greatly from the optimized estimates and should not be reported.
#>   As the optimized estimates are always at least as accurate as the
#>   unoptimized ML estimates,
#>   please use them and their corresponding standard errors (first table of
#>   output) for interpretation and reporting.
#>   For more information, see Dashuk et al. (2025).

Discover Available Methods

methods(class = "mlob_result")  # List all available methods
#>  [1] as.data.frame coef          confint       dim           length       
#>  [6] names         print         se            summary       update       
#> [11] vcov         
#> see '?methods' for accessing help and source code

All methods follow standard R conventions, making mlob_result objects compatible with existing R workflows and familiar to users of other statistical packages.

Limitations

Contributing & Support

Please open an issue at:

https://github.com/MLOB-dev/MLOB/issues

Users may also join discussions or suggest enhancements on the Discussions page at

https://github.com/MLOB-dev/MLOB/discussions.

Authors

Valerii Dashuk

Binayak Timilsina

Martin Hecht

Steffen Zitzmann

Citation

If you use MLOB in your research, please cite:

Dashuk, V., Hecht, M., Luedtke, O., Robitzsch, A., & Zitzmann, S. (2024). An Optimally Regularized Estimator of Multilevel Latent Variable Models, with Improved MSE Performance https://doi.org/10.13140/RG.2.2.18148.39048

Contact:

martin.hecht@hsu-hh.de

steffen.zitzmann@medicalschool-hamburg.de

multilob@outlook.com

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.