├── .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 |
13 |
--------------------------------------------------------------------------------
/docs/link.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------