├── .github ├── .gitignore ├── .DS_Store └── workflows │ ├── test-coverage-covr.yaml │ ├── build.yml │ └── R-CMD-check.yaml ├── inst ├── skel_temp │ ├── test │ │ └── test_dgm.R │ ├── 1_data_gen.R │ ├── 2_estimation.R │ ├── 3_performance_criteria.R │ ├── 4_sim_driver.R │ └── 5_run_sim.R ├── .DS_Store ├── REFERENCES.bib └── templates │ └── simulation_skeleton.R ├── data ├── t_res.rda ├── alpha_res.rda ├── welch_res.rda └── Tipton_Pusto.rda ├── .gitignore ├── auxiliary ├── simhelpers.pdf ├── dplyr_1_summarize.R ├── diagrammer.R └── make_res_dat_optional.R ├── man ├── figures │ └── workflow.png ├── create_skeleton.Rd ├── alpha_res.Rd ├── t_res.Rd ├── welch_res.Rd ├── Tipton_Pusto.Rd ├── calc_rejection.Rd ├── repeat_and_stack.Rd ├── calc_absolute.Rd ├── calc_relative.Rd ├── calc_coverage.Rd ├── calc_relative_var.Rd ├── evaluate_by_row.Rd ├── bundle_sim.Rd ├── bootstrap_pvals.Rd └── extrapolate_rejection.Rd ├── docs ├── reference │ ├── Rplot001.png │ └── figures │ │ └── workflow.png ├── dev │ ├── reference │ │ ├── Rplot001.png │ │ └── figures │ │ │ └── workflow.png │ ├── deps │ │ ├── bootstrap-5.2.2 │ │ │ ├── fonts │ │ │ │ ├── S6uyw4BMUTPHvxo.woff │ │ │ │ ├── 4iCs6KVjbNBYlgo6ew.woff │ │ │ │ ├── 4iCs6KVjbNBYlgoKfw7w.woff │ │ │ │ ├── KFOmCnqEu92Fr1Me5g.woff │ │ │ │ ├── KFOmCnqEu92Fr1Mu4mxM.woff │ │ │ │ ├── S6u8w4BMUTPHjxsAXC-s.woff │ │ │ │ ├── S6u8w4BMUTPHjxswWA.woff │ │ │ │ ├── S6u9w4BMUTPHh6UVeww.woff │ │ │ │ ├── S6u9w4BMUTPHh7USeww.woff │ │ │ │ ├── S6uyw4BMUTPHjx4wWA.woff │ │ │ │ ├── q5uGsou0JOdh94bfvQlr.woff │ │ │ │ ├── 4iCv6KVjbNBYlgoCxCvTtA.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmEU9vAA.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmSU5vAA.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmWUlvAA.woff │ │ │ │ ├── S6u9w4BMUTPHh6UVSwiPHw.woff │ │ │ │ ├── S6u9w4BMUTPHh7USSwiPHw.woff │ │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjsGyL.woff │ │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_TOQ.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmEU9fBBc-.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmSU5fBBc-.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmWUlfBBc-.woff │ │ │ │ ├── pe0qMImSLYBIv1o4X1M8cfe5.woff │ │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff │ │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff │ │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff │ │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff │ │ │ │ ├── QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff │ │ │ │ ├── pe03MImSLYBIv1o4X1M8cc9iB_5p.woff │ │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff │ │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff │ │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff │ │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff │ │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff │ │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff │ │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff │ │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff │ │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff │ │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff │ │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff │ │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff │ │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff │ │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff │ │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff │ │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff │ │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff │ │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff │ │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff │ │ │ │ └── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff │ │ │ └── font.css │ │ ├── bootstrap-5.3.1 │ │ │ ├── fonts │ │ │ │ ├── S6uyw4BMUTPHvxo.woff │ │ │ │ ├── 4iCs6KVjbNBYlgo6ew.woff │ │ │ │ ├── 4iCs6KVjbNBYlgoKfw7w.woff │ │ │ │ ├── KFOmCnqEu92Fr1Me5g.woff │ │ │ │ ├── KFOmCnqEu92Fr1Mu4mxM.woff │ │ │ │ ├── S6u8w4BMUTPHjxsAXC-s.woff │ │ │ │ ├── S6u8w4BMUTPHjxswWA.woff │ │ │ │ ├── S6u9w4BMUTPHh6UVeww.woff │ │ │ │ ├── S6u9w4BMUTPHh7USeww.woff │ │ │ │ ├── S6uyw4BMUTPHjx4wWA.woff │ │ │ │ ├── q5uGsou0JOdh94bfvQlr.woff │ │ │ │ ├── 4iCv6KVjbNBYlgoCxCvTtA.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmEU9vAA.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmSU5vAA.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmWUlvAA.woff │ │ │ │ ├── S6u9w4BMUTPHh6UVSwiPHw.woff │ │ │ │ ├── S6u9w4BMUTPHh7USSwiPHw.woff │ │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjsGyL.woff │ │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_TOQ.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmEU9fBBc-.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmSU5fBBc-.woff │ │ │ │ ├── KFOlCnqEu92Fr1MmWUlfBBc-.woff │ │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff │ │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff │ │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff │ │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff │ │ │ │ ├── QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff │ │ │ │ ├── 1adeadb2fe618c5ed46221f15e12b9c8.woff │ │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff │ │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff │ │ │ │ ├── a98f7a7574819ba83bec6279a2cecd95.woff │ │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff │ │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff │ │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff │ │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff │ │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff │ │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff │ │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff │ │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff │ │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff │ │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff │ │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff │ │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff │ │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff │ │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff │ │ │ │ ├── HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DBKXhM0.woff │ │ │ │ ├── HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DMyQhM0.woff │ │ │ │ ├── HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1rSg.woff │ │ │ │ ├── HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTsoprSg.woff │ │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff │ │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff │ │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsgH1y4k.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgshZ1y4k.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjr0C4k.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk0ZjaVQ.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk_RkaVQ.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkxhjaVQ.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff │ │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff │ │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff │ │ │ │ └── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff │ │ │ └── font.css │ │ └── data-deps.txt │ ├── articles │ │ ├── visualization_files │ │ │ └── figure-html │ │ │ │ └── unnamed-chunk-4-1.png │ │ ├── simulation_workflow_files │ │ │ └── figure-html │ │ │ │ └── unnamed-chunk-7-1.png │ │ └── MCSE_files │ │ │ └── kePrint-0.0.1 │ │ │ └── kePrint.js │ ├── pkgdown.yml │ ├── link.svg │ ├── sitemap.xml │ └── pkgdown.js ├── deps │ ├── bootstrap-5.2.2 │ │ ├── fonts │ │ │ ├── S6uyw4BMUTPHvxo.woff │ │ │ ├── 4iCs6KVjbNBYlgo6ew.woff │ │ │ ├── KFOmCnqEu92Fr1Me5g.woff │ │ │ ├── S6u8w4BMUTPHjxswWA.woff │ │ │ ├── S6u9w4BMUTPHh6UVeww.woff │ │ │ ├── S6u9w4BMUTPHh7USeww.woff │ │ │ ├── S6uyw4BMUTPHjx4wWA.woff │ │ │ ├── 4iCs6KVjbNBYlgoKfw7w.woff │ │ │ ├── KFOmCnqEu92Fr1Mu4mxM.woff │ │ │ ├── S6u8w4BMUTPHjxsAXC-s.woff │ │ │ ├── q5uGsou0JOdh94bfvQlr.woff │ │ │ ├── 4iCv6KVjbNBYlgoCxCvTtA.woff │ │ │ ├── 4iCv6KVjbNBYlgoCxCvjsGyL.woff │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_TOQ.woff │ │ │ ├── KFOlCnqEu92Fr1MmEU9fBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmEU9vAA.woff │ │ │ ├── KFOlCnqEu92Fr1MmSU5fBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmSU5vAA.woff │ │ │ ├── KFOlCnqEu92Fr1MmWUlfBBc-.woff │ │ │ ├── KFOlCnqEu92Fr1MmWUlvAA.woff │ │ │ ├── S6u9w4BMUTPHh6UVSwiPHw.woff │ │ │ ├── S6u9w4BMUTPHh7USSwiPHw.woff │ │ │ ├── pe0qMImSLYBIv1o4X1M8cfe5.woff │ │ │ ├── CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff │ │ │ ├── QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff │ │ │ ├── pe03MImSLYBIv1o4X1M8cc9iB_5p.woff │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff │ │ │ ├── CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff │ │ │ ├── 6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff │ │ │ ├── 6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff │ │ │ ├── 6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff │ │ │ ├── XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff │ │ │ ├── 1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff │ │ │ ├── JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff │ │ │ ├── UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff │ │ │ ├── memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff │ │ │ ├── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff │ │ │ └── memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff │ │ └── font.css │ ├── font-awesome-6.4.2 │ │ └── webfonts │ │ │ ├── fa-brands-400.ttf │ │ │ ├── fa-regular-400.ttf │ │ │ ├── fa-solid-900.ttf │ │ │ ├── fa-solid-900.woff2 │ │ │ ├── fa-brands-400.woff2 │ │ │ ├── fa-regular-400.woff2 │ │ │ ├── fa-v4compatibility.ttf │ │ │ └── fa-v4compatibility.woff2 │ ├── font-awesome-6.5.2 │ │ └── webfonts │ │ │ ├── fa-brands-400.ttf │ │ │ ├── fa-regular-400.ttf │ │ │ ├── fa-solid-900.ttf │ │ │ ├── fa-solid-900.woff2 │ │ │ ├── fa-brands-400.woff2 │ │ │ ├── fa-regular-400.woff2 │ │ │ ├── fa-v4compatibility.ttf │ │ │ └── fa-v4compatibility.woff2 │ ├── headroom-0.11.0 │ │ ├── jQuery.headroom.min.js │ │ └── headroom.min.js │ ├── data-deps.txt │ └── bootstrap-toc-1.0.1 │ │ └── bootstrap-toc.min.js ├── articles │ ├── visualization_files │ │ └── figure-html │ │ │ └── unnamed-chunk-4-1.png │ ├── simulation_workflow_files │ │ └── figure-html │ │ │ └── unnamed-chunk-7-1.png │ ├── MCSE_files │ │ └── kePrint-0.0.1 │ │ │ └── kePrint.js │ └── index.html ├── pkgdown.yml ├── katex-auto.js ├── link.svg ├── sitemap.xml └── lightswitch.js ├── tests ├── testthat.R └── testthat │ ├── test_bootstrap_pval_construction.R │ ├── test_relative_variance.R │ ├── test_ebr.R │ ├── test_repeat_and_stack.R │ ├── test_winsorize_options.R │ ├── test_calc_combinations.R │ └── test_bundle_sim_with_ebr.R ├── .Rbuildignore ├── codecov.yml ├── R ├── alpha_res.R ├── t_res.R ├── simulation_skeleton.R ├── utilities.R ├── welch_res.R ├── Tipton_Pusto.R ├── repeat_and_stack.R ├── calc_relative.R ├── evaluate_by_row.R ├── calc_absolute.R └── calc_relative_var.R ├── SimHelpers.Rproj ├── NAMESPACE ├── data-raw ├── Tipton_Pusto.R ├── t_res.R ├── alpha_res.R └── welch_res_dat.R ├── cran-comments.md ├── _pkgdown.yml ├── DESCRIPTION └── NEWS.md /.github/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | -------------------------------------------------------------------------------- /inst/skel_temp/test/test_dgm.R: -------------------------------------------------------------------------------- 1 | # Test dgm ... 2 | -------------------------------------------------------------------------------- /data/t_res.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/data/t_res.rda -------------------------------------------------------------------------------- /inst/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/inst/.DS_Store -------------------------------------------------------------------------------- /.github/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/.github/.DS_Store -------------------------------------------------------------------------------- /data/alpha_res.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/data/alpha_res.rda -------------------------------------------------------------------------------- /data/welch_res.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/data/welch_res.rda -------------------------------------------------------------------------------- /data/Tipton_Pusto.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/data/Tipton_Pusto.rda -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | ^.Rproj.user/* 3 | .Rhistory 4 | .RData 5 | .Ruserdata 6 | SimHelpers.Rproj 7 | -------------------------------------------------------------------------------- /auxiliary/simhelpers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/auxiliary/simhelpers.pdf -------------------------------------------------------------------------------- /man/figures/workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/man/figures/workflow.png -------------------------------------------------------------------------------- /docs/reference/Rplot001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/reference/Rplot001.png -------------------------------------------------------------------------------- /docs/dev/reference/Rplot001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/reference/Rplot001.png -------------------------------------------------------------------------------- /docs/reference/figures/workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/reference/figures/workflow.png -------------------------------------------------------------------------------- /docs/dev/reference/figures/workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/reference/figures/workflow.png -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHvxo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHvxo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgo6ew.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgo6ew.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Me5g.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Me5g.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxswWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxswWA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVeww.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USeww.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHjx4wWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHjx4wWA.woff -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.5.2/webfonts/fa-brands-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.5.2/webfonts/fa-brands-400.ttf -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.5.2/webfonts/fa-regular-400.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.5.2/webfonts/fa-regular-400.ttf -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.5.2/webfonts/fa-solid-900.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.5.2/webfonts/fa-solid-900.ttf -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.5.2/webfonts/fa-solid-900.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.5.2/webfonts/fa-solid-900.woff2 -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHvxo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHvxo.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHvxo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHvxo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgoKfw7w.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgoKfw7w.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Mu4mxM.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Mu4mxM.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxsAXC-s.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxsAXC-s.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/q5uGsou0JOdh94bfvQlr.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/q5uGsou0JOdh94bfvQlr.woff -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.5.2/webfonts/fa-brands-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.5.2/webfonts/fa-brands-400.woff2 -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.5.2/webfonts/fa-regular-400.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.5.2/webfonts/fa-regular-400.woff2 -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USSwiPHw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-v4compatibility.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-v4compatibility.ttf -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.5.2/webfonts/fa-v4compatibility.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.5.2/webfonts/fa-v4compatibility.ttf -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgo6ew.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgo6ew.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgoKfw7w.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/4iCs6KVjbNBYlgoKfw7w.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Me5g.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Me5g.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Mu4mxM.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/KFOmCnqEu92Fr1Mu4mxM.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxsAXC-s.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxsAXC-s.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxswWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/S6u8w4BMUTPHjxswWA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVeww.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USeww.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHjx4wWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/S6uyw4BMUTPHjx4wWA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/q5uGsou0JOdh94bfvQlr.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/q5uGsou0JOdh94bfvQlr.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgo6ew.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgo6ew.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfw7w.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/4iCs6KVjbNBYlgoKfw7w.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Me5g.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Me5g.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4mxM.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/KFOmCnqEu92Fr1Mu4mxM.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAXC-s.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxsAXC-s.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxswWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/S6u8w4BMUTPHjxswWA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVeww.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USeww.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USeww.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjx4wWA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/S6uyw4BMUTPHjx4wWA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfvQlr.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/q5uGsou0JOdh94bfvQlr.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.4.2/webfonts/fa-v4compatibility.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.4.2/webfonts/fa-v4compatibility.woff2 -------------------------------------------------------------------------------- /docs/deps/font-awesome-6.5.2/webfonts/fa-v4compatibility.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/font-awesome-6.5.2/webfonts/fa-v4compatibility.woff2 -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/S6u9w4BMUTPHh7USSwiPHw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvTtA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9vAA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5vAA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlvAA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh6UVSwiPHw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwiPHw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/S6u9w4BMUTPHh7USSwiPHw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/4iCv6KVjbNBYlgoCxCvjsGyL.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_TOQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmEU9fBBc-.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmSU5fBBc-.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/KFOlCnqEu92Fr1MmWUlfBBc-.woff -------------------------------------------------------------------------------- /docs/articles/visualization_files/figure-html/unnamed-chunk-4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/articles/visualization_files/figure-html/unnamed-chunk-4-1.png -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvaNA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/CSR64z1Qlv-GDxkbKVQ_fOAKSw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff -------------------------------------------------------------------------------- /docs/dev/articles/visualization_files/figure-html/unnamed-chunk-4-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/articles/visualization_files/figure-html/unnamed-chunk-4-1.png -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3aPA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/CSR54z1Qlv-GDxkbKVQ_dFsvWNRevw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/QGYpz_kZZAGCONcK2A4bGOj8mNhL.woff -------------------------------------------------------------------------------- /docs/articles/simulation_workflow_files/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/articles/simulation_workflow_files/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/1adeadb2fe618c5ed46221f15e12b9c8.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/1adeadb2fe618c5ed46221f15e12b9c8.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPa7j.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/6xK3dSBYKcSV-LCoeQqfX1RYOo3qOK7j.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/a98f7a7574819ba83bec6279a2cecd95.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/a98f7a7574819ba83bec6279a2cecd95.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/6xK1dSBYKcSV-LCoeQqfX1RYOo3qPZ7nsDQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3i54rAkw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vAkw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zAkw.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDFwmRTA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDGUmRTA.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/XRXI3I6Li01BKofiOc5wtlZ2di8HDLshRTA.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff -------------------------------------------------------------------------------- /docs/dev/articles/simulation_workflow_files/figure-html/unnamed-chunk-7-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/articles/simulation_workflow_files/figure-html/unnamed-chunk-7-1.png -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ig4vwlxdo.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdo.woff -------------------------------------------------------------------------------- /tests/testthat.R: -------------------------------------------------------------------------------- 1 | library(testthat) 2 | library(simhelpers) 3 | library(dplyr) 4 | library(tibble) 5 | library(future) 6 | library(furrr) 7 | library(tidyr) 8 | 9 | test_check("simhelpers") 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVs9pbCIPrc.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrc.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtZ6Ew9.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCtr6Ew9.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/JTUHjIg1_i6t8kCHKm4532VJOt5-QNFgpCuM70w9.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DBKXhM0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DBKXhM0.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DMyQhM0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/HI_diYsKILxRpg3hIP6sJ7fM7PqPMcMnZFqUwX28DMyQhM0.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1rSg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTbI1rSg.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTsoprSg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/HI_jiYsKILxRpg3hIP6sJ7fM7PqlOPHYvDP_W9O7GQTTsoprSg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuFuYMZs.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuI6fMZs.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZs.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1y4k.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsgH1y4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsgH1y4k.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgshZ1y4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgshZ1y4k.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4k.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0C4k.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjr0C4k.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjr0C4k.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk0ZjaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk0ZjaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk_RkaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk_RkaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkxhjaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkxhjaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsg-1x4gaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsjZ0B4gaVQ.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.2.2/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk5hkWVAexg.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkWVAexg.woff -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/meghapsimatrix/simhelpers/HEAD/docs/dev/deps/bootstrap-5.3.1/fonts/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0RkyFjWVAexg.woff -------------------------------------------------------------------------------- /inst/skel_temp/1_data_gen.R: -------------------------------------------------------------------------------- 1 | 2 | #------------------------------------------------------ 3 | # Data Generating Model 4 | #------------------------------------------------------ 5 | 6 | generate_dat <- function(model_params) { 7 | 8 | return(dat) 9 | } 10 | -------------------------------------------------------------------------------- /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^codecov\.yml$ 2 | auxiliary 3 | ^.*\.Rproj$ 4 | ^\.Rproj\.user$ 5 | ^README\.md$ 6 | ^README\.Rmd$ 7 | cran-comments.md 8 | ^_pkgdown\.yml$ 9 | ^docs$ 10 | ^pkgdown$ 11 | ^\.github$ 12 | ^data-raw$ 13 | ^\.travis\.yml$ 14 | ^CRAN-RELEASE$ 15 | ^CRAN-SUBMISSION$ 16 | -------------------------------------------------------------------------------- /auxiliary/dplyr_1_summarize.R: -------------------------------------------------------------------------------- 1 | library(simhelpers) 2 | library(dplyr) 3 | 4 | welch_res %>% 5 | group_by(n1, n2, mean_diff, method) %>% 6 | summarize(calc_rejection(., p_val)) 7 | 8 | 9 | welch_res %>% 10 | group_by(n1, n2, mean_diff, method) %>% 11 | do(calc_rejection(., p_val)) 12 | -------------------------------------------------------------------------------- /inst/skel_temp/2_estimation.R: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------ 2 | # Model-fitting/estimation/testing functions 3 | #------------------------------------------------------ 4 | 5 | 6 | estimate <- function(dat, design_params) { 7 | 8 | return(results) 9 | } 10 | 11 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | comment: false 2 | 3 | coverage: 4 | status: 5 | project: 6 | default: 7 | target: auto 8 | threshold: 1% 9 | informational: true 10 | patch: 11 | default: 12 | target: auto 13 | threshold: 1% 14 | informational: true 15 | -------------------------------------------------------------------------------- /docs/dev/deps/data-deps.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/articles/MCSE_files/kePrint-0.0.1/kePrint.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | if (typeof $('[data-toggle="tooltip"]').tooltip === 'function') { 3 | $('[data-toggle="tooltip"]').tooltip(); 4 | } 5 | if ($('[data-toggle="popover"]').popover === 'function') { 6 | $('[data-toggle="popover"]').popover(); 7 | } 8 | }); 9 | -------------------------------------------------------------------------------- /docs/dev/articles/MCSE_files/kePrint-0.0.1/kePrint.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(){ 2 | if (typeof $('[data-toggle="tooltip"]').tooltip === 'function') { 3 | $('[data-toggle="tooltip"]').tooltip(); 4 | } 5 | if ($('[data-toggle="popover"]').popover === 'function') { 6 | $('[data-toggle="popover"]').popover(); 7 | } 8 | }); 9 | -------------------------------------------------------------------------------- /docs/pkgdown.yml: -------------------------------------------------------------------------------- 1 | pandoc: 3.1.1 2 | pkgdown: 2.1.1 3 | pkgdown_sha: ~ 4 | articles: 5 | MCSE: MCSE.html 6 | simulation_workflow: simulation_workflow.html 7 | visualization: visualization.html 8 | last_built: 2025-04-07T15:46Z 9 | urls: 10 | reference: https://meghapsimatrix.github.io/simhelpers/reference 11 | article: https://meghapsimatrix.github.io/simhelpers/articles 12 | -------------------------------------------------------------------------------- /docs/dev/pkgdown.yml: -------------------------------------------------------------------------------- 1 | pandoc: 3.1.1 2 | pkgdown: 2.0.7 3 | pkgdown_sha: ~ 4 | articles: 5 | MCSE: MCSE.html 6 | simulation_workflow: simulation_workflow.html 7 | visualization: visualization.html 8 | last_built: 2024-06-14T20:30Z 9 | urls: 10 | reference: https://meghapsimatrix.github.io/simhelpers/reference 11 | article: https://meghapsimatrix.github.io/simhelpers/articles 12 | 13 | -------------------------------------------------------------------------------- /inst/skel_temp/3_performance_criteria.R: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------ 2 | # Calculate performance measures 3 | # (For some simulations, it may make more sense 4 | # to do this as part of the simulation driver.) 5 | #------------------------------------------------------ 6 | 7 | calc_performance <- function(results, model_params) { 8 | 9 | return(performance_measures) 10 | } 11 | 12 | -------------------------------------------------------------------------------- /docs/deps/bootstrap-5.2.2/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Nunito Sans'; 3 | font-style: normal; 4 | font-weight: 400; 5 | font-display: swap; 6 | src: url(fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff) format('woff'); 7 | } 8 | @font-face { 9 | font-family: 'Nunito Sans'; 10 | font-style: normal; 11 | font-weight: 600; 12 | font-display: swap; 13 | src: url(fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff) format('woff'); 14 | } 15 | -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.2.2/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Nunito Sans'; 3 | font-style: normal; 4 | font-weight: 400; 5 | font-display: swap; 6 | src: url(fonts/pe0qMImSLYBIv1o4X1M8cfe5.woff) format('woff'); 7 | } 8 | @font-face { 9 | font-family: 'Nunito Sans'; 10 | font-style: normal; 11 | font-weight: 600; 12 | font-display: swap; 13 | src: url(fonts/pe03MImSLYBIv1o4X1M8cc9iB_5p.woff) format('woff'); 14 | } 15 | -------------------------------------------------------------------------------- /R/alpha_res.R: -------------------------------------------------------------------------------- 1 | #' Cronbach's alpha simulation results 2 | #' 3 | #' A dataset containing simulation results from estimating Cronbach's alpha and its variance. 4 | #' 5 | #' 6 | #' @format A tibble with 1,000 rows and 3 variables: 7 | #' \describe{ 8 | #' \item{A}{estimate of alpha.} 9 | #' \item{Var_A}{estimate of the variance of alpha.} 10 | #' \item{true_param}{true alpha used to generate the data.} 11 | #' 12 | #' } 13 | #' 14 | "alpha_res" 15 | -------------------------------------------------------------------------------- /man/create_skeleton.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/simulation_skeleton.R 3 | \name{create_skeleton} 4 | \alias{create_skeleton} 5 | \title{Open a simulation skeleton} 6 | \usage{ 7 | create_skeleton() 8 | } 9 | \description{ 10 | Creates and opens a .R file containing a skeleton for writing a Monte Carlo simulation study. 11 | } 12 | \examples{ 13 | \dontrun{ 14 | create_skeleton() 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /docs/dev/deps/bootstrap-5.3.1/font.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Nunito Sans'; 3 | font-style: normal; 4 | font-weight: 400; 5 | font-stretch: normal; 6 | font-display: swap; 7 | src: url(fonts/a98f7a7574819ba83bec6279a2cecd95.woff) format('woff'); 8 | } 9 | @font-face { 10 | font-family: 'Nunito Sans'; 11 | font-style: normal; 12 | font-weight: 600; 13 | font-stretch: normal; 14 | font-display: swap; 15 | src: url(fonts/1adeadb2fe618c5ed46221f15e12b9c8.woff) format('woff'); 16 | } 17 | -------------------------------------------------------------------------------- /SimHelpers.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | ProjectId: 29987943-af83-476d-863c-05b83f0b3081 3 | 4 | RestoreWorkspace: Default 5 | SaveWorkspace: Default 6 | AlwaysSaveHistory: Default 7 | 8 | EnableCodeIndexing: Yes 9 | UseSpacesForTab: Yes 10 | NumSpacesForTab: 2 11 | Encoding: UTF-8 12 | 13 | RnwWeave: Sweave 14 | LaTeX: pdfLaTeX 15 | 16 | AutoAppendNewline: Yes 17 | StripTrailingWhitespace: Yes 18 | 19 | BuildType: Package 20 | PackageUseDevtools: Yes 21 | PackageInstallArgs: --no-multiarch --with-keep.source 22 | PackageRoxygenize: rd,collate,namespace 23 | -------------------------------------------------------------------------------- /inst/skel_temp/4_sim_driver.R: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------- 2 | # Simulation Driver - should return a data.frame or tibble 3 | #----------------------------------------------------------- 4 | 5 | run_sim <- function(iterations, model_params, design_params, seed = NULL) { 6 | if (!is.null(seed)) set.seed(seed) 7 | 8 | results <- 9 | map_dfr(1:iterations, ~ { 10 | dat <- generate_dat(model_params) 11 | estimate(dat, design_params) 12 | }) 13 | 14 | calc_performance(results, model_params) 15 | } 16 | -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | # Generated by roxygen2: do not edit by hand 2 | 3 | export(bootstrap_CIs) 4 | export(bootstrap_pvals) 5 | export(bundle_sim) 6 | export(calc_absolute) 7 | export(calc_coverage) 8 | export(calc_rejection) 9 | export(calc_relative) 10 | export(calc_relative_var) 11 | export(create_skeleton) 12 | export(evaluate_by_row) 13 | export(extrapolate_coverage) 14 | export(extrapolate_rejection) 15 | export(repeat_and_stack) 16 | importFrom(Rdpack,reprompt) 17 | importFrom(stats,qnorm) 18 | importFrom(stats,quantile) 19 | importFrom(stats,sd) 20 | importFrom(stats,var) 21 | -------------------------------------------------------------------------------- /R/t_res.R: -------------------------------------------------------------------------------- 1 | #' t-test simulation results 2 | #' 3 | #' A dataset containing simulation results from a study that just runs a t-test. 4 | #' 5 | #' 6 | #' @format A tibble with 1,000 rows and 5 variables: 7 | #' \describe{ 8 | #' \item{est}{estimate of the mean difference.} 9 | #' \item{p_val}{p-value from the t-test.} 10 | #' \item{lower_bound}{lower bound of the confidence interval.} 11 | #' \item{upper_bound}{upper bound of the confidence interval.} 12 | #' \item{true_param}{true mean difference used to generate the data.} 13 | #' 14 | #' } 15 | #' 16 | "t_res" 17 | -------------------------------------------------------------------------------- /docs/deps/headroom-0.11.0/jQuery.headroom.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it 3 | * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js 4 | * License: MIT 5 | */ 6 | 7 | !function(a){a&&(a.fn.headroom=function(b){return this.each(function(){var c=a(this),d=c.data("headroom"),e="object"==typeof b&&b;e=a.extend(!0,{},Headroom.options,e),d||(d=new Headroom(this,e),d.init(),c.data("headroom",d)),"string"==typeof b&&(d[b](),"destroy"===b&&c.removeData("headroom"))})},a("[data-headroom]").each(function(){var b=a(this);b.headroom(b.data())}))}(window.Zepto||window.jQuery); -------------------------------------------------------------------------------- /man/alpha_res.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/alpha_res.R 3 | \docType{data} 4 | \name{alpha_res} 5 | \alias{alpha_res} 6 | \title{Cronbach's alpha simulation results} 7 | \format{ 8 | A tibble with 1,000 rows and 3 variables: 9 | \describe{ 10 | \item{A}{estimate of alpha.} 11 | \item{Var_A}{estimate of the variance of alpha.} 12 | \item{true_param}{true alpha used to generate the data.} 13 | 14 | } 15 | } 16 | \usage{ 17 | alpha_res 18 | } 19 | \description{ 20 | A dataset containing simulation results from estimating Cronbach's alpha and its variance. 21 | } 22 | \keyword{datasets} 23 | -------------------------------------------------------------------------------- /auxiliary/diagrammer.R: -------------------------------------------------------------------------------- 1 | library(DiagrammeR) 2 | 3 | grViz("digraph flowchart { 4 | # node definitions with substituted label text 5 | node [fontname = Helvetica, shape = rectangle] 6 | tab1 [label = '@@1'] 7 | tab2 [label = '@@2'] 8 | tab3 [label = '@@3'] 9 | tab4 [label = '@@4'] 10 | tab5 [label = '@@5'] 11 | 12 | # edge definitions with the node IDs 13 | tab1 -> tab2 -> tab3 -> tab4 -> tab5; 14 | } 15 | 16 | [1]: 'Experimental Design' 17 | [2]: 'Data Generating Model' 18 | [3]: 'Estimation Methods' 19 | [4]: 'Performance Summaries' 20 | [5]: 'Results' 21 | ") 22 | -------------------------------------------------------------------------------- /R/simulation_skeleton.R: -------------------------------------------------------------------------------- 1 | #' @title Open a simulation skeleton 2 | #' 3 | #' @description 4 | #' Creates and opens a .R file containing a skeleton for writing a Monte Carlo simulation study. 5 | #' 6 | #' 7 | #' @export 8 | #' 9 | #' @examples 10 | #' \dontrun{ 11 | #' create_skeleton() 12 | #' } 13 | 14 | create_skeleton <- function() { 15 | 16 | from <- system.file("templates", "simulation_skeleton.R", package = "simhelpers") 17 | file_contents <- readLines(from, encoding = "UTF-8") 18 | 19 | rstudioapi::documentNew(text = paste0(file_contents, collapse = "\n"), type = "r") 20 | 21 | return(NULL) 22 | } 23 | 24 | #------------------------------------------------------ 25 | -------------------------------------------------------------------------------- /docs/katex-auto.js: -------------------------------------------------------------------------------- 1 | // https://github.com/jgm/pandoc/blob/29fa97ab96b8e2d62d48326e1b949a71dc41f47a/src/Text/Pandoc/Writers/HTML.hs#L332-L345 2 | document.addEventListener("DOMContentLoaded", function () { 3 | var mathElements = document.getElementsByClassName("math"); 4 | var macros = []; 5 | for (var i = 0; i < mathElements.length; i++) { 6 | var texText = mathElements[i].firstChild; 7 | if (mathElements[i].tagName == "SPAN") { 8 | katex.render(texText.data, mathElements[i], { 9 | displayMode: mathElements[i].classList.contains("display"), 10 | throwOnError: false, 11 | macros: macros, 12 | fleqn: false 13 | }); 14 | }}}); 15 | -------------------------------------------------------------------------------- /man/t_res.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/t_res.R 3 | \docType{data} 4 | \name{t_res} 5 | \alias{t_res} 6 | \title{t-test simulation results} 7 | \format{ 8 | A tibble with 1,000 rows and 5 variables: 9 | \describe{ 10 | \item{est}{estimate of the mean difference.} 11 | \item{p_val}{p-value from the t-test.} 12 | \item{lower_bound}{lower bound of the confidence interval.} 13 | \item{upper_bound}{upper bound of the confidence interval.} 14 | \item{true_param}{true mean difference used to generate the data.} 15 | 16 | } 17 | } 18 | \usage{ 19 | t_res 20 | } 21 | \description{ 22 | A dataset containing simulation results from a study that just runs a t-test. 23 | } 24 | \keyword{datasets} 25 | -------------------------------------------------------------------------------- /data-raw/Tipton_Pusto.R: -------------------------------------------------------------------------------- 1 | ## code to prepare `DATASET` dataset goes here 2 | library(tidyverse) 3 | 4 | tp_dat <- read_csv("https://raw.githubusercontent.com/meghapsimatrix/datasets/master/sim_data/Simulation_results.csv") %>% 5 | rename(num_studies = 1) %>% 6 | mutate(q = str_sub(contrast, 3, 3)) 7 | 8 | Tipton_Pusto <- tp_dat %>% 9 | filter(num_studies %in% c(10, 20, 40, 80), test != "Naive F") %>% 10 | mutate(test = factor(test, levels = c("EDF", "EDT", "T^2 A", "T^2 B","T^2 Z"), 11 | labels = c("EDF", "EDT", "AHA", "AHB", "AHZ"))) %>% 12 | select(num_studies, r, Isq, contrast, test, q, rej_rate = p05) %>% 13 | mutate(mcse = sqrt((rej_rate * (1 - rej_rate)) / 10000)) 14 | 15 | usethis::use_data(Tipton_Pusto, overwrite = TRUE) 16 | -------------------------------------------------------------------------------- /R/utilities.R: -------------------------------------------------------------------------------- 1 | 2 | winsorize <- function(x, winz, na_val = NA) { 3 | if (!is.na(na_val)) x[is.na(x)] <- na_val 4 | quartiles <- stats::quantile(x, c(.25, .75), na.rm = TRUE) 5 | IQR <- diff(quartiles) 6 | trunc_points <- quartiles + c(-1, 1) * winz * IQR 7 | winsorization_pct <- mean((x < trunc_points[1]) | (x > trunc_points[2]), na.rm = TRUE) 8 | res <- pmax(pmin(x, trunc_points[2]), trunc_points[1]) 9 | attr(res, "winsor_pct") <- winsorization_pct 10 | return(res) 11 | } 12 | 13 | winsorize_by <- function(x, by, winz, na_val = NA) { 14 | res_list <- tapply(x, by, winsorize, winz = winz, na_val = na_val, simplify = FALSE) 15 | res <- unsplit(res_list, by) 16 | winsor_pct <- sapply(res_list, \(x) attr(x, "winsor_pct")) 17 | attr(res, "winsor_pct") <- winsor_pct 18 | res 19 | } 20 | -------------------------------------------------------------------------------- /docs/dev/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /docs/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /cran-comments.md: -------------------------------------------------------------------------------- 1 | ## Resubmission 2 | 3 | This is a resubmission and a minor release. The main change is to provide additional options for calculating bootstrap confidence intervals, including options to calculate bias-corrected or bias-corrected-and-accelerated intervals. 4 | 5 | ## Test environments 6 | 7 | * local Windows 11 Pro, R 4.4.1 8 | * local OS Big Sur, R 4.1.2 9 | * ubuntu 20.04.3 LTS (on Github), R devel, release, oldrelease 10 | * macOS-latest (on Github), R release 11 | * windows-latest (on Github), R release 12 | * win-builder (devel, release, oldrelease) 13 | * macOS builder: macOS 11.5.2, Apple M1 (release) 14 | 15 | ## R CMD check results 16 | 17 | There were no ERRORs or WARNINGs. There was one NOTE: 18 | 19 | Possibly misspelled words in DESCRIPTION: 20 | Zhang (11:658) 21 | studentized (11:420) 22 | 23 | The flagged words are spelled correctly. 24 | -------------------------------------------------------------------------------- /R/welch_res.R: -------------------------------------------------------------------------------- 1 | #' Welch t-test simulation results 2 | #' 3 | #' A dataset containing simulation results from a study comparing Welch t-test to the conventional t-test. 4 | #' 5 | #' 6 | #' @format A tibble with 16,000 rows and 11 variables: 7 | #' \describe{ 8 | #' \item{n1}{sample size for Group 1.} 9 | #' \item{n2}{sample size for Group 2.} 10 | #' \item{mean_diff}{true difference in means of two groups used to generate the data.} 11 | #' \item{iterations}{number of iterations.} 12 | #' \item{seed}{seed used to generate data.} 13 | #' \item{method}{indicates whether Welch or conventional t-test was used.} 14 | #' \item{est}{estimate of the mean difference.} 15 | #' \item{var}{variance of the estimate.} 16 | #' \item{p_val}{p-value from the t-test.} 17 | #' \item{lower_bound}{lower bound of the confidence interval.} 18 | #' \item{upper_bound}{upper bound of the confidence interval.} 19 | #' 20 | #' } 21 | #' 22 | "welch_res" 23 | -------------------------------------------------------------------------------- /docs/deps/data-deps.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.github/workflows/test-coverage-covr.yaml: -------------------------------------------------------------------------------- 1 | # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples 2 | # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help 3 | on: 4 | push: 5 | branches: [main, master] 6 | pull_request: 7 | branches: [main, master] 8 | 9 | name: test-coverage 10 | 11 | jobs: 12 | test-coverage: 13 | if: "! contains(github.event.head_commit.message, '[skip ci]')" 14 | runs-on: ubuntu-latest 15 | env: 16 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 17 | 18 | steps: 19 | - uses: actions/checkout@v4 20 | 21 | - uses: r-lib/actions/setup-r@v2 22 | with: 23 | use-public-rspm: true 24 | 25 | - uses: r-lib/actions/setup-r-dependencies@v2 26 | with: 27 | extra-packages: any::covr 28 | needs: coverage 29 | 30 | - name: Test coverage 31 | run: covr::codecov(quiet = FALSE) 32 | shell: Rscript {0} 33 | -------------------------------------------------------------------------------- /R/Tipton_Pusto.R: -------------------------------------------------------------------------------- 1 | #' Results for Figure 2 of Tipton & Pustejovsky (2015) 2 | #' 3 | #' A dataset containing simulation results comparing small sample correction 4 | #' methods for cluster robust variance estimation in meta-analysis. 5 | #' 6 | #' 7 | #' @format A tibble with 15,300 rows and 8 variables: 8 | #' \describe{ 9 | #' \item{num_studies}{the number of studies included in the meta-analysis.} 10 | #' \item{r}{correlation between outcomes.} 11 | #' \item{Isq}{measure of heterogeneity of true effects.} 12 | #' \item{contrast}{type of contrast that was tested.} 13 | #' \item{test}{small sample method used.} 14 | #' \item{q}{the number of parameters in the hypothesis test.} 15 | #' \item{rej_rate}{the Type 1 error rate.} 16 | #' \item{mcse}{the Monte Carlo standard error for the estimate of the Type 1 error rate.} 17 | #' 18 | #' } 19 | #' 20 | #' @source 21 | #' \insertRef{tipton_small-sample_2015}{simhelpers} 22 | #' 23 | #' @importFrom Rdpack reprompt 24 | #' 25 | "Tipton_Pusto" 26 | -------------------------------------------------------------------------------- /data-raw/t_res.R: -------------------------------------------------------------------------------- 1 | ## code to prepare `DATASET` dataset goes here 2 | 3 | library(tidyverse) 4 | library(broom) 5 | library(kableExtra) 6 | 7 | set.seed(20191228) 8 | 9 | # function to create normally distributed data for each group to run t test 10 | 11 | generate_dat <- function(n = 50, effect_x){ 12 | 13 | dat <- tibble(group_1 = rnorm(n, effect_x, 1), 14 | group_2 = rnorm(n, 0, 1)) 15 | 16 | return(dat) 17 | 18 | } 19 | 20 | 21 | # function to calculate t-test, pulls out estimate of the mean difference, p val and ci 22 | 23 | estimate_t <- function(sim_dat, effect_x){ 24 | 25 | res <- tidy(t.test(sim_dat$group_1, sim_dat$group_2)) %>% 26 | select(est = estimate, p_val = p.value, lower_bound = conf.low, upper_bound = conf.high) %>% 27 | mutate(true_param = effect_x) 28 | 29 | return(res) 30 | 31 | } 32 | 33 | 34 | # generating 1000 iterations 35 | 36 | t_res <- 37 | map_dfr(1:1000, ~ { 38 | dat <- generate_dat(effect_x = .5) 39 | estimate_t(dat, effect_x = .5) 40 | }) 41 | 42 | usethis::use_data(t_res, overwrite = TRUE) 43 | -------------------------------------------------------------------------------- /man/welch_res.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/welch_res.R 3 | \docType{data} 4 | \name{welch_res} 5 | \alias{welch_res} 6 | \title{Welch t-test simulation results} 7 | \format{ 8 | A tibble with 16,000 rows and 11 variables: 9 | \describe{ 10 | \item{n1}{sample size for Group 1.} 11 | \item{n2}{sample size for Group 2.} 12 | \item{mean_diff}{true difference in means of two groups used to generate the data.} 13 | \item{iterations}{number of iterations.} 14 | \item{seed}{seed used to generate data.} 15 | \item{method}{indicates whether Welch or conventional t-test was used.} 16 | \item{est}{estimate of the mean difference.} 17 | \item{var}{variance of the estimate.} 18 | \item{p_val}{p-value from the t-test.} 19 | \item{lower_bound}{lower bound of the confidence interval.} 20 | \item{upper_bound}{upper bound of the confidence interval.} 21 | 22 | } 23 | } 24 | \usage{ 25 | welch_res 26 | } 27 | \description{ 28 | A dataset containing simulation results from a study comparing Welch t-test to the conventional t-test. 29 | } 30 | \keyword{datasets} 31 | -------------------------------------------------------------------------------- /man/Tipton_Pusto.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/Tipton_Pusto.R 3 | \docType{data} 4 | \name{Tipton_Pusto} 5 | \alias{Tipton_Pusto} 6 | \title{Results for Figure 2 of Tipton & Pustejovsky (2015)} 7 | \format{ 8 | A tibble with 15,300 rows and 8 variables: 9 | \describe{ 10 | \item{num_studies}{the number of studies included in the meta-analysis.} 11 | \item{r}{correlation between outcomes.} 12 | \item{Isq}{measure of heterogeneity of true effects.} 13 | \item{contrast}{type of contrast that was tested.} 14 | \item{test}{small sample method used.} 15 | \item{q}{the number of parameters in the hypothesis test.} 16 | \item{rej_rate}{the Type 1 error rate.} 17 | \item{mcse}{the Monte Carlo standard error for the estimate of the Type 1 error rate.} 18 | 19 | } 20 | } 21 | \source{ 22 | \insertRef{tipton_small-sample_2015}{simhelpers} 23 | } 24 | \usage{ 25 | Tipton_Pusto 26 | } 27 | \description{ 28 | A dataset containing simulation results comparing small sample correction 29 | methods for cluster robust variance estimation in meta-analysis. 30 | } 31 | \keyword{datasets} 32 | -------------------------------------------------------------------------------- /man/calc_rejection.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/calc_rejection.R 3 | \name{calc_rejection} 4 | \alias{calc_rejection} 5 | \title{Calculate rejection rate and MCSE} 6 | \usage{ 7 | calc_rejection(data, p_values, alpha = 0.05, format = "wide") 8 | } 9 | \arguments{ 10 | \item{data}{data frame or tibble containing the simulation results.} 11 | 12 | \item{p_values}{vector or name of column from \code{data} containing 13 | p-values.} 14 | 15 | \item{alpha}{scalar or vector indicating the nominal alpha level(s). Default 16 | value is set to the conventional .05.} 17 | 18 | \item{format}{option \code{"wide"} (the default) will produce a tibble with 19 | one row, with separate variables for each specified \code{alpha}. Option 20 | \code{"long"} will produce a tibble with one row per specified 21 | \code{alpha}.} 22 | } 23 | \value{ 24 | A tibble containing the number of simulation iterations, performance 25 | criteria estimate and the associated MCSE. 26 | } 27 | \description{ 28 | Calculates rejection rate. The function also calculates the 29 | associated Monte Carlo standard error. 30 | } 31 | \examples{ 32 | calc_rejection(data = t_res, p_values = p_val) 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /auxiliary/make_res_dat_optional.R: -------------------------------------------------------------------------------- 1 | library(tidyverse) 2 | 3 | 4 | calc_rejection <- function(res_dat, p_values, alpha = .05){ 5 | 6 | if(missing(res_dat)){ 7 | 8 | p_vals <- p_values 9 | K <- length(p_values) 10 | 11 | } else{ 12 | 13 | p_vals <- res_dat %>% dplyr::pull({{p_values}}) 14 | K <- nrow(res_dat) 15 | 16 | } 17 | 18 | #dat1 <- tibble::tibble(rej_rate = mean(p_vals < alpha)) 19 | rej_rate <- mean(p_vals < alpha) 20 | rej_rate_mcse <- sqrt((rej_rate * (1 - rej_rate)) / K) 21 | 22 | 23 | dat <- nest(data.frame(rej_rate =rej_rate, 24 | rej_rate_mcse = rej_rate_mcse)) 25 | 26 | return(dat) 27 | 28 | } 29 | 30 | 31 | # Try to run -------------------------------------------------------------- 32 | 33 | load("data/t_res.rda") 34 | load("data/welch_res.rda") 35 | 36 | res <- t_res %>% 37 | calc_rejection(t_res, p_values = p_val) 38 | 39 | unnest(res) 40 | 41 | # runs but doesn't group 42 | welch_res %>% 43 | group_by(method) %>% 44 | calc_rejection(p_values = p_val) 45 | 46 | 47 | # the output is weird 48 | welch_res %>% 49 | group_by(method) %>% 50 | summarize(rmse = calc_rejection(p_values = p_val)) 51 | 52 | welch_res %>% 53 | group_by(method) %>% 54 | do(calc_rejection(., p_values = p_val)) 55 | -------------------------------------------------------------------------------- /data-raw/alpha_res.R: -------------------------------------------------------------------------------- 1 | ## code to prepare `DATASET` dataset goes here 2 | 3 | 4 | # Generate data ----------------------------------------------------------- 5 | 6 | library(mvtnorm) 7 | library(dplyr) 8 | 9 | r_mvt_items <- function(n, p, icc, df) { 10 | V_mat <- icc + diag(1 - icc, nrow = p) 11 | X <- rmvt(n = n, sigma = V_mat, df = df) 12 | colnames(X) <- LETTERS[1:p] 13 | X 14 | } 15 | 16 | 17 | # Estimate Alpha ---------------------------------------------------------- 18 | 19 | estimate_alpha <- function(dat, alpha) { 20 | V <- cov(dat) 21 | p <- ncol(dat) 22 | n <- nrow(dat) 23 | A <- p / (p - 1) * (1 - sum(diag(V)) / sum(V)) 24 | Var_A <- 2 * p * (1 - A)^2 / ((p - 1) * n) 25 | data.frame(A, Var_A, true_param = alpha) 26 | } 27 | 28 | 29 | # Replicates -------------------------------------------------------------- 30 | 31 | simulate_alpha <- function(reps, n, p, alpha, df) { 32 | icc <- alpha / (p - alpha * (p - 1)) 33 | replicate(reps, { 34 | dat <- r_mvt_items(n = n, p = p, icc = icc, df = df) 35 | estimate_alpha(dat, alpha) 36 | }, simplify = FALSE) %>% 37 | bind_rows() 38 | } 39 | 40 | reps <- 1000 41 | alpha_true <- 0.8 42 | alpha_res <- simulate_alpha(reps = reps, n = 40, p = 6, alpha = alpha_true, df = 5) 43 | 44 | 45 | usethis::use_data(alpha_res, overwrite = TRUE) 46 | -------------------------------------------------------------------------------- /_pkgdown.yml: -------------------------------------------------------------------------------- 1 | url: https://meghapsimatrix.github.io/simhelpers/ 2 | 3 | template: 4 | bootstrap: 5 5 | light-switch: true 6 | theme: arrow-light 7 | theme-dark: arrow-dark 8 | 9 | 10 | authors: 11 | Megha Joshi: 12 | href: "https://meghapsimatrix.com/" 13 | James Pustejovsky: 14 | href: "https://www.jepusto.com/" 15 | 16 | 17 | reference: 18 | - title: "Performance Criteria and MCSE" 19 | desc: "Functions for calculating performance critieria and MCSE" 20 | contents: 21 | - calc_absolute 22 | - calc_relative 23 | - calc_relative_var 24 | - calc_rejection 25 | - calc_coverage 26 | - title: "Simulating bootstrap processes" 27 | desc: "Specialized functions for simulations involving bootstrap hypothesis tests or bootstrap confidence intervals" 28 | contents: 29 | - bootstrap_pvals 30 | - bootstrap_CIs 31 | - extrapolate_rejection 32 | - extrapolate_coverage 33 | - title: "Simulation Workflow" 34 | desc: "Functions for facilitating simulation workflows" 35 | contents: 36 | - create_skeleton 37 | - repeat_and_stack 38 | - bundle_sim 39 | - evaluate_by_row 40 | - title: "Example Datasets" 41 | desc: "Example datasets from simulation studies" 42 | contents: 43 | - Tipton_Pusto 44 | - alpha_res 45 | - t_res 46 | - welch_res 47 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples 2 | # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help 3 | on: 4 | push: 5 | branches: [main, master] 6 | workflow_dispatch: 7 | 8 | name: pkgdown 9 | 10 | jobs: 11 | pkgdown: 12 | if: "! contains(github.event.head_commit.message, '[skip ci]')" 13 | runs-on: ubuntu-latest 14 | # Only restrict concurrency for non-PR jobs 15 | concurrency: 16 | group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} 17 | env: 18 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 19 | permissions: 20 | contents: write 21 | steps: 22 | - uses: actions/checkout@v4 23 | 24 | - uses: r-lib/actions/setup-pandoc@v2 25 | 26 | - uses: r-lib/actions/setup-r@v2 27 | with: 28 | use-public-rspm: true 29 | 30 | - uses: r-lib/actions/setup-r-dependencies@v2 31 | with: 32 | extra-packages: any::pkgdown, local::. 33 | needs: website 34 | 35 | - name: Build site 36 | run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) 37 | shell: Rscript {0} 38 | 39 | - name: Deploy to GitHub pages 🚀 40 | if: github.event_name != 'pull_request' 41 | uses: JamesIves/github-pages-deploy-action@v4.5.0 42 | with: 43 | clean: false 44 | branch: gh-pages 45 | folder: docs 46 | -------------------------------------------------------------------------------- /.github/workflows/R-CMD-check.yaml: -------------------------------------------------------------------------------- 1 | # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples 2 | # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help 3 | on: 4 | push: 5 | branches: [main, master] 6 | pull_request: 7 | branches: [main, master] 8 | 9 | name: R-CMD-check 10 | 11 | jobs: 12 | R-CMD-check: 13 | if: "! contains(github.event.head_commit.message, '[skip ci]')" 14 | runs-on: ${{ matrix.config.os }} 15 | 16 | name: ${{ matrix.config.os }} (${{ matrix.config.r }}) 17 | 18 | strategy: 19 | fail-fast: false 20 | matrix: 21 | config: 22 | - {os: macOS-latest, r: 'release'} 23 | - {os: windows-latest, r: 'release'} 24 | - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} 25 | - {os: ubuntu-latest, r: 'release'} 26 | - {os: ubuntu-latest, r: 'oldrel-1'} 27 | 28 | env: 29 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 30 | R_KEEP_PKG_SOURCE: yes 31 | 32 | steps: 33 | - uses: actions/checkout@v4 34 | 35 | - uses: r-lib/actions/setup-pandoc@v2 36 | 37 | - uses: r-lib/actions/setup-r@v2 38 | with: 39 | r-version: ${{ matrix.config.r }} 40 | http-user-agent: ${{ matrix.config.http-user-agent }} 41 | use-public-rspm: true 42 | 43 | - uses: r-lib/actions/setup-r-dependencies@v2 44 | with: 45 | extra-packages: any::rcmdcheck 46 | needs: check 47 | 48 | - uses: r-lib/actions/check-r-package@v2 49 | with: 50 | upload-snapshots: true 51 | -------------------------------------------------------------------------------- /man/repeat_and_stack.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/repeat_and_stack.R 3 | \name{repeat_and_stack} 4 | \alias{repeat_and_stack} 5 | \title{Repeat an expression multiple times and (optionally) stack the results.} 6 | \usage{ 7 | repeat_and_stack(n, expr, id = NULL, stack = TRUE) 8 | } 9 | \arguments{ 10 | \item{n}{Number of times to repeat the expression} 11 | 12 | \item{expr}{An expression to be evaluated.} 13 | 14 | \item{id}{Character string to use for creating a variable with a unique 15 | identifier for each repetition. If set to \code{NULL} (the default), then 16 | no identifier is created.} 17 | 18 | \item{stack}{Logical value indicating whether to organize the results into a 19 | \code{data.frame}.} 20 | } 21 | \value{ 22 | If \code{stack = TRUE} (the default), the results of each evaluation 23 | of \code{expr} will be stacked together using \code{rbind} and a unique identifier will be stored in the variable \code{id} (if specified). If \code{stack 24 | = FALSE}, a list of length \code{n} with entries corresponding to the 25 | output of each replication of \code{expr}, with names corresponding to the unique identifier (if specified) 26 | } 27 | \description{ 28 | Repeat an expression (usually involving random number 29 | generation) multiple times. Optionally, organize the results into a 30 | \code{data.frame} that stacks the output from all replications of the 31 | expression. 32 | } 33 | \examples{ 34 | repeat_and_stack(n = 3, data.frame(x = rexp(2))) 35 | repeat_and_stack(n = 3, data.frame(x = rexp(2)), id = "ID") 36 | 37 | repeat_and_stack(n = 3, data.frame(x = rexp(2)), stack = FALSE) 38 | repeat_and_stack(n = 3, data.frame(x = rexp(2)), id = "ID", stack = FALSE) 39 | 40 | } 41 | -------------------------------------------------------------------------------- /man/calc_absolute.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/calc_absolute.R 3 | \name{calc_absolute} 4 | \alias{calc_absolute} 5 | \title{Calculate absolute performance criteria and MCSE} 6 | \usage{ 7 | calc_absolute( 8 | data, 9 | estimates, 10 | true_param, 11 | criteria = c("bias", "variance", "stddev", "mse", "rmse"), 12 | winz = Inf 13 | ) 14 | } 15 | \arguments{ 16 | \item{data}{data frame or tibble containing the simulation results.} 17 | 18 | \item{estimates}{vector or name of column from \code{data} containing point 19 | estimates.} 20 | 21 | \item{true_param}{vector or name of column from \code{data} containing 22 | corresponding true parameters.} 23 | 24 | \item{criteria}{character or character vector indicating the performance 25 | criteria to be calculated, with possible options \code{"bias"}, 26 | \code{"variance"}, \code{"stddev"}, \code{"mse"}, and \code{"rmse"}.} 27 | 28 | \item{winz}{numeric value for winsorization constant. If set to a finite 29 | value, estimates will be winsorized at the constant multiple of the 30 | inter-quartile range below the 25th percentile or above the 75th percentile 31 | of the distribution. For instance, setting \code{winz = 3} will 32 | truncate estimates that fall below P25 - 3 * IQR or above P75 + 3 * IQR.} 33 | } 34 | \value{ 35 | A tibble containing the number of simulation iterations, performance 36 | criteria estimate(s) and the associated MCSE. 37 | } 38 | \description{ 39 | Calculates absolute bias, variance, mean squared error (mse) and 40 | root mean squared error (rmse). The function also calculates the associated 41 | Monte Carlo standard errors. 42 | } 43 | \examples{ 44 | calc_absolute(data = t_res, estimates = est, true_param = true_param) 45 | 46 | } 47 | -------------------------------------------------------------------------------- /man/calc_relative.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/calc_relative.R 3 | \name{calc_relative} 4 | \alias{calc_relative} 5 | \title{Calculate relative performance criteria and MCSE} 6 | \usage{ 7 | calc_relative( 8 | data, 9 | estimates, 10 | true_param, 11 | criteria = c("relative bias", "relative mse", "relative rmse"), 12 | winz = Inf 13 | ) 14 | } 15 | \arguments{ 16 | \item{data}{data frame or tibble containing the simulation results.} 17 | 18 | \item{estimates}{vector or name of column from \code{data} containing point 19 | estimates.} 20 | 21 | \item{true_param}{vector or name of column from \code{data} containing 22 | corresponding true parameters.} 23 | 24 | \item{criteria}{character or character vector indicating the performance 25 | criteria to be calculated, with possible options \code{"relative bias"}, 26 | \code{"relative mse"}, and \code{"relative rmse"}.} 27 | 28 | \item{winz}{numeric value for winsorization constant. If set to a finite 29 | value, estimates will be winsorized at the constant multiple of the 30 | inter-quartile range below the 25th percentile or above the 75th percentile 31 | of the distribution. For instance, setting \code{winz = 3} will 32 | truncate estimates that fall below P25 - 3 * IQR or above P75 + 3 * IQR.} 33 | } 34 | \value{ 35 | A tibble containing the number of simulation iterations, performance criteria estimate(s) 36 | and the associated MCSE. 37 | } 38 | \description{ 39 | Calculates relative bias, mean squared error (relative mse), and root mean squared error (relative rmse). 40 | The function also calculates the associated 41 | Monte Carlo standard errors. 42 | } 43 | \examples{ 44 | calc_relative(data = t_res, estimates = est, true_param = true_param) 45 | 46 | 47 | } 48 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Package: simhelpers 2 | Type: Package 3 | Title: Helper Functions for Simulation Studies 4 | Version: 0.3.1.9999 5 | Authors@R: c( 6 | person(given = "Megha", 7 | family = "Joshi", 8 | email = "megha.j456@gmail.com", 9 | role = c("aut", "cre"), 10 | comment = c(ORCID = "0000-0001-7936-076X")), 11 | person(given = "James", 12 | family = "Pustejovsky", 13 | email = "jepusto@gmail.com", 14 | role = c("aut"), 15 | comment = c(ORCID = "0000-0003-0591-9465"))) 16 | Description: Calculates performance criteria measures and associated Monte Carlo standard errors for simulation results. Includes functions to help run simulation studies, following a general simulation workflow that closely aligns with the approach described by Morris, White, and Crowther (2019) . Also includes functions for calculating bootstrap confidence intervals (including normal, basic, studentized, percentile, bias-corrected, and bias-corrected-and-accelerated) with tidy output, as well as for extrapolating confidence interval coverage rates and hypothesis test rejection rates following techniques suggested by Boos and Zhang (2000) . 17 | URL: https://meghapsimatrix.github.io/simhelpers/ 18 | BugReports: https://github.com/meghapsimatrix/simhelpers/issues 19 | Depends: R (>= 2.10) 20 | License: GPL-3 21 | Encoding: UTF-8 22 | LazyData: true 23 | RoxygenNote: 7.3.2 24 | SystemRequirements: RStudio 25 | Imports: 26 | stats, 27 | furrr, 28 | tidyr, 29 | rstudioapi, 30 | Rdpack 31 | Suggests: 32 | dplyr, 33 | tibble, 34 | purrr, 35 | future, 36 | knitr, 37 | rmarkdown, 38 | pkgdown, 39 | covr, 40 | testthat, 41 | kableExtra, 42 | ggplot2, 43 | broom, 44 | boot 45 | RdMacros: Rdpack 46 | VignetteBuilder: knitr 47 | -------------------------------------------------------------------------------- /man/calc_coverage.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/calc_coverage.R 3 | \name{calc_coverage} 4 | \alias{calc_coverage} 5 | \title{Calculate confidence interval coverage, width and MCSE} 6 | \usage{ 7 | calc_coverage( 8 | data, 9 | lower_bound, 10 | upper_bound, 11 | true_param, 12 | criteria = c("coverage", "width"), 13 | winz = Inf 14 | ) 15 | } 16 | \arguments{ 17 | \item{data}{data frame or tibble containing the simulation results.} 18 | 19 | \item{lower_bound}{vector or name of column from \code{data} containing lower bounds of confidence intervals.} 20 | 21 | \item{upper_bound}{vector or name of column from \code{data} containing upper bounds of confidence intervals.} 22 | 23 | \item{true_param}{vector or name of column from \code{data} containing 24 | corresponding true parameters.} 25 | 26 | \item{criteria}{character or character vector indicating the performance 27 | criteria to be calculated, with possible options \code{"coverage"} and \code{"width"}.} 28 | 29 | \item{winz}{numeric value for winsorization constant. If set to a finite 30 | value, estimates will be winsorized at the constant multiple of the 31 | inter-quartile range below the 25th percentile or above the 75th percentile 32 | of the distribution. For instance, setting \code{winz = 3} will 33 | truncate estimates that fall below P25 - 3 * IQR or above P75 + 3 * IQR.} 34 | } 35 | \value{ 36 | A tibble containing the number of simulation iterations, performance criteria estimate(s) 37 | and the associated MCSE. 38 | } 39 | \description{ 40 | Calculates confidence interval coverage and width. The function also calculates the associated 41 | Monte Carlo standard errors. The confidence interval percentage is based on how you calculated the lower 42 | and upper bounds. 43 | } 44 | \examples{ 45 | calc_coverage(data = t_res, lower_bound = lower_bound, 46 | upper_bound = upper_bound, true_param = true_param) 47 | 48 | 49 | } 50 | -------------------------------------------------------------------------------- /docs/deps/bootstrap-toc-1.0.1/bootstrap-toc.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Table of Contents v1.0.1 (http://afeld.github.io/bootstrap-toc/) 3 | * Copyright 2015 Aidan Feldman 4 | * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ 5 | !function(a){"use strict";window.Toc={helpers:{findOrFilter:function(e,t){var n=e.find(t);return e.filter(t).add(n).filter(":not([data-toc-skip])")},generateUniqueIdBase:function(e){return a(e).text().trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,64).replace(/^-+|-+$/gm,"").toLowerCase()||e.tagName.toLowerCase()},generateUniqueId:function(e){for(var t=this.generateUniqueIdBase(e),n=0;;n++){var r=t;if(0')},createChildNavList:function(e){var t=this.createNavList();return e.append(t),t},generateNavEl:function(e,t){var n=a('');n.attr("href","#"+e),n.text(t);var r=a("
  • ");return r.append(n),r},generateNavItem:function(e){var t=this.generateAnchor(e),n=a(e),r=n.data("toc-text")||n.text();return this.generateNavEl(t,r)},getTopLevel:function(e){for(var t=1;t<=6;t++){if(1% 25 | mutate( 26 | iterations = 1000, # change this to how many ever iterations 27 | seed = round(runif(1) * 2^30) + 1:n() 28 | ) 29 | 30 | # All look right? 31 | lengths(design_factors) 32 | nrow(params) 33 | head(params) 34 | 35 | 36 | 37 | #-------------------------------------------------------- 38 | # run simulations in serial - purrr workflow 39 | #-------------------------------------------------------- 40 | library(purrr) 41 | 42 | system.time( 43 | results <- 44 | params %>% 45 | mutate(res = pmap(., .f = run_sim)) %>% 46 | unnest(cols = res) 47 | ) 48 | 49 | 50 | #-------------------------------------------------------- 51 | # run simulations in parallel - future + furrr workflow 52 | #-------------------------------------------------------- 53 | 54 | library(future) 55 | library(furrr) 56 | 57 | plan(multisession) # choose an appropriate plan from the future package 58 | evaluate_by_row(params, run_sim) 59 | 60 | # OR 61 | plan(multisession) 62 | system.time( 63 | results <- 64 | params %>% 65 | mutate(res = future_pmap(., .f = run_sim)) %>% 66 | unnest(cols = res) 67 | ) 68 | 69 | #-------------------------------------------------------- 70 | # Save results and details 71 | #-------------------------------------------------------- 72 | 73 | session_info <- sessionInfo() 74 | run_date <- date() 75 | 76 | save(params, results, session_info, run_date, file = "simulation_results.Rdata") 77 | -------------------------------------------------------------------------------- /R/repeat_and_stack.R: -------------------------------------------------------------------------------- 1 | 2 | 3 | #' Repeat an expression multiple times and (optionally) stack the results. 4 | #' 5 | #' @description Repeat an expression (usually involving random number 6 | #' generation) multiple times. Optionally, organize the results into a 7 | #' \code{data.frame} that stacks the output from all replications of the 8 | #' expression. 9 | 10 | #' @param n Number of times to repeat the expression 11 | #' @param expr An expression to be evaluated. 12 | #' @param id Character string to use for creating a variable with a unique 13 | #' identifier for each repetition. If set to \code{NULL} (the default), then 14 | #' no identifier is created. 15 | #' @param stack Logical value indicating whether to organize the results into a 16 | #' \code{data.frame}. 17 | #' 18 | #' @return If \code{stack = TRUE} (the default), the results of each evaluation 19 | #' of \code{expr} will be stacked together using \code{rbind} and a unique identifier will be stored in the variable \code{id} (if specified). If \code{stack 20 | #' = FALSE}, a list of length \code{n} with entries corresponding to the 21 | #' output of each replication of \code{expr}, with names corresponding to the unique identifier (if specified) 22 | #' @export 23 | #' 24 | #' @examples 25 | #' repeat_and_stack(n = 3, data.frame(x = rexp(2))) 26 | #' repeat_and_stack(n = 3, data.frame(x = rexp(2)), id = "ID") 27 | #' 28 | #' repeat_and_stack(n = 3, data.frame(x = rexp(2)), stack = FALSE) 29 | #' repeat_and_stack(n = 3, data.frame(x = rexp(2)), id = "ID", stack = FALSE) 30 | #' 31 | 32 | repeat_and_stack <- function( 33 | n, 34 | expr, 35 | id = NULL, 36 | stack = TRUE 37 | ) { 38 | f <- eval.parent(substitute(function(...) expr)) 39 | res <- lapply(integer(n), f) 40 | if (stack) { 41 | if (!is.null(id)) { 42 | res <- mapply( 43 | function(i, r) { 44 | r <- as.data.frame(r) 45 | id_dat <- data.frame(x = rep(i, nrow(r))) 46 | names(id_dat) <- id 47 | cbind(id_dat, r) 48 | }, 49 | i = 1:n, r = res, 50 | SIMPLIFY = FALSE 51 | ) 52 | } 53 | res <- do.call(rbind, res) 54 | } else { 55 | if (!is.null(id)) names(res) <- 1:n 56 | } 57 | return(res) 58 | } 59 | -------------------------------------------------------------------------------- /man/calc_relative_var.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/calc_relative_var.R 3 | \name{calc_relative_var} 4 | \alias{calc_relative_var} 5 | \title{Calculate jack-knife Monte Carlo SE for variance estimators} 6 | \usage{ 7 | calc_relative_var( 8 | data, 9 | estimates, 10 | var_estimates, 11 | criteria = c("relative bias", "relative mse", "relative rmse"), 12 | winz = Inf, 13 | var_winz = winz 14 | ) 15 | } 16 | \arguments{ 17 | \item{data}{data frame or tibble containing the simulation results.} 18 | 19 | \item{estimates}{vector or name of column from \code{data} containing point 20 | estimates.} 21 | 22 | \item{var_estimates}{vector or name of column from \code{data} containing 23 | variance estimates for point estimator in \code{estimates}.} 24 | 25 | \item{criteria}{character or character vector indicating the performance 26 | criteria to be calculated, with possible options \code{"relative bias"}, 27 | \code{"relative mse"}, and \code{"relative rmse"}.} 28 | 29 | \item{winz}{numeric value for winsorization constant. If set to a finite 30 | value, estimates will be winsorized at the constant multiple of the 31 | inter-quartile range below the 25th percentile or above the 75th percentile 32 | of the distribution. For instance, setting \code{winz = 3} will 33 | truncate estimates that fall below P25 - 3 * IQR or above P75 + 3 * IQR.} 34 | 35 | \item{var_winz}{numeric value for winsorization constant for the 36 | variance estimates. If set to a finite value, variance estimates will be 37 | winsorized at the constant multiple of the inter-quartile range below the 38 | 25th percentile or above the 75th percentile of the distribution. For 39 | instance, setting \code{var_winz = 3} will truncate variance estimates 40 | that fall below P25 - 3 * IQR or above P75 + 3 * IQR. By default 41 | \code{var_winz} is set to the same constant as \code{winsorize}.} 42 | } 43 | \value{ 44 | A tibble containing the number of simulation iterations, performance 45 | criteria estimate(s) and the associated MCSE. 46 | } 47 | \description{ 48 | Calculates relative bias, mean squared error (relative mse), and 49 | root mean squared error (relative rmse) of variance estimators. The 50 | function also calculates the associated jack-knife Monte Carlo standard 51 | errors. 52 | } 53 | \examples{ 54 | calc_relative_var(data = alpha_res, estimates = A, var_estimates = Var_A) 55 | 56 | } 57 | -------------------------------------------------------------------------------- /docs/dev/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | https://meghapsimatrix.github.io/simhelpers/dev/articles/MCSE.html 5 | 6 | 7 | https://meghapsimatrix.github.io/simhelpers/dev/articles/index.html 8 | 9 | 10 | https://meghapsimatrix.github.io/simhelpers/dev/articles/simulation_workflow.html 11 | 12 | 13 | https://meghapsimatrix.github.io/simhelpers/dev/articles/visualization.html 14 | 15 | 16 | https://meghapsimatrix.github.io/simhelpers/dev/authors.html 17 | 18 | 19 | https://meghapsimatrix.github.io/simhelpers/dev/index.html 20 | 21 | 22 | https://meghapsimatrix.github.io/simhelpers/dev/news/index.html 23 | 24 | 25 | https://meghapsimatrix.github.io/simhelpers/dev/reference/Tipton_Pusto.html 26 | 27 | 28 | https://meghapsimatrix.github.io/simhelpers/dev/reference/alpha_res.html 29 | 30 | 31 | https://meghapsimatrix.github.io/simhelpers/dev/reference/bundle_sim.html 32 | 33 | 34 | https://meghapsimatrix.github.io/simhelpers/dev/reference/calc_absolute.html 35 | 36 | 37 | https://meghapsimatrix.github.io/simhelpers/dev/reference/calc_coverage.html 38 | 39 | 40 | https://meghapsimatrix.github.io/simhelpers/dev/reference/calc_rejection.html 41 | 42 | 43 | https://meghapsimatrix.github.io/simhelpers/dev/reference/calc_relative.html 44 | 45 | 46 | https://meghapsimatrix.github.io/simhelpers/dev/reference/calc_relative_var.html 47 | 48 | 49 | https://meghapsimatrix.github.io/simhelpers/dev/reference/create_skeleton.html 50 | 51 | 52 | https://meghapsimatrix.github.io/simhelpers/dev/reference/evaluate_by_row.html 53 | 54 | 55 | https://meghapsimatrix.github.io/simhelpers/dev/reference/index.html 56 | 57 | 58 | https://meghapsimatrix.github.io/simhelpers/dev/reference/t_res.html 59 | 60 | 61 | https://meghapsimatrix.github.io/simhelpers/dev/reference/welch_res.html 62 | 63 | 64 | -------------------------------------------------------------------------------- /docs/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | https://meghapsimatrix.github.io/simhelpers/404.html 3 | https://meghapsimatrix.github.io/simhelpers/articles/MCSE.html 4 | https://meghapsimatrix.github.io/simhelpers/articles/index.html 5 | https://meghapsimatrix.github.io/simhelpers/articles/simulation_workflow.html 6 | https://meghapsimatrix.github.io/simhelpers/articles/visualization.html 7 | https://meghapsimatrix.github.io/simhelpers/authors.html 8 | https://meghapsimatrix.github.io/simhelpers/index.html 9 | https://meghapsimatrix.github.io/simhelpers/news/index.html 10 | https://meghapsimatrix.github.io/simhelpers/reference/Tipton_Pusto.html 11 | https://meghapsimatrix.github.io/simhelpers/reference/alpha_res.html 12 | https://meghapsimatrix.github.io/simhelpers/reference/bootstrap_CIs.html 13 | https://meghapsimatrix.github.io/simhelpers/reference/bootstrap_pvals.html 14 | https://meghapsimatrix.github.io/simhelpers/reference/bundle_sim.html 15 | https://meghapsimatrix.github.io/simhelpers/reference/calc_absolute.html 16 | https://meghapsimatrix.github.io/simhelpers/reference/calc_coverage.html 17 | https://meghapsimatrix.github.io/simhelpers/reference/calc_rejection.html 18 | https://meghapsimatrix.github.io/simhelpers/reference/calc_relative.html 19 | https://meghapsimatrix.github.io/simhelpers/reference/calc_relative_var.html 20 | https://meghapsimatrix.github.io/simhelpers/reference/create_skeleton.html 21 | https://meghapsimatrix.github.io/simhelpers/reference/evaluate_by_row.html 22 | https://meghapsimatrix.github.io/simhelpers/reference/extrapolate_coverage.html 23 | https://meghapsimatrix.github.io/simhelpers/reference/extrapolate_rejection.html 24 | https://meghapsimatrix.github.io/simhelpers/reference/index.html 25 | https://meghapsimatrix.github.io/simhelpers/reference/repeat_and_stack.html 26 | https://meghapsimatrix.github.io/simhelpers/reference/t_res.html 27 | https://meghapsimatrix.github.io/simhelpers/reference/welch_res.html 28 | 29 | 30 | -------------------------------------------------------------------------------- /R/calc_relative.R: -------------------------------------------------------------------------------- 1 | #' @title Calculate relative performance criteria and MCSE 2 | #' 3 | #' @description Calculates relative bias, mean squared error (relative mse), and root mean squared error (relative rmse). 4 | #' The function also calculates the associated 5 | #' Monte Carlo standard errors. 6 | #' 7 | #' @param criteria character or character vector indicating the performance 8 | #' criteria to be calculated, with possible options \code{"relative bias"}, 9 | #' \code{"relative mse"}, and \code{"relative rmse"}. 10 | #' @inheritParams calc_absolute 11 | #' 12 | #' @return A tibble containing the number of simulation iterations, performance criteria estimate(s) 13 | #' and the associated MCSE. 14 | #' 15 | #' @export 16 | #' 17 | #' @examples 18 | #' calc_relative(data = t_res, estimates = est, true_param = true_param) 19 | #' 20 | #' 21 | 22 | calc_relative <- function( 23 | data, 24 | estimates, true_param, 25 | criteria = c("relative bias", "relative mse", "relative rmse"), 26 | winz = Inf 27 | ) { 28 | 29 | criteria <- match.arg(criteria, choices = c("relative bias", "relative mse", "relative rmse"), several.ok = TRUE) 30 | abs_criteria <- substr(criteria, 10, 13) 31 | 32 | cl <- match.call() 33 | cl$criteria <- abs_criteria 34 | cl[[1]] <- quote(calc_absolute) 35 | abs_dat <- eval(cl, parent.frame()) 36 | 37 | if (!missing(data)) { 38 | cl <- match.call() 39 | true_param <- eval(cl$true_param, envir = data, enclos = parent.frame()) 40 | } 41 | 42 | true_param <- unique(true_param) # true param 43 | if (length(true_param) > 1L) stop("`true_param` must have a single unique value.") 44 | 45 | # initialize tibble 46 | dat <- tibble::tibble(K_relative = abs_dat$K_absolute) 47 | 48 | if (winz < Inf) { 49 | dat$winsor_pct <- abs_dat$winsor_pct 50 | dat$winsor_pct_mcse <- abs_dat$winsor_pct_mcse 51 | } 52 | 53 | if ("relative bias" %in% criteria) { 54 | dat$rel_bias <- ifelse(true_param == 0, NA_real_, 1 + abs_dat$bias / true_param) 55 | dat$rel_bias_mcse <- ifelse(true_param == 0, NA_real_, abs_dat$bias_mcse / true_param) 56 | } 57 | 58 | if ("relative mse" %in% criteria) { 59 | dat$rel_mse <- ifelse(true_param == 0, NA_real_, abs_dat$mse / true_param^2) 60 | dat$rel_mse_mcse <- ifelse(true_param == 0, NA_real_, abs_dat$mse_mcse / true_param^2) 61 | } 62 | 63 | if ("relative rmse" %in% criteria) { 64 | dat$rel_rmse <- ifelse(true_param == 0, NA_real_, abs_dat$rmse / true_param) 65 | dat$rel_rmse_mcse <- ifelse(true_param == 0, NA_real_, abs_dat$rmse_mcse / true_param) 66 | } 67 | 68 | return(dat) 69 | 70 | } 71 | 72 | -------------------------------------------------------------------------------- /NEWS.md: -------------------------------------------------------------------------------- 1 | simhelpers 0.3.1.9999 2 | ======================= 3 | * Added option to specify a unique ID variable for every repetition in `repeat_and_stack()` and `bundle_sim()`. 4 | * Refactored `bundle_sim()` so that it uses `repeat_and_stack()` internally. 5 | * Refined `evaluate_by_row()`: 6 | - Refactored so that it uses only variables that match argument names of the function to be evaluated. 7 | - Added an option `nest_results` to return a nested column of results (for more compact storage). 8 | * `extrapolate_coverage()` and `extrapolate_rejection()` gain an `exclude_above` argument to exclude results based on more than a certain number of bootstraps from being included in the extrapolation calculations. 9 | 10 | simhelpers 0.3.1 11 | ======================= 12 | * Added support for bias-corrected and bias-corrected-and-accelerated (BCa) bootstrap confidence intervals. 13 | * Corrected an error in the documentation of `bundle_sim()`. 14 | 15 | simhelpers 0.3.0 16 | ======================= 17 | * Added functions for calculating bootstrap p-values and confidence intervals and for estimating rejection rates, coverage rates, and interval widths by extrapolating across bootstrap subsamples. 18 | * Added `repeat_and_stack()` function, which is similar to the base R `replicate()` and to the now deprecated `purrr::rerun()`, with the option to stack the output into a single `data.frame`. 19 | * Added `"stddev"` as a performance criterion in `calc_absolute()`. 20 | * Added `winsorize` options in `calc_absolute()`, `calc_relative()`, `calc_relative_var()`, and `calc_coverage()`. 21 | 22 | simhelpers 0.2.1 23 | ======================= 24 | * Fixed issues in unit tests on Mac OS, M1Mac, and NoLD. 25 | 26 | simhelpers 0.2.0 27 | ======================= 28 | 29 | * Added new, experimental function `bundle_sim()` to compose a set of functions into a simulation driver. 30 | * Added an argument to `evaluate_by_row()` to control the name of the variable where simulation results are stored. 31 | * Revised the `calc_*()` functions so that they can take vectors or variable names from a specified dataset. 32 | * `calc_rejection()` can now compute rejection rates for multiple `alpha` levels. 33 | * Renamed the `K` variable computed in the `calc_*()` functions to avoid over-writing variables when using multiple performance calculations inside of `dplyr::summarize()`. 34 | * Updated syntax in vignettes and examples to use current tidyverse conventions. 35 | 36 | simhelpers 0.1.2 37 | ======================= 38 | 39 | * Removed import of a defunct function from the furrr package. 40 | 41 | simhelpers 0.1.1 42 | ======================= 43 | 44 | * Fixed formula for jacknife MCSE 45 | 46 | simhelpers 0.1.0 47 | ======================= 48 | 49 | * First version 50 | -------------------------------------------------------------------------------- /tests/testthat/test_bootstrap_pval_construction.R: -------------------------------------------------------------------------------- 1 | skip_if_not_installed("dplyr") 2 | 3 | # generate data from two distinct populations 4 | dat <- data.frame( 5 | group = rep(c("A","B"), c(40, 50)), 6 | y = c( 7 | rgamma(40, shape = 7, scale = 2), 8 | rgamma(50, shape = 3, scale = 4) 9 | ) 10 | ) 11 | stat <- t.test(y ~ group, data = dat)$statistic 12 | 13 | # create bootstrap replications under the null of no difference 14 | boot_dat <- dat 15 | booties <- replicate(1999, { 16 | boot_dat$group <- sample(dat$group) 17 | t.test(y ~ group, data = boot_dat)$statistic 18 | }) 19 | 20 | alts <- c("greater","less","two-sided") 21 | names(alts) <- alts 22 | 23 | test_that("bootstrap_pvals returns results of expected length.", { 24 | 25 | A_long <- c( 26 | list(bootstrap_pvals( 27 | boot_stat = booties, 28 | stat = stat 29 | )), 30 | lapply(alts, \(x) bootstrap_pvals( 31 | boot_stat = booties, 32 | stat = stat, 33 | alternative = x 34 | )) 35 | ) 36 | 37 | expect_equal(A_long[[1]], A_long[["two-sided"]]) 38 | expect_equal( 39 | A_long[["greater"]]$pval[[1]], 40 | 1 - A_long[["less"]]$pval[[1]] 41 | ) 42 | 43 | B_long <- lapply(alts, \(x) bootstrap_pvals( 44 | boot_stat = booties, 45 | stat = stat, 46 | alternative = x, 47 | B_vals = 499, 48 | seed = 20240719 49 | )) 50 | set.seed(20240719) 51 | expect_equal( 52 | B_long[["two-sided"]]$pval[[1]], 53 | mean(abs(sample(booties, size = 499)) > abs(stat)) 54 | ) 55 | expect_equal( 56 | B_long[["greater"]]$pval[[1]], 57 | 1 - B_long[["less"]]$pval[[1]] 58 | ) 59 | 60 | E_long <- bootstrap_pvals( 61 | boot_stat = booties, 62 | stat = stat, 63 | alternative = "greater", 64 | B_vals = c(49,59,89) 65 | ) 66 | 67 | expect_true(is.data.frame(E_long)) 68 | expect_identical(nrow(E_long), 3L) 69 | 70 | F_long <- bootstrap_pvals( 71 | boot_stat = booties, 72 | stat = stat, 73 | alternative = "two-sided", 74 | B_vals = c(49,59,89), 75 | reps = 7L 76 | ) 77 | 78 | expect_true(is.data.frame(F_long)) 79 | expect_identical(nrow(F_long), 3L) 80 | expect_true(all(sapply(F_long$pval, is.vector))) 81 | expect_identical(lengths(F_long$pval), rep(7L, 3L)) 82 | 83 | G_long <- bootstrap_pvals( 84 | boot_stat = booties, 85 | stat = stat, 86 | alternative = "two-sided", 87 | B_vals = c(49,59,89), 88 | reps = 7L, 89 | enlist = TRUE 90 | ) 91 | 92 | expect_true(is.list(G_long)) 93 | expect_identical(length(G_long), 1L) 94 | expect_true(all(sapply(G_long, is.data.frame))) 95 | expect_identical(lengths(G_long), 2L) 96 | expect_identical(lengths(G_long[[1]]$pval), rep(7L, 3L)) 97 | 98 | }) 99 | 100 | -------------------------------------------------------------------------------- /man/evaluate_by_row.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/evaluate_by_row.R 3 | \name{evaluate_by_row} 4 | \alias{evaluate_by_row} 5 | \title{Evaluate a simulation function on each row of a data frame or tibble} 6 | \usage{ 7 | evaluate_by_row( 8 | params, 9 | sim_function, 10 | ..., 11 | nest_results = FALSE, 12 | results_name = ".results", 13 | .progress = FALSE, 14 | .options = furrr::furrr_options(seed = TRUE), 15 | system_time = TRUE, 16 | verbose = TRUE 17 | ) 18 | } 19 | \arguments{ 20 | \item{params}{data frame or tibble containing simulation parameter values. 21 | Each row should represent a separate set of parameter values. Column names 22 | must exactly match the argument names of \code{sim_function}. Non-matching 23 | columns are ignored.} 24 | 25 | \item{sim_function}{function to be evaluated, with argument names matching 26 | the variable names in \code{params}. The function must return a 27 | \code{data.frame}, \code{tibble}, or vector.} 28 | 29 | \item{...}{additional arguments passed to \code{sim_function}.} 30 | 31 | \item{nest_results}{logical indicating whether to store the results of evaluating 32 | \code{sim_function} in a nested column. Default is \code{FALSE}.} 33 | 34 | \item{results_name}{character string to set the name of the nested column storing 35 | the results of the simulation. Default is \code{".results"}.} 36 | 37 | \item{.progress}{A single logical. Should a progress bar be displayed? 38 | Only works with multisession, multicore, and multiprocess futures. Note 39 | that if a multicore/multisession future falls back to sequential, then 40 | a progress bar will not be displayed. 41 | 42 | \strong{Warning:} The \code{.progress} argument will be deprecated and removed 43 | in a future version of furrr in favor of using the more robust 44 | \href{https://CRAN.R-project.org/package=progressr}{progressr} 45 | package.} 46 | 47 | \item{.options}{The \code{future} specific options to use with the workers. This 48 | must be the result from a call to \code{\link[furrr:furrr_options]{furrr_options()}}.} 49 | 50 | \item{system_time}{logical indicating whether to print computation time. 51 | \code{TRUE} by default.} 52 | 53 | \item{verbose}{logical indicating whether to display a message about 54 | variables used in function evaluation. \code{TRUE} by default.} 55 | } 56 | \value{ 57 | A tibble containing parameter values and simulation results. 58 | } 59 | \description{ 60 | Evaluates a simulation function on each row of a data frame or 61 | tibble containing parameter values. Returns a single tibble with parameters 62 | and simulation results. The function uses \code{furrr::future_pmap}, which 63 | allows for easy parallelization. 64 | } 65 | \examples{ 66 | df <- data.frame( 67 | n = 3:5, 68 | lambda = seq(8, 16, 4) 69 | ) 70 | 71 | evaluate_by_row(df, rpois) 72 | 73 | } 74 | -------------------------------------------------------------------------------- /docs/lightswitch.js: -------------------------------------------------------------------------------- 1 | 2 | /*! 3 | * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/) 4 | * Copyright 2011-2023 The Bootstrap Authors 5 | * Licensed under the Creative Commons Attribution 3.0 Unported License. 6 | * Updates for {pkgdown} by the {bslib} authors, also licensed under CC-BY-3.0. 7 | */ 8 | 9 | const getStoredTheme = () => localStorage.getItem('theme') 10 | const setStoredTheme = theme => localStorage.setItem('theme', theme) 11 | 12 | const getPreferredTheme = () => { 13 | const storedTheme = getStoredTheme() 14 | if (storedTheme) { 15 | return storedTheme 16 | } 17 | 18 | return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' 19 | } 20 | 21 | const setTheme = theme => { 22 | if (theme === 'auto') { 23 | document.documentElement.setAttribute('data-bs-theme', (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')) 24 | } else { 25 | document.documentElement.setAttribute('data-bs-theme', theme) 26 | } 27 | } 28 | 29 | function bsSetupThemeToggle () { 30 | 'use strict' 31 | 32 | const showActiveTheme = (theme, focus = false) => { 33 | var activeLabel, activeIcon; 34 | 35 | document.querySelectorAll('[data-bs-theme-value]').forEach(element => { 36 | const buttonTheme = element.getAttribute('data-bs-theme-value') 37 | const isActive = buttonTheme == theme 38 | 39 | element.classList.toggle('active', isActive) 40 | element.setAttribute('aria-pressed', isActive) 41 | 42 | if (isActive) { 43 | activeLabel = element.textContent; 44 | activeIcon = element.querySelector('span').classList.value; 45 | } 46 | }) 47 | 48 | const themeSwitcher = document.querySelector('#dropdown-lightswitch') 49 | if (!themeSwitcher) { 50 | return 51 | } 52 | 53 | themeSwitcher.setAttribute('aria-label', activeLabel) 54 | themeSwitcher.querySelector('span').classList.value = activeIcon; 55 | 56 | if (focus) { 57 | themeSwitcher.focus() 58 | } 59 | } 60 | 61 | window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { 62 | const storedTheme = getStoredTheme() 63 | if (storedTheme !== 'light' && storedTheme !== 'dark') { 64 | setTheme(getPreferredTheme()) 65 | } 66 | }) 67 | 68 | window.addEventListener('DOMContentLoaded', () => { 69 | showActiveTheme(getPreferredTheme()) 70 | 71 | document 72 | .querySelectorAll('[data-bs-theme-value]') 73 | .forEach(toggle => { 74 | toggle.addEventListener('click', () => { 75 | const theme = toggle.getAttribute('data-bs-theme-value') 76 | setTheme(theme) 77 | setStoredTheme(theme) 78 | showActiveTheme(theme, true) 79 | }) 80 | }) 81 | }) 82 | } 83 | 84 | setTheme(getPreferredTheme()); 85 | bsSetupThemeToggle(); 86 | -------------------------------------------------------------------------------- /tests/testthat/test_relative_variance.R: -------------------------------------------------------------------------------- 1 | K <- 10000 2 | ncp <- 2 3 | df <- 3 4 | mu <- ncp * sqrt(df/ 2) * gamma((df - 1) / 2) / gamma(df / 2) 5 | sigma_sq <- (1 + ncp^2) * df / (df - 2) - mu^2 6 | 7 | dat <- data.frame( 8 | x = rt(K, df = df, ncp = ncp), 9 | SE_sq = rchisq(K, df = sigma_sq) 10 | ) 11 | 12 | test_that("Relative variance calculations work in simple cases.", { 13 | x_res <- calc_absolute(dat, x, true_param = mu, criteria = c("bias","var")) 14 | v_res <- calc_absolute(dat, SE_sq, true_param = x_res$var, criteria = c("bias","var","mse","rmse")) 15 | rel_res <- calc_relative(dat, SE_sq, true_param = x_res$var) 16 | rv_res <- calc_relative_var(dat, estimates = x, var_estimates = SE_sq) 17 | 18 | expect_equal(rv_res$rel_bias_var, 1 + v_res$bias / x_res$var) 19 | expect_equal(rv_res$rel_mse_var, (v_res$bias^2 + v_res$var) / x_res$var^2) 20 | expect_equal(rv_res$rel_rmse_var, sqrt(v_res$bias^2 + v_res$var) / x_res$var) 21 | 22 | expect_equal(rv_res$rel_bias_var, rel_res$rel_bias) 23 | expect_true(rv_res$rel_bias_var_mcse != rel_res$rel_bias_mcse) 24 | expect_equal(rv_res$rel_mse_var, rel_res$rel_mse, tolerance = 5e-5) 25 | expect_true(rv_res$rel_mse_var_mcse != rel_res$rel_mse_mcse) 26 | expect_equal(rv_res$rel_rmse_var, rel_res$rel_rmse, tolerance = 5e-5) 27 | expect_true(rv_res$rel_rmse_var_mcse != rel_res$rel_rmse_mcse) 28 | 29 | expect_equal(rel_res$rel_mse, v_res$mse / x_res$var^2) 30 | expect_equal(rel_res$rel_mse_mcse, v_res$mse_mcse / x_res$var^2) 31 | expect_equal(rel_res$rel_rmse, v_res$rmse / x_res$var) 32 | expect_equal(rel_res$rel_rmse_mcse, v_res$rmse_mcse / x_res$var) 33 | 34 | }) 35 | 36 | 37 | test_that("Relative variance calculations work with winsorization.", { 38 | winz <- 1.5 39 | var_winz <- 1 40 | x_res <- calc_absolute(dat, x, true_param = mu, criteria = c("bias","var"), winz = winz) 41 | v_res <- calc_absolute(dat, SE_sq, true_param = x_res$var, criteria = c("bias","var","mse","rmse"), winz = var_winz) 42 | rel_res <- calc_relative(dat, SE_sq, true_param = x_res$var, winz = var_winz) 43 | rv_res <- calc_relative_var(dat, estimates = x, var_estimates = SE_sq, winz = winz, var_winz = var_winz) 44 | 45 | expect_equal(rv_res$rel_bias_var, 1 + v_res$bias / x_res$var) 46 | expect_equal(rv_res$rel_mse_var, (v_res$bias^2 + v_res$var) / x_res$var^2) 47 | expect_equal(rv_res$rel_rmse_var, sqrt(v_res$bias^2 + v_res$var) / x_res$var) 48 | 49 | expect_equal(rv_res$rel_bias_var, rel_res$rel_bias) 50 | expect_true(rv_res$rel_bias_var_mcse != rel_res$rel_bias_mcse) 51 | expect_equal(rv_res$rel_mse_var, rel_res$rel_mse, tolerance = 5e-5) 52 | expect_true(rv_res$rel_mse_var_mcse != rel_res$rel_mse_mcse) 53 | expect_equal(rv_res$rel_rmse_var, rel_res$rel_rmse, tolerance = 5e-5) 54 | expect_true(rv_res$rel_rmse_var_mcse != rel_res$rel_rmse_mcse) 55 | 56 | expect_equal(rel_res$rel_mse, v_res$mse / x_res$var^2) 57 | expect_equal(rel_res$rel_mse_mcse, v_res$mse_mcse / x_res$var^2) 58 | expect_equal(rel_res$rel_rmse, v_res$rmse / x_res$var) 59 | expect_equal(rel_res$rel_rmse_mcse, v_res$rmse_mcse / x_res$var) 60 | 61 | }) 62 | -------------------------------------------------------------------------------- /tests/testthat/test_ebr.R: -------------------------------------------------------------------------------- 1 | skip_if_not_installed("dplyr") 2 | skip_if_not_installed("tidyr") 3 | 4 | library(dplyr) 5 | library(tidyr) 6 | 7 | df <- data.frame( 8 | a = 3:5, 9 | b= seq(8, 16, 4) 10 | ) 11 | 12 | test_that("evaluate_by_row() works with generic functions.", { 13 | 14 | f <- function(a, b) a * b 15 | res_f <- evaluate_by_row(df, f, results_name = "res", system_time = FALSE, verbose = FALSE) 16 | hand_f <- 17 | df %>% 18 | mutate(res = pmap(., .f = f)) %>% 19 | unnest(cols = res) 20 | 21 | expect_equal(res_f, hand_f) 22 | 23 | fprod <- function(...) prod(...) 24 | res_prod <- evaluate_by_row(df, fprod, results_name = "res", system_time = FALSE, verbose = FALSE) 25 | expect_equal(res_f, res_prod) 26 | 27 | g <- function(a, b) data.frame(x = a * b, y = a + b) 28 | res_g <- evaluate_by_row(df, g, results_name = "res", system_time = FALSE, verbose = FALSE) 29 | nest_g <- evaluate_by_row(df, g, nest_results = TRUE, results_name = "res", system_time = FALSE, verbose = FALSE) 30 | hand_g <- df %>% mutate(res = pmap(., .f = g)) 31 | 32 | expect_equal(nest_g, hand_g) 33 | expect_equal(res_g, unnest(hand_g, cols = res)) 34 | 35 | }) 36 | 37 | 38 | test_that("evaluate_by_row() works with extra variables.", { 39 | 40 | df$c <- LETTERS[1:nrow(df)] 41 | f <- function(a, b) a * b 42 | fdot <- function(a, b, ...) a * b 43 | 44 | expect_message(res_f <- evaluate_by_row(df, f, results_name = "res", system_time = FALSE), "Evaluating f\\(\\) using the following variables: a, b") 45 | expect_message(res_fdot <- evaluate_by_row(df, fdot, results_name = "res", system_time = FALSE), "Evaluating fdot\\(\\) using the following variables: a, b, c") 46 | expect_message(nest_fdot <- evaluate_by_row(df, fdot, nest_results = TRUE, results_name = "res", system_time = FALSE), "Evaluating fdot\\(\\) using the following variables: a, b, c") 47 | 48 | hand_fdot <- df %>% mutate(res = pmap(., .f = fdot)) 49 | 50 | expect_equal(res_f, res_fdot) 51 | expect_equal(nest_fdot, hand_fdot) 52 | expect_equal(res_fdot, unnest(hand_fdot, cols = res)) 53 | 54 | g <- function(a, b, d) data.frame(x = a * b * d, y = a + b + d) 55 | gdot <- function(a, b, d, ...) g(a, b, d) 56 | 57 | expect_error(evaluate_by_row(df, g, results_name = "res", system_time = FALSE, verbose = FALSE), 'argument "d" is missing, with no default') 58 | 59 | df$d <- 17:15 60 | 61 | expect_message(res_g <- evaluate_by_row(df, g, results_name = "res", system_time = FALSE), "Evaluating g\\(\\) using the following variables: a, b, d") 62 | expect_message(res_gdot <- evaluate_by_row(df, gdot, results_name = "res", system_time = FALSE), "Evaluating gdot\\(\\) using the following variables: a, b, c, d") 63 | expect_message(nest_gdot <- evaluate_by_row(df, gdot, nest_results = TRUE, results_name = "res", system_time = FALSE), "Evaluating gdot\\(\\) using the following variables: a, b, c, d") 64 | 65 | hand_gdot <- df %>% mutate(res = pmap(., .f = gdot)) 66 | 67 | expect_equal(res_g, res_gdot) 68 | expect_equal(nest_gdot, hand_gdot) 69 | expect_equal(res_gdot, unnest(hand_gdot, cols = res)) 70 | 71 | }) 72 | -------------------------------------------------------------------------------- /R/evaluate_by_row.R: -------------------------------------------------------------------------------- 1 | #' @title Evaluate a simulation function on each row of a data frame or tibble 2 | #' 3 | #' @description Evaluates a simulation function on each row of a data frame or 4 | #' tibble containing parameter values. Returns a single tibble with parameters 5 | #' and simulation results. The function uses \code{furrr::future_pmap}, which 6 | #' allows for easy parallelization. 7 | #' 8 | #' @param params data frame or tibble containing simulation parameter values. 9 | #' Each row should represent a separate set of parameter values. Column names 10 | #' must exactly match the argument names of \code{sim_function}. Non-matching 11 | #' columns are ignored. 12 | #' @param sim_function function to be evaluated, with argument names matching 13 | #' the variable names in \code{params}. The function must return a 14 | #' \code{data.frame}, \code{tibble}, or vector. 15 | #' @param ... additional arguments passed to \code{sim_function}. 16 | #' @param nest_results logical indicating whether to store the results of evaluating 17 | #' \code{sim_function} in a nested column. Default is \code{FALSE}. 18 | #' @param results_name character string to set the name of the nested column storing 19 | #' the results of the simulation. Default is \code{".results"}. 20 | #' @param system_time logical indicating whether to print computation time. 21 | #' \code{TRUE} by default. 22 | #' @param verbose logical indicating whether to display a message about 23 | #' variables used in function evaluation. \code{TRUE} by default. 24 | #' @inheritParams furrr::future_pmap 25 | #' 26 | #' @export 27 | #' 28 | #' @return A tibble containing parameter values and simulation results. 29 | #' 30 | #' @examples 31 | #' df <- data.frame( 32 | #' n = 3:5, 33 | #' lambda = seq(8, 16, 4) 34 | #' ) 35 | #' 36 | #' evaluate_by_row(df, rpois) 37 | #' 38 | 39 | evaluate_by_row <- function( 40 | params, sim_function, ..., 41 | nest_results = FALSE, 42 | results_name = ".results", 43 | .progress = FALSE, 44 | .options = furrr::furrr_options(seed = TRUE), 45 | system_time = TRUE, 46 | verbose = TRUE 47 | ) { 48 | 49 | sim_function_name <- paste0(deparse(substitute(sim_function)),"()") 50 | arg_names <- names(formals(sim_function)) 51 | if ("..." %in% arg_names) { 52 | eval_names <- names(params) 53 | param_dat <- params 54 | } else { 55 | var_names <- names(params) 56 | eval_names <- intersect(arg_names, var_names) 57 | param_dat <- dplyr::select(params, tidyr::all_of(eval_names)) 58 | } 59 | 60 | if (verbose) { 61 | msg <- paste("Evaluating", sim_function_name, "using the following variables:", paste(eval_names, collapse = ", ")) 62 | message(msg) 63 | } 64 | 65 | sys_tm <- system.time( 66 | results_list <- furrr::future_pmap( 67 | param_dat, 68 | .f = sim_function, 69 | ..., 70 | .progress = .progress, 71 | .options = .options 72 | ) 73 | ) 74 | 75 | if (system_time) print(sys_tm, "\n") 76 | 77 | res <- params 78 | res[[results_name]] <- results_list 79 | 80 | if (!nest_results) { 81 | res <- tidyr::unnest(res, cols = tidyr::all_of(results_name)) 82 | } 83 | 84 | return(res) 85 | } 86 | -------------------------------------------------------------------------------- /tests/testthat/test_repeat_and_stack.R: -------------------------------------------------------------------------------- 1 | test_that("repeat_and_stack() is equivalent to replicate() for simple expressions.", { 2 | 3 | N <- rpois(1, lambda = 8) 4 | p <- rpois(1, lambda = 4) 5 | 6 | set.seed(20240730) 7 | base_res <- replicate(N, data.frame(x = rexp(p)), simplify = FALSE) 8 | 9 | set.seed(20240730) 10 | list_res <- repeat_and_stack(N, data.frame(x = rexp(p)), stack = FALSE) 11 | 12 | expect_identical(base_res, list_res) 13 | expect_identical(length(list_res), N) 14 | expect_identical(sapply(list_res, nrow), rep(p, N)) 15 | 16 | set.seed(20240730) 17 | stack_res <- repeat_and_stack(N, data.frame(x = rexp(p))) 18 | 19 | do.call(rbind, base_res) |> 20 | expect_identical(stack_res) 21 | expect_identical(nrow(stack_res), N * p) 22 | }) 23 | 24 | 25 | test_that("repeat_and_stack() is equivalent to replicate() for multi-line expressions.", { 26 | 27 | N <- rpois(1, lambda = 8) 28 | p <- rpois(1, lambda = 4) 29 | 30 | set.seed(20240730) 31 | base_res <- replicate( 32 | n = N, 33 | expr = { 34 | x <- rexp(p) 35 | data.frame(M = mean(x), SE = sd(x) / sqrt(p)) 36 | }, 37 | simplify = FALSE 38 | ) 39 | 40 | set.seed(20240730) 41 | list_res <- repeat_and_stack( 42 | N, 43 | expr = { 44 | x <- rexp(p) 45 | data.frame(M = mean(x), SE = sd(x) / sqrt(p)) 46 | }, 47 | stack = FALSE 48 | ) 49 | 50 | expect_identical(base_res, list_res) 51 | expect_identical(length(list_res), N) 52 | expect_identical(sapply(list_res, nrow), rep(1L, N)) 53 | expect_identical(lapply(list_res, names), rep(list(c("M","SE")), N)) 54 | 55 | set.seed(20240730) 56 | stack_res <- repeat_and_stack( 57 | N, 58 | expr = { 59 | x <- rexp(p) 60 | data.frame(M = mean(x), SE = sd(x) / sqrt(p)) 61 | } 62 | ) 63 | 64 | do.call(rbind, base_res) |> 65 | expect_identical(stack_res) 66 | expect_identical(nrow(stack_res), N) 67 | expect_identical(names(stack_res), c("M","SE")) 68 | 69 | }) 70 | 71 | test_that("repeat_and_stack()'s ID argument works.", { 72 | 73 | N <- 4 74 | p <- 3 75 | idvar <- "ID" 76 | 77 | set.seed(20250504) 78 | list_anon <- repeat_and_stack(N, data.frame(x = rpois(p,lambda = 10)), stack = FALSE) 79 | set.seed(20250504) 80 | list_ID <- repeat_and_stack(N, data.frame(x = rpois(p,lambda = 10)), id = idvar, stack = FALSE) 81 | 82 | expect_false(identical(list_anon, list_ID)) 83 | expect_equivalent(list_anon, list_ID) 84 | expect_identical(names(list_ID), as.character(1:N)) 85 | 86 | set.seed(20250504) 87 | df_anon <- repeat_and_stack(N, data.frame(x = rpois(p,lambda = 10))) 88 | set.seed(20250504) 89 | df_ID <- repeat_and_stack(N, data.frame(x = rpois(p,lambda = 10)), id = idvar, stack = TRUE) 90 | 91 | expect_false(identical(df_anon, df_ID)) 92 | expect_identical(df_anon$x, df_ID$x) 93 | expect_identical(df_ID$ID, rep(1:N, each = p)) 94 | 95 | expect_identical(do.call(rbind, list_anon), df_anon) 96 | 97 | df_from_list <- data.frame( 98 | ID = rep(1:N, each = p), 99 | x = do.call(rbind, c(list_ID, make.row.names = FALSE)) 100 | ) 101 | expect_identical(df_from_list, df_ID) 102 | 103 | }) 104 | -------------------------------------------------------------------------------- /inst/REFERENCES.bib: -------------------------------------------------------------------------------- 1 | @article{tipton_small-sample_2015, 2 | title = {Small-sample adjustments for tests of moderators and model fit using robust variance estimation in meta-regression}, 3 | volume = {40}, 4 | doi = {10.3102/1076998615606099}, 5 | language = {en}, 6 | number = {6}, 7 | journal = {Journal of Educational and Behavioral Statistics}, 8 | author = {Tipton, Elizabeth and Pustejovsky, James E.}, 9 | month = dec, 10 | year = {2015}, 11 | pages = {604--634} 12 | } 13 | 14 | @article{boos2000MonteCarloEvaluation, 15 | title = {{{Monte Carlo}} evaluation of resampling-based hypothesis tests}, 16 | author = {Boos, Dennis D. and Zhang, Ji}, 17 | year = {2000}, 18 | month = jun, 19 | journal = {Journal of the American Statistical Association}, 20 | volume = {95}, 21 | number = {450}, 22 | pages = {486--492}, 23 | doi = {10.1080/01621459.2000.10474226} 24 | } 25 | 26 | @article{davidson2000BootstrapTestsHow, 27 | title = {Bootstrap Tests: How Many Bootstraps?}, 28 | shorttitle = {Bootstrap Tests}, 29 | author = {Davidson, Russell and MacKinnon, James G.}, 30 | year = {2000}, 31 | month = jan, 32 | journal = {Econometric Reviews}, 33 | volume = {19}, 34 | number = {1}, 35 | pages = {55--68}, 36 | issn = {0747-4938, 1532-4168}, 37 | doi = {10.1080/07474930008800459}, 38 | langid = {english}, 39 | } 40 | 41 | @article{joshiClusterWildBootstrapping2022, 42 | title = {Cluster Wild Bootstrapping to Handle Dependent Effect Sizes in Meta-Analysis with a Small Number of Studies}, 43 | author = {Joshi, Megha and Pustejovsky, James E. and Beretvas, S. Natasha}, 44 | year = {2022}, 45 | journal = {Research Synthesis Methods}, 46 | volume = {13}, 47 | number = {4}, 48 | pages = {457--477}, 49 | issn = {1759-2887}, 50 | doi = {10.1002/jrsm.1554}, 51 | abstract = {The most common and well-known meta-regression models work under the assumption that there is only one effect size estimate per study and that the estimates are independent. However, meta-analytic reviews of social science research often include multiple effect size estimates per primary study, leading to dependence in the estimates. Some meta-analyses also include multiple studies conducted by the same lab or investigator, creating another potential source of dependence. An increasingly popular method to handle dependence is robust variance estimation (RVE), but this method can result in inflated Type I error rates when the number of studies is small. Small-sample correction methods for RVE have been shown to control Type I error rates adequately but may be overly conservative, especially for tests of multiple-contrast hypotheses. We evaluated an alternative method for handling dependence, cluster wild bootstrapping, which has been examined in the econometrics literature but not in the context of meta-analysis. Results from two simulation studies indicate that cluster wild bootstrapping maintains adequate Type I error rates and provides more power than extant small-sample correction methods, particularly for multiple-contrast hypothesis tests. We recommend using cluster wild bootstrapping to conduct hypothesis tests for meta-analyses with a small number of studies. We have also created an R package that implements such tests.}, 52 | langid = {english}, 53 | keywords = {cluster wild bootstrap,dependence,meta-analysis,robust variance estimation}, 54 | } 55 | -------------------------------------------------------------------------------- /data-raw/welch_res_dat.R: -------------------------------------------------------------------------------- 1 | ## code to prepare `results` dataset goes here 2 | library(tidyverse) 3 | library(broom) 4 | 5 | 6 | # Data generation --------------------------------------------------------- 7 | 8 | # function to create normally distributed data for each group to run t test 9 | 10 | generate_dat <- function(n1, n2, mean_diff) { 11 | 12 | dat <- tibble( 13 | y = c(rnorm(n = n1, mean_diff, 1), # mean diff as mean, sd 1 14 | rnorm(n = n2, 0, 2)), # mean 0, sd 2 15 | group = c(rep("Group 1", n1), rep("Group 2", n2)) 16 | ) 17 | 18 | return(dat) 19 | 20 | } 21 | 22 | 23 | 24 | # Estimation Procedures --------------------------------------------------- 25 | 26 | # function to calculate t-test, extracts estimate of the mean difference, p val and ci 27 | 28 | # t and p value 29 | calc_t <- function(est, vd, df, method){ 30 | 31 | se <- sqrt(vd) # standard error 32 | t <- est / se # t-test 33 | p_val <- 2 * pt(-abs(t), df = df) # p value 34 | ci <- est + c(-1, 1) * qt(.975, df = df) * se # confidence interval 35 | 36 | return(tibble(method = method, est = est, var = vd, p_val = p_val, lower_bound = ci[1], upper_bound = ci[2])) 37 | } 38 | 39 | 40 | estimate <- function(dat, n1, n2){ 41 | 42 | # calculate summary stats 43 | means <- tapply(dat$y, dat$group, mean) 44 | vars <- tapply(dat$y, dat$group, var) 45 | 46 | # calculate summary stats 47 | est <- means[1] - means[2] # mean diff 48 | var_1 <- vars[1] # var for group 1 49 | var_2 <- vars[2] # var for group 2 50 | 51 | # conventional t-test 52 | dft <- n1 + n2 - 2 # degrees of freedom 53 | sp_sq <- ((n1 - 1) * var_1 + (n2 - 1) * var_2) / dft # pooled var 54 | vdt <- sp_sq * (1 / n1 + 1 / n2) # variance of estimate 55 | 56 | # welch t-test 57 | dfw <- (var_1 / n1 + var_2 / n2)^2 / (((1 / (n1 - 1)) * (var_1 / n1)^2) + ((1 / (n2 - 1)) * (var_2 / n2)^2)) # degrees of freedom 58 | vdw <- var_1 / n1 + var_2 / n2 # variance of estimate 59 | 60 | results <- bind_rows(calc_t(est = est, vd = vdt, df = dft, method = "t-test"), 61 | calc_t(est = est, vd = vdw, df = dfw, method = "Welch t-test")) 62 | 63 | 64 | return(results) 65 | 66 | } 67 | 68 | # Simulation Driver ------------------------------------------------------- 69 | 70 | run_sim <- function(iterations, n1, n2, mean_diff, seed = NULL) { 71 | if (!is.null(seed)) set.seed(seed) 72 | 73 | results <- 74 | map_dfr(1:iterations, ~ { 75 | dat <- generate_dat(n1, n2, mean_diff) 76 | estimate(dat, n1, n2) 77 | }) 78 | 79 | } 80 | 81 | 82 | # Experimental Design ----------------------------------------------------- 83 | 84 | # generating 1000 iterations 85 | 86 | set.seed(20200110) 87 | 88 | # now express the simulation parameters as vectors/lists 89 | 90 | design_factors <- list( 91 | n1 = 50, 92 | n2 = c(50, 70), 93 | mean_diff = c(0, .5, 1, 2) 94 | ) 95 | 96 | params <- 97 | expand_grid(!!!design_factors) %>% 98 | mutate( 99 | iterations = 1000, 100 | seed = round(runif(1) * 2^30) + 1:n() 101 | ) 102 | 103 | 104 | 105 | 106 | # Running Sim ------------------------------------------------------------- 107 | 108 | system.time( 109 | results <- 110 | params %>% 111 | mutate( 112 | res = pmap(., .f = run_sim) 113 | ) %>% 114 | unnest(cols = c(res)) 115 | ) 116 | 117 | welch_res <- results 118 | 119 | usethis::use_data(welch_res, overwrite = TRUE) 120 | -------------------------------------------------------------------------------- /man/bundle_sim.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/bundle_sim.R 3 | \name{bundle_sim} 4 | \alias{bundle_sim} 5 | \title{Bundle functions into a simulation driver function} 6 | \usage{ 7 | bundle_sim( 8 | f_generate, 9 | f_analyze, 10 | f_summarize = NULL, 11 | reps_name = "reps", 12 | seed_name = "seed", 13 | summarize_opt_name = "summarize", 14 | stack_reps = TRUE, 15 | id = NULL 16 | ) 17 | } 18 | \arguments{ 19 | \item{f_generate}{function for data-generation} 20 | 21 | \item{f_analyze}{function for data-analysis. The first argument must be the 22 | data, in the format generated by \code{f_analyze()}.} 23 | 24 | \item{f_summarize}{function for calculating performance summaries across 25 | replications. The first argument must be the replicated data analysis 26 | results. Default is \code{NULL}, so that no summary function is used.} 27 | 28 | \item{reps_name}{character string to set the name of the argument for the 29 | number of replications, with a default value of \code{"reps"}.} 30 | 31 | \item{seed_name}{character string to set the name of the argument for the 32 | seed option, with a default value of \code{"seed"}. Set to \code{NULL} to 33 | remove the argument from the simulation driver.} 34 | 35 | \item{summarize_opt_name}{character string to set the name of the argument 36 | for where to apply \code{f_summarize} to the simulation results, with a 37 | default value of \code{"summarize"}. Ignored if no \code{f_summarize} function is 38 | specified. Set to \code{NULL} to remove the argument from the simulation 39 | driver.} 40 | 41 | \item{stack_reps}{logical indicating whether to combine the simulation 42 | results into a \code{data.frame}, with a default value of 43 | \code{TRUE}. If \code{FALSE}, then the function will return replications in 44 | a list and so \code{f_summarize} must be able to take a list as its first 45 | argument. Passed to \code{repeat_and_stack()}.} 46 | 47 | \item{id}{Character string to use for creating a variable with a unique 48 | identifier for each repetition of `f_generate` and `f_analyze`. If set to \code{NULL} (the default), then 49 | no identifier is created. Passed to \code{repeat_and_stack()}.} 50 | } 51 | \value{ 52 | A function to repeatedly run the `f_generate` and `f_analyze` 53 | functions and (optionally) apply `f_summarize` to the resulting 54 | replications. 55 | } 56 | \description{ 57 | Bundle a data-generation function, a data-analysis function, and 58 | (optionally) a performance summary function into a simulation driver. 59 | } 60 | \examples{ 61 | f_G <- rnorm 62 | f_A <- function(x, trim = 0) data.frame(y_bar = mean(x, trim = trim)) 63 | f_S <- function(x, calc_sd = FALSE) { 64 | if (calc_sd) { 65 | res_SD <- apply(x, 2, sd) 66 | res <- data.frame(M = colMeans(x), SD = res_SD) 67 | } else { 68 | res <- data.frame(M = colMeans(x)) 69 | } 70 | res 71 | } 72 | 73 | # bundle data-generation and data-analysis functions 74 | sim1 <- bundle_sim(f_generate = f_G, f_analyze = f_A) 75 | args(sim1) 76 | res1 <- sim1(4, n = 70, mean = 0.5, sd = 1, trim = 0.2) 77 | res1 78 | 79 | # bundle data-generation, data-analysis, and performance summary functions 80 | sim2 <- bundle_sim(f_generate = f_G, f_analyze = f_A, f_summarize = f_S) 81 | args(sim2) 82 | res2 <- sim2(24, n = 7, mean = 0, sd = 1, trim = 0.2, calc_sd = TRUE) 83 | res2 84 | 85 | # bundle data-generation and data-analysis functions, returning results as a list 86 | sim3 <- bundle_sim(f_generate = f_G, f_analyze = f_A, stack_reps = FALSE) 87 | args(sim3) 88 | res3 <- sim3(4, n = 70, mean = 0.5, sd = 3, trim = 0.2) 89 | res3 90 | 91 | } 92 | -------------------------------------------------------------------------------- /tests/testthat/test_winsorize_options.R: -------------------------------------------------------------------------------- 1 | K <- 10000 2 | ncp <- 2 3 | df <- 3 4 | mu <- ncp * sqrt(df/ 2) * gamma((df - 1) / 2) / gamma(df / 2) 5 | sigma_sq <- (1 + ncp^2) * df / (df - 2) - mu^2 6 | 7 | dat <- data.frame( 8 | x = rt(K, df = df, ncp = ncp), 9 | SE_sq = rchisq(K, df = sigma_sq) 10 | ) 11 | 12 | 13 | winz <- 1.5 14 | qrtls <- quantile(dat$x, c(.25, .75)) 15 | IQR <- qrtls[2] - qrtls[1] 16 | dat$x_trim <- pmax(pmin(dat$x, qrtls[2] + winz * IQR), qrtls[1] - winz * IQR) 17 | 18 | var_winz <- 0.8 19 | var_qrtls <- quantile(dat$SE_sq, c(.25, .75)) 20 | var_IQR <- var_qrtls[2] - var_qrtls[1] 21 | dat$SE_sq_trim <- pmax(pmin(dat$SE_sq, var_qrtls[2] + var_winz * var_IQR), var_qrtls[1] - var_winz * var_IQR) 22 | 23 | test_that("winsorization works for absolute performance measures", { 24 | 25 | vbls <- c("K_absolute","bias","bias_mcse","var","var_mcse","stddev","stddev_mcse","mse","mse_mcse","rmse","rmse_mcse") 26 | 27 | res_wins <- calc_absolute(dat, x, true_param = mu, winz = winz) 28 | res_hand <- calc_absolute(dat, x_trim, true_param = mu) 29 | expect_equal( 30 | res_wins[vbls], 31 | res_hand[vbls] 32 | ) 33 | expect_equal(res_wins$winsor_pct, mean(dat$x != dat$x_trim)) 34 | 35 | res_wins <- calc_absolute(dat, SE_sq, true_param = sigma_sq, winz = var_winz) 36 | res_hand <- calc_absolute(dat, SE_sq_trim, true_param = sigma_sq) 37 | expect_equal( 38 | res_wins[vbls], 39 | res_hand[vbls] 40 | ) 41 | expect_equal(res_wins$winsor_pct, mean(dat$SE_sq != dat$SE_sq_trim)) 42 | 43 | }) 44 | 45 | test_that("winsorization works for relative performance measures", { 46 | vbls <- c("bias_mcse","rmse","rmse_mcse") 47 | 48 | res_wins <- calc_relative(dat, x, true_param = mu, winz = winz) 49 | res_hand <- calc_absolute(dat, x_trim, true_param = mu, criteria = c("bias","rmse")) 50 | expect_equal(res_wins$K_relative, res_hand$K_absolute) 51 | expect_equal(res_wins$rel_bias, res_hand$bias / mu + 1) 52 | expect_equal(res_wins[paste("rel",vbls, sep = "_")], res_hand[vbls] / mu, check.attributes = FALSE) 53 | expect_equal(res_wins$winsor_pct, mean(dat$x != dat$x_trim)) 54 | 55 | res_wins <- calc_relative(dat, SE_sq, true_param = sigma_sq, winz = var_winz) 56 | res_hand <- calc_absolute(dat, SE_sq_trim, true_param = sigma_sq, criteria = c("bias","rmse")) 57 | expect_equal(res_wins$K_relative, res_hand$K_absolute) 58 | expect_equal(res_wins$rel_bias, res_hand$bias / sigma_sq + 1) 59 | expect_equal(res_wins[paste("rel",vbls, sep = "_")], res_hand[vbls] / sigma_sq, check.attributes = FALSE) 60 | expect_equal(res_wins$winsor_pct, mean(dat$SE_sq != dat$SE_sq_trim)) 61 | 62 | }) 63 | 64 | 65 | test_that("winsorization works for coverage measures", { 66 | 67 | dat$lo <- runif(nrow(dat), min = 0, max = 3) 68 | dat$hi <- dat$lo + dat$x 69 | res_wins <- calc_coverage(dat, lower_bound = lo, upper_bound = hi, true_param = mu, winz = winz) 70 | res_hand <- calc_coverage(dat, lower_bound = rep(0, nrow(dat)), upper_bound = x_trim, true_param = mu, criteria = c("width")) 71 | 72 | vbls <- c("K_coverage","width","width_mcse") 73 | expect_equal(res_wins[vbls], res_hand[vbls]) 74 | expect_equal(res_wins$width_winsor_pct, mean(dat$x != dat$x_trim)) 75 | }) 76 | 77 | test_that("winsorization works for relative variance measures", { 78 | 79 | vbls <- c("K_relvar","rel_bias_var","rel_bias_var_mcse","rel_mse_var","rel_mse_var_mcse", "rel_rmse_var", "rel_rmse_var_mcse") 80 | res_wins <- calc_relative_var(dat, estimates = x, var_estimates = SE_sq, winz = winz, var_winz = var_winz) 81 | res_hand <- calc_relative_var(dat, estimates = x_trim, var_estimates = SE_sq_trim) 82 | 83 | expect_equal(res_wins[vbls], res_hand[vbls]) 84 | expect_equal(res_wins$est_winsor_pct, mean(dat$x != dat$x_trim)) 85 | expect_equal(res_wins$var_winsor_pct, mean(dat$SE_sq != dat$SE_sq_trim)) 86 | 87 | }) 88 | -------------------------------------------------------------------------------- /inst/templates/simulation_skeleton.R: -------------------------------------------------------------------------------- 1 | #------------------------------------------------------ 2 | # Set development values for simulation parameters 3 | #------------------------------------------------------ 4 | 5 | # What are your model parameters? 6 | # What are your design parameters? 7 | 8 | 9 | #------------------------------------------------------ 10 | # Data Generating Model 11 | #------------------------------------------------------ 12 | 13 | generate_dat <- function(model_params) { 14 | 15 | return(dat) 16 | } 17 | 18 | # Test the data-generating model - How can you verify that it is correct? 19 | 20 | 21 | #------------------------------------------------------ 22 | # Model-fitting/estimation/testing functions 23 | #------------------------------------------------------ 24 | 25 | 26 | estimate <- function(dat, design_params) { 27 | 28 | return(results) 29 | } 30 | 31 | # Test the estimation function 32 | 33 | #------------------------------------------------------ 34 | # Calculate performance measures 35 | # (For some simulations, it may make more sense 36 | # to do this as part of the simulation driver.) 37 | #------------------------------------------------------ 38 | 39 | calc_performance <- function(results, model_params) { 40 | 41 | return(performance_measures) 42 | } 43 | 44 | # Check performance calculations 45 | 46 | #----------------------------------------------------------- 47 | # Simulation Driver - should return a data.frame or tibble 48 | #----------------------------------------------------------- 49 | 50 | run_sim <- function(iterations, model_params, design_params, seed = NULL) { 51 | if (!is.null(seed)) set.seed(seed) 52 | 53 | results <- 54 | map_dfr(1:iterations, ~ { 55 | dat <- generate_dat(model_params) 56 | estimate(dat, design_params) 57 | }) 58 | 59 | calc_performance(results, model_params) 60 | } 61 | 62 | # demonstrate the simulation driver 63 | 64 | #------------------------------------- 65 | # Experimental Design 66 | #------------------------------------- 67 | library(tidyverse) 68 | set.seed(20150316) # change this seed value! 69 | 70 | # now express the simulation parameters as vectors/lists 71 | 72 | design_factors <- list(factor1 = , factor2 = , ...) # combine into a design set 73 | 74 | params <- 75 | expand_grid(!!!design_factors) %>% 76 | mutate( 77 | iterations = 1000, # change this to how many ever iterations 78 | seed = round(runif(1) * 2^30) + 1:n() 79 | ) 80 | 81 | # All look right? 82 | lengths(design_factors) 83 | nrow(params) 84 | head(params) 85 | 86 | 87 | 88 | #-------------------------------------------------------- 89 | # run simulations in serial - purrr workflow 90 | #-------------------------------------------------------- 91 | library(purrr) 92 | 93 | system.time( 94 | results <- 95 | params %>% 96 | mutate(res = pmap(., .f = run_sim)) %>% 97 | unnest(cols = res) 98 | ) 99 | 100 | 101 | #-------------------------------------------------------- 102 | # run simulations in parallel - future + furrr workflow 103 | #-------------------------------------------------------- 104 | 105 | library(future) 106 | library(furrr) 107 | 108 | plan(multisession) # choose an appropriate plan from the future package 109 | evaluate_by_row(params, run_sim) 110 | 111 | # OR 112 | plan(multisession) 113 | system.time( 114 | results <- 115 | params %>% 116 | mutate(res = future_pmap(., .f = run_sim)) %>% 117 | unnest(cols = res) 118 | ) 119 | 120 | #-------------------------------------------------------- 121 | # Save results and details 122 | #-------------------------------------------------------- 123 | 124 | session_info <- sessionInfo() 125 | run_date <- date() 126 | 127 | save(params, results, session_info, run_date, file = "simulation_results.Rdata") 128 | -------------------------------------------------------------------------------- /R/calc_absolute.R: -------------------------------------------------------------------------------- 1 | #' @title Calculate absolute performance criteria and MCSE 2 | #' 3 | #' @description Calculates absolute bias, variance, mean squared error (mse) and 4 | #' root mean squared error (rmse). The function also calculates the associated 5 | #' Monte Carlo standard errors. 6 | #' 7 | #' @param data data frame or tibble containing the simulation results. 8 | #' @param estimates vector or name of column from \code{data} containing point 9 | #' estimates. 10 | #' @param true_param vector or name of column from \code{data} containing 11 | #' corresponding true parameters. 12 | #' @param criteria character or character vector indicating the performance 13 | #' criteria to be calculated, with possible options \code{"bias"}, 14 | #' \code{"variance"}, \code{"stddev"}, \code{"mse"}, and \code{"rmse"}. 15 | #' @param winz numeric value for winsorization constant. If set to a finite 16 | #' value, estimates will be winsorized at the constant multiple of the 17 | #' inter-quartile range below the 25th percentile or above the 75th percentile 18 | #' of the distribution. For instance, setting \code{winz = 3} will 19 | #' truncate estimates that fall below P25 - 3 * IQR or above P75 + 3 * IQR. 20 | #' 21 | #' @return A tibble containing the number of simulation iterations, performance 22 | #' criteria estimate(s) and the associated MCSE. 23 | #' 24 | #' 25 | #' @export 26 | #' 27 | #' @examples 28 | #' calc_absolute(data = t_res, estimates = est, true_param = true_param) 29 | #' 30 | #' @importFrom stats sd 31 | 32 | 33 | calc_absolute <- function( 34 | data, 35 | estimates, true_param, 36 | criteria = c("bias", "variance", "stddev","mse", "rmse"), 37 | winz = Inf 38 | ) { 39 | 40 | criteria <- match.arg(criteria, choices = c("bias", "variance", "stddev","mse", "rmse"), several.ok = TRUE) 41 | 42 | if (!missing(data)) { 43 | cl <- match.call() 44 | true_param <- eval(cl$true_param, envir = data, enclos = parent.frame()) 45 | estimates <- eval(cl$estimates, envir = data, enclos = parent.frame()) 46 | } 47 | 48 | true_param <- unique(true_param) # true param 49 | if (length(true_param) > 1L) stop("`true_param` must have a single unique value.") 50 | 51 | estimates <- estimates[!is.na(estimates)] 52 | 53 | if (winz < Inf) estimates <- winsorize(estimates, winz) 54 | 55 | # calculate sample stats 56 | K <- length(estimates) # number of iterations 57 | t_bar <- mean(estimates) # mean of estimates 58 | bias <- t_bar - true_param # bias 59 | s_t <- sd(estimates) # standard deviation 60 | g_t <- sum((estimates - t_bar)^3) / (K * s_t^3) # skewness 61 | k_t <- sum((estimates - t_bar)^4) / (K * s_t^4) # kurtosis 62 | 63 | mse <- mean((estimates - true_param)^2) # calculate mse 64 | 65 | # jacknife 66 | t_bar_j <- (K * t_bar - estimates) / (K - 1) # jacknife t bar 67 | bias_j_sq <- (t_bar_j - true_param)^2 # jacknife bias 68 | s_sq_t_j <- ((K - 1) * s_t^2 - (estimates - t_bar)^2 * K / (K - 1)) / (K - 2) # jacknife var 69 | 70 | rmse_j <- sqrt(bias_j_sq + s_sq_t_j) # jacknife rmse 71 | 72 | # initialize tibble 73 | dat <- tibble::tibble(K_absolute = K) 74 | 75 | if (winz < Inf) { 76 | dat$winsor_pct <- attr(estimates, "winsor_pct") 77 | dat$winsor_pct_mcse <- sqrt(dat$winsor_pct * (1 - dat$winsor_pct) / K) 78 | } 79 | 80 | if ("bias" %in% criteria) { 81 | dat$bias <- bias 82 | dat$bias_mcse <- s_t / sqrt(K) 83 | } 84 | 85 | if ("variance" %in% criteria) { 86 | dat$var <- s_t^2 87 | dat$var_mcse <- s_t^2 * sqrt((k_t - 1) / K) 88 | } 89 | 90 | if ("stddev" %in% criteria) { 91 | dat$stddev <- s_t 92 | dat$stddev_mcse <- sqrt(((K - 1)/K) * sum((sqrt(s_sq_t_j) - s_t)^2)) 93 | } 94 | 95 | if ("mse" %in% criteria) { 96 | dat$mse <- mse 97 | dat$mse_mcse <- sqrt((1/K) * (s_t^4 * (k_t -1) + 4 * s_t^3 * g_t * bias + 4 * s_t^2 * bias^2)) 98 | } 99 | 100 | if ("rmse" %in% criteria) { 101 | rmse <- sqrt(mse) 102 | dat$rmse <- rmse 103 | dat$rmse_mcse <- sqrt(((K - 1)/K) * sum((rmse_j - rmse)^2)) 104 | } 105 | 106 | return(dat) 107 | 108 | } 109 | -------------------------------------------------------------------------------- /docs/deps/headroom-0.11.0/headroom.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * headroom.js v0.11.0 - Give your page some headroom. Hide your header until you need it 3 | * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js 4 | * License: MIT 5 | */ 6 | 7 | !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=ls.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t,n){n=n||{},Object.assign(this,o.options,n),this.classes=Object.assign({},o.options.classes,n.classes),this.elem=t,this.tolerance=function(t){return t===Object(t)?t:{down:t,up:t}}(this.tolerance),this.initialised=!1,this.frozen=!1}return o.prototype={constructor:o,init:function(){return o.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},o.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},o.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),o}); -------------------------------------------------------------------------------- /tests/testthat/test_calc_combinations.R: -------------------------------------------------------------------------------- 1 | skip_if_not_installed("dplyr") 2 | skip_if_not_installed("tidyr") 3 | skip_if_not_installed("purrr") 4 | 5 | library(dplyr) 6 | library(tidyr) 7 | library(purrr) 8 | 9 | data("welch_res") 10 | data("Tipton_Pusto") 11 | 12 | test_that("calc_*() functions can be used in combination inside of dplyr::summarize.", { 13 | 14 | alpha <- c(.01, .05) 15 | 16 | performance <- 17 | welch_res %>% 18 | group_by(n1, n2, mean_diff, method) %>% 19 | summarize( 20 | calc_absolute(estimates = est, true_param = mean_diff), 21 | calc_relative(estimates = est, true_param = mean_diff), 22 | calc_relative_var(estimates = est, var_estimates = var), 23 | calc_coverage(lower_bound = lower_bound, upper_bound = upper_bound, true_param = mean_diff), 24 | calc_rejection(p_values = p_val, alpha = alpha), 25 | .groups = "drop" 26 | ) 27 | 28 | perf_vars <- names(performance) 29 | 30 | abs_vars <- c("K_absolute", eval(formals(calc_absolute)$criteria)) 31 | abs_vars[3] <- "var" 32 | abs_mcse <- paste(abs_vars[-1], "mcse", sep = "_") 33 | 34 | rel_vars <- c("K_relative", eval(formals(calc_relative)$criteria)) 35 | rel_vars <- sub("relative ", "rel_", rel_vars) 36 | rel_mcse <- paste(rel_vars[-1], "mcse", sep = "_") 37 | 38 | relvar_vars <- eval(formals(calc_relative_var)$criteria) 39 | relvar_vars <- c("K_relvar", paste(sub("relative ", "rel_", relvar_vars), "var", sep = "_")) 40 | relvar_mcse <- paste(relvar_vars[-1], "mcse", sep = "_") 41 | 42 | cov_vars <- c("K_coverage", eval(formals(calc_coverage)$criteria)) 43 | cov_mcse <- paste(cov_vars[-1], "mcse", sep = "_") 44 | 45 | rej_vars <- c("K_rejection", paste("rej_rate", substr(as.character(alpha),3,5), sep = "_")) 46 | rej_mcse <- paste("rej_rate_mcse", substr(as.character(alpha),3,5), sep = "_") 47 | 48 | all_vars <- c(abs_vars, abs_mcse, rel_vars, rel_mcse, relvar_vars, relvar_mcse, cov_vars, cov_mcse, rej_vars, rej_mcse) 49 | expect_true(all(all_vars %in% perf_vars)) 50 | expect_identical(setdiff(perf_vars, all_vars), c('n1', 'n2', 'mean_diff', 'method')) 51 | }) 52 | 53 | test_that("calc_*() functions can be used in combination inside of dplyr::summarize.", { 54 | 55 | # multiple calc_absolute calls 56 | 57 | est_names <- c("hom","Welch") 58 | performance <- 59 | welch_res %>% 60 | select(n1, n2, mean_diff, method, est, var) %>% 61 | mutate( 62 | method = recode(method, "t-test" = est_names[1], "Welch t-test" = est_names[2]) 63 | ) %>% 64 | group_by(n1, n2, mean_diff, method) %>% 65 | mutate( 66 | id = row_number(), 67 | ) %>% 68 | group_by(n1, n2, mean_diff) %>% 69 | pivot_wider(names_from = "method", values_from = c(est, var)) %>% 70 | summarize( 71 | hom = calc_absolute(estimates = est_hom, true_param = mean_diff), 72 | Welch = calc_absolute(estimates = est_Welch, true_param = mean_diff), 73 | .groups = "drop" 74 | ) %>% 75 | unnest(cols = c(hom, Welch), names_sep = "_") 76 | 77 | perf_vars <- names(performance) 78 | 79 | abs_vars <- c("K_absolute", eval(formals(calc_absolute)$criteria)) 80 | abs_vars[3] <- "var" 81 | abs_mcse <- paste(abs_vars[-1], "mcse", sep = "_") 82 | 83 | all_vars <- 84 | expand_grid(est = est_names, perf = c(abs_vars, abs_mcse)) %>% 85 | pmap_chr(paste, sep = "_") 86 | 87 | expect_true(all(all_vars %in% perf_vars)) 88 | expect_identical(setdiff(perf_vars, all_vars), c('n1', 'n2', 'mean_diff')) 89 | 90 | # summarize across() multiple estimators 91 | 92 | test_names <- c("AHA","AHB","AHZ","EDF","EDT") 93 | performance <- 94 | Tipton_Pusto %>% 95 | select(num_studies, r, Isq, test, contrast, q, pval = rej_rate) %>% 96 | pivot_wider(names_from = "test", values_from = pval) %>% 97 | group_by(num_studies, Isq, q) %>% 98 | summarise( 99 | across(all_of(test_names), ~ calc_rejection(p_values = .)), 100 | .groups = "drop" 101 | ) %>% 102 | unnest(cols = all_of(test_names), names_sep = "_") 103 | 104 | perf_vars <- names(performance) 105 | 106 | rej_vars <- c("K_rejection", "rej_rate","rej_rate_mcse") 107 | 108 | all_vars <- 109 | expand_grid(test_names, rej_vars) %>% 110 | pmap_chr(paste, sep = "_") 111 | 112 | expect_true(all(all_vars %in% perf_vars)) 113 | expect_identical(setdiff(perf_vars, all_vars), c('num_studies', 'Isq', 'q')) 114 | 115 | }) 116 | -------------------------------------------------------------------------------- /R/calc_relative_var.R: -------------------------------------------------------------------------------- 1 | #' Calculate jack-knife Monte Carlo SE for variance estimators 2 | #' 3 | #' @description Calculates relative bias, mean squared error (relative mse), and 4 | #' root mean squared error (relative rmse) of variance estimators. The 5 | #' function also calculates the associated jack-knife Monte Carlo standard 6 | #' errors. 7 | #' 8 | #' @param var_estimates vector or name of column from \code{data} containing 9 | #' variance estimates for point estimator in \code{estimates}. 10 | #' @param var_winz numeric value for winsorization constant for the 11 | #' variance estimates. If set to a finite value, variance estimates will be 12 | #' winsorized at the constant multiple of the inter-quartile range below the 13 | #' 25th percentile or above the 75th percentile of the distribution. For 14 | #' instance, setting \code{var_winz = 3} will truncate variance estimates 15 | #' that fall below P25 - 3 * IQR or above P75 + 3 * IQR. By default 16 | #' \code{var_winz} is set to the same constant as \code{winsorize}. 17 | #' @inheritParams calc_relative 18 | #' 19 | #' @return A tibble containing the number of simulation iterations, performance 20 | #' criteria estimate(s) and the associated MCSE. 21 | #' 22 | #' 23 | #' @export 24 | #' 25 | #' @examples 26 | #' calc_relative_var(data = alpha_res, estimates = A, var_estimates = Var_A) 27 | #' 28 | #' @importFrom stats var 29 | 30 | 31 | calc_relative_var <- function( 32 | data, 33 | estimates, var_estimates, 34 | criteria = c("relative bias", "relative mse", "relative rmse"), 35 | winz = Inf, 36 | var_winz = winz 37 | ) { 38 | 39 | criteria <- match.arg(criteria, choices = c("relative bias", "relative mse", "relative rmse"), several.ok = TRUE) 40 | 41 | if (!missing(data)) { 42 | cl <- match.call() 43 | estimates <- eval(cl$estimates, envir = data, enclos = parent.frame()) 44 | var_estimates <- eval(cl$var_estimates, envir = data, enclos = parent.frame()) 45 | } 46 | 47 | not_miss <- !is.na(estimates) & !is.na(var_estimates) 48 | estimates <- estimates[not_miss] 49 | var_est <- var_estimates[not_miss] 50 | 51 | # winsorization 52 | if (winz < Inf) estimates <- winsorize(estimates, winz) 53 | if (var_winz < Inf) var_est <- winsorize(var_est, var_winz) 54 | 55 | # calculate sample stats 56 | K <- length(var_est) # iterations 57 | v_bar <- mean(var_est) # sample mean of variance estimator 58 | t_bar <- mean(estimates) # sample mean of the estimates 59 | 60 | var_v <- var(var_est) # variance of variance estimates 61 | var_t <- var(estimates) # sample variance of the estimates 62 | 63 | # jack-knife 64 | v_bar_j <- (K * v_bar - var_est) / (K - 1) # jack-knife mean of var estimates 65 | s_sq_t_j <- ((K - 1) * var_t - (estimates - t_bar)^2 * K / (K - 1)) / (K - 2) # jack-knife var of point estimates 66 | s_sq_v_j <- ((K - 1) * var_v - (var_est - v_bar)^2 * K / (K - 1)) / (K - 2) # jack-knife var of var estimates 67 | 68 | rb_var <- v_bar/ var_t # relative bias of variance estimates 69 | rel_mse_var <- ((v_bar - var_t)^2 + var_v) / var_t^2 70 | rel_mse_var_j <- ((v_bar_j - s_sq_t_j)^2 + s_sq_v_j) / (s_sq_t_j)^2 # jack-knife relative mse of var estimates 71 | 72 | # initialize tibble 73 | dat <- tibble::tibble(K_relvar = K) 74 | 75 | if (winz < Inf) { 76 | dat$est_winsor_pct <- attr(estimates, "winsor_pct") 77 | dat$est_winsor_pct_mcse <- sqrt(dat$est_winsor_pct * (1 - dat$est_winsor_pct) / K) 78 | } 79 | if (var_winz < Inf) { 80 | dat$var_winsor_pct <- attr(var_est, "winsor_pct") 81 | dat$var_winsor_pct_mcse <- sqrt(dat$var_winsor_pct * (1 - dat$var_winsor_pct) / K) 82 | } 83 | 84 | if ("relative bias" %in% criteria) { 85 | dat$rel_bias_var <- ifelse(var_t == 0, NA_real_, rb_var) 86 | dat$rel_bias_var_mcse <- ifelse( 87 | var_t == 0, 88 | NA_real_, 89 | sqrt(sum((v_bar_j / s_sq_t_j - rb_var)^2) * (K - 1) / K) 90 | ) 91 | } 92 | 93 | if ("relative mse" %in% criteria) { 94 | dat$rel_mse_var <- ifelse(var_t == 0, NA_real_, rel_mse_var) 95 | dat$rel_mse_var_mcse <- ifelse( 96 | var_t == 0, 97 | NA_real_, 98 | sqrt(sum((rel_mse_var_j - rel_mse_var)^2) * (K - 1) / K) 99 | ) 100 | } 101 | 102 | if ("relative rmse" %in% criteria) { 103 | rel_rmse_var <- sqrt(rel_mse_var) 104 | dat$rel_rmse_var <- ifelse(var_t == 0, NA_real_, rel_rmse_var) 105 | dat$rel_rmse_var_mcse <- ifelse( 106 | var_t == 0, 107 | NA_real_, 108 | sqrt(sum((sqrt(rel_mse_var_j) - rel_rmse_var)^2) * (K - 1) / K) 109 | ) 110 | } 111 | 112 | return(dat) 113 | } 114 | -------------------------------------------------------------------------------- /tests/testthat/test_bundle_sim_with_ebr.R: -------------------------------------------------------------------------------- 1 | skip_if_not_installed("dplyr") 2 | skip_if_not_installed("tidyr") 3 | skip_if_not_installed("purrr") 4 | 5 | library(dplyr) 6 | library(tidyr) 7 | library(purrr) 8 | 9 | generate_chisq_samples <- function(nA, nB, mu_A, mu_B) { 10 | 11 | YA <- rchisq(n = nA, df = mu_A) 12 | YB <- rchisq(n = nB, df = mu_B) 13 | 14 | sample_data <- data.frame( 15 | group = rep(c("A","B"), times = c(nA, nB)), 16 | Y = c(YA, YB) 17 | ) 18 | return(sample_data) 19 | } 20 | 21 | t_test <- function(sample_data) { 22 | 23 | # calculate raw summary statistics 24 | Ns <- table(sample_data$group) 25 | means <- tapply(sample_data$Y, sample_data$group, mean) 26 | sds <- tapply(sample_data$Y, sample_data$group, sd) 27 | 28 | # t-test 29 | tstat <- (means[[2]] - means[[1]]) / sqrt(sum(sds^2 / Ns)) 30 | df <- sum(sds^2 / Ns)^2 / sum(sds^4 / (Ns^2 * (Ns - 1))) 31 | pval <- 2 * pt(q = abs(tstat), df = df, lower.tail = FALSE) 32 | 33 | return(data.frame(tstat, df, pval)) 34 | } 35 | 36 | run_t_tests <- function(sample_data) { 37 | t_raw <- t_test(sample_data) 38 | t_raw$transform <- "raw" 39 | 40 | log_data <- data.frame( 41 | group = sample_data$group, 42 | Y = log(sample_data$Y) 43 | ) 44 | t_log <- t_test(log_data) 45 | t_log$transform <- "log" 46 | 47 | return(rbind(t_raw, t_log)) 48 | } 49 | 50 | eval_t_tests <- function(replications) { 51 | replications %>% 52 | group_by(transform) %>% 53 | summarize( 54 | rate_05 = mean(pval < .05), 55 | rate_10 = mean(pval < .10) 56 | ) 57 | } 58 | 59 | simmer_A <- bundle_sim( 60 | f_generate = generate_chisq_samples, 61 | f_analyze = run_t_tests 62 | ) 63 | 64 | simmer_B <- bundle_sim( 65 | f_generate = generate_chisq_samples, 66 | f_analyze = run_t_tests, 67 | f_summarize = eval_t_tests, 68 | ) 69 | 70 | run_sim <- function(reps, nA, nB, mu_A, mu_B, seed = NULL) { 71 | 72 | if (!is.null(seed)) set.seed(seed) 73 | 74 | replications <- 75 | map_dfr(1:reps, ~ { 76 | dat <- generate_chisq_samples(nA = nA, nB = nB, mu_A = mu_A, mu_B = mu_B) 77 | run_t_tests(dat) 78 | }) %>% 79 | bind_rows() 80 | 81 | replications %>% 82 | eval_t_tests() 83 | } 84 | 85 | design_factors <- list( 86 | mu_A = c(10, 15, 20), 87 | nA = c(8, 16), 88 | nB = c(8, 16) 89 | ) 90 | 91 | params <- 92 | expand_grid(!!!design_factors) %>% 93 | mutate( 94 | mu_B = mu_A, 95 | reps = 15, 96 | ) 97 | 98 | test_that("bundle_sim functions work with pmap().", { 99 | 100 | set.seed(20240221) 101 | res_run_sim <- pmap_dfr(params, run_sim) 102 | 103 | set.seed(20240221) 104 | res_simmer_A <- 105 | params %>% 106 | mutate( 107 | res = pmap(., .f = simmer_A), 108 | res = map(res, eval_t_tests) 109 | ) %>% 110 | unnest(res) 111 | 112 | expect_identical( 113 | res_run_sim, 114 | select(res_simmer_A, transform, rate_05, rate_10) 115 | ) 116 | 117 | set.seed(20240221) 118 | res_simmer_B <- pmap_dfr(params, .f = simmer_B) 119 | expect_identical(res_run_sim, res_simmer_B) 120 | 121 | }) 122 | 123 | test_that("bundle_sim functions work with evaluate_by_row().", { 124 | 125 | params$seed <- 20240222 + 1:nrow(params) 126 | 127 | # Without nesting 128 | 129 | res_run_sim <- 130 | evaluate_by_row( 131 | params, run_sim, 132 | verbose = FALSE, 133 | system_time = FALSE 134 | ) 135 | 136 | res_simmer_A <- 137 | evaluate_by_row( 138 | params, simmer_A, 139 | verbose = FALSE, 140 | system_time = FALSE 141 | ) %>% 142 | group_by(mu_A, nA, nB, mu_B, reps, seed) %>% 143 | group_modify(~ eval_t_tests(.)) %>% 144 | ungroup() 145 | expect_identical(res_run_sim, res_simmer_A) 146 | 147 | res_simmer_B <- 148 | evaluate_by_row( 149 | params, simmer_B, 150 | verbose = FALSE, 151 | system_time = FALSE 152 | ) 153 | expect_identical(res_run_sim, res_simmer_B) 154 | 155 | # Keeping results nested 156 | 157 | nest_run_sim <- 158 | evaluate_by_row( 159 | params, run_sim, 160 | nest_results = TRUE, 161 | verbose = FALSE, 162 | system_time = FALSE 163 | ) 164 | 165 | nest_simmer_A <- 166 | evaluate_by_row( 167 | params, simmer_A, 168 | nest_results = TRUE, 169 | verbose = FALSE, 170 | system_time = FALSE 171 | ) %>% 172 | mutate(.results = map(.results, eval_t_tests)) 173 | expect_identical(nest_run_sim, nest_simmer_A) 174 | 175 | nest_simmer_B <- 176 | evaluate_by_row( 177 | params, simmer_B, 178 | nest_results = TRUE, 179 | verbose = FALSE, 180 | system_time = FALSE 181 | ) 182 | expect_identical(nest_run_sim, nest_simmer_B) 183 | 184 | }) 185 | 186 | 187 | -------------------------------------------------------------------------------- /man/bootstrap_pvals.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/bootstrap-projection.R 3 | \name{bootstrap_pvals} 4 | \alias{bootstrap_pvals} 5 | \title{Calculate one or multiple bootstrap p-values} 6 | \usage{ 7 | bootstrap_pvals( 8 | boot_stat, 9 | stat, 10 | alternative = "two-sided", 11 | B_vals = length(boot_stat), 12 | reps = 1L, 13 | enlist = FALSE, 14 | seed = NULL 15 | ) 16 | } 17 | \arguments{ 18 | \item{boot_stat}{vector of bootstrap replications of a test statistic.} 19 | 20 | \item{stat}{numeric value of the test statistic based on the original sample.} 21 | 22 | \item{alternative}{a character string specifying the alternative hypothesis, 23 | must be one of \code{"two-sided"} (the default), \code{"greater"} or 24 | \code{"less"}.} 25 | 26 | \item{B_vals}{vector of sub-sample sizes for which to calculate p-values. 27 | Setting \code{B_vals = length(boot_stat)} (the default) will return a 28 | single p-value calculated on the full set of bootstrap replications. For 29 | \code{B_vals < length(boot_stat)}, p-values will be calculated after 30 | sub-sampling (without replacement) the bootstrap replications.} 31 | 32 | \item{reps}{integer value for the number of sub-sample p-values to generate 33 | when \code{B_vals < length(boot_stat)}, with a default of \code{reps = 1}.} 34 | 35 | \item{enlist}{logical indicating whether to wrap the returned values in an 36 | unnamed list, with a default of \code{FALSE}. Setting \code{enlist = TRUE} 37 | makes it easier to store the output as a single entry in a \code{tibble}.} 38 | 39 | \item{seed}{Single numeric value to which the random number generator seed 40 | will be set. Default is \code{NULL}, which does not set a seed.} 41 | } 42 | \value{ 43 | The format of the output depends on several contingencies. If only a 44 | single value of \code{B_vals} is specified and \code{reps = 1}, then the 45 | function returns a vector with a single p-value. If only a single value of 46 | \code{B_vals} is specified but \code{B_vals < length(boot_stat)} and 47 | \code{reps > 1}, then the function returns a vector p-values, with an entry 48 | for each sub-sample replication. If \code{B_vals} is a vector of multiple 49 | values, then the function returns a list with one entry per entry of 50 | \code{B_vals}, where each entry is a vector of length \code{reps} with 51 | entries for each sub-sample replication. 52 | 53 | If \code{enlist = TRUE}, then results will be wrapped in an unnamed list, 54 | which makes it easier to sore the output in a tibble. 55 | } 56 | \description{ 57 | Calculate one or multiple bootstrap p-values, given a bootstrap 58 | sample of test statistics. 59 | } 60 | \details{ 61 | p-values are calculated by comparing \code{stat} to the distribution 62 | of \code{boot_stat}, which is taken to represent the null distribution of 63 | the test statistic. If \code{alternative = "two-sided"} (the default), then 64 | the p-value is the proportion of the bootstrap sample where the absolute 65 | value of the bootstrapped statistic exceeds the absolute value of the 66 | original statistic. If \code{alternative = "greater"}, then the p-value is 67 | the proportion of the bootstrap sample where the value of the bootstrapped 68 | statistic is larger than the original statistic. If \code{alternative = 69 | "less"}, then the p-value is the proportion of the bootstrap sample where 70 | the value of the bootstrapped statistic is less than the original 71 | statistic. 72 | } 73 | \examples{ 74 | # generate data from two distinct populations 75 | dat <- data.frame( 76 | group = rep(c("A","B"), c(40, 50)), 77 | y = c( 78 | rgamma(40, shape = 7, scale = 2), 79 | rgamma(50, shape = 3, scale = 4) 80 | ) 81 | ) 82 | stat <- t.test(y ~ group, data = dat)$statistic 83 | 84 | # create bootstrap replications under the null of no difference 85 | boot_dat <- dat 86 | booties <- replicate(399, { 87 | boot_dat$group <- sample(dat$group) 88 | t.test(y ~ group, data = boot_dat)$statistic 89 | }) 90 | 91 | # calculate bootstrap p-values from full set of bootstrap replicates 92 | bootstrap_pvals(boot_stat = booties, stat = stat) 93 | 94 | # calculate multiple bootstrap p-values using sub-sampling of replicates 95 | bootstrap_pvals( 96 | boot_stat = booties, stat = stat, 97 | B_vals = 199, 98 | reps = 4L 99 | ) 100 | 101 | # calculate multiple bootstrap p-values using sub-sampling of replicates, 102 | # for each of several sub-sample sizes. 103 | bootstrap_pvals( 104 | boot_stat = booties, stat = stat, 105 | B_vals = c(49,99,199), 106 | reps = 4L 107 | ) 108 | 109 | } 110 | \references{ 111 | Davison, A.C. and Hinkley, D.V. (1997). _Bootstrap Methods and 112 | Their Application_, Chapter 4. Cambridge University Press. 113 | } 114 | -------------------------------------------------------------------------------- /man/extrapolate_rejection.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/calc_rejection.R 3 | \name{extrapolate_rejection} 4 | \alias{extrapolate_rejection} 5 | \title{Extrapolate coverage and width using sub-sampled bootstrap confidence 6 | intervals.} 7 | \usage{ 8 | extrapolate_rejection( 9 | data, 10 | pvalue_subsamples, 11 | B_target = Inf, 12 | exclude_above = B_target - 1L, 13 | alpha = 0.05, 14 | nested = FALSE, 15 | format = "wide" 16 | ) 17 | } 18 | \arguments{ 19 | \item{data}{data frame or tibble containing the simulation results.} 20 | 21 | \item{pvalue_subsamples}{list or name of column from \code{data} containing list 22 | of confidence intervals calculated based on sub-samples with different 23 | numbers of replications.} 24 | 25 | \item{B_target}{number of bootstrap replications to which the criteria should 26 | be extrapolated, with a default of \code{B = Inf}.} 27 | 28 | \item{exclude_above}{numeric threshold for bootstrap replication sizes that 29 | should be excluded before calculating extrapolations. By default, set to 30 | \code{B_target - 1L} so that p-values based on B_target or greater replications 31 | will be excluded from the extrapolation calculations.} 32 | 33 | \item{alpha}{scalar or vector indicating the nominal alpha level(s). Default 34 | value is set to the conventional .05.} 35 | 36 | \item{nested}{logical value controlling the format of the output. If 37 | \code{FALSE} (the default), then the results will be returned as a data 38 | frame with rows for each distinct number of bootstraps. If \code{TRUE}, 39 | then the results will be returned as a data frame with a single row, with 40 | each performance criterion containing a nested data frame.} 41 | 42 | \item{format}{character string controlling the format of the output when 43 | \code{CI_subsamples} has results for more than one type of confidence 44 | interval. If \code{"wide"} (the default), then each performance criterion 45 | will have a separate column for each CI type. If \code{"long"}, then each 46 | performance criterion will be a single variable, with separate rows for 47 | each CI type.} 48 | } 49 | \value{ 50 | A tibble containing the number of simulation iterations, performance 51 | criteria estimate(s) and the associated MCSE. 52 | } 53 | \description{ 54 | Given a set of bootstrap confidence intervals calculated across 55 | sub-samples with different numbers of replications, extrapolates confidence 56 | interval coverage and width of bootstrap confidence intervals to a 57 | specified (larger) number of bootstraps. The function also calculates the 58 | associated Monte Carlo standard errors. The confidence interval percentage 59 | is based on how you calculated the lower and upper bounds. 60 | } 61 | \examples{ 62 | 63 | # function to generate data from two distinct populations 64 | dgp <- function(N_A, N_B, shape_A, scale_A, shape_B, scale_B) { 65 | data.frame( 66 | group = rep(c("A","B"), c(N_A, N_B)), 67 | y = c( 68 | rgamma(N_A, shape = shape_A, scale = scale_A), 69 | rgamma(N_B, shape = shape_B, scale = scale_B) 70 | ) 71 | ) 72 | } 73 | 74 | # function to do a bootstrap t-test 75 | estimator <- function( 76 | dat, 77 | B_vals = c(49,59,89,99), # number of booties to evaluate 78 | pval_reps = 4L 79 | ) { 80 | stat <- t.test(y ~ group, data = dat)$statistic 81 | 82 | # create bootstrap replications under the null of no difference 83 | boot_dat <- dat 84 | booties <- replicate(max(B_vals), { 85 | boot_dat$group <- sample(dat$group) 86 | t.test(y ~ group, data = boot_dat)$statistic 87 | }) 88 | 89 | # calculate multiple bootstrap p-values using sub-sampling of replicates 90 | res <- data.frame(stat = stat) 91 | 92 | res$pvalue_subsamples <- bootstrap_pvals( 93 | boot_stat = booties, 94 | stat = stat, 95 | B_vals = B_vals, 96 | reps = pval_reps, 97 | enlist = TRUE 98 | ) 99 | 100 | res 101 | } 102 | 103 | # create simulation driver 104 | simulate_boot_pvals <- bundle_sim( 105 | f_generate = dgp, 106 | f_analyze = estimator 107 | ) 108 | 109 | # replicate the bootstrap process 110 | x <- simulate_boot_pvals( 111 | reps = 50L, 112 | N_A = 20, N_B = 25, 113 | shape_A = 7, scale_A = 2, 114 | shape_B = 4, scale_B = 3, 115 | B_vals = c(49, 99, 149, 199), 116 | pval_reps = 2L 117 | ) 118 | 119 | extrapolate_rejection( 120 | data = x, 121 | pvalue_subsamples = pvalue_subsamples, 122 | B_target = 1999, 123 | alpha = c(.01, .05, .10) 124 | ) 125 | 126 | extrapolate_rejection( 127 | data = x, 128 | pvalue_subsamples = pvalue_subsamples, 129 | B_target = Inf, 130 | alpha = c(.01, .05, .10), 131 | nested = TRUE 132 | ) 133 | 134 | } 135 | \references{ 136 | \insertRef{boos2000MonteCarloEvaluation}{simhelpers} 137 | } 138 | -------------------------------------------------------------------------------- /docs/dev/pkgdown.js: -------------------------------------------------------------------------------- 1 | /* http://gregfranko.com/blog/jquery-best-practices/ */ 2 | (function($) { 3 | $(function() { 4 | 5 | $('nav.navbar').headroom(); 6 | 7 | Toc.init({ 8 | $nav: $("#toc"), 9 | $scope: $("main h2, main h3, main h4, main h5, main h6") 10 | }); 11 | 12 | if ($('#toc').length) { 13 | $('body').scrollspy({ 14 | target: '#toc', 15 | offset: $("nav.navbar").outerHeight() + 1 16 | }); 17 | } 18 | 19 | // Activate popovers 20 | $('[data-bs-toggle="popover"]').popover({ 21 | container: 'body', 22 | html: true, 23 | trigger: 'focus', 24 | placement: "top", 25 | sanitize: false, 26 | }); 27 | 28 | $('[data-bs-toggle="tooltip"]').tooltip(); 29 | 30 | /* Clipboard --------------------------*/ 31 | 32 | function changeTooltipMessage(element, msg) { 33 | var tooltipOriginalTitle=element.getAttribute('data-original-title'); 34 | element.setAttribute('data-original-title', msg); 35 | $(element).tooltip('show'); 36 | element.setAttribute('data-original-title', tooltipOriginalTitle); 37 | } 38 | 39 | if(ClipboardJS.isSupported()) { 40 | $(document).ready(function() { 41 | var copyButton = ""; 42 | 43 | $("div.sourceCode").addClass("hasCopyButton"); 44 | 45 | // Insert copy buttons: 46 | $(copyButton).prependTo(".hasCopyButton"); 47 | 48 | // Initialize tooltips: 49 | $('.btn-copy-ex').tooltip({container: 'body'}); 50 | 51 | // Initialize clipboard: 52 | var clipboard = new ClipboardJS('[data-clipboard-copy]', { 53 | text: function(trigger) { 54 | return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); 55 | } 56 | }); 57 | 58 | clipboard.on('success', function(e) { 59 | changeTooltipMessage(e.trigger, 'Copied!'); 60 | e.clearSelection(); 61 | }); 62 | 63 | clipboard.on('error', function() { 64 | changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); 65 | }); 66 | 67 | }); 68 | } 69 | 70 | /* Search marking --------------------------*/ 71 | var url = new URL(window.location.href); 72 | var toMark = url.searchParams.get("q"); 73 | var mark = new Mark("main#main"); 74 | if (toMark) { 75 | mark.mark(toMark, { 76 | accuracy: { 77 | value: "complementary", 78 | limiters: [",", ".", ":", "/"], 79 | } 80 | }); 81 | } 82 | 83 | /* Search --------------------------*/ 84 | /* Adapted from https://github.com/rstudio/bookdown/blob/2d692ba4b61f1e466c92e78fd712b0ab08c11d31/inst/resources/bs4_book/bs4_book.js#L25 */ 85 | // Initialise search index on focus 86 | var fuse; 87 | $("#search-input").focus(async function(e) { 88 | if (fuse) { 89 | return; 90 | } 91 | 92 | $(e.target).addClass("loading"); 93 | var response = await fetch($("#search-input").data("search-index")); 94 | var data = await response.json(); 95 | 96 | var options = { 97 | keys: ["what", "text", "code"], 98 | ignoreLocation: true, 99 | threshold: 0.1, 100 | includeMatches: true, 101 | includeScore: true, 102 | }; 103 | fuse = new Fuse(data, options); 104 | 105 | $(e.target).removeClass("loading"); 106 | }); 107 | 108 | // Use algolia autocomplete 109 | var options = { 110 | autoselect: true, 111 | debug: true, 112 | hint: false, 113 | minLength: 2, 114 | }; 115 | var q; 116 | async function searchFuse(query, callback) { 117 | await fuse; 118 | 119 | var items; 120 | if (!fuse) { 121 | items = []; 122 | } else { 123 | q = query; 124 | var results = fuse.search(query, { limit: 20 }); 125 | items = results 126 | .filter((x) => x.score <= 0.75) 127 | .map((x) => x.item); 128 | if (items.length === 0) { 129 | items = [{dir:"Sorry 😿",previous_headings:"",title:"No results found.",what:"No results found.",path:window.location.href}]; 130 | } 131 | } 132 | callback(items); 133 | } 134 | $("#search-input").autocomplete(options, [ 135 | { 136 | name: "content", 137 | source: searchFuse, 138 | templates: { 139 | suggestion: (s) => { 140 | if (s.title == s.what) { 141 | return `${s.dir} >
    ${s.title}
    `; 142 | } else if (s.previous_headings == "") { 143 | return `${s.dir} >
    ${s.title}
    > ${s.what}`; 144 | } else { 145 | return `${s.dir} >
    ${s.title}
    > ${s.previous_headings} > ${s.what}`; 146 | } 147 | }, 148 | }, 149 | }, 150 | ]).on('autocomplete:selected', function(event, s) { 151 | window.location.href = s.path + "?q=" + q + "#" + s.id; 152 | }); 153 | }); 154 | })(window.jQuery || window.$) 155 | 156 | 157 | -------------------------------------------------------------------------------- /docs/articles/index.html: -------------------------------------------------------------------------------- 1 | 2 | Articles • simhelpers 3 | Skip to contents 4 | 5 | 6 |
    40 |
    41 |
    45 | 46 |
    47 |

    All vignettes

    48 |
    49 | 50 |
    Simulation Performance Criteria and MCSE
    51 |
    52 |
    Simulation Workflow
    53 |
    54 |
    Presenting Results from Simulation Studies
    55 |
    56 |
    57 |
    58 | 59 | 60 |
    69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | --------------------------------------------------------------------------------