Last updated: 2020-06-05

Checks: 6 1

Knit directory: mcfa-para-est/

This reproducible R Markdown analysis was created with workflowr (version 1.6.2). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.


The R Markdown file has unstaged changes. To know which version of the R Markdown file created these results, you’ll want to first commit it to the Git repo. If you’re still working on the analysis, you can ignore this warning. When you’re finished, you can run wflow_publish to commit the R Markdown file and build the HTML.

Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.

The command set.seed(20190614) was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.

Great job! Recording the operating system, R version, and package versions is critical for reproducibility.

Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.

Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.

Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.

The results in this page were generated with repository version eecb366. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.

Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish or wflow_git_commit). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:


Ignored files:
    Ignored:    .Rhistory
    Ignored:    .Rproj.user/
    Ignored:    data/compiled_para_results.txt
    Ignored:    data/results_bias_est.csv
    Ignored:    data/results_bias_se.csv
    Ignored:    fig/
    Ignored:    manuscript/
    Ignored:    output/fact-cov-converge-largeN.pdf
    Ignored:    output/fact-cov-converge-medN.pdf
    Ignored:    output/fact-cov-converge-smallN.pdf
    Ignored:    output/loading-converge-largeN.pdf
    Ignored:    output/loading-converge-medN.pdf
    Ignored:    output/loading-converge-smallN.pdf
    Ignored:    references/
    Ignored:    sera-presentation/

Untracked files:
    Untracked:  analysis/ml-cfa-parameter-anova-estimates.Rmd
    Untracked:  analysis/ml-cfa-parameter-anova-relative-bias.Rmd
    Untracked:  analysis/ml-cfa-parameter-bias-latent-ICC.Rmd
    Untracked:  analysis/ml-cfa-parameter-bias-observed-ICC.Rmd
    Untracked:  analysis/ml-cfa-parameter-convergence-correlation-pubfigure.Rmd
    Untracked:  analysis/ml-cfa-parameter-convergence-trace-plots-factor-loadings.Rmd
    Untracked:  analysis/ml-cfa-standard-error-anova-logSE.Rmd
    Untracked:  analysis/ml-cfa-standard-error-anova-relative-bias.Rmd
    Untracked:  analysis/ml-cfa-standard-error-bias-factor-loadings.Rmd
    Untracked:  analysis/ml-cfa-standard-error-bias-overview.Rmd
    Untracked:  code/r_functions.R
    Untracked:  renv.lock
    Untracked:  renv/

Unstaged changes:
    Modified:   .Rprofile
    Modified:   .gitignore
    Modified:   analysis/index.Rmd
    Modified:   analysis/ml-cfa-convergence-summary.Rmd
    Modified:   analysis/ml-cfa-parameter-convergence-correlation-factor-loadings.Rmd
    Modified:   code/get_data.R
    Modified:   code/load_packages.R

Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.


These are the previous versions of the repository in which changes were made to the R Markdown (analysis/ml-cfa-convergence-summary.Rmd) and HTML (docs/ml-cfa-convergence-summary.html) files. If you’ve configured a remote Git repository (see ?wflow_git_remote), click on the hyperlinks in the table below to view the files as they were in that past version.

File Version Author Date Message
html e17f2b3 noah-padgett 2020-03-31 Build site.
Rmd 35a72f4 noah-padgett 2020-03-30 initial commit
html 35a72f4 noah-padgett 2020-03-30 initial commit

rm(list=ls())
source(paste0(getwd(),"/code/load_packages.R"))
source(paste0(getwd(),"/code/get_data.R"))
sessionInfo()
R version 4.0.0 (2020-04-24)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base     

other attached packages:
 [1] xtable_1.8-4          kableExtra_1.1.0      cowplot_1.0.0        
 [4] MplusAutomation_0.7-3 data.table_1.12.8     patchwork_1.0.0      
 [7] forcats_0.5.0         stringr_1.4.0         dplyr_1.0.0          
[10] purrr_0.3.4           readr_1.3.1           tidyr_1.1.0          
[13] tibble_3.0.1          ggplot2_3.3.1         tidyverse_1.3.0      
[16] workflowr_1.6.2      

loaded via a namespace (and not attached):
 [1] httr_1.4.1        jsonlite_1.6.1    viridisLite_0.3.0 gsubfn_0.7       
 [5] modelr_0.1.8      assertthat_0.2.1  pander_0.6.3      blob_1.2.1       
 [9] renv_0.10.0       cellranger_1.1.0  yaml_2.2.1        pillar_1.4.4     
[13] backports_1.1.7   lattice_0.20-41   glue_1.4.1        digest_0.6.25    
[17] promises_1.1.0    rvest_0.3.5       colorspace_1.4-1  htmltools_0.4.0  
[21] httpuv_1.5.3.1    plyr_1.8.6        pkgconfig_2.0.3   broom_0.5.6      
[25] haven_2.3.1       scales_1.1.1      webshot_0.5.2     whisker_0.4      
[29] later_1.0.0       git2r_0.27.1      generics_0.0.2    ellipsis_0.3.1   
[33] withr_2.2.0       cli_2.0.2         proto_1.0.0       magrittr_1.5     
[37] crayon_1.3.4      readxl_1.3.1      evaluate_0.14     fs_1.4.1         
[41] fansi_0.4.1       nlme_3.1-147      xml2_1.3.2        tools_4.0.0      
[45] hms_0.5.3         lifecycle_0.2.0   munsell_0.5.0     reprex_0.3.0     
[49] compiler_4.0.0    rlang_0.4.6       grid_4.0.0        rstudioapi_0.11  
[53] texreg_1.37.1     rmarkdown_2.2     boot_1.3-24       gtable_0.3.0     
[57] DBI_1.1.0         R6_2.4.1          lubridate_1.7.8   knitr_1.28       
[61] rprojroot_1.3-2   stringi_1.4.6     parallel_4.0.0    Rcpp_1.0.4.6     
[65] vctrs_0.3.0       dbplyr_1.4.4      tidyselect_1.1.0  xfun_0.14        
[69] coda_0.19-3      

Convergence

Model converge is when …

Single Condition Breakdown

Estimation Method

c <- sim_results %>%
  group_by(Estimator) %>%
  summarise(Converge=mean(Converge))
`summarise()` ungrouping output (override with `.groups` argument)
colnames(c)<- c("Estimation Method", "Convergence")

kable(c, format='html', digits=4) %>%
    kable_styling(full_width = T)
Estimation Method Convergence
MLR 0.9998
ULSMV 0.9990
WLSMV 0.9998

Level-2 Sample Size

c <- sim_results %>%
  group_by(ss_l2) %>%
  summarise(Converge=mean(Converge))
`summarise()` ungrouping output (override with `.groups` argument)
colnames(c)<- c("Level-2 N", "Convergence")

kable(c, format='html', digits=4) %>%
    kable_styling(full_width = T)
Level-2 N Convergence
30 0.9984
50 0.9999
100 0.9999
200 0.9999

Level-1 Sample Size

c <- sim_results %>%
  group_by(ss_l1) %>%
  summarise(Converge=mean(Converge))
`summarise()` ungrouping output (override with `.groups` argument)
colnames(c)<- c("Level-1 N", "Convergence")

kable(c, format='html', digits=4) %>%
    kable_styling(full_width = T)
Level-1 N Convergence
5 0.9989
10 0.9998
30 0.9998

ICC Observed Variables

c <- sim_results %>%
  group_by(icc_ov) %>%
  summarise(Converge=mean(Converge))
`summarise()` ungrouping output (override with `.groups` argument)
colnames(c)<- c("ICC Observed Variable", "Convergence")

kable(c, format='html', digits=4) %>%
    kable_styling(full_width = T)
ICC Observed Variable Convergence
0.1 0.9998
0.3 0.9998
0.5 0.9989

ICC Latent Variables

c <- sim_results %>%
  group_by(icc_lv) %>%
  summarise(Converge=mean(Converge))
`summarise()` ungrouping output (override with `.groups` argument)
colnames(c)<- c("ICC Latent Variable", "Convergence")

kable(c, format='html', digits=4) %>%
    kable_styling(full_width = T)
ICC Latent Variable Convergence
0.1 0.9995
0.5 0.9995

Convergence by Estimation Method and Sample Sizes

Estimation Method & Level-2 Sample Size

c <- sim_results %>%
  group_by(Estimator, ss_l2) %>%
  summarise(Converge=mean(Converge))
`summarise()` regrouping output by 'Estimator' (override with `.groups` argument)
c1 <- cbind(c[ c$Estimator == 'MLR', c( 'ss_l2', 'Converge')], 
           c[ c$Estimator == 'ULSMV', 'Converge'], 
           c[ c$Estimator == 'WLSMV', 'Converge'])
colnames(c1) <- c('Level-2 N', 'MLR', 'ULSMV', 'WLSMV')


kable(c1, format='html', digits=4) %>%
  kable_styling(full_width = T) %>%
  add_header_above(c(' '= 1, 'Estimation Method'=3))
Estimation Method
Level-2 N MLR ULSMV WLSMV
30 1.0000 0.9961 0.9992
50 0.9999 0.9998 0.9999
100 0.9998 1.0000 1.0000
200 0.9996 1.0000 1.0000

Estimation Method & Level-1 Sample Size

c <- sim_results %>%
  group_by(Estimator, ss_l1) %>%
  summarise(Converge=mean(Converge))
`summarise()` regrouping output by 'Estimator' (override with `.groups` argument)
c1 <- cbind(c[ c$Estimator == 'MLR', c( 'ss_l1', 'Converge')], 
           c[ c$Estimator == 'ULSMV', 'Converge'], 
           c[ c$Estimator == 'WLSMV', 'Converge'])
colnames(c1) <- c('Level-1 N', 'MLR', 'ULSMV', 'WLSMV')


kable(c1, format='html', digits=4) %>%
  kable_styling(full_width = T) %>%
  add_header_above(c(' '= 1, 'Estimation Method'=3))
Estimation Method
Level-1 N MLR ULSMV WLSMV
5 0.9999 0.9973 0.9994
10 0.9999 0.9997 0.9999
30 0.9996 0.9999 1.0000

Estimation Method, Level-2 Sample Size & Level-1 Sample Size

c <- sim_results %>%
  group_by(Estimator, ss_l1, ss_l2) %>%
  summarise(Converge=mean(Converge))
`summarise()` regrouping output by 'Estimator', 'ss_l1' (override with `.groups` argument)
c1 <- cbind(c[ c$Estimator == 'MLR', c( 'ss_l1', 'ss_l2', 'Converge')], 
           c[ c$Estimator == 'ULSMV', 'Converge'], 
           c[ c$Estimator == 'WLSMV', 'Converge'])
New names:
* Converge -> Converge...3
* Converge -> Converge...4
* Converge -> Converge...5
colnames(c1) <- c('Level-1 N', 'Level-2 N', 'MLR', 'ULSMV', 'WLSMV')


kable(c1, format='html', digits=4) %>%
  kable_styling(full_width = T) %>%
  add_header_above(c(' '= 2, 'Estimation Method'=3))
Estimation Method
Level-1 N Level-2 N MLR ULSMV WLSMV
5 30 1.0000 0.9897 0.9977
5 50 1.0000 0.9997 1.0000
5 100 1.0000 1.0000 1.0000
5 200 0.9997 1.0000 1.0000
10 30 1.0000 0.9990 1.0000
10 50 1.0000 0.9997 0.9997
10 100 1.0000 1.0000 1.0000
10 200 0.9997 1.0000 1.0000
30 30 1.0000 0.9997 1.0000
30 50 0.9997 1.0000 1.0000
30 100 0.9993 1.0000 1.0000
30 200 0.9993 1.0000 1.0000

Across all conditions

c <- sim_results %>%
  group_by(Estimator, ss_l1, ss_l2, icc_ov, icc_lv) %>%
  summarise(Converge=mean(Converge))
`summarise()` regrouping output by 'Estimator', 'ss_l1', 'ss_l2', 'icc_ov' (override with `.groups` argument)
c1 <- cbind(c[ c$Estimator == 'MLR', c('ss_l2', 'ss_l1', 'icc_ov', 'icc_lv', 'Converge')],
            c[ c$Estimator == 'ULSMV', 'Converge'],
            c[ c$Estimator == 'WLSMV', 'Converge'])
New names:
* Converge -> Converge...5
* Converge -> Converge...6
* Converge -> Converge...7
colnames(c1) <- c('Level-2 N', 'Level-1 N', 'ICC-OV', 'ICC-LV', 'MLR', 'ULSMV', 'WLSMV')


kable(c1, format='html', digits=4) %>%
  kable_styling(full_width = T) %>%
  add_header_above(c(' '= 4, 'Estimation Method'=3))
Estimation Method
Level-2 N Level-1 N ICC-OV ICC-LV MLR ULSMV WLSMV
30 5 0.1 0.1 1.000 0.998 0.992
30 5 0.1 0.5 1.000 1.000 1.000
30 5 0.3 0.1 1.000 0.998 1.000
30 5 0.3 0.5 1.000 1.000 1.000
30 5 0.5 0.1 1.000 0.966 0.998
30 5 0.5 0.5 1.000 0.976 0.996
50 5 0.1 0.1 1.000 1.000 1.000
50 5 0.1 0.5 1.000 1.000 1.000
50 5 0.3 0.1 1.000 1.000 1.000
50 5 0.3 0.5 1.000 1.000 1.000
50 5 0.5 0.1 1.000 0.998 1.000
50 5 0.5 0.5 1.000 1.000 1.000
100 5 0.1 0.1 1.000 1.000 1.000
100 5 0.1 0.5 1.000 1.000 1.000
100 5 0.3 0.1 1.000 1.000 1.000
100 5 0.3 0.5 1.000 1.000 1.000
100 5 0.5 0.1 1.000 1.000 1.000
100 5 0.5 0.5 1.000 1.000 1.000
200 5 0.1 0.1 1.000 1.000 1.000
200 5 0.1 0.5 1.000 1.000 1.000
200 5 0.3 0.1 1.000 1.000 1.000
200 5 0.3 0.5 1.000 1.000 1.000
200 5 0.5 0.1 1.000 1.000 1.000
200 5 0.5 0.5 0.998 1.000 1.000
30 10 0.1 0.1 1.000 1.000 1.000
30 10 0.1 0.5 1.000 1.000 1.000
30 10 0.3 0.1 1.000 1.000 1.000
30 10 0.3 0.5 1.000 1.000 1.000
30 10 0.5 0.1 1.000 0.998 1.000
30 10 0.5 0.5 1.000 0.996 1.000
50 10 0.1 0.1 1.000 1.000 1.000
50 10 0.1 0.5 1.000 0.998 0.998
50 10 0.3 0.1 1.000 1.000 1.000
50 10 0.3 0.5 1.000 1.000 1.000
50 10 0.5 0.1 1.000 1.000 1.000
50 10 0.5 0.5 1.000 1.000 1.000
100 10 0.1 0.1 1.000 1.000 1.000
100 10 0.1 0.5 1.000 1.000 1.000
100 10 0.3 0.1 1.000 1.000 1.000
100 10 0.3 0.5 1.000 1.000 1.000
100 10 0.5 0.1 1.000 1.000 1.000
100 10 0.5 0.5 1.000 1.000 1.000
200 10 0.1 0.1 1.000 1.000 1.000
200 10 0.1 0.5 1.000 1.000 1.000
200 10 0.3 0.1 0.998 1.000 1.000
200 10 0.3 0.5 1.000 1.000 1.000
200 10 0.5 0.1 1.000 1.000 1.000
200 10 0.5 0.5 1.000 1.000 1.000
30 30 0.1 0.1 1.000 1.000 1.000
30 30 0.1 0.5 1.000 1.000 1.000
30 30 0.3 0.1 1.000 1.000 1.000
30 30 0.3 0.5 1.000 1.000 1.000
30 30 0.5 0.1 1.000 1.000 1.000
30 30 0.5 0.5 1.000 0.998 1.000
50 30 0.1 0.1 1.000 1.000 1.000
50 30 0.1 0.5 1.000 1.000 1.000
50 30 0.3 0.1 1.000 1.000 1.000
50 30 0.3 0.5 0.998 1.000 1.000
50 30 0.5 0.1 1.000 1.000 1.000
50 30 0.5 0.5 1.000 1.000 1.000
100 30 0.1 0.1 1.000 1.000 1.000
100 30 0.1 0.5 1.000 1.000 1.000
100 30 0.3 0.1 1.000 1.000 1.000
100 30 0.3 0.5 0.996 1.000 1.000
100 30 0.5 0.1 1.000 1.000 1.000
100 30 0.5 0.5 1.000 1.000 1.000
200 30 0.1 0.1 1.000 1.000 1.000
200 30 0.1 0.5 1.000 1.000 1.000
200 30 0.3 0.1 1.000 1.000 1.000
200 30 0.3 0.5 0.996 1.000 1.000
200 30 0.5 0.1 1.000 1.000 1.000
200 30 0.5 0.5 1.000 1.000 1.000

Admissibility Summary

Admissibility rates are first subsetted to the converged models. So, the rates may seem misleading and not directly relatable across all conditions and models due to differences in convergence rates.

c.sim_results <- filter(sim_results, Converge == 1)

Single Condition Breakdown

Estimation Method

c <- c.sim_results %>%
  group_by(Estimator) %>%
  summarise(Admissible=mean(Admissible))
`summarise()` ungrouping output (override with `.groups` argument)
colnames(c)<- c("Estimation Method", "Admissible")

kable(c, format='html', digits=4) %>%
    kable_styling(full_width = T)
Estimation Method Admissible
MLR 0.8340
ULSMV 0.7651
WLSMV 0.7217

Level-2 Sample Size

c <- c.sim_results %>%
  group_by(ss_l2) %>%
  summarise(Admissible=mean(Admissible))
`summarise()` ungrouping output (override with `.groups` argument)
colnames(c)<- c("Level-2 N", "Admissible")

kable(c, format='html', digits=4) %>%
    kable_styling(full_width = T)
Level-2 N Admissible
30 0.5993
50 0.7160
100 0.8424
200 0.9364

Level-1 Sample Size

c <- c.sim_results %>%
  group_by(ss_l1) %>%
  summarise(Admissible=mean(Admissible))
`summarise()` ungrouping output (override with `.groups` argument)
colnames(c)<- c("Level-1 N", "Admissible")

kable(c, format='html', digits=4) %>%
    kable_styling(full_width = T)
Level-1 N Admissible
5 0.6524
10 0.7837
30 0.8846

ICC Observed Variables

c <- c.sim_results %>%
  group_by(icc_ov) %>%
  summarise(Admissible=mean(Admissible))
`summarise()` ungrouping output (override with `.groups` argument)
colnames(c)<- c("ICC Observed Variable", "Admissible")

kable(c, format='html', digits=4) %>%
    kable_styling(full_width = T)
ICC Observed Variable Admissible
0.1 0.6774
0.3 0.8554
0.5 0.7881

ICC Latent Variables

c <- c.sim_results %>%
  group_by(icc_lv) %>%
  summarise(Admissible=mean(Admissible))
`summarise()` ungrouping output (override with `.groups` argument)
colnames(c)<- c("ICC Latent Variable", "Admissible")

kable(c, format='html', digits=4) %>%
    kable_styling(full_width = T)
ICC Latent Variable Admissible
0.1 0.6953
0.5 0.8520

Admissible Replications by Estimation Method and Sample Sizes

Estimation Method & Level-2 Sample Size

c <- c.sim_results %>%
  group_by(Estimator, ss_l2) %>%
  summarise(Admissible=mean(Admissible))
`summarise()` regrouping output by 'Estimator' (override with `.groups` argument)
c1 <- cbind(c[ c$Estimator == 'MLR', c( 'ss_l2', 'Admissible')], 
           c[ c$Estimator == 'ULSMV', 'Admissible'], 
           c[ c$Estimator == 'WLSMV', 'Admissible'])
colnames(c1) <- c('Level-2 N', 'MLR', 'ULSMV', 'WLSMV')

kable(c1, format='html', digits=4) %>%
  kable_styling(full_width = T) %>%
  add_header_above(c(' '= 1, 'Estimation Method'=3))
Estimation Method
Level-2 N MLR ULSMV WLSMV
30 0.6994 0.5809 0.5175
50 0.7916 0.7064 0.6501
100 0.8906 0.8366 0.8000
200 0.9543 0.9358 0.9192

Estimation Method & Level-1 Sample Size

c <- c.sim_results %>%
  group_by(Estimator, ss_l1) %>%
  summarise(Admissible=mean(Admissible))
`summarise()` regrouping output by 'Estimator' (override with `.groups` argument)
c1 <- cbind(c[ c$Estimator == 'MLR', c( 'ss_l1', 'Admissible')], 
           c[ c$Estimator == 'ULSMV', 'Admissible'], 
           c[ c$Estimator == 'WLSMV', 'Admissible'])
colnames(c1) <- c('Level-1 N', 'MLR', 'ULSMV', 'WLSMV')

kable(c1, format='html', digits=4) %>%
  kable_styling(full_width = T) %>%
  add_header_above(c(' '= 1, 'Estimation Method'=3))
Estimation Method
Level-1 N MLR ULSMV WLSMV
5 0.7455 0.6267 0.5849
10 0.8409 0.7780 0.7321
30 0.9156 0.8902 0.8481

Estimation Method, Level-2 Sample Size & Level-1 Sample Size

c <- c.sim_results %>%
  group_by(Estimator, ss_l1, ss_l2) %>%
  summarise(Admissible=mean(Admissible))
`summarise()` regrouping output by 'Estimator', 'ss_l1' (override with `.groups` argument)
c1 <- cbind(c[ c$Estimator == 'MLR', c( 'ss_l1', 'ss_l2', 'Admissible')], 
           c[ c$Estimator == 'ULSMV', 'Admissible'], 
           c[ c$Estimator == 'WLSMV', 'Admissible'])
New names:
* Admissible -> Admissible...3
* Admissible -> Admissible...4
* Admissible -> Admissible...5
colnames(c1) <- c('Level-1 N', 'Level-2 N', 'MLR', 'ULSMV', 'WLSMV')

kable(c1, format='html', digits=4) %>%
  kable_styling(full_width = T) %>%
  add_header_above(c(' '= 2, 'Estimation Method'=3))
Estimation Method
Level-1 N Level-2 N MLR ULSMV WLSMV
5 30 0.5753 0.4052 0.3558
5 50 0.6773 0.5318 0.4700
5 100 0.8057 0.6920 0.6647
5 200 0.9236 0.8753 0.8487
10 30 0.6847 0.5736 0.5080
10 50 0.7957 0.7076 0.6606
10 100 0.9200 0.8730 0.8243
10 200 0.9633 0.9577 0.9357
30 30 0.8383 0.7623 0.6883
30 50 0.9020 0.8797 0.8197
30 100 0.9463 0.9447 0.9110
30 200 0.9760 0.9743 0.9733

Admissible Replications for individual conditions

c <- c.sim_results %>%
  group_by(Estimator, ss_l1, ss_l2, icc_ov, icc_lv) %>%
  summarise(Admissible=mean(Admissible))
`summarise()` regrouping output by 'Estimator', 'ss_l1', 'ss_l2', 'icc_ov' (override with `.groups` argument)
c1 <- cbind(c[ c$Estimator == 'MLR', c('ss_l2', 'ss_l1', 'icc_ov', 'icc_lv', 'Admissible')],
            c[ c$Estimator == 'ULSMV', 'Admissible'],
            c[ c$Estimator == 'WLSMV', 'Admissible'])
New names:
* Admissible -> Admissible...5
* Admissible -> Admissible...6
* Admissible -> Admissible...7
colnames(c1) <- c('Level-2 N', 'Level-1 N', 'ICC-OV', 'ICC-LV', 'MLR', 'ULSMV', 'WLSMV')


kable(c1, format='html', digits=4) %>%
  kable_styling(full_width = T) %>%
  add_header_above(c(' '= 4, 'Estimation Method'=3))
Estimation Method
Level-2 N Level-1 N ICC-OV ICC-LV MLR ULSMV WLSMV
30 5 0.1 0.1 0.522 0.0301 0.0484
30 5 0.1 0.5 0.372 0.0360 0.0240
30 5 0.3 0.1 0.468 0.3567 0.2500
30 5 0.3 0.5 0.792 0.7300 0.6740
30 5 0.5 0.1 0.360 0.3354 0.2244
30 5 0.5 0.5 0.938 0.9529 0.9137
50 5 0.1 0.1 0.560 0.1380 0.1460
50 5 0.1 0.5 0.500 0.0920 0.0520
50 5 0.3 0.1 0.548 0.5420 0.4040
50 5 0.3 0.5 0.972 0.9380 0.8680
50 5 0.5 0.1 0.488 0.4830 0.3580
50 5 0.5 0.5 0.996 0.9980 0.9920
100 5 0.1 0.1 0.752 0.4940 0.5560
100 5 0.1 0.5 0.726 0.3140 0.2380
100 5 0.3 0.1 0.760 0.7580 0.6820
100 5 0.3 0.5 0.996 0.9900 0.9820
100 5 0.5 0.1 0.600 0.5960 0.5320
100 5 0.5 0.5 1.000 1.0000 0.9980
200 5 0.1 0.1 0.952 0.8900 0.9000
200 5 0.1 0.5 0.956 0.7280 0.6140
200 5 0.3 0.1 0.890 0.8800 0.8620
200 5 0.3 0.5 1.000 1.0000 1.0000
200 5 0.5 0.1 0.744 0.7540 0.7160
200 5 0.5 0.5 1.000 1.0000 1.0000
30 10 0.1 0.1 0.608 0.3520 0.3640
30 10 0.1 0.5 0.494 0.1340 0.0800
30 10 0.3 0.1 0.584 0.5740 0.4180
30 10 0.3 0.5 0.988 0.9520 0.8540
30 10 0.5 0.1 0.446 0.4489 0.3580
30 10 0.5 0.5 0.988 0.9819 0.9740
50 10 0.1 0.1 0.832 0.6680 0.7260
50 10 0.1 0.5 0.762 0.3868 0.2184
50 10 0.3 0.1 0.698 0.6980 0.6180
50 10 0.3 0.5 1.000 0.9940 0.9760
50 10 0.5 0.1 0.482 0.4980 0.4240
50 10 0.5 0.5 1.000 1.0000 1.0000
100 10 0.1 0.1 0.970 0.9320 0.9460
100 10 0.1 0.5 0.988 0.7540 0.5180
100 10 0.3 0.1 0.890 0.8840 0.8460
100 10 0.3 0.5 1.000 1.0000 0.9980
100 10 0.5 0.1 0.672 0.6680 0.6380
100 10 0.5 0.5 1.000 1.0000 1.0000
200 10 0.1 0.1 1.000 0.9980 1.0000
200 10 0.1 0.5 1.000 0.9780 0.8560
200 10 0.3 0.1 0.984 0.9800 0.9800
200 10 0.3 0.5 1.000 1.0000 1.0000
200 10 0.5 0.1 0.796 0.7900 0.7780
200 10 0.5 0.5 1.000 1.0000 1.0000
30 30 0.1 0.1 0.950 0.9020 0.8900
30 30 0.1 0.5 0.938 0.5180 0.2340
30 30 0.3 0.1 0.688 0.6900 0.6360
30 30 0.3 0.5 1.000 0.9900 0.9500
30 30 0.5 0.1 0.460 0.4820 0.4320
30 30 0.5 0.5 0.994 0.9920 0.9880
50 30 0.1 0.1 0.996 0.9880 0.9900
50 30 0.1 0.5 0.994 0.8440 0.5520
50 30 0.3 0.1 0.830 0.8480 0.8160
50 30 0.3 0.5 1.000 1.0000 1.0000
50 30 0.5 0.1 0.592 0.5980 0.5600
50 30 0.5 0.5 1.000 1.0000 1.0000
100 30 0.1 0.1 1.000 1.0000 1.0000
100 30 0.1 0.5 1.000 0.9700 0.8120
100 30 0.3 0.1 0.962 0.9600 0.9620
100 30 0.3 0.5 1.000 1.0000 1.0000
100 30 0.5 0.1 0.716 0.7380 0.6920
100 30 0.5 0.5 1.000 1.0000 1.0000
200 30 0.1 0.1 1.000 1.0000 1.0000
200 30 0.1 0.5 1.000 1.0000 0.9820
200 30 0.3 0.1 0.998 1.0000 0.9980
200 30 0.3 0.5 1.000 1.0000 1.0000
200 30 0.5 0.1 0.858 0.8460 0.8600
200 30 0.5 0.5 1.000 1.0000 1.0000

Manuscript Table(s)

c <- sim_results %>%
  group_by(Estimator, ss_l2) %>%
  mutate(A = ifelse(is.na(Admissible), 0, Admissible)) %>%
  summarise(Admissible=mean(A, na.rm = T))
`summarise()` regrouping output by 'Estimator' (override with `.groups` argument)
c1 <- cbind(c[ c$Estimator == 'MLR', c( 'ss_l2','Admissible')], 
           c[ c$Estimator == 'ULSMV', 'Admissible'], 
           c[ c$Estimator == 'WLSMV', 'Admissible'])
colnames(c1) <- c('Level-2 N_2', 'MLR', 'ULSMV', 'WLSMV')


kable(c1, format='html', digits=3) %>%
  kable_styling(full_width = T)
Level-2 N_2 MLR ULSMV WLSMV
30 0.699 0.579 0.517
50 0.792 0.706 0.650
100 0.890 0.837 0.800
200 0.954 0.936 0.919
print(xtable(c1, digits = 3,align=c("l", "l", "r", "r", "r"),
             display=c("s", "d", "f", "f", "f"),
             caption="Rates of admissible replications",
             label="tb:admiss"),
      booktabs = T, include.rownames = F,
      caption.placement = "top")
% latex table generated in R 4.0.0 by xtable 1.8-4 package
% Fri Jun 05 10:47:52 2020
\begin{table}[ht]
\centering
\caption{Rates of admissible replications} 
\label{tb:admiss}
\begin{tabular}{lrrr}
  \toprule
Level-2 N\_2 & MLR & ULSMV & WLSMV \\ 
  \midrule
  30 & 0.699 & 0.579 & 0.517 \\ 
    50 & 0.792 & 0.706 & 0.650 \\ 
   100 & 0.890 & 0.837 & 0.800 \\ 
   200 & 0.954 & 0.936 & 0.919 \\ 
   \bottomrule
\end{tabular}
\end{table}
# Version 2
c <- sim_results %>%
  group_by(Estimator, ss_l2, ss_l1) %>%
  mutate(A = ifelse(is.na(Admissible), 0, Admissible)) %>%
  summarise(Admissible=mean(A, na.rm = T))
`summarise()` regrouping output by 'Estimator', 'ss_l2' (override with `.groups` argument)
c1 <- cbind(c[ c$Estimator == 'MLR', c('ss_l2', 'ss_l1', 'Admissible')], 
           c[ c$Estimator == 'ULSMV', 'Admissible'], 
           c[ c$Estimator == 'WLSMV', 'Admissible'])
New names:
* Admissible -> Admissible...3
* Admissible -> Admissible...4
* Admissible -> Admissible...5
colnames(c1) <- c('Level-2 N_2', "Level-1 N_1", 'MLR', 'ULSMV', 'WLSMV')


kable(c1, format='html', digits=3) %>%
  kable_styling(full_width = T)
Level-2 N_2 Level-1 N_1 MLR ULSMV WLSMV
30 5 0.575 0.401 0.355
30 10 0.685 0.573 0.508
30 30 0.838 0.762 0.688
50 5 0.677 0.532 0.470
50 10 0.796 0.707 0.660
50 30 0.902 0.880 0.820
100 5 0.806 0.692 0.665
100 10 0.920 0.873 0.824
100 30 0.946 0.945 0.911
200 5 0.923 0.875 0.849
200 10 0.963 0.958 0.936
200 30 0.975 0.974 0.973
print(xtable(c1, digits = 3,align=c("l", "l","l", "r", "r", "r"),
             display=c("s","s", "d", "f", "f", "f"),
             caption="Convergence rates indicate problems for all estimation methods",
             label="tb:admiss"),
      booktabs = T, include.rownames = F,
      caption.placement = "top")
Warning in formatC(x = c(30, 30, 30, 50, 50, 50, 100, 100, 100, 200, 200, :
coercing argument to "character" for format="s"
% latex table generated in R 4.0.0 by xtable 1.8-4 package
% Fri Jun 05 10:47:52 2020
\begin{table}[ht]
\centering
\caption{Convergence rates indicate problems for all estimation methods} 
\label{tb:admiss}
\begin{tabular}{llrrr}
  \toprule
Level-2 N\_2 & Level-1 N\_1 & MLR & ULSMV & WLSMV \\ 
  \midrule
 30 &    5 & 0.575 & 0.401 & 0.355 \\ 
   30 &   10 & 0.685 & 0.573 & 0.508 \\ 
   30 &   30 & 0.838 & 0.762 & 0.688 \\ 
   50 &    5 & 0.677 & 0.532 & 0.470 \\ 
   50 &   10 & 0.796 & 0.707 & 0.660 \\ 
   50 &   30 & 0.902 & 0.880 & 0.820 \\ 
  100 &    5 & 0.806 & 0.692 & 0.665 \\ 
  100 &   10 & 0.920 & 0.873 & 0.824 \\ 
  100 &   30 & 0.946 & 0.945 & 0.911 \\ 
  200 &    5 & 0.923 & 0.875 & 0.849 \\ 
  200 &   10 & 0.963 & 0.958 & 0.936 \\ 
  200 &   30 & 0.975 & 0.974 & 0.973 \\ 
   \bottomrule
\end{tabular}
\end{table}

sessionInfo()
R version 4.0.0 (2020-04-24)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base     

other attached packages:
 [1] xtable_1.8-4          kableExtra_1.1.0      cowplot_1.0.0        
 [4] MplusAutomation_0.7-3 data.table_1.12.8     patchwork_1.0.0      
 [7] forcats_0.5.0         stringr_1.4.0         dplyr_1.0.0          
[10] purrr_0.3.4           readr_1.3.1           tidyr_1.1.0          
[13] tibble_3.0.1          ggplot2_3.3.1         tidyverse_1.3.0      
[16] workflowr_1.6.2      

loaded via a namespace (and not attached):
 [1] httr_1.4.1        jsonlite_1.6.1    viridisLite_0.3.0 gsubfn_0.7       
 [5] modelr_0.1.8      assertthat_0.2.1  highr_0.8         pander_0.6.3     
 [9] blob_1.2.1        renv_0.10.0       cellranger_1.1.0  yaml_2.2.1       
[13] pillar_1.4.4      backports_1.1.7   lattice_0.20-41   glue_1.4.1       
[17] digest_0.6.25     promises_1.1.0    rvest_0.3.5       colorspace_1.4-1 
[21] htmltools_0.4.0   httpuv_1.5.3.1    plyr_1.8.6        pkgconfig_2.0.3  
[25] broom_0.5.6       haven_2.3.1       scales_1.1.1      webshot_0.5.2    
[29] whisker_0.4       later_1.0.0       git2r_0.27.1      generics_0.0.2   
[33] ellipsis_0.3.1    withr_2.2.0       cli_2.0.2         proto_1.0.0      
[37] magrittr_1.5      crayon_1.3.4      readxl_1.3.1      evaluate_0.14    
[41] fs_1.4.1          fansi_0.4.1       nlme_3.1-147      xml2_1.3.2       
[45] tools_4.0.0       hms_0.5.3         lifecycle_0.2.0   munsell_0.5.0    
[49] reprex_0.3.0      compiler_4.0.0    rlang_0.4.6       grid_4.0.0       
[53] rstudioapi_0.11   texreg_1.37.1     rmarkdown_2.2     boot_1.3-24      
[57] gtable_0.3.0      DBI_1.1.0         R6_2.4.1          lubridate_1.7.8  
[61] knitr_1.28        rprojroot_1.3-2   stringi_1.4.6     parallel_4.0.0   
[65] Rcpp_1.0.4.6      vctrs_0.3.0       dbplyr_1.4.4      tidyselect_1.1.0 
[69] xfun_0.14         coda_0.19-3