Copy disabled (too large)
Download .txt
Showing preview only (29,850K chars total). Download the full file to get everything.
Repository: tinystats/teacups-giraffes-and-statistics
Branch: master
Commit: b859c30e57fd
Files: 298
Total size: 28.4 MB
Directory structure:
gitextract_se6ek936/
├── .gitignore
├── .nojekyll
├── 00_narrative.Rmd
├── 01_introToR.Rmd
├── 02_bellCurve.Rmd
├── 03_mean.Rmd
├── 04_variance.Rmd
├── 05_correlation.Rmd
├── 06_standardError.Rmd
├── 07_ttest.Rmd
├── Giraffe.Rproj
├── README.md
├── _bookdown_files/
│ ├── 02_bellCurve_cache/
│ │ └── html/
│ │ ├── __packages
│ │ ├── unnamed-chunk-10_f069c4cb7b2a37e345b54d932ab0c3fd.RData
│ │ ├── unnamed-chunk-10_f069c4cb7b2a37e345b54d932ab0c3fd.rdb
│ │ └── unnamed-chunk-10_f069c4cb7b2a37e345b54d932ab0c3fd.rdx
│ ├── 03_mean_cache/
│ │ └── html/
│ │ ├── __packages
│ │ ├── unnamed-chunk-3_10110fd506496d65a16c9f8d338a2668.RData
│ │ ├── unnamed-chunk-3_10110fd506496d65a16c9f8d338a2668.rdb
│ │ ├── unnamed-chunk-3_10110fd506496d65a16c9f8d338a2668.rdx
│ │ ├── unnamed-chunk-8_38b4ab5145979124668b8637fc2e735d.RData
│ │ ├── unnamed-chunk-8_38b4ab5145979124668b8637fc2e735d.rdb
│ │ └── unnamed-chunk-8_38b4ab5145979124668b8637fc2e735d.rdx
│ ├── 04_variance_cache/
│ │ └── html/
│ │ ├── __packages
│ │ ├── unnamed-chunk-1_ada9cb0ce5c4061a0c5ff1623d5f7f89.RData
│ │ ├── unnamed-chunk-1_ada9cb0ce5c4061a0c5ff1623d5f7f89.rdb
│ │ ├── unnamed-chunk-1_ada9cb0ce5c4061a0c5ff1623d5f7f89.rdx
│ │ ├── unnamed-chunk-6_73229a47f445dee6916147a2314d2a2e.RData
│ │ ├── unnamed-chunk-6_73229a47f445dee6916147a2314d2a2e.rdb
│ │ ├── unnamed-chunk-6_73229a47f445dee6916147a2314d2a2e.rdx
│ │ ├── unnamed-chunk-7_d6e227b9f890babb0c3fafa99f25cb53.RData
│ │ ├── unnamed-chunk-7_d6e227b9f890babb0c3fafa99f25cb53.rdb
│ │ ├── unnamed-chunk-7_d6e227b9f890babb0c3fafa99f25cb53.rdx
│ │ ├── unnamed-chunk-8_2be90eac193e2686e087f7209c6f8f82.RData
│ │ ├── unnamed-chunk-8_2be90eac193e2686e087f7209c6f8f82.rdb
│ │ └── unnamed-chunk-8_2be90eac193e2686e087f7209c6f8f82.rdx
│ ├── 05_correlation_cache/
│ │ └── html/
│ │ ├── __packages
│ │ ├── unnamed-chunk-3_1eebcf2610d87e4af3a12ab993fa91e9.RData
│ │ ├── unnamed-chunk-3_1eebcf2610d87e4af3a12ab993fa91e9.rdb
│ │ ├── unnamed-chunk-3_1eebcf2610d87e4af3a12ab993fa91e9.rdx
│ │ ├── unnamed-chunk-4_b717a42ace8f3afc385b7ca2d3e25357.RData
│ │ ├── unnamed-chunk-4_b717a42ace8f3afc385b7ca2d3e25357.rdb
│ │ └── unnamed-chunk-4_b717a42ace8f3afc385b7ca2d3e25357.rdx
│ └── 06_standardError_cache/
│ └── html/
│ ├── __packages
│ ├── unnamed-chunk-3_9cfde893520860c5b44c8622f1d3d7ab.RData
│ ├── unnamed-chunk-3_9cfde893520860c5b44c8622f1d3d7ab.rdb
│ ├── unnamed-chunk-3_9cfde893520860c5b44c8622f1d3d7ab.rdx
│ ├── unnamed-chunk-4_e5136729fcb5781a823ef76d4423bd9b.RData
│ ├── unnamed-chunk-4_e5136729fcb5781a823ef76d4423bd9b.rdb
│ ├── unnamed-chunk-4_e5136729fcb5781a823ef76d4423bd9b.rdx
│ ├── unnamed-chunk-5_6ba20d5ad665975d5a2f7608fb786bf6.RData
│ ├── unnamed-chunk-5_6ba20d5ad665975d5a2f7608fb786bf6.rdb
│ ├── unnamed-chunk-5_6ba20d5ad665975d5a2f7608fb786bf6.rdx
│ ├── unnamed-chunk-6_34d73e069af7b7720f4b88e28e921cb3.RData
│ ├── unnamed-chunk-6_34d73e069af7b7720f4b88e28e921cb3.rdb
│ └── unnamed-chunk-6_34d73e069af7b7720f4b88e28e921cb3.rdx
├── _site.yml
├── aboutTheAuthors.Rmd
├── assets/
│ ├── 00_narrative.html
│ ├── 01_introToR_image.html
│ ├── 02_bellCurve_image.html
│ ├── 03_mean_image.html
│ ├── 04_variance_image.html
│ ├── 05_correlation_image.html
│ ├── 06_standardError_image.html
│ ├── 07_tTest_image.html
│ ├── Landing_page.html
│ ├── aboutTheAuthors_image.html
│ ├── button.css
│ ├── foot.html
│ ├── landing.css
│ ├── landing_styles.css
│ ├── mobile_landing.css
│ ├── mobile_narrative.css
│ └── style.css
├── docs/
│ ├── 00_narrative.html
│ ├── 00_narrative.utf8.html
│ ├── 01_introToR.html
│ ├── 02_bellCurve.html
│ ├── 03_mean.html
│ ├── 04_variance.html
│ ├── 05_correlation.html
│ ├── 06_standardError.html
│ ├── 07_ttest.html
│ ├── aboutTheAuthors.html
│ ├── assets/
│ │ ├── 00_narrative.html
│ │ ├── 01_introToR_image.html
│ │ ├── 02_bellCurve_image.html
│ │ ├── 03_mean_image.html
│ │ ├── 04_variance_image.html
│ │ ├── 05_correlation_image.html
│ │ ├── 06_standardError_image.html
│ │ ├── 07_tTest_image.html
│ │ ├── Landing_page.html
│ │ ├── aboutTheAuthors_image.html
│ │ ├── button.css
│ │ ├── foot.html
│ │ ├── landing.css
│ │ ├── landing_styles.css
│ │ ├── mobile_landing.css
│ │ ├── mobile_narrative.css
│ │ └── style.css
│ ├── images/
│ │ ├── 02_bellCurve/
│ │ │ ├── lib/
│ │ │ │ ├── crosstalk-1.0.0/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── crosstalk.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ ├── crosstalk-1.2.0/
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── crosstalk.js
│ │ │ │ │ └── scss/
│ │ │ │ │ └── crosstalk.scss
│ │ │ │ ├── htmlwidgets-1.3/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── htmlwidgets-1.5.1/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── jquery-1.11.3/
│ │ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ │ └── jquery.js
│ │ │ │ ├── jquery-3.5.1/
│ │ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ │ └── jquery.js
│ │ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-binding-4.9.1/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ │ └── plotly-htmlwidgets.css
│ │ │ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ │ │ └── plotly-htmlwidgets.css
│ │ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ └── two_animated_hist.html
│ │ ├── 03_mean/
│ │ │ ├── Law_of_large_numbers.html
│ │ │ └── lib/
│ │ │ ├── crosstalk-1.0.0/
│ │ │ │ ├── css/
│ │ │ │ │ └── crosstalk.css
│ │ │ │ └── js/
│ │ │ │ └── crosstalk.js
│ │ │ ├── crosstalk-1.2.0/
│ │ │ │ ├── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ └── scss/
│ │ │ │ └── crosstalk.scss
│ │ │ ├── htmlwidgets-1.3/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.1/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── jquery-1.11.3/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── jquery-3.5.1/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.1/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ ├── 04_variance/
│ │ │ ├── lib/
│ │ │ │ ├── crosstalk-1.0.0/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── crosstalk.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ ├── crosstalk-1.2.0/
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── crosstalk.js
│ │ │ │ │ └── scss/
│ │ │ │ │ └── crosstalk.scss
│ │ │ │ ├── htmlwidgets-1.3/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── htmlwidgets-1.5.1/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── jquery-1.11.3/
│ │ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ │ └── jquery.js
│ │ │ │ ├── jquery-3.5.1/
│ │ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ │ └── jquery.js
│ │ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-binding-4.9.1/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ │ └── plotly-htmlwidgets.css
│ │ │ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ │ │ └── plotly-htmlwidgets.css
│ │ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ ├── mega_dots.html
│ │ │ └── static_bar.html
│ │ └── 05_correlation/
│ │ ├── cov_vs_sxsy.html
│ │ ├── factory.webm
│ │ ├── lib/
│ │ │ ├── crosstalk-1.0.0/
│ │ │ │ ├── css/
│ │ │ │ │ └── crosstalk.css
│ │ │ │ └── js/
│ │ │ │ └── crosstalk.js
│ │ │ ├── crosstalk-1.2.0/
│ │ │ │ ├── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ └── scss/
│ │ │ │ └── crosstalk.scss
│ │ │ ├── htmlwidgets-1.3/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── jquery-1.11.3/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── jquery-3.5.1/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ └── lines.webm
│ ├── index.html
│ ├── lib/
│ │ ├── crosstalk-1.0.0/
│ │ │ ├── css/
│ │ │ │ └── crosstalk.css
│ │ │ └── js/
│ │ │ └── crosstalk.js
│ │ ├── htmlwidgets-1.2/
│ │ │ └── htmlwidgets.js
│ │ ├── htmlwidgets-1.3/
│ │ │ └── htmlwidgets.js
│ │ ├── jquery-1.11.3/
│ │ │ ├── jquery-AUTHORS.txt
│ │ │ └── jquery.js
│ │ ├── plotly-binding-4.8.0/
│ │ │ └── plotly.js
│ │ ├── plotly-binding-4.9.0/
│ │ │ └── plotly.js
│ │ ├── plotly-htmlwidgets-css-1.39.2/
│ │ │ └── plotly-htmlwidgets.css
│ │ └── plotly-htmlwidgets-css-1.46.1/
│ │ └── plotly-htmlwidgets.css
│ └── site_libs/
│ ├── bootstrap-3.3.5/
│ │ ├── css/
│ │ │ ├── bootstrap-theme.css
│ │ │ └── bootstrap.css
│ │ └── js/
│ │ ├── bootstrap.js
│ │ └── npm.js
│ ├── crosstalk-1.2.0/
│ │ ├── js/
│ │ │ └── crosstalk.js
│ │ └── scss/
│ │ └── crosstalk.scss
│ ├── font-awesome-5.1.0/
│ │ └── css/
│ │ ├── all.css
│ │ └── v4-shims.css
│ ├── highlightjs-9.12.0/
│ │ ├── default.css
│ │ ├── highlight.js
│ │ └── textmate.css
│ ├── htmlwidgets-1.5.4/
│ │ └── htmlwidgets.js
│ ├── jquery-3.6.0/
│ │ └── jquery-3.6.0.js
│ ├── jqueryui-1.11.4/
│ │ ├── README
│ │ ├── index.html
│ │ ├── jquery-ui.css
│ │ ├── jquery-ui.js
│ │ ├── jquery-ui.structure.css
│ │ └── jquery-ui.theme.css
│ ├── navigation-1.1/
│ │ ├── codefolding.js
│ │ ├── sourceembed.js
│ │ └── tabsets.js
│ ├── plotly-binding-4.10.0/
│ │ └── plotly.js
│ ├── plotly-htmlwidgets-css-2.5.1/
│ │ └── plotly-htmlwidgets.css
│ └── tocify-1.9.1/
│ ├── jquery.tocify.css
│ └── jquery.tocify.js
├── five_points_scatter.R
├── images/
│ ├── 02_bellCurve/
│ │ ├── lib/
│ │ │ ├── crosstalk-1.0.0/
│ │ │ │ ├── css/
│ │ │ │ │ └── crosstalk.css
│ │ │ │ └── js/
│ │ │ │ └── crosstalk.js
│ │ │ ├── crosstalk-1.2.0/
│ │ │ │ ├── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ └── scss/
│ │ │ │ └── crosstalk.scss
│ │ │ ├── htmlwidgets-1.3/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.1/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── jquery-1.11.3/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── jquery-3.5.1/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.1/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ └── two_animated_hist.html
│ ├── 03_mean/
│ │ ├── Law_of_large_numbers.html
│ │ └── lib/
│ │ ├── crosstalk-1.0.0/
│ │ │ ├── css/
│ │ │ │ └── crosstalk.css
│ │ │ └── js/
│ │ │ └── crosstalk.js
│ │ ├── crosstalk-1.2.0/
│ │ │ ├── js/
│ │ │ │ └── crosstalk.js
│ │ │ └── scss/
│ │ │ └── crosstalk.scss
│ │ ├── htmlwidgets-1.3/
│ │ │ └── htmlwidgets.js
│ │ ├── htmlwidgets-1.5.1/
│ │ │ └── htmlwidgets.js
│ │ ├── htmlwidgets-1.5.4/
│ │ │ └── htmlwidgets.js
│ │ ├── jquery-1.11.3/
│ │ │ ├── jquery-AUTHORS.txt
│ │ │ └── jquery.js
│ │ ├── jquery-3.5.1/
│ │ │ ├── jquery-AUTHORS.txt
│ │ │ └── jquery.js
│ │ ├── plotly-binding-4.10.0/
│ │ │ └── plotly.js
│ │ ├── plotly-binding-4.9.0/
│ │ │ └── plotly.js
│ │ ├── plotly-binding-4.9.1/
│ │ │ └── plotly.js
│ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ └── plotly-htmlwidgets.css
│ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ └── plotly-htmlwidgets.css
│ ├── 04_variance/
│ │ ├── lib/
│ │ │ ├── crosstalk-1.0.0/
│ │ │ │ ├── css/
│ │ │ │ │ └── crosstalk.css
│ │ │ │ └── js/
│ │ │ │ └── crosstalk.js
│ │ │ ├── crosstalk-1.2.0/
│ │ │ │ ├── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ └── scss/
│ │ │ │ └── crosstalk.scss
│ │ │ ├── htmlwidgets-1.3/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.1/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── jquery-1.11.3/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── jquery-3.5.1/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.1/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ ├── mega_dots.html
│ │ └── static_bar.html
│ └── 05_correlation/
│ ├── cov_vs_sxsy.html
│ ├── factory.webm
│ ├── lib/
│ │ ├── crosstalk-1.0.0/
│ │ │ ├── css/
│ │ │ │ └── crosstalk.css
│ │ │ └── js/
│ │ │ └── crosstalk.js
│ │ ├── crosstalk-1.2.0/
│ │ │ ├── js/
│ │ │ │ └── crosstalk.js
│ │ │ └── scss/
│ │ │ └── crosstalk.scss
│ │ ├── htmlwidgets-1.3/
│ │ │ └── htmlwidgets.js
│ │ ├── htmlwidgets-1.5.4/
│ │ │ └── htmlwidgets.js
│ │ ├── jquery-1.11.3/
│ │ │ ├── jquery-AUTHORS.txt
│ │ │ └── jquery.js
│ │ ├── jquery-3.5.1/
│ │ │ ├── jquery-AUTHORS.txt
│ │ │ └── jquery.js
│ │ ├── plotly-binding-4.10.0/
│ │ │ └── plotly.js
│ │ ├── plotly-binding-4.9.0/
│ │ │ └── plotly.js
│ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ └── plotly-htmlwidgets.css
│ └── lines.webm
├── index.Rmd
├── lib/
│ ├── crosstalk-1.0.0/
│ │ ├── css/
│ │ │ └── crosstalk.css
│ │ └── js/
│ │ └── crosstalk.js
│ ├── htmlwidgets-1.2/
│ │ └── htmlwidgets.js
│ ├── htmlwidgets-1.3/
│ │ └── htmlwidgets.js
│ ├── jquery-1.11.3/
│ │ ├── jquery-AUTHORS.txt
│ │ └── jquery.js
│ ├── plotly-binding-4.8.0/
│ │ └── plotly.js
│ ├── plotly-binding-4.9.0/
│ │ └── plotly.js
│ ├── plotly-htmlwidgets-css-1.39.2/
│ │ └── plotly-htmlwidgets.css
│ └── plotly-htmlwidgets-css-1.46.1/
│ └── plotly-htmlwidgets.css
└── renv/
├── .gitignore
├── activate.R
└── settings.dcf
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
.DS_Store
# History files
.Rhistory
.Rapp.history
# Session Data files
.RData
# Example code in package build process
*-Ex.R
# Output files from R CMD build
/*.tar.gz
# Output files from R CMD check
/*.Rcheck/
# RStudio files
.Rproj.user/
# produced vignettes
vignettes/*.html
vignettes/*.pdf
# OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3
.httr-oauth
# knitr and R markdown default cache directories
/*_cache/
/cache/
# Temporary files created by R markdown
*.utf8.md
*.knit.md
# Shiny token, see https://shiny.rstudio.com/articles/shinyapps.html
rsconnect/
.Rproj.user
# Don't need renv in docs/
docs/renv.lock
================================================
FILE: .nojekyll
================================================
================================================
FILE: 00_narrative.Rmd
================================================
---
title: "History of Teacup Giraffes"
output:
bookdown::html_document2:
includes:
in_header: assets/00_narrative.html
toc: false
---
================================================
FILE: 01_introToR.Rmd
================================================
---
title: "Introduction to the R programming language"
output:
bookdown::html_document2:
includes:
in_header: assets/01_introToR_image.html
after_body: assets/foot.html
---
# Ready to begin?
You’re about to start an adventure to learn R and statistics. If this is your first time working with R, then you should begin on this page. If you’re comfortable with R basics and you’d like to start with the statistical content, please proceed onto the islands with this [link](02_bellCurve.html).
# Using interactive windows
Throughout this material we will use an interactive version of R provided by [learnR](https://rstudio.github.io/learnr/). Although this way of using R comes with some limitations regarding functionality, it will give us the benefit of being able to run R code without switching from a web browser to a standalone application such as [RStudio](https://www.rstudio.com/).
Below you can see an example of an interactive R window. In the white window (under the button with the text *Start Over*) is where you will write code to be executed. To run code you have written, click the green *Run Code* button and observe how information pops up under the window. If no errors were made, this is where the answer will be returned. Error messages are shown in a red box, also under the learnR window.
Now spend a few minutes using the window below as a calculator and run simple calculations by clicking *Run Code*.
<!---LEARNR EX 1-->
<iframe class="interactive" id="myIframe1" src="https://tinystats.shinyapps.io/01-intro-ex1/" scrolling="no" frameborder="no"></iframe>
<!------------->
# Objects in R
R is an object oriented programming language, meaning when working in R we will create different types of objects and use operators and functions to manipulate these objects.
To create a new object in R we first pick a name for the object and tell R what to assign to it using **assignment operators**; either `=` or a small arrow `<-` made from the combination of `<` and `-`.
* Use the window below to assign numbers to objects and output the content by typing out the name of the object.
* After creating two numerical objects, use the mathematical operator `+` to add these objects together and see what happens when you run the code.
<!---LEARNR EX 2-->
<iframe class="interactive" id="myIframe2" src="https://tinystats.shinyapps.io/01-intro-ex2/" scrolling="no" frameborder="no"></iframe>
<!------------->
# Common functions
Most of the time when we work in R, we will use functions; either pre-written functions or ones we write ourselves. **Functions** make it easy to use sets of code instructions repeatedly (without filling our scripts with the code underlying the function) and help us carry out multiple tasks in a single step without having to go through the details of how the steps are executed.
To use functions in R, we type the name of the function followed by parentheses (e.g. `print( )`). Within the parentheses is where we will specify the function input and options, separated by commas `,`. One function you will use a lot is the **combine function** `c( )`, which as the name suggests lets you concatenate different types of values.
* In the window below, create an object combining a set of numerical values using `c( )`, separating the different values with commas.
* Then sum up the content of this object using `sum( )`.
<!---LEARNR EX 3-->
<iframe class="interactive" id="myIframe3" src="https://tinystats.shinyapps.io/01-intro-ex3/" scrolling="no" frameborder="no"></iframe>
<!------------->
# Writing your own function
R makes it easy to create user defined functions by using `function( )`. Here is how it works:
* Give your function an object name and assign the function to it, e.g. `my_function_name <- function( )`.
* Within the parentheses you specify inputs and options just like how pre-written functions work, e.g. `function(input_data)`
* Next, put all the code you want your function to execute inside curly brackets like this: `function(input_data){code to run}`
* Use `return( )` to specify what you want to your function to output once it is done running the code.
Use the following instructions to complete the function in the window below:
* We've started writing a function for you that will sum up values and take the square root of the sum. To take the square root, we use the `sqrt( )` function.
* Complete this function by filling in `input_data` for the sum( ), and then filling in the remaining empty parentheses with the appropriate object names.
* Now create an object containing a set of numerical values and call it `my_combined_values`. Then try out your new function on this object, which will compute the square root of the object's sum.
<!---LEARNR EX 4-->
<iframe class="interactive" id="myIframe4" src="https://tinystats.shinyapps.io/01-intro-ex4/" scrolling="no" frameborder="no"></iframe>
<!------------->
# Functions within functions
It is also possible (and sometimes very useful) to put a function within another function. For example, we could combine multiple steps into one like this: `sqrt(prod(c(1,2)))`, resulting in one line of code that both generates the values and directly calculates the square root of the product of those values.
# Vectors
The `c( )` function will combine values and create a specific type of data structure called an **atomic vector**. A vector is a simple one-dimensional structure that can contain only one type of value. This means that storing multiple numeric values in a vector, as we have already done, works just fine. But there are other types of values that can be used in R, for example **character** values. These values are created by putting text or numbers within quotes such as `"Giraffe"`. If we try to combine numeric and character values in the same vector, R will convert both values to the character type.
```{r}
c("Giraffe", 123)
```
This behavior is not always desirable, so it is a good idea to try to only combine values of the same type.
# Boolean values and logical operators
Another type of variable in R is the boolean (TRUE/FALSE) type. **Boolean** or logical vectors can only take two different values; TRUE or FALSE (case sensitive). You will see these types of values mostly when logical operators are used to test how different objects relate to each other. For example, the **logical operator** `==` can be used to test if two different objects are exactly the same and `TRUE` will be returned only if the identity is fulfilled.
```{r}
"Giraffe" == "Teacup"
sqrt(100) == 10
```
# Data frames
Vectors are one of multiple data structures in R. We will not cover all types of structures here, but perhaps the most common one encountered when analyzing data in R is the **data frame**. Data frames are two dimensional, which basically means that data frames let you store multiple vectors in one object. Oftentimes, each vector will be a new column in the data frame. One constraint though is that all vectors/columns need to be of the same length.
* In the window below, use the `data.frame()` function to create a data frame with two columns called *x* and *y*. When creating data frames we specify a column by giving the column a name and assigning values or vectors to it, e.g. `data.frame(x= c("Giraffe", "Teacup"))`.
* Also observe what happens when you try to combine an x and y vector of different lengths.
<!---LEARNR EX 5-->
<iframe class="interactive" id="myIframe5" src="https://tinystats.shinyapps.io/01-intro-ex5/" scrolling="no" frameborder="no"></iframe>
<!------------->
As you could see above, running a line of code with just the name of a data structure (in this case, the letter *d*) will print the full data frame in the console output (if no errors were made!). If you instead are interested in only one of the columns, this can be specified by using the `$` operator followed by the column's name, e.g `d$x`. Try it out below!
<!---LEARNR EX 6-->
<iframe class="interactive" id="myIframe6" src="https://tinystats.shinyapps.io/01-intro-ex6/" scrolling="no" frameborder="no"></iframe>
<!------------->
# You're ready to go!
This was a brief introduction into R, but now you know what you need to get started with the [first module](02_bellCurve.html)!
<script>
iFrameResize({}, ".interactive");
</script>
================================================
FILE: 02_bellCurve.Rmd
================================================
---
title: "The Normal Distribution"
output:
bookdown::html_document2:
includes:
in_header: assets/02_bellCurve_image.html
after_body: assets/foot.html
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.align = "center")
library(here)
library(plotly)
library(tweenr)
library(here)
library(ggplot2)
```
:::obj
**Module learning objectives**
1. Define what a distribution is
1. Describe the characteristics of a normal distribution
1. Create a histogram using `ggplot` and modify its appearance
1. Define sample and population
1. Explain why distributions of sample data that come from populations with normal distibutions don't always look normal
:::
# Welcome to the island
Two weeks after starting grad school, you're assigned to go to a small island east of Madagascar to study a mysterious mammalian species that has caught your advisor's interest. After a long trip on various ships and smaller boats, you arrive on the island, excited to collect data on this new species.
The only information your advisor has given you is that they are small giraffe-like creatures. He called them teacup giraffes. You waste no time to suit up in your field gear, and your guide leads you deep into the dense island brush. Filled with anticipation, you start searching for your first subject.
After a one hour hike, you reach a clearing where tall cypress trees encircle low growth vegetation. Suddenly, you experience your first encounter with a little giraffe, whose cool drink from a puddle you seem to have interrupted. Smaller than you had imagined--its slender body does not even clear the height of a dandelion. You toss a celery stick in its direction, and you're pleasantly surprised that it immediately trots over to you and starts vigorously munching, creating a celery confetti cloud. After observing this behavior for a while and taking some notes on how quickly it devours your celery supply, you bring out your measuring tape and record the giraffe's height.
\
```{r, out.width="600px", echo= FALSE}
knitr::include_graphics("images/02_bellCurve/Cool-Drink.jpg")
```
\
A few minuters later, you leave the clearing and forge a path through thick ferns and palm leaves. You pause for a drink from your water bottle long enough to pinpoint a fast-paced crunching noise. In the shade of a fallen tree, there's another teacup giraffe annihilating a small patch of wild celery for its afternoon snack. You're surprised how much smaller this one is--about as tall as your Swiss army knife. Throughout the day you encounter several teacup giraffes, and you realize that although all petite, they are remarkably variable in stature.
The next week is spent trekking and measuring every giraffe you can manage to get near enough. You take advantage of the fact that they come running everytime you pull out a celery stalk from your lunch bag, and you're relieved that it takes them long enough to finish snacking for you to measure their height. With the help of your guide, you manage to measure 50 giraffes in the first week.
```{r, out.width="800px", echo= FALSE}
knitr::include_graphics("images/02_bellCurve/giraffe_lineup4.jpg")
```
There is a second island not too far away, where your guide has indicated there may be more giraffes. You wonder how the population of giraffes on the second island may be different, and so you make arrangements to go to Island #2 the following week. It is not too long until you have added another 50 measurements of these tiny giraffes from this second excursion.
```{r, out.width="800px", echo= FALSE}
knitr::include_graphics("images/02_bellCurve/giraffe_islands2.jpg")
```
# Visualize the data
After collecting 100 measurements, you decide to take a first look at the data. What's the best way to look at data when you know nothing about it...? You take a long walk on the beach to ponder this.
You can start by scanning the values for the shortest and tallest heights. You see the range is between 6 and 20cm. So you draw a ruler in the sand with the extreme heights on either end. You'd like to see how many times each height occurs in your data set, and so you grab a small colorful stone from the shore to represent each individual giraffe's height and place it just above your ruler mark. You put out a new stone for each height and continue doing this for each individual to see which heights "stack up" along your ruler. To keep track of which heights came from different islands, you pick differently colored stones for each group. Look below for a sped-up version of this process! The y-axis is frequency. The x-axis is the height.
```{r, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
set.seed(12)
x <- round(rnorm(50, 10, 2))
x2 <- round(rnorm(50, 18, 1.2))
x <- c(x, x2)
df <- data.frame(x = x, y = 23, type = rep(c("Island #1", "Island #2"),
each = 50))
dfs <- list(df)
for (i in seq_len(nrow(df)))
{
dftemp <- tail(dfs, 1)
dftemp[[1]]$y[i] <- sum(dftemp[[1]]$x[seq_len(i)] == dftemp[[1]]$x[i])
dfs <- append(dfs, dftemp)
}
dfs <- append(dfs, dfs[rep(length(dfs), 3)])
dft <- tween_states(dfs, 10, 1, "cubic-in", 500)
dft$y <- dft$y - 0.5
dft <- dft[dft$y != 23, ]
m <- list(l = 50, r = 50, b = 10, t = 10, pad = 4)
p <-
dft %>%
plot_ly(x = ~x, y = ~y, frame = ~.frame, color = ~type,
colors = c("green3", "turquoise3"),
marker = list(size = 16), width = 630, height = 390) %>%
config(displayModeBar = F) %>%
layout(xaxis = list(range = c(4, 23), title = "Teacup Giraffe heights", zeroline = F),
yaxis = list(range = c(-0.5, 21), title = "Frequency", zeroline = F),
legend = list(x = 0.075, y = 0.91),
autosize = F, margin = m) %>%
animation_opts(frame = 50, transition = 0, redraw = FALSE) %>%
animation_slider(hide = T) %>%
animation_button(x = 1, xanchor = "right", y = 0, yanchor = "bottom")
p
htmltools::save_html(p, here(file = "images/02_bellCurve/two_animated_hist.html"))
```
<div style="margin-top:30px">
</div>
<center>
<iframe style="margin:0px; padding:0px; display:block; border:0px" src="images/02_bellCurve/two_animated_hist.html" width="650" height="450" scrolling="yes" seamless="seamless" frameBorder="0"> </iframe>
</center>
As you put the last stone in place, your local guide saunters by and glances at your markings, "What a nice histogram!"
# Distributions
The histogram above shows the **distribution**, or shape, of your data. The distribution of a variable in a data set gives you information about:
* All the values the variable takes on in your data set, when the data are split into reasonably sized groups
* How often each value occurs
* The shape, center, and amount of variability in the data
Checking the distribution of the data is always one of the first steps of data anlaysis. By knowing the shape of the data, you gain insights into some of the data's statistical properties (which become useful down the line, for example, when you need to decide whether a particular statistical test would be appropriate).
# The normal distribution
Although the data can be distributed in many shapes, there are some general shapes that occur so frequently in nature that these distributions are given their own names. The most well-known distribution has a shape similar to a bell and is called the *normal distribution* (or sometimes "the bell curve" or just "normal curve").
There are a few characteristics of the normal distribution:
* There is a single peak
* The mass of the distribution is at its center
* There is symmetry about the center line
```{r, out.width="100%", echo= FALSE}
knitr::include_graphics("images/02_bellCurve/normal_hist.png")
```
Taking a look at the stones in the sand, you see two bell-shaped distributions. One for each island. It looks like giraffe heights on each island follow a normal distribution--- and that's a good thing because you remember your stats textbook always talking about how normally distributed data behaves well! Phew!
Happy with your progress thus far, you are excited to send your histogram results to your PhD mentor back in the homeland. Instead of taking a picture of your stone histogram, you turn to R to create the perfect figure.
<div style="margin-bottom:50px"></div></p>
# Our dataframe
Time to apply your [Intro to R knowledge](01_introToR.html). The heights from your logbook have been stored in a data frame called `d`. Below we show the last few observations from this vector, using the `tail()` function, which all happen to be from Island #2.
<div style="margin-bottom:15px">
</div>
```{r, echo=FALSE}
set.seed(12)
x <- rnorm(50, 10, 2)
x2 <- rnorm(50, 18, 1.2)
x <- data.frame(x = x, type = "Island #1")
x2 <- data.frame(x = x2, type = "Island #2")
d <- rbind(x, x2)
colnames(d) <- c("Height", "Location")
```
```{r, include = TRUE}
tail(d)
```
<div style="margin-bottom:50px"></div>
# Making a histogram with `ggplot2`
We will use the *ggplot2* package for all our graphing. Check out [this page](https://ggplot2.tidyverse.org/reference) as a reference.
We need some basic components as a bare minimum to get started. We can customize components later to make the graph more to our liking. The steps we will go through are:
* First we need to tell R that we want to create a ggplot. This is done by **using the `ggplot( )` function**. Within the parentheses, we can specify the data frame that contains what we want to plot, using the option `data = d`. We also have to tell ggplot *what* columns of the data frame to actually plot-- we do this with the argument that stands for aesthetics: `aes( )`. In our case, only the x-axis variable `Height` needs to be specified.
* Next, **add a `geom` layer**, which will determine the type of visual representation that will be used for the data. Different ggplot layers and options are added using a plus sign `+`. In our case, we will write `+` and then `geom_histogram( )`. To make your plot look similar to your sand drawing, you want to add an optional argument within the parentheses of `geom_histogram`, which will set the bin width to 1cm: `geom_histogram( binwidth = 1 )`.
Here we are using `geom_histogram`, but there are many other `geom_` layers that you could use instead for different plot types. Check some of them out [here](https://ggplot2.tidyverse.org/reference/#section-layer-geoms).
A note about the `+`: You can keep adding new specifications on one long continuous line of code, separating each one with a `+`. However, if you'd like to make the code easier to read by adding each specification to a new line, make sure the `+` is added to the end of the first line and not the new one.
It's a good idea to save any ggplot you make as an object. It's a helpful practice for when you'll do more complicated graphing later (e.g. combining plots).
Run the code below to see what this basic histogram in ggplot looks like:
<!---LEARNR EX 1-->
<iframe class="interactive" id="myIframe1" src="https://tinystats.shinyapps.io/02-bellCurve-ex1/" scrolling="no" frameborder="no"></iframe>
<!------------->
# Customize your ggplot
Let's go over some quick ways we can customize any ggplot. First, we can tell ggplot that we want the data from the two islands to be different colors. And second, we can to specify the colors we want to use.
**Different color for each group:** Within `aes( )`, we add a `fill = ` argument. Here is where you put the name of the variable that contains the categories that you want to distinguish with different colors.
You might be wondering why we don't use the `color= ` here instead (which is a valid argument for `aes( )`), and this is because we want to change the color of the *fill* of the bars, while `color = ` would change only the bar outline color (see below).
To choose colors ggplot should use, we need to add a new option ` + scale_fill_manual( )` and then specify the colors with the argument `values = `. To read more about how to create your own color scale, see this [page](https://ggplot2.tidyverse.org/reference/scale_manual.html). If you have more than one color you need to specify, make sure you combine them within the `c( )` function.
Colors in R can be specified in different ways. For example, you can use a string of the color name (see possible colors [here](http://sape.inf.usi.ch/quick-reference/ggplot2/colour)) or with [hex color codes](https://htmlcolorcodes.com/).
**Outline Color:** To change the color of the outline, specify `color = ` within the parentheses of the `geom_` (i.e. `geom_histogram`).
In the window below, we have added some options that you can play around with. Use the descriptions above to:
* Specify the variable that `fill` should be set to, as well as the colors for the fill and outline.
* Try out some color specifications on your own, and then check out the solution to see what we picked.
\
<!---LEARNR EX 2-->
<iframe class="interactive" id="myIframe2" src="https://tinystats.shinyapps.io/02-bellCurve-ex2/" scrolling="no" frameborder="no"></iframe>
<!------------->
```{r, out.width="600px", echo= FALSE}
knitr::include_graphics("images/02_bellCurve/Painter.png")
```
**Playing around with "complete themes": ** ggplot has a nice way of changing many non-data display parameters at once though what is referred to as "complete themes". Check this [page](https://ggplot2.tidyverse.org/reference/ggtheme.html) for the available options.
* Have fun testing out a few different complete themes by adding the argument with a `+` sign.
* Try 3 different complete themes and take note of how the plot changes.
<div style="margin-bottom:50px"></div>
<!---LEARNR EX 3-->
<iframe class="interactive" id="myIframe3" src="https://tinystats.shinyapps.io/02-bellCurve-ex3/" scrolling="no" frameborder="no"></iframe>
<!------------->
\
After trying different themes, you pick `theme_light()` and feel pretty good about your ggplot accomplishment. You send your plot to your PhD advisor, and within what feels like only minutes, you have a new attachment in your email inbox:
\
```{r, out.width="600px", echo= FALSE}
knitr::include_graphics("images/02_bellCurve/advisor_email.png")
```
You've got some more changes to make to your plot. Let's start with something easy:
(1) **Remove the space between the bars and the x-axis**: Use the `scale_y_continuous()` argument, and inside the parentheses specify `expand = ` followed by two numbers within the `c( )` command. These two numbers represent how much above or below the data's range you would like to extend the y-axis by.
The function `scale_y_continuous` can be used for other purposes. See some examples and more documentation can be found [here](https://ggplot2.tidyverse.org/reference/scale_continuous.html).
* Set axis limits
* Set axis breaks
* Transformations
\
(2) **Change axes labels**: Add `labs( )` to the existing ggplot layers and specify each axis you'd like to label as arguments, e.g. `x = `, followed by the string for your label. If you'd like to learn more about manipulations you can do with `labs( )`, see [this reference](https://ggplot2.tidyverse.org/reference/labs.html).
(3) In addition, `labs( )` can be used to **remove labels**. In this case, we can also include `fill = NULL` to remove the legend label (recall that the categories for our legend were determined by the `fill` argument in `aes()` previously).
Use the window below to:
* Remove the space and legend label
* Change the x-axis label to "Teacup Giraffe heights" and the y-axis label to "Frequency".
<div style="margin-bottom:50px"></div>
<!---LEARNR EX 4-->
<iframe class="interactive" id="myIframe4" src="https://tinystats.shinyapps.io/02-bellCurve-ex4/" scrolling="no" frameborder="no"></iframe>
<!------------->
\
(4) **Remove panel border** and 5.**Remove minor grid lines**: To make detailed changes to the layout, we can add a `theme( )` argument. Nested within `theme( )` we can use additional arguments, such as `panel.border= ` and `panel.grid.minor= `. Many `theme( )` arguments can be set to `element_blank( )` to remove the element in question. To read more about what can be modifed with `theme( )`, check out this [resource](https://ggplot2.tidyverse.org/reference/theme.html).
* In the window below, use what you just learned to remove the panel border and the minor grid lines of the plot.
<!---LEARNR EX 5-->
<iframe class="interactive" id="myIframe5" src="https://tinystats.shinyapps.io/02-bellCurve-ex5/" scrolling="no" frameborder="no"></iframe>
<!------------->
\
(6) **Move the Legend**: We will add two more arguments to `theme( )` to move the legend and make its background transparent. To change its position, use `legend.position = ` followed by the `c( )` command, in which you will specify the x- and y- positions. These values must be between 0 and 1. Specifying `c(0,0)`, for example, would place the legend at the bottom left of the plot, while `c(1,1)` would place it at the top right.
To change the legend background to be transparent, we essentially remove it. Add the argument `legend.background =`. Take a look at previous steps to determine how you remove an element.
<!---LEARNR EX 6-->
<iframe class="interactive" id="myIframe6" src="https://tinystats.shinyapps.io/02-bellCurve-ex6/" scrolling="no" frameborder="no"></iframe>
<!------------->
\
Hopefully your PhD advisor in the homeland will be satisfied with your new ggplot!
\
# Things to think about {#bell-ttta}
Since we could not take the height of every giraffe on each of the two islands, and it is unclear how many giraffes live on the islands, we had to rely on taking the heights of randomly selected groups of giraffes.
A **sample**, in our case the 50 giraffes from each island, is a subset of a population. The **population** is defined as all available observations in a defined geographic area at a given point in time -- in this case, all existing giraffes on one of the islands while you are there.
If we pick our sample in a random way, then our hope is that our sample data will be representative of the population. The larger our sample is, the more of the population it will include, and thus, the more closely the sample will resemble the population in its statistical attributes (e.g the distribution). We then must acknowledge that the smaller our sample is, the less likely it is that it will be representative of the population.
The animation below illustrates how small samples can depart from the characteristics of the population.
* The panels below show samples that all come from the same population.
* Each frame of a panel, is a new sample drawn of the specified size.
* Observe that the smaller samples tend to:
+ Have oddly shaped distributions
+ Jump around a lot
**Take heed that with inadequate sample sizes, your sample data may barely resemble the population you're interested in!**
You decided that you had the resources to collect data on 50 giraffes on each of the islands. Will a sample of 50 be good enough to get a sense for the true values of the giraffe populations?
\
```{r fig.show="animate", animation.hook = 'gifski', fig.width=10, fig.height=2, echo=FALSE, message=FALSE, warning=FALSE, results = 'hide', cache=TRUE}
lims <- data.frame(min = c(0, 0, 0, 0), max = c(4, 16, 120, 1200))
cols <- c("brown1", "darkturquoise", "royalblue1", "darkorchid1")
ns <- c("10", "100", "1,000", "10,000")
plot1 <- function(x) {
d <- lapply(c(10, 100, 1000, 10000), function(x) {
d <- data.frame(x = rnorm(x), frame = x)
return(d)
})
p <- lapply(1:4, function(y) ggplot(data = d[[y]], aes(x)) + geom_histogram(binwidth = 0.25,
color = "white", fill = cols[y]) + theme_light() + theme(panel.border = element_blank(),
panel.grid.minor = element_blank(), panel.grid.major = element_line(size = 0.2),
axis.ticks = element_blank(), strip.background = element_blank(),
strip.text.x = element_text(color = "black"), axis.text.x = element_blank(),
plot.title = element_text(hjust = 0.5, size = 12)) + guides(fill = FALSE) +
labs(x = NULL, y = NULL) + scale_y_continuous(expand = c(0, 0),
limits = c(lims[y, 1], lims[y, 2])) + xlim(-5, 5) + ggtitle(paste0("N=",
ns[y])))
p <- cowplot::plot_grid(p[[1]], p[[2]], p[[3]], p[[4]], ncol = 4, align = "hv")
p
}
lapply(1:8, function(x) plot1())
```
<script>
iFrameResize({}, ".interactive");
</script>
================================================
FILE: 03_mean.Rmd
================================================
---
title: "Mean, Median, and Mode"
output:
bookdown::html_document2:
includes:
in_header: assets/03_mean_image.html
after_body: assets/foot.html
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.align="center")
library(ggplot2)
#library(fGarch)
#library(gifski)
library(emdbook)
library(plotly)
library(here)
```
:::obj
**Module learning objectives**
1. Describe 3 measures of centrality
1. Explain the mathematical notation used for calculating the mean
1. Write a function which calculates the mean for any vector
1. Write a function which calculates the median for any vector
1. Describe how the reliability of a sample mean will scale with increasing sample size
:::
# What are measures of centrality?
\
```{r, echo=FALSE}
set.seed(12)
x <- rnorm(50, 10, 2)
x2 <- rnorm(50, 18, 1.2)
x <- data.frame(x = x, type = "Island #1")
x2 <- data.frame(x = x2, type = "Island #2")
d <- rbind(x, x2)
# p <- ggplot(data = d, aes(d$x, fill = d$type)) + geom_histogram(binwidth = 1,
# color = "white") + theme_light() + scale_fill_manual(values = c("green3",
# "turquoise3")) + labs(x = "Teacup Giraffe heights", y = "Frequency",
# fill = NULL) + scale_y_continuous(expand = c(0, 0)) + theme(panel.border = element_blank(),
# panel.grid.minor = element_blank(), axis.ticks.y = element_blank(),
# legend.position = c(0.165, 0.92), legend.background = element_blank())
#
# ggsave(filename = "/Users/Desiree/Documents/New R Projects/Cars/p.png",
# width = 5, height = 3, p)
```
```{r, out.width="500px", echo= FALSE}
knitr::include_graphics("images/03_mean/mean_hist.png")
```
\
You've just collected a lot data and graphed heights. Although informative, a graphical display of these data is difficult to summarize -- we need to describe these heights with a single number that will be meaningful and allow us to do statistics.
We can do this with a **measure of centrality**, the concept that one number in the "center" of the data set is a good summary of all the values. Below are examples of different measures of centrality.
* The **mean** is the average and the measure of centrality that you are probably most familiar with. This is a good measure to use when the data are normally distributed. We describe it in detail below.
* The **median** is the value in the middle of the data set. Half of the observations lie above the median and half below. When the data are normally distributed, the median and the mean will be very close to each other. When your data are not normally distributed (skewed to the left or right) the median is a more appropriate measure of centrality (see the animation below).
\
```{r, fig.show='animate', animation.hook='gifski', fig.width=6, fig.height=2, echo=FALSE, message=FALSE, warning=FALSE, results='hide', interval=0.5, cache=TRUE}
# skew <- seq(0.5, 1, 0.05)
# skew2 <- seq(1.1, 2, 0.1)
# skew3 <- seq(1.9, 1, -0.1)
# skew4 <- seq(0.95, 0.55, -0.05)
# skew <- c(skew, skew2, skew3, skew4)
# plot1 <- function(x) {
# d <- lapply(1:40, function(x) {
# d <- data.frame(x = rsnorm(1e+05, mean = 0, sd = 2, xi = skew[x]),
# frame = x)
# return(d)
# })
# medians <- c(seq(0.31, -0.31, -0.031), seq(-0.279, 0.279, 0.031))
# # medians <<- lapply(1:40, function(x) median(d[[x]]$x))
# p <- lapply(1:40, function(y) ggplot(data = d[[y]], aes(x)) + geom_histogram(binwidth = 0.25,
# color = "white", fill = "skyblue2") + theme_light() + theme(panel.border = element_blank(),
# panel.grid.minor = element_blank(), axis.ticks = element_blank(),
# axis.text = element_blank()) + guides(fill = FALSE) + labs(x = NULL,
# y = NULL) + scale_y_continuous(expand = c(0, 0), limits = c(0,
# 5600), breaks = c(0, 2000, 4000)) + geom_vline(xintercept = 0,
# size = 0.5, linetype = "dashed") + geom_vline(xintercept = medians[y],
# size = 0.5) + xlim(-5, 5) + annotate("text", label = "Mean", size = 3.4,
# x = -4.1, y = 5300, hjust = 0) + annotate("text", label = "Median",
# size = 3.4, x = -4.1, y = 4600, hjust = 0) + geom_segment(aes(x = -4.8,
# xend = -4.3, y = 5300, yend = 5300), linetype = "dashed") + geom_segment(aes(x = -4.8,
# xend = -4.3, y = 4600, yend = 4600)))
# print(p)
# }
#
# gif_file <- file.path(getwd(), "median.gif")
# save_gif(plot1(), gif_file = gif_file, progress = FALSE, loop = TRUE, delay = 0.5,
# width = 400, height = 133, res = 100)
#
# utils::browseURL(gif_file)
```
<center>  </center>
\
* The **mode** is the value (height, in our case) that occurs most frequently in the data set. It's not typically used in statistics, and we won't cover it further here.
\
# Taking the mean
The mean of a variable is the sum of its values, divided by the number of values.
This concept can be represented with equation below. In our case, each "x" represents a giraffe height (i.e. a single observation), and the numerical subscript indicates its order in the sample. We'll use ${\bar{x}}$ (read "x-bar") to represent the mean of the height variable.
<div style="margin-bottom:50px"></div>
\begin{equation}
(\#eq:equation1)
\Large{\bar{x}} = \frac{x_1 + x_2 + ... + x_n}{n}
\end{equation}
<div style="margin-bottom:50px">
</div>
To make this more efficient, instead of writing "${x_1 + x_2 + ... + x_n}$", we can use the uppercase sigma symbol $\sum{}$ to represent summation of all the observations.
\
\begin{equation}
(\#eq:equation2)
\Large{\bar{x}} = \frac{\sum_{i=1}^{n}{x_i}}{n}
\end{equation}
\
This might look intimidating, but equation \@ref(eq:equation2) is really showing the same thing as \@ref(eq:equation1). Let's go through the steps again, breaking the symbols apart a bit (see annotated equation \@ref(eq:equation3) below). The sigma means 'add up'. What are we adding up? All the heights "x". The "i = " part indicates which term to begin with. For our purposes, this will always be the first observation, hence $i$ = 1. The character on top of the sigma is the last observation we include in our summation. In this case it's n -- because we're adding all n = 50 observations in each group of giraffes. In both equations, we still divide by the total number of observations in each group we have: again, n.
\
<center>
\begin{equation}
(\#eq:equation3)
\vcenter{\img[width=400px]{images/03_mean/eq_annotated.png}}
\end{equation}
</center>
# Notation for sample vs population
Recall our discussion about a [sample versus a population](02_bellCurve.html#bell-ttta). Different symbols are used to represent the mean for each of these. We've already discussed $\bar{x}$ for the sample mean. The analogous symbol for the population mean is ${\mu}$ (read "mu"). Additionally, when referring to the size of the population, we will use a capital ${N}$ instead of a lowercase one.
\
# Code it up
Using \@ref(eq:equation2), it's easy to translate this equation into code in R. The heights recorded from island 1 have been stored in a vector called `heights_island1`. Below we show the first few observations from this vector, using the `head()` function.
<div style="margin-bottom:15px">
</div>
```{r, echo=FALSE}
set.seed(12)
heights_island1 <- rnorm(50, 10, 2)
```
```{r, echo=TRUE}
head(heights_island1)
```
\
Use the interactive window below to calculate the mean "by hand".
<!---LEARNR EX 1-->
<iframe class="interactive" id="myIframe1" src="https://tinystats.shinyapps.io/03-mean-ex1/" scrolling="no" frameborder="no"></iframe>
<!------------->
# Create your own function
Now it's your turn to write your own function. Call it "my_mean" and have it calculate the mean of any given vector. You're going to use the rules for writing a function in R that you've used previously. As a reminder, you'll use `function()` and embed your code (that you completed in the window above) within curly brackets`{}`. The advantage of making a "homemade" function is that you can string together all the steps from the previous exercise into a single command.
<!---LEARNR EX 2-->
<iframe class="interactive" id="myIframe2" src="https://tinystats.shinyapps.io/03-mean-ex2/" scrolling="no" frameborder="no"></iframe>
<!------------->
You can also complete the exercise above in RStudio on your local computer. This way you will be able to save your `my_mean()` function and script for future use.
\
# Take a tea break!
```{r, out.width="600px", echo= FALSE}
knitr::include_graphics("images/03_mean/Teacup.png")
```
# Taking the median
To calculate the median go through the following steps:
* Assess whether there is an odd or even number of observations
* Order all observations from smallest to largest
* If an odd number, then the median is the middle value at position: (n + 1) / 2
* If an even number, then:
+ Find the value at the position: n / 2
+ Find the value at the position: (n / 2) + 1
+ The median will be the mean of the values at these two positions.
Before you write your own median function, two concepts need to be introduced: 1) the modulus operator `%%` and 2) `if...else` statements.
The **modulus operation** gives the remainder after division of one number by another. For example, in R `11 %% 5` returns the `1`, which is the remainer of `11` divided by `5`. If the modulus operation returns `0`, then there is no remainder. It is useful to apply the modulus operation `x %% 2` to determine whether a number `x` is even or odd by testing if the result is exactly equal to 0. See example code below.
<div style="margin-bottom:15px">
<style>
.col2 {
columns: 2 200px; /* number of columns and width in pixels*/
-webkit-columns: 2 200px; /* chrome, safari */
-moz-columns: 2 200px; /* firefox */
}
</style>
</div>
<div class="col2">
```{r, tut=FALSE, prompt=TRUE}
10 %% 2
10 %% 2 == 0
11 %% 2
11 %% 2 == 0
```
</div>
\
An `if...else` statement is useful when you want to specify distinct outcomes for objects dependent on whether they meet your set criteria. See below.
<!---LEARNR EX 3-->
<iframe class="interactive" id="myIframe3" src="https://tinystats.shinyapps.io/03-mean-ex3/" scrolling="no" frameborder="no"></iframe>
<!------------->
Now that you have a sense for how the `%%` operator can be used to test whether a number is EVEN or ODD, and how `if...else` statements work, use both of these concepts in the window below to write your own function that calculates the median of any vector.
<!---LEARNR EX 4-->
<iframe class="interactive" id="myIframe4" src="https://tinystats.shinyapps.io/03-mean-ex4b/" scrolling="no" frameborder="no"></iframe>
<!------------->
# Things to think about
Remember that the sample mean is an estimate of the entire population's mean (which would often be impossibly large to measure). How reliably does the mean of a sample represent the population mean? *Warning*: if a small sample has been used, the sample mean may not be a reliable at all! Estimates from small samples are subject to the whims of randomness. On the other hand, the larger the sample, the closer the sample size appraches the population size, and the more reliable the sample estimate becomes.
Pressing 'Play' on the plot below will illustrate this concept.
<a name="mean_animation">
```{r, tut=FALSE, echo=FALSE, message= FALSE, cache=TRUE}
m <- list(l = 50, r = 50, b = 10, t = 10, pad = 4)
accumulate_by <- function(dat, var) {
var <- lazyeval::f_eval(var, dat)
lvls <- plotly:::getLevels(var)
dats <-
lapply(seq_along(lvls), function(x) {
cbind(dat[var %in% lvls[seq(1, x)], ], frame = lvls[[x]])
})
dplyr::bind_rows(dats)
}
d <- do.call(rbind, lapply(lseq(10, 10000, 300), function(x) {
d <- data.frame(x = rnorm(x), frame = x/300, N = x)
return(d)
}))
dd <-
aggregate(data = d, x ~ frame + N, FUN = mean) %>%
accumulate_by(~N)
p <-
dd %>%
plot_ly(x = ~log10(N), y = ~x, frame = ~frame...4, type = "scatter", mode = "lines",
line = list(simplyfy = F, color = "orangered"), width = 550, height = 350) %>%
animation_opts(frame = 10, transition = 0, redraw = FALSE) %>%
config(displayModeBar = F) %>%
layout(xaxis = list(title = "Sample Size (log10)", zeroline = F),
yaxis = list(range = c(-0.7, 0.7), title = "Mean", zeroline = F),
autosize = F, margin = m) %>%
animation_slider(hide = T) %>%
animation_button(x = 1, xanchor = "right", y = 0, yanchor = "bottom")
htmltools::save_html(p, here("images/03_mean/Law_of_large_numbers.html"))
```
</a>
<center><iframe style="margin: 0px;" src="images/03_mean/Law_of_large_numbers.html" width="570" height="400" scrolling="yes" seamless="seamless" frameBorder="0"> </iframe></center>
<script type="text/x-mathjax-config">
MathJax.Ajax.config.path["img"] = "https://cdn.rawgit.com/pkra/mathjax-img/1.0.0/";
MathJax.Hub.Config({
extensions: ["tex2jax.js","[img]/img.js"],
jax: ["input/TeX","output/HTML-CSS"],
tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]},
});
</script>
* The animation above shows the values of means calculated from increasingly larger samples: small samples on the left and larger samples to the right (on the x-axis).
* Each point on the zig-zag line is the mean calculated from a random sample. The true mean of the population is 0.
* The y-axis shows what the mean is for a sample of that particular size. Though the y-values vary here, remember that if the sample were a good estimate of the population, the y-values should be very close to 0.
* You can see that when the samples are small the sample mean isn't necessarily a good representation of the population that it was sampled from--and that is not a good thing.
For further reading see the [Law of Large Numbers](https://en.wikipedia.org/wiki/Law_of_large_numbers).
<script>
iFrameResize({}, ".interactive");
</script>
================================================
FILE: 04_variance.Rmd
================================================
---
title: "The Spread of the Data"
output:
bookdown::html_document2:
includes:
in_header: assets/04_variance_image.html
after_body: assets/foot.html
---
:::obj
**Module learning objectives**
1. Describe the steps for constructing the sum of squares
1. Describe how the standard deviations can allow us to determine which data values are common or rare
1. Write a function for the variance and standard deviation
1. Explain why the sample variance would be downwardly biased if we did not correct it by diving by (n-1)
:::
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.align = "center")
library(ggplot2)
library(plotly)
library(here)
```
# Measures of spread
After successfully computing the mean, you return to the memory of the first day you had collected data. There was one teacup giraffe that was your favorite-- it was relatively small with purple spots and perky tail! You begin to wonder how rare it would be to encounter a giraffe smaller than this one. To answer this question, you need to be able to calculate a **measure of spread**.
<center>{width=600px}</center>
You might start by quantifying the simplest measure of spread, the **range**. This at least tells us the boundaries within which all the sample heights fall, but the range ignores important contextual information. For example, two data sets can have very different spreads but still have the same range.
<center>{width=600px}</center>
If we want to avoid undue influence of outliers for the measure of spread, the range is not good enough to provide us with a wholistic, robust measure.
What is a more stable measurement? The answer is the **variance**.
# Variance in plain language
You need a solid understanding of variance in order to grasp the mechanics of any statistical test. But what does the concept variance really capture?
* Recall the normal distribution: when we inspect the distributions below visually, we see that they all have the same mean, but some distributions are more spread out. Bell curves that are more "squished together" are composed of observations that are more similar to one another, while bell curves that are more "spread out" are composed of observations that have greater variability. Wider bell-curves mean greater variance! In plain language, the variance gives us an idea of how similar observations are to one another, and to the average value.

# How to calculate variance
Let's begin by going through the steps and equations for calculating the variance of a *population*. We'll explain how to modify this for calculating the *sample* variance later on.
First, the idea is to capture how far away individual observations lie from the mean. In other words, we could subtract the mean from each observation. This is called the **deviation** from the mean. And since we're calculating a *population* variance, we will use $\mu$ for the mean instead of ${\bar{x}}$.
Calculating the deviations is a great start, but we're back to the problem of needing to summarize multiple values. Since these newly calculated values are both negative and positive, we quickly realize that adding them up (like the first step when calculating the mean) would not be a productive idea since the negatives cancel the positives.
What's the easiest thing to do when you want to retain how far away a point is from the mean irrespective of whether it's above or below the mean? How about taking the absolute value?
Though the absolute value of the deviation would be a valid measure of distance from the mean, it turns out that it has some mathematical properties that don't make it the best choice, especially for more complex statistial analyses involving the variance later down the line.
# Why we square the deviations
There is an alternative with simpler, "better behaved" mathematical properties: **squaring the deviations**. Squaring will always give us positive values, so the values can never cancel each other out. It's worth pointing out, however, that a consequence of squaring deviations will tend to amplify the influence of values at extreme distances from the mean. You can read [this thread](https://stats.stackexchange.com/questions/118/why-square-the-difference-instead-of-taking-the-absolute-value-in-standard-devia) for a more detailed discussion about absolute values versus squared deviations.
# Sum of squares
Now we have positive, squared deviation values that can be summed to a single total. We call this total **the sum of squares**, and the equation is shown below.
<div style="margin-bottom:50px">
</div>
\begin{equation}
(\#eq:equation1)
\Large {\sum_{i=1}^N (x_i - \mu)^2}
\end{equation}
<div style="margin-bottom:50px">
</div>
The sum of squares is an important calculation that we will see again for other statistical operations. The animation below illustrates how these sums of squares are "constructed" starting with the sample observations and then squaring each one's distance away from the mean.
```{r fig.show="animate", animation.hook = 'gifski', fig.width=7.2, fig.height=4.8, echo=FALSE, message=FALSE, warning=FALSE, results = 'hide', interval=0.01666667, fig.align='center', cache = TRUE}
s <- data.frame(x=c(113, 146.5, 132, 70.5, 121, 55), y=c(8.75,1.25,3.75,3.75,6.25,1.25))
s <- s[order(s$x),]
s <- s[c(1,2,3,6,5,4),]
s2 <- s
s <- s[c(1,2,6,5,4,3),]
m <- mean(s[,1])
m2 <- 85
lim <- c(0, 60)
d <- data.frame(x1=s[,1], x2=rep(m, 6), y1=s$y, y2=(abs(s[,1]-m))+s$y)
co <- c("#6FB4CE", "#D97FDA", "#DC5F24", "#C46A79", "#f93188", "#F88336")
v <- do.call(cbind, lapply(1:6, function(x) seq(d[x,]$x1, d[x,]$x2, by = (d[x,]$x2-d[x,]$x1)/29)))
vv <- lapply(1:30, function(y) data.frame(x1=v[y,], x2=d$x1, y1=s$y, y2=(abs(s[,1]-m))+s$y))
pp <- function(x){
p1 <- ggplot()+geom_point(data=s, aes(x=x, y=y),color=co, size=4)+
theme_light()+ylim(lim)+geom_segment(aes(x = x2, y = y1, xend = x1, yend = y1), data = x, color=co, size=2)+labs(x="Teacup giraffe height", y=NULL)+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+
geom_segment(aes(x=m, xend=m, y=0, yend=lim[2]), linetype="dashed", color="black", size=2)+
annotate('text', x = 111.33, y = 53, label = "bar(x)",parse = TRUE,size=15)
p1
}
lapply(vv, function(x) pp(x))
h <- do.call(cbind, lapply(1:6, function(x) seq(d[x,]$y1, d[x,]$y2, by = (d[x,]$y2-d[x,]$y1)/29)))
hh <- lapply(1:30, function(y) data.frame(x1=s[,1], x2=rep(m, 6), y1=s$y, y2=h[y,]))
pp2 <- function(x){
p2 <- ggplot()+geom_point(data=s, aes(x=x, y=y),color=co, size=4)+
theme_light()+ylim(lim)+geom_segment(aes(x = x1, y = y1, xend = x2, yend = y1), data = d, color=co, size=2)+
geom_segment(aes(x = x1, y = y2, xend = x1, yend = y1), data = x, color=co, size=2)+labs(x="Teacup giraffe height", y=NULL)+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+
geom_segment(aes(x=m, xend=m, y=0, yend=lim[2]), linetype="dashed", color="black", size=2)+
annotate('text', x = 111.33, y = 53, label = "bar(x)",parse = TRUE,size=15)
p2
}
lapply(hh, function(x) pp2(x))
pp22 <- function(x){
p2 <- ggplot()+theme_light()+geom_rect(data=d, mapping=aes(xmin=x1, xmax=x2, ymin=y1, ymax=y2), color=alpha(co, x),fill=co, alpha=x/5, size=2)+ylim(lim)+geom_segment(aes(x = x1, y = y1, xend = x2, yend = y1), data = d, color=co, size=2)+
geom_segment(aes(x = x1, y = y2, xend = x1, yend = y1), data = d, color=co, size=2)+
geom_point(data=s, aes(x=x, y=y),color=co, size=4)+
labs(x="Teacup giraffe height", y=NULL)+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+
geom_segment(aes(x=m, xend=m, y=0, yend=lim[2]), linetype="dashed", color="black", size=2)+
annotate('text', x = 111.33, y = 53, label = "bar(x)",parse = TRUE,size=15)
p2
}
lapply(seq(0,1,0.1), function(x) pp22(x))
pp3 <- function(x){
p3 <- ggplot()+theme_light()+geom_rect(data=d, mapping=aes(xmin=x1, xmax=x2, ymin=y1, ymax=y2), color=co,fill=co, alpha=0.2, size=2)+
geom_point(data=s, aes(x=x, y=y), color=co, size=4)+
ylim(lim)+labs(x="Teacup giraffe height", y=NULL)+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+
geom_segment(aes(x=m, xend=m, y=0, yend=lim[2]), linetype="dashed", color="black", size=2)+
annotate('text', x = 111.33, y = 53, label = "bar(x)",parse = TRUE,size=15)
p3
}
lapply(1:15, function(x) pp3())
```
Once the squares have been "constructed", we sum their squares, producing a single value.

# Variance, $\sigma^2$
We need to take into account how many observations contributed to these sum of squares. So, we divide the sum of squares by N. This step essentially takes the average of the squared differences from the mean. This is the variance.
<div style="margin-bottom:50px">
</div>
\begin{equation}
(\#eq:equation2)
\Large \sigma^2 = \frac{\sum_{i=1}^N (x_i - \mu)^2}{N}
\end{equation}
<div style="margin-bottom:50px">
</div>
# Standard Deviation, $\sigma$
The problem with variance is that its value is not easily interpretable, the units will be squared and therefore not on the same scale as the mean. It would not be very intuitive to interpret giraffe heights written in *millimeters squared*! The **standard deviation** fixes that. We "un-square" the variance, and now we return to the data's original units (millimeters). The standard deviation equation is below:
<div style="margin-bottom:50px">
</div>
\begin{equation}
(\#eq:equation3)
\Large \sigma = \sqrt{\frac{\sum_{i=1}^N (x_i - \mu)^2}{N}}
\end{equation}
<div style="margin-bottom:50px"></div>
# Population vs sample equations
One more thing: the equations above are for calculating the variance and standard deviation of a population. In real life applications, the population equations will almost never be used during data analysis. To calculate the variance and standard deviation for a sample instead, we will need to divide by n-1 instead of N, which we explain at the end of this module. Note that we also change to the corresponding symbols for the sample mean ($\bar{x}$), sample size (lowercase $n$), and use a lowercase $s$ in place of $\sigma$.
When we apply this change, our equation for the **sample variance, $s^2$ ** is:
<div style="margin-bottom:50px">
</div>
\begin{equation}
(\#eq:equation4)
\Large s^2 = \frac{\sum_{i=1}^n (x_i - \bar{x})^2}{n-1}
\end{equation}
<div style="margin-bottom:50px"></div>
And for **sample standard deviation, $s$**:
<div style="margin-bottom:50px">
</div>
\begin{equation}
(\#eq:equation5)
\Large s = \sqrt{\frac{\sum_{i=1}^n (x_i - \bar{x})^2}{n-1}}
\end{equation}
<div style="margin-bottom:50px"></div>
# Meaning of the standard deviation
Since we're now focusing on samples, let's think about how we can apply the standard deviation in a useful way to normal distributions to predict how "rare" or "common" particular observations in a data set may be. For the normal distribution, almost all of the data will fall within ± 3 standard deviations from the mean. This rule of thumb, called the **empirical rule**, is illustrated below and you can [read more about it here](https://newonlinecourses.science.psu.edu/stat200/lesson/2/2.2/2.2.7).
<a name="empirical">

</a>
* The entire normal distribution includes 100% of the data. The empirical rule states that the interval created by **1 standard deviation above and below the mean includes 68% of all the data**. Observations within these bounds would be fairly common, but it would not be exceedingly rare to observe data that fall *outside* of these bounds.
* **2 standard deviations above and below the mean** encompasses approximately **95%** of the data. Observations that fall within these bounds include the common and also infrequent observations. Observations that fall *outside* of 2 standard deviations would be uncommon.
* **3 standard deviations above and below the mean** encompass **99.7%** of the data, capturing almost all possible observations in the set. Observations that fall oustide of these bounds into the extremes of distribution's tails would be exceedingly rare to observe (but still possible if you sample large enough groups to detect these rare events!).
# Example
Let's calculate the variance and standard deviation using 6 observations of giraffe heights from a subset of our data, including your favorite small one with the purple spots.
(1) **Calculate the sample mean**, $\bar{x}$:
```{r}
h <- c(113, 146.5, 132, 70.5, 121, 55)
mean(h)
```
We'll plot the mean $\bar{x}$ below with a gray line.

(2) **Find the deviation** from the mean, the difference between each giraffe's height and $\bar{x}$.
```{r}
deviation <- h - mean(h)
deviation
```

(3) **Calculate Variance**: Square the deviations, add them all up to get the sum of squares, and then take the average of the sum of squares (adjusted to "n-1" because we're using a sample).
```{r}
SS <- sum(deviation^2)
variance <- SS/(length(h)-1) # Divides by N-1
variance
```
(4) **Standard Deviation**: Take the square root of the variance.
```{r}
sqrt(variance)
```
Because the standard devation is a standardized score-- we can now focus on particular giraffes and see whether or not they lie within 1 standard deviation of the mean.

We see the little blue spotted giraffe is more than 1 standard deviation below the mean-- and so we can conclude that a little guy of his height is rather short-- even smaller than your favorite! Similarly, the giraffe with bright pink spots is taller than 1 standard deviation above the mean-- quite tall!
# Standard deviation application example
Using the standard deviation and the empirical rule described earlier, we now finally have the tools to answer our original question from the start of the module: how probable it is to find a giraffe smaller than our favorite purple-spotted one?
* Our giraffe of interest happens to be almost exactly 1 standard deviation below the mean, so this makes it easy to assess the probability of encountering a giraffe shorter than him.
* If we assume our sample comes from a normally distributed population, then **what percentage of giraffes will be shorter than the one with purple spots?**

We can apply the knowledge that the full percentage area under the curve is 100%, and what we know from the empirical rule, to conclude that there is approximately 16% of giraffes will be shorter than the one with purple spots. So, it would be common to find giraffes taller than our favorite but somewhat of a treat to find ones smaller--like the blue one!
Maybe this explains why the little blue spotted giraffe is so cute--- it is not so common to find ones so small!
# Code it up
Using \@ref(eq:equation4) and \@ref(eq:equation5), it's easy to translate the equations for the variance and standard deviation into code in R.
* In the window below, you will write two separate functions, one to calculate the sample variance and another to calculate the sample standard deviation. Name your functions `my_variance` and `my_sd`.
* Test your functions on the vector `heights_island1` and compare the output of your "handwritten" functions with the base R function of `var( )` and `sd( )`.
<!---LEARNR EX 1-->
<iframe class="interactive" id="myIframe1" src="https://tinystats.shinyapps.io/04-variance-ex1/" scrolling="no" frameborder="no"></iframe>
<!------------->
<div style="margin-top:50px"></div>
<center>{width=650px}</center>
# Population vs Sample ($N$ vs $n-1$)
We have to correct the calculated variance by dividing by $n-1$. Let's explain why:
* Let's recall that when we calculate the sum of squares, we only have the sample mean $\bar{x}$ to go off of as our center point.
<center>{width=500px}</center>
* We must first acknowledge that while the population $\mu$ is unknowable, the chance that the sample $\bar{x}$ and the population $\mu$ are the same is unlikely.
+ It's also worth pointing out that the risk that $\bar{x}$ and $\mu$ are not even values close to each other is much increased when $\bar{x}$ has been calculated from a small sample.
* Recognizing that the true population mean value is probably some *other* value than $\bar{x}$, let's recalculate the sum of squares. This time we will use an imaginary true population $\mu$ as our center point, which in the animation below will be represented with a line at an arbitrary distance away from $\bar{x}$.
```{r fig.show="animate", animation.hook = 'gifski', fig.width=5.04, fig.height=7, echo=FALSE, message=FALSE, warning=FALSE, results = 'hide', interval=0.01666667, fig.align = 'center', cache=TRUE}
s <- data.frame(x=c(113, 146.5, 132, 70.5, 121, 55), y=c(9,1.5,4,4,6.5,1.5))
s <- s[order(s$x),]
s <- s[c(1,2,3,6,5,4),]
s2 <- s
s <- s[c(1,2,6,5,4,3),]
m <- mean(s[,1])
m2 <- 85
lim <- c(-73, 60)
d <- data.frame(x1=s[,1], x2=rep(m, 6), y1=s$y, y2=(abs(s[,1]-m))+s$y)
co <- c("#6FB4CE", "#D97FDA", "#DC5F24", "#C46A79", "#f93188", "#F88336")
co2 <- c("grey30", "grey40", "grey80", "grey70", "grey60", "grey50")
s2$y <- (s2$y)*-1
s2[3,2] <- -9
s2 <- s2[c(1,2,4:6,3),]
d2 <- data.frame(x1=s2[,1], x2=rep(m2, 6), y1=s2$y, y2=(-abs(s2[,1]-m2))+s2$y)
v <- do.call(cbind, lapply(1:6, function(x) seq(d[x,]$x1, d[x,]$x2, by = (d[x,]$x2-d[x,]$x1)/29)))
vv <- lapply(1:30, function(y) data.frame(x1=v[y,], x2=d$x1, y1=s$y, y2=(abs(s[,1]-m))+s$y))
v2 <- do.call(cbind, lapply(1:6, function(x) seq(d2[x,]$x1, d2[x,]$x2, by = (d2[x,]$x2-d2[x,]$x1)/29)))
vv2 <- lapply(1:30, function(y) data.frame(x1.2=v2[y,], x2.2=d2$x1, y1.2=s2$y, y2.2=(abs(s2[,1]-m2))+s2$y))
vv <- lapply(1:30, function(x) cbind(vv[[x]], vv2[[x]]))
pp <- function(x){
p1 <- ggplot()+geom_point(data=s, aes(x=x, y=y),color=co, size=3)+geom_point(data=s2, aes(x=x, y=y),color=co2, size=3)+theme_light()+ylim(lim)+geom_segment(aes(x = x2, y = y1, xend = x1, yend = y1), data = x, color=co, size=1.5)+geom_segment(aes(x = x2.2, y = y1.2, xend = x1.2, yend = y1.2), data = x, color=co2, size=1.5)+labs(x="Teacup giraffe heights", y=NULL)+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+
geom_segment(aes(x=m, xend=m, y=0, yend=lim[2]), linetype="dashed", color="black", size=1.5)+
geom_segment(aes(x=m2, xend=m2, y=0, yend=lim[1]), linetype="solid", color="black", size=1.5)+
annotate('text', x = 80, y = -60, label = "mu",parse = TRUE,size=12)+
annotate('text', x = 111.33, y = 53, label = "bar(x)",parse = TRUE,size=12)
p1
}
lapply(vv, function(x) pp(x))
h <- do.call(cbind, lapply(1:6, function(x) seq(d[x,]$y1, d[x,]$y2, by = (d[x,]$y2-d[x,]$y1)/29)))
hh <- lapply(1:30, function(y) data.frame(x1=s[,1], x2=rep(m, 6), y1=s$y, y2=h[y,]))
h2 <- do.call(cbind, lapply(1:6, function(x) seq(d2[x,]$y1, d2[x,]$y2, by = (d2[x,]$y2-d2[x,]$y1)/29)))
hh2 <- lapply(1:30, function(y) data.frame(x1.2=s2[,1], x2.2=rep(m2, 6), y1.2=s2$y, y2.2=h2[y,]))
hh <- lapply(1:30, function(x) cbind(hh[[x]], hh2[[x]]))
pp2 <- function(x){
p2 <- ggplot()+geom_point(data=s, aes(x=x, y=y),color=co, size=3)+geom_point(data=s2, aes(x=x, y=y),color=co2, size=3)+theme_light()+ylim(lim)+geom_segment(aes(x = x1, y = y1, xend = x2, yend = y1), data = d, color=co, size=1.5)+geom_segment(aes(x = x1, y = y1, xend = x2, yend = y1), data = d2, color=co2, size=1.5)+
geom_segment(aes(x = x1.2, y = y2.2, xend = x1.2, yend = y1.2), data = x, color=co2, size=1.5)+geom_segment(aes(x = x1, y = y2, xend = x1, yend = y1), data = x, color=co, size=1.5)+labs(x="Teacup giraffe heights", y=NULL)+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+
geom_segment(aes(x=m, xend=m, y=0, yend=lim[2]), linetype="dashed", color="black", size=1.5)+
geom_segment(aes(x=m2, xend=m2, y=0, yend=lim[1]), linetype="solid", color="black", size=1.5)+
annotate('text', x = 80, y = -60, label = "mu",parse = TRUE,size=12)+
annotate('text', x = 111.33, y = 53, label = "bar(x)",parse = TRUE,size=12)
p2
}
lapply(hh, function(x) pp2(x))
pp22 <- function(x){
p2 <- ggplot()+theme_light()+geom_rect(data=d, mapping=aes(xmin=x1, xmax=x2, ymin=y1, ymax=y2), color=alpha(co, x),fill=co, alpha=x/5, size=1.5)+geom_rect(data=d2, mapping=aes(xmin=x1, xmax=x2, ymin=y1, ymax=y2), color=alpha(co2, x),fill=co2, alpha=x/5, size=1.5)+ylim(lim)+geom_segment(aes(x = x1, y = y1, xend = x2, yend = y1), data = d, color=co, size=1.5)+geom_segment(aes(x = x1, y = y1, xend = x2, yend = y1), data = d2, color=co2, size=1.5)+
geom_segment(aes(x = x1, y = y2, xend = x1, yend = y1), data = d, color=co, size=1.5)+geom_segment(aes(x = x1, y = y2, xend = x1, yend = y1), data = d2, color=co2, size=2)+geom_point(data=s, aes(x=x, y=y),color=co, size=3)+geom_point(data=s2, aes(x=x, y=y),color=co2, size=3)+
labs(x="Teacup giraffe heights", y=NULL)+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+
geom_segment(aes(x=m, xend=m, y=0, yend=lim[2]), linetype="dashed", color="black", size=1.5)+
geom_segment(aes(x=m2, xend=m2, y=0, yend=lim[1]), linetype="solid", color="black", size=1.5)+
annotate('text', x = 80, y = -60, label = "mu",parse = TRUE,size=12)+
annotate('text', x = 111.33, y = 53, label = "bar(x)",parse = TRUE,size=12)
p2
}
lapply(seq(0,1,0.1), function(x) pp22(x))
pp3 <- function(x){
p3 <- ggplot()+theme_light()+geom_rect(data=d, mapping=aes(xmin=x1, xmax=x2, ymin=y1, ymax=y2), color=co,fill=co, alpha=0.2, size=1.5)+geom_rect(data=d2, mapping=aes(xmin=x1, xmax=x2, ymin=y1, ymax=y2), color=co2,fill=co2, alpha=0.2, size=1.5)+geom_point(data=s, aes(x=x, y=y), color=co, size=3)+geom_point(data=s2, aes(x=x, y=y), color=co2, size=3)+ylim(lim)+labs(x="Teacup giraffe heights", y=NULL)+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+
geom_segment(aes(x=m, xend=m, y=0, yend=lim[2]), linetype="dashed", color="black", size=1.5)+
geom_segment(aes(x=m2, xend=m2, y=0, yend=lim[1]), linetype="solid", color="black", size=1.5)+
annotate('text', x = 80, y = -60, label = "mu",parse = TRUE,size=12)+
annotate('text', x = 111.33, y = 53, label = "bar(x)",parse = TRUE,size=12)
p3
}
lapply(1:15, function(x) pp3())
```
* When we compare the sum of squares in both of these scenarios: 1) using $\bar{x}$ or 2) using our imaginary $\mu$, we see that the sum of squares from $\mu$ will *always* be greater than the $\bar{x}$ sum of squares. This is true because by definition of being the sample mean, the line at $\bar{x}$ will always be the "center" of the values in our sample. Its location already minimizes the total distance of all the observations to the center. A line at any other location (i.e. $\mu$) would be a line that is not mimimizing the distance for observations in our sample.
<center>{width=750px}</center>
* Therefore, when we calculate the sum of squares (and consequently, the variance and the standard deviation) using the sample mean $\bar{x}$, we are most likely arriving at a value that is downwardly biased compared to what the true variance or standard deviation would be if we were able to know and use the population mean $\mu$.
* This is why we need to adjust our sample variance by diving by $n-1$ instead of just $N$. By diving by a smaller value (i.e. $n-1$ instead of N), we ensure that the overall value of the variance and standard deviation will be a little larger, correcting for the downward bias we just described.
# Things to think about
**How badly might the sample variance be downwardly biased?**: Well, it depends on how far away $\bar{x}$ is from the true $\mu$. The further away it is, the worse the downward bias will be!
* Of course, we want to avoid having a very downwardly biased variance. What controls how far away $\bar{x}$ is from $\mu$? The sample size! As pointed out previously, the larger the sample, the greater the likelihood that your sample mean will resemble the population mean.
* Press Play on the animation below. The plot shows the relationship between bias in the variance, the sample size, and the distance between $\bar{x}$ and $\mu$. Each dot represents one out of a thousand random samples all from the same population. The vertical dotted line represents $\mu$, and the horizontal dotted line represents the true population variance (animation inspired by Khan Academy [video](https://www.khanacademy.org/math/ap-statistics/summarizing-quantitative-data-ap/more-standard-deviation/v/simulation-showing-bias-in-sample-variance).)
```{r, tut=FALSE, echo=FALSE, message= FALSE, warning=FALSE, cache=TRUE}
set.seed(12)
d <- rnorm(50, 10, 2)
d1 <- rnorm(50, 18, 1.2)
d <- c(d,d1)
mm <- mean(d)
v <- var(d)
gen_data <- function(x){
d2 <- sample(size=sample(size=1, seq(from = 2, to = 10, by = 1)), d)
dd <- data.frame(mean=mean(d2), unb_var=var(d2), b_var=var(d2)* (length(d2) - 1) / length(d2), N=length(d2), perc=(var(d2)* (length(d2) - 1) / length(d2))/var(d))
}
data <- do.call(rbind, lapply(1:1003, function(x) gen_data()))
ff <- function(x){
d <- data[1:x,]
d$frame <- x+1
return(d)
}
pd <- do.call(rbind, lapply(seq(9, 1000, 10), function(x) ff(x)))
p <- data.frame(mean=Inf, unb_var=Inf, b_var=Inf, N=2, perc=Inf, frame=0)
pd <- rbind(pd, p)
vline <- function(x = 0, color = "black") {
list(
type = "line",
y0 = 0,
y1 = 1,
yref = "paper",
x0 = x,
x1 = x,
line = list(color = color, dash="dash", width=3)
)
}
hline <- function(y = 0, color = "black") {
list(
type = "line",
x0 = 0,
x1 = 1,
xref = "paper",
y0 = y,
y1 = y,
line = list(color = color, dash="dash", width=3)
)
}
m <- list(
l = 100,
r = 100,
b = 10,
t = 10,
pad = 4
)
p <- pd %>%
plot_ly(
width=700,
height=450,
type = 'scatter',
mode='markers',
x = ~mean,
y = ~b_var,
frame = ~frame,
color = ~N,
colors = c("midnightblue", "skyblue2"),
marker = list(size = 20, opacity=0.75),
hoverinfo="text",
text=~paste("Mean:", round(mean, 2), "\nVariance:",
round(b_var, 2))
)%>%
animation_opts(
frame = 1,
transition = 0,
redraw = FALSE
)%>%
config(displayModeBar = F) %>%
layout(margin=m,autosize=F,
xaxis = list(range=c(7,20.5), zeroline=FALSE, title="Mean"),
yaxis = list(range=c(-2,38), zeroline=FALSE, title="Biased variance"),
shapes = list(hline(v),vline(mm)))%>%
animation_slider(currentvalue = list(prefix = "Number of Samples: ", font = list(color="grey70", size=14)))
htmltools::save_html(p,here("images/04_variance/mega_dots.html"))
```
<center><iframe style="margin: 0px;" src="images/04_variance/mega_dots.html" width="720" height="500" scrolling="yes" seamless="seamless" frameBorder="0"> </iframe></center>
* When the samples whose means $\bar{x}$ are far off from the true population mean, they tend to have downwardly biased variance.
* Take a look at the points that are furthest away from the true population mean-- the samples represented by these points primarily came from small sample sizes (dark blue dots).
# How the correction works
The plot below shows the percentage of the true population variance that an uncorrected sample variance achieves on average. These data were generated by sampling from the same population as the animation above. This time the data have been grouped into bars by how many observations each random sample had. (Animation inspired by Khan Academy [video](https://www.khanacademy.org/math/ap-statistics/summarizing-quantitative-data-ap/more-standard-deviation/v/simulation-showing-bias-in-sample-variance))
```{r, tut=FALSE, echo=FALSE, message= FALSE, warning=FALSE, cache=TRUE}
data <- do.call(rbind, lapply(1:20000, function(x) gen_data()))
mm <- aggregate(b_var~N, data=data, function(y) (mean(y)/var(d))*100)
p2 <- mm %>%
plot_ly(
width=650,
height=350,
type = 'bar',
x = ~N,
y = ~b_var,
color = ~N,
colors = c("midnightblue", "skyblue2"),
marker = list(size = 2, opacity=1),
hoverinfo="y"
)%>%
config(displayModeBar = F) %>%
layout(margin=m,autosize=F,
yaxis = list(range=c(0,90), zeroline=FALSE, title="Biased Sample variance / Pop. variance (%)"),
xaxis = list(title="Sample Size"))%>%
hide_colorbar()
htmltools::save_html(p2, here("images/04_variance/static_bar.html"))
```
<center><iframe style="margin: 0px;" src="images/04_variance/static_bar.html" width="670" height="400" scrolling="yes" seamless="seamless" frameBorder="0"> </iframe></center>
* Notice that the variances from smaller samples do the worst job of approaching 100% of the true variance. In fact, without correction the sample variance is downwardly biased by a factor of $n/(n-1)$.
* You can hover over the bars above to see what the average percentage of the true variance actually is for the different samples sizes. If we multiply this percentage by the correction, we fix the discrepancy between sample and population variance. We demonstrate this below for samples of size n = 3.
```{r, tut= FALSE}
n = 3
correction = n/(n-1)
hover_value = 67.22902 # % value when hovering over bar for n = 3
# Apply correction
percent_of_true_variance <- hover_value * correction
percent_of_true_variance
```
As we can see, the correction works by adjusting the downwardly biased sample variance to close to 100% of the true variance.
Try hovering over a few other bars and see yourself that correction works independent of the sample size. You can use the window below as a calculator to change the N and the hover values and then run the code.
<!---LEARNR EX 2-->
<iframe class="interactive" id="myIframe2" src="https://tinystats.shinyapps.io/04-variance-ex2/" scrolling="no" frameborder="no"></iframe>
<!------------->
<script>
iFrameResize({}, ".interactive");
</script>
================================================
FILE: 05_correlation.Rmd
================================================
---
title: "Covariance and Correlation"
output:
bookdown::html_document2:
includes:
in_header: assets/05_correlation_image.html
after_body: assets/foot.html
---
```{r setup, include=FALSE}
library(MASS)
library(plotly)
library(here)
library(ggplot2)
```
:::obj
**Module learning objectives**
1. Create a scatterplot using ggplot
1. Identify the similarities and differences between calculating the variance and covariance
1. Write a function for the covariance and Pearson's correlation coefficient
1. Interpret the meaning behind Pearson's correlation correlation
1. Describe the purpose of dividing by the product of the standard deviations when calculating the correlation.
:::
# Gathering data on another variable
Over the course of your time on the islands, you notice that the teacup giraffes seem to have an affinity for celery, which you have already used to entice so they come close enough for a height measurement. Suprisingly, one of the small ones had eaten so much of it! You decide to quantify how much celery each of the giraffes consumed to see if there is any relationship to height.
You systematically measure the amount of celery eaten and add it to your log of data, which is stored as a data frame called `giraffe_data`.
We can check out the first entries of the data frame by using the `head( )` command:
```{r, echo= FALSE}
set.seed(12)
x1 <- rnorm(50, 10, 2)
x2 <- scale(matrix(rnorm(50), ncol=1))
x12 <- cbind(scale(x1),x2)
c1 <- var(x12)
chol1 <- solve(chol(c1))
newx <- x12 %*% chol1
newc <- matrix(c(1,-0.52, -0.52, 1), ncol=2)
chol2 <- chol(newc)
finalx <- newx %*% chol2 * sd(x1) + mean(x1)
finalx[,2] <- (2*finalx[,2]-5)
giraffe_data <- finalx
colnames(giraffe_data) <- c("Heights", "Celery_Eaten")
giraffe_data <- as.data.frame(giraffe_data)
points <- giraffe_data[c(12, 50, 14, 43, 32),]
```
```{r}
head(giraffe_data)
```
# Make a scatter plot
It's difficult to get an idea if there's any relationship by just looking at the data frame. We learn so much more from creating a plot. Let's revisit our newly acquired ggplot skills to make a scatter plot.
A lot of the code used [previously](02_bellCurve.html) can be re-used for the scatter plot. Two main differences are the following:
(1) Because we now have an additional variable, we need to **assign a `y = ` for the `aes( )` command within `ggplot( )`**. Create the plot so that `Celery_Eaten` will be on the y-axis.
(2) **Add (`+`) a `geom_point( )`** element instead of `geom_hist( )`
Also, we will add lines to our plot, representing the mean of each variable. Here's how we'll do that:
(3) **Add a horizontal line** by adding (`+`) a `geom_hline( )` component. This takes the argument `yintercept = `, which equals the value for where the horizontal line should cross the y-intercept.
* Since we want to place this line at the mean of y variable (${\bar{y}}$), we can use the `mean( )` function instead of specifying a numeric value directly.
(4) **Add a vertical line** by following the same structure as above but using `geom_vline( )` and `xintercept = ` instead. This vertical line will represent the mean (${\bar{x}}$) of the heights.
Construct a scatter plot of the data using the window below:
<!---LEARNR EX 1-->
<iframe class="interactive" id="myIframe1" src="https://tinystats.shinyapps.io/05-correlation-ex1/" scrolling="no" frameborder="no"></iframe>
<!------------->
Great, now you have a scatter plot! But recalling the email from your advisor the last time you plotted data, you decide you'd like to customize the look of the plot the same way you did when you created the ggplot histogram.
Play around with some aesthetics in the window below, and then run the solution to see what we chose.
<!---LEARNR EX 2-->
<iframe class = "interactive" id="myIframe2" src="https://tinystats.shinyapps.io/05-correlation-ex2/
" scrolling="no" frameborder="no"></iframe>
<!------------->
Looking at the scatter plot, there seems to be a relationship between height and celery eaten, but you will need to quantify this more formally to be sure.
# Relationship between two variables
How can the relationship between two variables (and its strength) be quantified? This can be done by assessing how the two variables change together -- one such measure is the **covariance**.
The covariance elegantly combines the deviations of observations from two different variables into a single value. This is how it's done:
(1) As we did for the variance, we begin by measuring how far each observation lies from its mean. But unlike when we calculated the variance, each observation now includes two variables. We will need to **calculate the observation's distance from each variable's mean**. We call each distance the **deviation** scores on x and on y, respectively. Like the variance, the observation can fall above or below the mean, and as a result the corresponding deviation score will have either a positive or negative sign.
We observe this below with a subset of 5 points from our scatter plot. Positive deviations are shown in red, negative deviations in blue.
<center>{width=650px}</center>
Why do we use the deviations? Because we want to know whether the x-values and y-values move together with respect to their means or not. For example, when an observation's deviation on x is above $\bar{x}$, will its deviation on y also be above $\bar{y}$? Using this line of thought, we can begin to systematically characterize how "together" the x and y values will change as we go through all observations.
# Crossproduct
After obtaining the deviation scores, we need to combine them into a single measure. We do not simply combine the deviation scores themselves by adding (please see the [page about the variance](04_variance.html) for a discussion of why this is). Instead, we take both deviation scores from the same observation and multiply them together to create a two-dimensional "shape" (analagous to when we multiplied a single deviation score by itself to create a square in the variance calculation).
**NOTE:** The resulting value is now on the order of a "squared" term. This will become important later.
(2) **Multiply the two deviation scores.** This is called the **crossproduct**. The shapes created by the crossproduct will serve as the "squared" terms that we can then use in the next step to sum and summarize the deviations into a single value.
The equation is shown below for the *sample* crossproduct of the deviation scores.
<div style="margin-bottom:50px">
</div>
\begin{equation}
(\#eq:equation1)
\Large (x_i - \bar{x})(y_i - \bar{y})
\end{equation}
<div style="margin-bottom:50px">
</div>
Let's explore the attributes of the crossproduct:
<div style="margin-bottom:50px">
</div>
* First, we should note that the *overall sign* of the crossproduct will depend on whether or not the two x- and y- values from the same observation move in the same directions relative to their means. Look at the annotated plot below. The crossproducts will either create "negative" shapes (shown in blue) or "positive" shapes (in red). A third outcome is that the crossproduct could also be 0 -- this will occur when an observation falls on the mean.
* Second, the **magnitude of the crossproduct** will scale with the absolute value of the deviation scores. In other words, the further away both deviation scores are from their means, the larger the area of their shapes will be.
<center>{width=650px}</center>
The animation below shows the "construction" of the crossproducts from the 5 observations we have been following:
```{r fig.show="animate", animation.hook = 'gifski', fig.width=7.2, fig.height=4.8, echo=FALSE, message=FALSE, warning=FALSE, results = 'hide', interval=0.01666667, fig.align='center', cache=TRUE, include=FALSE}
set.seed(12)
x1 <- rnorm(50, 10, 2)
x2 <- scale(matrix(rnorm(50), ncol=1))
x12 <- cbind(scale(x1),x2)
c1 <- var(x12)
chol1 <- solve(chol(c1))
newx <- x12 %*% chol1
newc <- matrix(c(1,-0.52, -0.52, 1), ncol=2)
chol2 <- chol(newc)
finalx <- newx %*% chol2 * sd(x1) + mean(x1)
finalx[,2] <- (2*finalx[,2]-5)
giraffe_data <- finalx
colnames(giraffe_data) <- c("Heights", "Celery_Eaten")
giraffe_data <- as.data.frame(giraffe_data)
points <- giraffe_data[c(12, 50, 14, 43, 32),]
m = mean(giraffe_data[,1])
m2 = mean(giraffe_data[,2])
co <- c("#289BF8", "#FF5E78", "#FF5E78", "#FF5E78", "#289BF8")
limx <- c(5.5, 14.4)
limy <- c(5.3, 23)
d <- data.frame(x1=points[,1], x2=m, y1=points[,2], y2=m2)
v <- do.call(cbind, lapply(1:5, function(x) seq(d[x,]$x1, d[x,]$x2, by = (d[x,]$x2-d[x,]$x1)/29)))
vv <- lapply(1:30, function(y) data.frame(x1=v[y,], x2=d$x1, y1=points[,2], y2=points[,2]))
pp <- function(x){
p1 <- ggplot()+geom_point(data=points, aes(x=Heights, y=Celery_Eaten),color=co, size=4)+
theme_light()+geom_segment(aes(x = x2, y = y1, xend = x1, yend = y1), data = x, color=co, size=2)+labs(x="Heights", y="Celery Eaten")+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+xlim(limx)+ylim(limy)+geom_vline(xintercept = mean(giraffe_data$Heights), col="grey50", linetype="dashed", size = 2) + geom_hline(yintercept = mean(giraffe_data$Celery_Eaten), col= "grey81", linetype="dashed", size= 2)
p1
}
lapply(vv, function(x) pp(x))
h <- do.call(cbind, lapply(1:5, function(x) seq(d[x,]$y1, d[x,]$y2, by = (d[x,]$y2-d[x,]$y1)/29)))
hh <- lapply(1:30, function(y) data.frame(x1=points[,1], x2=m, y1=points[,2], y2=h[y,]))
pp2 <- function(x){
p2 <- ggplot()+geom_point(data=points, aes(x=Heights, y=Celery_Eaten),color=co, size=4)+
theme_light()+geom_segment(aes(x = x1, y = y1, xend = x2, yend = y1), data = d, color=co, size=2)+
geom_segment(aes(x = x1, y = y2, xend = x1, yend = y1), data = x, color=co, size=2)+labs(x="Heights", y="Celery Eaten")+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+xlim(limx)+ylim(limy)+geom_vline(xintercept = mean(giraffe_data$Heights), col="grey50", linetype="dashed", size = 2) + geom_hline(yintercept = mean(giraffe_data$Celery_Eaten), col= "grey81", linetype="dashed", size= 2)
p2
}
lapply(hh, function(x) pp2(x))
pp22 <- function(x){
p2 <- ggplot()+theme_light()+geom_rect(data=d, mapping=aes(xmin=x1, xmax=x2, ymin=y1, ymax=y2), color=alpha(co, x),fill=co, alpha=x/5, size=2)+geom_segment(aes(x = x1, y = y1, xend = x2, yend = y1), data = d, color=co, size=2)+
geom_segment(aes(x = x1, y = y2, xend = x1, yend = y1), data = d, color=co, size=2)+
geom_point(data=points, aes(x=Heights, y=Celery_Eaten),color=co, size=4)+
labs(x="Heights", y="Celery Eaten")+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+xlim(limx)+ylim(limy)+geom_vline(xintercept = mean(giraffe_data$Heights), col="grey50", linetype="dashed", size = 2) + geom_hline(yintercept = mean(giraffe_data$Celery_Eaten), col= "grey81", linetype="dashed", size= 2)
p2
}
lapply(seq(0,1,0.1), function(x) pp22(x))
pp3 <- function(x){
p3 <- ggplot()+theme_light()+geom_rect(data=d, mapping=aes(xmin=x1, xmax=x2, ymin=y1, ymax=y2), color=co,fill=co, alpha=0.2, size=2)+
geom_point(data=points, aes(x=Heights, y=Celery_Eaten),color=co, size=4)+
labs(x="Heights", y="Celery Eaten")+theme(panel.border=element_blank(),panel.grid.minor=element_blank(), axis.ticks=element_blank())+xlim(limx)+ylim(limy)+geom_vline(xintercept = mean(giraffe_data$Heights), col="grey50", linetype="dashed", size = 2) + geom_hline(yintercept = mean(giraffe_data$Celery_Eaten), col= "grey81", linetype="dashed", size= 2)
p3
}
lapply(1:15, function(x) pp3())
```
<video class="small_vid" autoplay loop muted playsinline>
<source src="images/05_correlation/lines.webm" type="video/webm">
<source src="images/05_correlation/lines.mp4" type="video/mp4">
</video>
\
(3) **Sum the crossproducts.** The sum of the crossproduct gives us a single number.
<div style="margin-bottom:50px">
</div>
<center>{width=90%}</center>
<div style="margin-bottom:50px">
</div>
As we add the crossproducts, some of the "negative" and "positive" values of the shapes will cancel each other out. This is okay because this tells us important information about our two variables. If the negative and positive shapes cancel each other out completely, it would mean that there is no relationship. In most cases this will not happen, and the sum of the crossproducts will be positive or negative. In general, the larger the magnitude of the sum of the crossproducts, the more strongly the two variables move together. The equation is shown below.
<div style="margin-bottom:50px">
</div>
\begin{equation}
(\#eq:equation2)
\Large \sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})
\end{equation}
<div style="margin-bottom:50px">
</div>
# Covariance
(4) We then **divide the sum of the crossproduct by $n-1$ (or $N$ in the population equation)** so that we have taken into account how many observations contributed to this quantity. (Why $n-1$? See [here](04_variance.html).) This final number is called the **covariance**, and its value tells us how much our two variables fluctuate together. The higher the absolute value, the stronger the relationship.
The equation for the covariance (abbreviated "cov") of the variables x and y is shown below. As a preference of style, we multiply by $\frac{1}{n-1}$ instead of dividing the entire term by $n-1$.
<div style="margin-bottom:50px">
</div>
\begin{equation}
(\#eq:equation3)
\Large cov(x,y) = {\frac{1}{n-1}\sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})}
\end{equation}
<div style="margin-bottom:50px">
</div>
# Problem of interpretation
However, the covariance is not an intuitive value. Remember that we have been working with terms that are on the "squared" scale, which is not only difficult to interpret (just like the variance is) but it is also the product of two variables on possibly different scales. How could we interpret a covariance with units of millimeters*grams mean?
Another point to make is that value of the covariance will be vastly different if we had decided to change the units (millimeters vs centimeters, or grams vs kilograms).
As a result, the covariance is not an easy metric to work with or to compare with other covariances. So we need to standardize it!
# Pearson correlation coefficient, $r$
How do we standardize the covariance?
The solution is to (1) take the standard deviations of each variable, (2) multiply them together, and (3) divide the covariance by this product -- the resulting value is called the **Pearson correlation coefficient**. When referring to the population correlation coefficient, the symbol $\rho$ (pronounced "rho") is used. When referring to the sample correlation coefficient, a lowercase $r$ is used (often called "Pearson's r").
<div style="margin-bottom:50px">
Here is the equation for the **population correlation**:
</div>
\begin{equation}
(\#eq:equation4)
\Large \rho(x,y) = \frac{ \frac{1}{N} \sum_{i=1}^N (x_i - \mu_x)(y_i - \mu_y)}{\sigma_x \sigma_y}
\end{equation}
<div style="margin-bottom:50px">
</div>
<div style="margin-bottom:50px">
</div>
This equation is used for the **sample correlation**:
\begin{equation}
(\#eq:equation5)
\Large r(x,y) = \frac{ \frac{1}{n-1} \sum_{i=1}^n (x_i - \bar{x})(y_i - \bar{y})}{s_x s_y}
\end{equation}
<div style="margin-bottom:50px">
</div>
# What does the correlation mean?
We can interpret the correlation as a measure of **the strength and direction** of the relationship between two variables. It is a "standardized" version of the covariance.
* The correlation will always be between -1 and 1. At these extreme values, the two variables have the strongest relationship possible, in which each data point will fall exactly on a line. When the absolute value of the correlation coefficient approaches 0, the observations will be more "scattered".
* The sign of the correlation coefficient indicates the direction of the linear relationship. When $r$= 0 there is no relationship between the variables. Look at the figure below to see what observations of different $r$ values look like.
<center>{width=90%}</center>
**Your turn**
Imagine you're given a plot like the one below. What would you say it's correlation value is? Try out your guess for a few plots, and if you need a hint to help you visualize, click *Show trend line*.
<!--------SHINY1------>
<iframe class="interactive" src="https://tinystats.shinyapps.io/Guess_corr/?showcase=0" scrolling="no" frameborder="no"></iframe>
# Code it up
* In the window below, write your own function to compute the sample covariance of two variables, and call it `my_covariance( )`.
* Then create a second function called `my_correlation( )` in which you will compute the correlation of two variables. You may incorporate your function `my_covariance( )` in this step to save yourself some time.
* Once you've created both functions, use them to compute the covariance and correlation between `Heights` and `Celery_Eaten` within the data frame `giraffe_data`.
* Finally, compare your functions' outputs with the base R functions for covariance, `cov( )` and `cor( )`.
Remember, you will need to write both functions so that they will take two parameters, one for each variable. The parameters for `my_covariance( )` have been setup for you.
<!--LEARNR EX 3--->
<iframe class = "interactive" id="myIframe3" src="https://tinystats.shinyapps.io/05-correlation-ex3/" scrolling="no" frameborder="no"></iframe>
<!----------->
\
Wow, you can see that there is a negative relationship between giraffe heights and how much celery teacup giraffes eat. Could this be due to celery being a negative calorie vegetable? Are these giraffes onto something?
<center>{width=30%}</center>
# The Standardizer
You can take a look at the animation below to see a conceptual summary of how correlation will standarize the covariance, translating it into an easily interpretable metric that will always be bound by -1 and 1.
<!-- # ```{r, fig.show='animate', animation.hook = 'gifski', interval= 0.15, fig.width=10, fig.height=5, echo=FALSE, results="hide", message=FALSE} -->
<!-- # -->
<!-- # getwd() -->
<!-- # -->
<!-- # library(jpeg) -->
<!-- # library(gifski) -->
<!-- # frames <- list.files(path="factory/") -->
<!-- # -->
<!-- # factory <- function(x){ -->
<!-- # img <- readJPEG(paste0("factory/",frames[x]), native=TRUE) -->
<!-- # plot(0:1, 0:1, type="n", ann=FALSE, axes=FALSE) -->
<!-- # rasterImage(img,0,0,1,1) -->
<!-- # } -->
<!-- # -->
<!-- # lapply(1:175, function(x) factory(x)) -->
<!-- # -->
<!-- # -->
<!-- # # gif_file <- file.path(getwd(), 'factory.gif') -->
<!-- # # save_gif(lapply(1:175, function(x) factory(x)), gif_file= gif_file, progress = TRUE, loop= TRUE, delay= 0.5, width=400, height= 133) -->
<!-- # # -->
<!-- # # utils::browseURL(gif_file) -->
<!-- # -->
<!-- # ``` -->
<!---->
<video controls disablePictureInPicture controlslist="nodownload nofullscreen noremoteplayback" loop muted playsinline poster="images/05_correlation/factory.png">
<source src="images/05_correlation/factory.webm" type="video/webm">
<source src="images/05_correlation/factory.mp4" type="video/mp4">
</video>
# Why divide by $\sigma_x\sigma_y$?
Well it's complicated, (see [here](https://www.quora.com/What-is-an-intuitive-explanation-for-why-the-sample-correlation-coefficient-is-equal-to-the-sample-covariance-divided-by-the-standard-deviations-of-x-and-y-multiplied-by-one-another) and [here](https://math.stackexchange.com/questions/158449/proving-that-the-magnitude-of-the-sample-correlation-coefficient-is-at-most-1)) but it builds on the mathematical principle that the covariance of x and y will never exceed the product of the standard deviations of x and y. This means that the maximum correlation value will occur when the absolute value of the covariance and the product of the standard deviations are equal.
If you don't take our word for it, press play below to see what the relationship between ${s}_x{s}_y$ and ${cov(x,y)}$ looks like.
```{r, tut=FALSE, echo=FALSE, message= FALSE, cache=TRUE}
cor_var <- function(x){
r <- 0
d <- mvrnorm(n = 6, mu = c(0,0), Sigma = matrix(c(1, r, r, 2), nrow = 2))
d <- round(d, 1)
return(d)
}
d <- lapply(1:5006, function(x) cor_var())
dd <- as.data.frame(do.call(rbind, lapply(d, function(x) cbind(var(x)[1,1], var(x)[2,2], var(x)[1,2], cor(x)[1,2]))))
colnames(dd) <- c("var_x", "var_y", "cov_xy", "cor")
dd$p_sd <- sqrt(dd$var_x)*sqrt(dd$var_y)
ff <- function(x){
d <- dd[1:x,]
d$frame <- x+1
return(d)
}
pd <- do.call(rbind, lapply(seq(99, 3000, 100), function(x) ff(x)))
p <- data.frame(var_x=Inf, var_y=Inf, cov_xy=Inf, cor=0, p_sd=Inf, frame=0)
pd <- rbind(pd, p)
pd <- round(pd, 2)
m <- list(
l = 100,
r = 100,
b = 10,
t = 10,
pad = 4
)
p <- pd %>%
plot_ly(
width=700,
height=450,
type = 'scatter',
mode='markers',
x = ~cov_xy,
y = ~p_sd,
frame = ~frame,
color = ~cor,
colors = c("#289BF8","#FF5E78"),
marker = list(size = 12, opacity=1),
hoverinfo="text",
text=~paste("Covariance:", round(cov_xy, 2), "\nPooled SD:",
round(p_sd, 2))
)%>%
animation_opts(
frame = 100,
transition = 0,
redraw = FALSE
)%>%
config(displayModeBar = F) %>%
layout(margin= m, autosize=F,
xaxis = list(range=c(-3,3), zeroline=FALSE, title="Covariance"),
yaxis = list(range=c(-0.1,4.5), zeroline=FALSE, title="Product of standard deviations")
)%>%
animation_slider(currentvalue = list(prefix = "Number of Samples: ", font = list(color="grey70", size=14)))
htmltools::save_html(p,here("images/05_correlation/cov_vs_sxsy.html"))
```
<center><iframe style="margin: 0;" src="images/05_correlation/cov_vs_sxsy.html" width="720" height="500" scrolling="yes" seamless="seamless" frameBorder="0"> </iframe></center>
As you look at the plot above, you may have the following questions:
* Why are there clearly defined boundaries?
+ Because at the edges is where the covariance is the greatest value that it can be-- it is equal to the product of the standard deviations there.
+ The slope is 1 at this boundary.
* Where in the plot do the strongest correlations end up?
+ On the edges -- when the absolute value of the numerator and denominator of the equation are equal-- the quotient will = 1 (or negative 1, depending on the sign of the covariance in the numerator).
# Things to think about
**Correlation does not capture relationships that are not linear**: If the relationship is not linear, then correlation will not be meaningful. Check out the plot below. There is a clear U-shaped relationship between the two variables, but the correlation coefficient for these data is very close to 0. To measure non-linear relationships a different metric must be used.
<center>{width=40%}</center>
**Correlation is not causation**: Just because there is a linear relationship between two variables does not mean we have evidence that one variable causes the other. Even if there really was a cause-and-effect relationship, with correlation we cannot say which variable is the cause and which is the effect. It's also possible that there exists some other unmeasured variable affecting the linear relationship we observe. And of course, any apparent relationship may be due to nothing more than random chance.
<script>
iFrameResize({}, ".interactive");
</script>
================================================
FILE: 06_standardError.Rmd
================================================
---
title: "Intro to Inference"
output:
bookdown::html_document2:
includes:
in_header: assets/06_standardError_image.html
after_body: assets/foot.html
---
```{r setup, include = FALSE}
library(ggplot2)
library(tweenr)
library(parallel)
library(MASS)
```
:::obj
**Module learning objectives**
1. Determine how to quantify the uncertainty of an estimate
1. Describe the concept of statistical inference
1. Interpret sampling distributions and explain how they are influenced by sample size
1. Define and calculate standard error
1. Use the standard error to construct 95% confidence intervals
:::
# How accurate is our estimate of the mean?
Let's revisit the first few days during which we collected data stored in the vector `heights_island1`. We were able to verify that the heights were normally distributed and calculated our sample mean, ${\bar{x}}$. However, we know that ${\bar{x}}$ is only an *estimate* of the true population mean, ${\mu}$, which is the true value of interest. It is unlikely that we will ever know the value of ${\mu}$, since access to all possible observations is rare. Therefore we will have to rely on ${\bar{x}}$ estimates from random samples drawn from the population as the best approximation of ${\mu}$.
Not all sample means are created equal. Some are better estimates than others. Recall the [animation](03_mean.html#mean_animation) showing the relationship between sample size and variability of the mean. As we learned from this animation, in the long-run, large samples are necessary to get an accurate estimate of ${\mu}$.
<div class= "alert alert-note">
> **A note about language:** here, words like "accuracy", "precision", and "uncertainty" are used in a rather fast and loose way. We're using the laymen's application of these terms to refer to the long-run variability of estimates produced from repeated, independent trials. There are stricter, more formal statistical uses for these words, but for right now, we're going to ignore these nuances so that we can move on with understanding these concepts in broad strokes.
</div>
One reason we care about our sample estimate's accuracy is because we want to be able to answer questions about the population by making inferences. **Statistical inference** uses math to draw conclusions about the population based on a subset of the full picture (i.e. a sample). Subsets of data are of course limited, so it's therefore important to acknowledge that the strength of the conclusions drawn about the population is dependent on the precision of the sample estimate. For example, say that we guess that the population mean value of giraffe heights on Island 1 is less than 11 cm. We can make some inferences about whether or not this is a good guess based on what we learn from our sample of giraffe heights. We'll revisit this question a few times below.
# Creating a sampling distribution
The mean of our sample of 50 giraffes from Island 1 was:
```{r, echo=FALSE}
set.seed(12)
heights_island1 <- rnorm(50, 10, 2)
```
```{r}
mean(heights_island1)
```
How can we quantify the accuracy of this estimate, given its sample size?
In theory, one way to illustrate this is to generate data not just from a single sample but from many samples of the same size (N) drawn from the same population.
Imagine that after you collected all 50 measurements for `heights_island1`, you wake up one morning with no memory of collecting data at all---and so you go out and collect 50 giraffe heights again and subsequently calculate the mean. Further imagine that this groundhog day (or more correctly, groundhog *week*) situation repeats itself many, many times.
When you finally return to your sanity, you find stacks of notebooks filled with mean values from each of your individual data collections.
<center>{width=600px}</center>
Instead of viewing this as a massive waste of time, you make the best out of the situation and create a histogram of all the means. In other words you create a plot showing the distribution of the sample means, also known as a **sampling distribution**.
The animation below illustrates the process of creating the sampling distribution for 1,000 sample means.
On the left side, each histogram represents a sample (e.g. `heights_island1` would be one sample, and we're flashing through 1,000 of them in total). Correspondingly, each dot signifies an observation. After each sample histogram is completed, ${\bar{x}}$ is calculated. This ${\bar{x}}$ value is then subsequently added to the histogram of the sampling distribution on the right. As you can see below, this process is repeated, allowing the sampling distribution to build up.
<center>
```{r fig.show="animate", animation.hook = 'gifski', fig.width=7, fig.height=3, echo=FALSE, message=FALSE, warning=FALSE, results = 'hide', interval=0.08, loop=FALSE, cache=TRUE}
ppplot <- function(sub){
x <- round(rnorm(50, 9.7, 2.1))
m <- mean(x)
df <- data.frame(x = x, y = 23)
dfs <- list(df)
for(i in seq_len(nrow(df))) {
dftemp <- tail(dfs, 1)
dftemp[[1]]$y[i] <- sum(dftemp[[1]]$x[seq_len(i)] == dftemp[[1]]$x[i])
dfs <- append(dfs, dftemp)
}
dfs <- append(dfs, dfs[rep(length(dfs), 3)])
dft <- tween_states(dfs, 10, 1, 'cubic-in', 50)
dft$y <- dft$y - 0.5
dft <- dft[dft$y != 23, ]
ppl <- function(frame){
p <- ggplot(data = dft[dft$.frame==frame,], aes(x=x, y=y)) +
geom_point(shape=16, color="green3", size = 4) +
ylim(0,16) + xlim(3,17) +
theme_light() +
theme(panel.border = element_blank(), panel.grid.minor=element_blank()) +
labs(x="Giraffe Heights", y=NULL)
df <- data.frame()
p2 <- ggplot(df) + geom_point() + xlim(0, 16) + ylim(3, 17)+theme_void()
p3 <- ggplot(df) + geom_point() + xlim(8.7, 10.7) + ylim(0, 150) +
theme_light() +
theme(panel.border=element_blank(), panel.grid.minor=element_blank()) + labs(x = "Sample means", y = NULL)
cowplot::plot_grid(p, p2, p3, align ="h", rel_widths = c(1, 0.55, 1), ncol = 3)
}
ppl2 <- function(frame){
p <- ggplot(data=dft[dft$.frame==53,], aes(x=x, y=y)) +
geom_point(shape = 16, color = "green3", size = 4) +
ylim(0,16) + xlim(3,17) +
theme_light() +
theme(panel.border = element_blank(), panel.grid.minor = element_blank()) +
geom_vline(xintercept = m, linetype = 2) +
labs(x = "Giraffe Heights", y = NULL)
p
df <- data.frame()
lb1 <- paste0("bar(x)", "[", sub, "]", " == ", round(m,2))
p2 <- ggplot(df) +
geom_point() +
xlim(0, 16) + ylim(3, 17) +
theme_void() +
annotate("text", x = 8, y=10, label = lb1, parse = TRUE, size = 7) +
annotate("segment", x = 1, xend = 15, y = 8, yend = 8, colour = "black", size = 1, arrow = arrow(type = "closed", length = unit(0.3,"cm")))
p3 <- ggplot(df) + geom_point() + xlim(8.7, 10.7) + ylim(0, 150)+theme_light()+theme(panel.border=element_blank(), panel.grid.minor=element_blank())+annotate("segment", x = m, xend = m, y = 20, yend = 4, colour = "black", size=1, arrow=arrow(type = "closed", length = unit(0.3,"cm")))+labs(x="Sample means", y=NULL)
cowplot::plot_grid(p,p2,p3, align="h", rel_widths = c(1,0.55,1), ncol = 3)
}
pf <- list(lapply(seq(1, 53, 2), function(x) ppl(x)), lapply(rep(53, 3), function(x) ppl(x)), lapply(1:40, function(x) ppl2()))
return(pf)
}
mclapply(1:3, function(x) ppplot(x), mc.cores = 8, mc.cleanup = TRUE)
circleFun <- function(center=c(0,0), diameter=1, npoints=100, start=0, end=2, filled=TRUE){
tt <- seq(start*pi, end*pi, length.out=npoints)
df <- data.frame(
x = center[1] + diameter / 2 * cos(tt),
y = center[2] + diameter / 2 * sin(tt)
)
if(filled==TRUE) {
df <- rbind(df, center)
}
return(df)
}
fullCircle <- circleFun(c(1, -1), 2.3, start=0, end=2, filled=FALSE)
fullCircle2 <- circleFun(c(1, -1), 2, start=0, end=2, filled=FALSE)
fullCircle3 <- circleFun(c(1, -1), 1.3, start=0, end=2, filled=FALSE)
fullCircle4 <- circleFun(c(1, -1), 0.3, start=0, end=2, filled=FALSE)
fullCircle5 <- circleFun(c(1, -1), 0.1, start=0, end=2, filled=FALSE)
tris <- circleFun(c(1, -1), 1.6, start=1.2, end=-0.2, filled=FALSE, npoints=50)
tris2 <- circleFun(c(1, -1), 0.2, start=1.4, end=0, filled=FALSE, npoints=50)
tris3 <- circleFun(c(1, -1), 0.2, start=1, end=-0.4, filled=FALSE,npoints=50)
s <- c(rep(1,10), 1:50)
trii <- lapply(s, function(x) data.frame(x=c(tris[x,1],tris2[x,1],tris3[x,1]), y=c(tris[x,2],tris2[x,2],tris3[x,2])))
quarterCircle <- circleFun(c(1,-1), diameter = 1.85, start=1, end=1.25, filled=TRUE)
quarterCircle2 <- circleFun(c(1,-1), diameter = 1.85, start=0.75, end=1, filled=TRUE)
quarterCircle3 <- circleFun(c(1,-1), diameter = 1.85, start=0.5, end=0.75, filled=TRUE)
quarterCircle4 <- circleFun(c(1,-1), diameter = 1.85, start=0.25, end=0.5, filled=TRUE)
quarterCircle5 <- circleFun(c(1,-1), diameter = 1.85, start=0.25, end=0, filled=TRUE)
quarterCircle6 <- circleFun(c(1,-1), diameter = 1.85, start=2, end=1.75, filled=TRUE)
x <- round(rnorm(50, 9.7, 2.1))
m <- mean(x)
df <- data.frame(x = x, y = 23)
dfs <- list(df)
for(i in seq_len(nrow(df))) {
dftemp <- tail(dfs, 1)
dftemp[[1]]$y[i] <- sum(dftemp[[1]]$x[seq_len(i)] == dftemp[[1]]$x[i])
dfs <- append(dfs, dftemp)
}
dfs <- append(dfs, dfs[rep(length(dfs), 3)])
dft <- tween_states(dfs, 10, 1, 'cubic-in', 50)
dft$y <- dft$y - 0.5
dft <- dft[dft$y != 23, ]
dft <- dft[dft$.frame %in% c(1:26, seq(27, 53, 2)),]
dft$.frame <- rep(1:40, each=50)
plots <- function(dd){
p <- ggplot() +
geom_polygon(data=fullCircle, aes(x, y), color="#40596b", fill="#40596b") +
geom_polygon(data=fullCircle2, aes(x, y), color="white", fill="white") +
geom_polygon(data=quarterCircle, aes(x,y), color="#cdd6e0", fill="#cdd6e0") +
geom_polygon(data=quarterCircle2, aes(x,y), color="#acb3ba", fill="#acb3ba") +
geom_polygon(data=quarterCircle3, aes(x,y), color="#ffd15c", fill="#ffd15c") +
geom_polygon(data=quarterCircle4, aes(x,y), color="#f8b64c", fill="#f8b64c") +
geom_polygon(data=quarterCircle5, aes(x,y), color="#ff7058", fill="#ff7058") +
geom_polygon(data=quarterCircle6, aes(x,y), color="#f1543f", fill="#f1543f") +
geom_polygon(data=fullCircle3, aes(x,y), color="white", fill="white") +
geom_polygon(data=fullCircle4, aes(x,y), color="#40596b", fill="#40596b") +
geom_polygon(data=trii[[dd]], aes(x,y), color="#40596b", fill="#40596b") +
geom_polygon(data=fullCircle5, aes(x,y), color="white", fill="white") +
coord_equal() +
theme_void()
ddd <- ifelse(dd<20, 1, ifelse(dd<35, 2, ifelse(dd<45, 3, ifelse(dd<50, 4, ifelse(dd<53, 5, ifelse(dd<55, 6, ifelse(dd<57, 7, ifelse(dd<59, 8, base::sample(1:10,1)))))))))
p2 <- ggplot(data=dft[dft$.frame==dd,],aes(x=x, y=y))+geom_point(shape=16, color="green3", size=4)+ylim(0,16)+xlim(3,17)+theme_light()+theme(panel.border=element_blank(), panel.grid.minor=element_blank())+labs(x="Giraffe Heights", y=NULL)
df <- data.frame()
p3 <- ggplot(df) + geom_point() + xlim(8.7, 10.7) + ylim(0, 150)+theme_light()+theme(panel.border=element_blank(), panel.grid.minor=element_blank())+labs(x="Sample means", y=NULL)
cowplot::plot_grid(p2,p,p3, align="h",rel_widths = c(1,0.55, 1), ncol=3)
}
lapply(seq(1,40,3), function(x) plots(x))
hists <- function(x){
x <- round(rnorm(50, 9.7, 2.1))
m <- mean(x)
return(m)
}
dh <- do.call(rbind, lapply(1:1000, function(x) hists()))
hh <- function(x){
d <- data.frame(Height=dh[1:x])
return(d)
}
dhh <<- lapply(1:1000, function(x) hh(x))
plots2 <- function(dd){
p <- ggplot() +
geom_polygon(data=fullCircle, aes(x, y), color="#40596b", fill="#40596b") +
geom_polygon(data=fullCircle2, aes(x, y), color="white", fill="white") +
geom_polygon(data=quarterCircle, aes(x,y), color="#cdd6e0", fill="#cdd6e0") +
geom_polygon(data=quarterCircle2, aes(x,y), color="#acb3ba", fill="#acb3ba") +
geom_polygon(data=quarterCircle3, aes(x,y), color="#ffd15c", fill="#ffd15c") +
geom_polygon(data=quarterCircle4, aes(x,y), color="#f8b64c", fill="#f8b64c") +
geom_polygon(data=quarterCircle5, aes(x,y), color="#ff7058", fill="#ff7058") +
geom_polygon(data=quarterCircle6, aes(x,y), color="#f1543f", fill="#f1543f") +
geom_polygon(data=fullCircle3, aes(x,y), color="white", fill="white") +
geom_polygon(data=fullCircle4, aes(x,y), color="#40596b", fill="#40596b") +
geom_polygon(data=trii[[dd]], aes(x,y), color="#40596b", fill="#40596b") +
geom_polygon(data=fullCircle5, aes(x,y), color="white", fill="white") +
coord_equal() +
theme_void()
ddd <- ifelse(dd<20, 1, ifelse(dd<35, 2, ifelse(dd<45, 3, ifelse(dd<50, 4, ifelse(dd<53, 5, ifelse(dd<55, 6, ifelse(dd<57, 7, ifelse(dd<59, 8, base::sample(1:10,1)))))))))
set.seed(ddd)
x <- round(rnorm(50, 9.7, 2.1))
m <- mean(x)
df <- data.frame(x = x, y = 23)
dfs <- list(df)
for(i in seq_len(nrow(df))) {
dftemp <- tail(dfs, 1)
dftemp[[1]]$y[i] <- sum(dftemp[[1]]$x[seq_len(i)] == dftemp[[1]]$x[i])
dfs <- append(dfs, dftemp)
}
dfs <- append(dfs, dfs[rep(length(dfs), 3)])
dft <- tween_states(dfs, 10, 1, 'cubic-in', 50)
dft$y <- dft$y - 0.5
dft <- dft[dft$y != 23, ]
p2 <- ggplot(data=dft[dft$.frame==53,],aes(x=x, y=y))+geom_point(shape=16, color="green3", size=4)+ylim(0,16)+xlim(3,17)+theme_light()+theme(panel.border=element_blank(), panel.grid.minor=element_blank())+geom_vline(xintercept = m, linetype=2)+labs(x="Giraffe Heights", y=NULL)
df <- data.frame()
p3 <- ggplot(data = dhh[[dd-40]], aes(x = Height)) +
geom_histogram(binwidth = 0.1, color = "white", fill="green3") +
theme_light() +
scale_y_continuous(limits = c(0,150)) +
labs(x=NULL, y=NULL) +
xlim(8.7, 10.7) +
theme(panel.border=element_blank(), panel.grid.minor=element_blank()) +
labs(x="Sample means", y=NULL)
cowplot::plot_grid(p2,p,p3, align="h",rel_widths = c(1,0.55, 1), ncol=3)
}
lapply(seq(41,50,2), function(x) plots2(x))
lapply(seq(51,60,1), function(x) plots2(x))
plots3 <- function(dd){
p <- ggplot() +
geom_polygon(data=fullCircle, aes(x, y), color="#40596b", fill="#40596b") +
geom_polygon(data=fullCircle2, aes(x, y), color="white", fill="white") +
geom_polygon(data=quarterCircle, aes(x,y), color="#cdd6e0", fill="#cdd6e0") +
geom_polygon(data=quarterCircle2, aes(x,y), color="#acb3ba", fill="#acb3ba") +
geom_polygon(data=quarterCircle3, aes(x,y), color="#ffd15c", fill="#ffd15c") +
geom_polygon(data=quarterCircle4, aes(x,y), color="#f8b64c", fill="#f8b64c") +
geom_polygon(data=quarterCircle5, aes(x,y), color="#ff7058", fill="#ff7058") +
geom_polygon(data=quarterCircle6, aes(x,y), color="#f1543f", fill="#f1543f") +
geom_polygon(data=fullCircle3, aes(x,y), color="white", fill="white") +
geom_polygon(data=fullCircle4, aes(x,y), color="#40596b", fill="#40596b") +
geom_polygon(data=trii[[60]], aes(x,y), color="#40596b", fill="#40596b") +
geom_polygon(data=fullCircle5, aes(x,y), color="white", fill="white") +
coord_equal() +
theme_void()
x <- round(rnorm(50, 9.7, 2.1))
m <- mean(x)
df <- data.frame(x = x, y = 23)
dfs <- list(df)
for(i in seq_len(nrow(df))) {
dftemp <- tail(dfs, 1)
dftemp[[1]]$y[i] <- sum(dftemp[[1]]$x[seq_len(i)] == dftemp[[1]]$x[i])
dfs <- append(dfs, dftemp)
}
dfs <- append(dfs, dfs[rep(length(dfs), 3)])
dft <- tween_states(dfs, 10, 1, 'cubic-in', 50)
dft$y <- dft$y - 0.5
dft <- dft[dft$y != 23, ]
p2 <- ggplot(data=dft[dft$.frame==53,],aes(x=x, y=y))+geom_point(shape=16, color="green3", size=4)+ylim(0,16)+xlim(3,17)+theme_light()+theme(panel.border=element_blank(), panel.grid.minor=element_blank())+geom_vline(xintercept = m, linetype=2)+labs(x="Giraffe Heights", y=NULL)
hh <- function(x){
d <- data.frame(Height=dh[1:x])
return(d)
}
dhh <- lapply(1:1000, function(x) hh(x))
p3 <- ggplot(data = dhh[[dd+40]], aes(x = Height)) +
geom_histogram(binwidth = 0.1, color = "white", fill="green3") +
theme_light() +
scale_y_continuous(limits = c(0,150)) +
labs(x=NULL, y=NULL) +
xlim(8.7, 10.7) +
theme(panel.border=element_blank(), panel.grid.minor=element_blank()) +
labs(x="Sample means", y=NULL)
cowplot::plot_grid(p2,p,p3, align="h",rel_widths = c(1,0.55, 1), ncol = 3)
}
mclapply(seq(1,300, 20), function(x) plots3(x), mc.cores = 8, mc.cleanup = TRUE)
plots3.2 <- function(dd){
sub <- dd+40
x <- round(rnorm(50, 9.7, 2.1))
m <- mean(x)
df <- data.frame(x = x, y = 23)
dfs <- list(df)
for(i in seq_len(nrow(df))) {
dftemp <- tail(dfs, 1)
dftemp[[1]]$y[i] <- sum(dftemp[[1]]$x[seq_len(i)] == dftemp[[1]]$x[i])
dfs <- append(dfs, dftemp)
}
dfs <- append(dfs, dfs[rep(length(dfs), 3)])
dft <- tween_states(dfs, 10, 1, 'cubic-in', 50)
dft$y <- dft$y - 0.5
dft <- dft[dft$y != 23, ]
df <- data.frame()
lb1 <- paste0("bar(x)", "[", sub, "]", " == ", round(m,1))
p <- ggplot(df) + geom_point() + xlim(0, 16) + ylim(3, 17)+theme_void()+annotate("text", x = 1, y=10, label=lb1, parse = TRUE, size=7,hjust = 0)+annotate("segment", x = 1, xend = 15, y = 8, yend = 8, colour = "black", size=1, arrow=arrow(type = "closed", length = unit(0.3,"cm")))
p2 <- ggplot(data=dft[dft$.frame==53,],aes(x=x, y=y))+geom_point(shape=16, color="green3", size=4)+ylim(0,16)+xlim(3,17)+theme_light()+theme(panel.border=element_blank(), panel.grid.minor=element_blank())+geom_vline(xintercept = m, linetype=2)+labs(x="Giraffe Heights", y=NULL)
hh <- function(x){
d <- data.frame(Height=dh[1:x])
return(d)
}
dhh <- lapply(1:1000, function(x) hh(x))
p3 <- ggplot(data = dhh[[dd+40]], aes(x = Height)) +
geom_histogram(binwidth = 0.1, color = "white", fill="green3") +
theme_light() +
scale_y_continuous(limits = c(0,150)) +
labs(x=NULL, y=NULL) +
xlim(8.7, 10.7) +
theme(panel.border=element_blank(), panel.grid.minor=element_blank()) +
labs(x="Sample means", y=NULL)
cowplot::plot_grid(p2,p,p3, align="h",rel_widths = c(1,0.55, 1), ncol = 3)
}
mclapply(seq(301,960, 20), function(x) plots3.2(x), mc.cores = 8, mc.cleanup = TRUE)
x <- round(mvrnorm(50, 9.8, 2.1^2, empirical = T))
m <- mean(x)
df <- data.frame(x = x, y = 23)
dfs <- list(df)
for(i in seq_len(nrow(df))) {
dftemp <- tail(dfs, 1)
dftemp[[1]]$y[i] <- sum(dftemp[[1]]$x[seq_len(i)] == dftemp[[1]]$x[i])
dfs <- append(dfs, dftemp)
}
dfs <- append(dfs, dfs[rep(length(dfs), 3)])
dft <- tween_states(dfs, 10, 1, 'cubic-in', 50)
dft$y <- dft$y - 0.5
dft <- dft[dft$y != 23, ]
plots4 <- function(dd){
df <- data.frame()
lb1 <- paste0("bar(x)", "[", 1000, "]", " == ", 9.8)
p <- ggplot(df) + geom_point() + xlim(0, 16) + ylim(3, 17)+theme_void()+annotate("text", x = 1, y=10, label=lb1, parse = TRUE, size=7,hjust = 0)+annotate("segment", x = 1, xend = 15, y = 8, yend = 8, colour = "black", size=1, arrow=arrow(type = "closed", length = unit(0.3,"cm")))
p2 <- ggplot(data=dft[dft$.frame==53,],aes(x=x, y=y))+geom_point(shape=16, color="green3", size=4)+ylim(0,16)+xlim(3,17)+theme_light()+theme(panel.border=element_blank(), panel.grid.minor=element_blank())+geom_vline(xintercept = 9.8, linetype=2)+labs(x="Giraffe Heights", y=NULL)
hh <- function(x){
d <- data.frame(Height=dh[1:x])
return(d)
}
dhh <<- lapply(1:1000, function(x) hh(x))
p3 <- ggplot(data = dhh[[dd+40]], aes(x = Height)) +
geom_histogram(binwidth = 0.1, color = "white", fill="green3") +
theme_light() +
scale_y_continuous(limits = c(0,150)) +
labs(x=NULL, y=NULL) +
xlim(8.7, 10.7) +
theme(panel.border=element_blank(), panel.grid.minor=element_blank()) +
labs(x="Sample means", y=NULL)
cowplot::plot_grid(p2,p,p3, align="h",rel_widths = c(1,0.55, 1), ncol = 3)
}
mclapply(rep(960, 40), function(x) plots4(x), mc.cores = 8, mc.cleanup = TRUE)
```
</center>
<br>
<br>
A histogram of the sampling distribution is shown below. It is a histogram made up of many means.
<br>
<center>
```{r, tut=FALSE, echo=FALSE, message= FALSE, warning=FALSE, fig.height=2.7, fig.width=4.5, cache= TRUE}
samp <- function(n){
x <- rnorm(n, 9.7, 2.1)
m <- mean(x)
s <- sd(x)
return(c(m,s))
}
d2 <- as.data.frame(do.call(rbind, lapply(1:1000, function(x) samp(50))))
colnames(d2) <- c("mean", "sd")
ggplot(data = dhh[[1000]], aes(x = Height)) +
geom_histogram(binwidth = 0.1, color = "white", fill = "green3") +
theme_light() +
scale_y_continuous(expand = c(0,0)) +
labs(x = "Sample means", y = NULL) +
theme(panel.border = element_blank(), panel.grid.minor = element_blank())
```
</center>
Looking at the spread of ${\bar{x}}$ values that this groundhog experience generated, we can get a sense of the range of many possible estimates of ${\mu}$ that a sample of 50 giraffes can produce.
**The sampling distribution provides us with the first hint of the precision of our original `heights_island1` estimate**, which we'll quantify in more detail later on, but for now it's enough to notice that the range of possible ${\bar{x}}$ values are between `r round(min(d2$mean),1)` and `r round(max(d2$mean), 1)`. This means that ${\bar{x}}$ values outside of this range are essentially improbable.
Let's return to our question about whether the true mean of giraffe heights on Island 1 is less than 11 cm. Our sampling distribution suggests that ${\mu}$ *is* less than 11 cm, since values greater than that are not within the range of this sampling distribution.
# Sample size and sampling distribution
Back to the idea that larger samples are "better", we can explore what happens if we redo the groundhog scenario, this time sampling 500 individuals (instead of 50) before taking the mean each time, repeating this until thousands of ${\bar{x}}$ values have been recorded. For completeness, let's imagine the same marathon data collection using samples that are smaller---of 5 giraffes each. We compare the resulting sampling distributions from all three scenarios below. The middle sampling distribution corresponds to the sampling distribution we already generated above.
<center>
```{r, tut=FALSE, echo=FALSE, message= FALSE, warning=FALSE, fig.height=6, fig.width=6, cache = TRUE}
samp <- function(n){
x <- rnorm(n, 9.7, 2.1)
m <- mean(x)
s <- sd(x)
return(c(m,s))
}
d <- as.data.frame(do.call(rbind, lapply(1:1000, function(x) samp(5))))
#d2 <- as.data.frame(do.call(rbind, lapply(1:1000, function(x) samp(50))))
d3<- as.data.frame(do.call(rbind, lapply(1:1000, function(x) samp(500))))
colnames(d) <- colnames(d2) <- colnames(d3) <- c("mean", "sd")
p <- ggplot(data = d, aes(x = mean)) +
geom_histogram(binwidth = 0.06, color = "white", fill="green3") +
theme_light() +
scale_y_continuous(expand = c(0,0)) +
labs(x = "Sample means N=5", y = NULL) +
theme(panel.border = element_blank(), panel.grid.minor = element_blank(), legend.position = , legend.background = ) +
xlim(6.7,12.7)
p2 <- ggplot(data = dhh[[1000]], aes(x = Height)) +
geom_histogram(binwidth = 0.06, color = "white", fill="green3") +
theme_light() +
scale_y_continuous(expand = c(0,0)) +
labs(x="Sample means N=50", y="Frequency") +
theme(panel.border = element_blank(), panel.grid.minor = element_blank(), legend.position = , legend.background = ) +
xlim(6.7,12.7)
p3 <- ggplot(data = d3, aes(x = mean)) +
geom_histogram(binwidth = 0.06, color = "white", fill="green3") +
theme_light() +
scale_y_continuous(expand = c(0,0)) +
labs(x="Sample means N=500", y = NULL) +
theme(panel.border = element_blank(), panel.grid.minor = element_blank(), legend.position = , legend.background = ) +
xlim(6.7, 12.7)
cowplot::plot_grid(p3,p2,p, ncol = 1, align = "hv")
```
</center>
What do we notice?
1) All histograms look normal.
2) All distributions have approximately the same mean.
3) Distributions generated from larger samples are less dispersed.
We can take the mean of the sampling distribution itself-- **the mean of the sampling distribution is a mean of means.** This mean can be interpreted to be the same as a mean that would have resulted from a single large sample, made up of all the individual observations from each of the samples whose ${\bar{x}}$ values are included in the sampling distribution.
Note that if we had only generated a sampling distribution made up of samples of 5 giraffes, we would not have been able to exclude 11 cm as a possible value for ${\mu}$. In fact, if we were to draw a vertical line in the middle of each of the sampling distributions (the mean), we can tell that the population mean is likely even less than 10 cm.
In the following window, you will test the relationship between sampling distribution and sample size. The function below (behind-the-scenes code not shown) will plot a sampling distribution made up of 1000 samples, with each sample containing `N` number of observations. Try setting `N` to a few different values. What does the resulting sampling distribution looks like? See if you can confirm for yourself that the above points are true.
<!---LEARNR EX 1-->
<iframe class="interactive" id="myIframe1" src="https://tinystats.shinyapps.io/06-standardError-ex1/" scrolling="no" frameborder="no"></iframe>
<!------------->
# Standard Error of the Mean
As we've done before, we want to summarize this spread of mean estimates with a single value. We've already learned how to quantify a measure of spread--the standard deviation. If we take the standard deviations of each of the three different sampling scenarios above, then we accept that *distributions based on smaller samples should have larger standard deviations*.
In the window below, calculate the standard deviation of each of the three sampling distributions (i.e. for N = 500, N = 50, and N = 5), and confirm that the italicized point above is true. (If you're working in R locally, use your "homemade" standard deviation function from the [Variance](04_variance.html) module.)
To complete this exercise, you will need to use the objects `sampling_distribution_N500`, `sampling_distribution_N50`, `sampling_distribution_N5`, which are vectors storing the thousands of ${\bar{x}}$ values from the corresponding groundhog sampling distributions.
<!---LEARNR EX 2-->
<iframe class="interactive" id="myIframe2" src="https://tinystats.shinyapps.io/06-standardError-ex2/" scrolling="no" frameborder="no"></iframe>
<!------------->
When you calculate the standard deviation of a sampling distribution of ${\bar{x}}$ values, you are calculating the **standard error of the mean (SEM)**, or just "standard error". The SEM is the value that we use to capture the level of precision of our sample estimate. But, we need a better and more efficient way to arrive at this value without relying on a groundhog day situation. Keep reading to learn more.
<div class= "alert alert-note">
> **A note about SEM:** Here "standard error" will imply standard error of the *mean*. But we can technically calculate the standard error of any sample statistic, not just the mean. We'll talk about that more in future modules.
</div>
# Time for a tea break!
<center>{width=800px}</center>
# Standard error in practice
Deriving the equation used for calculating the standard error of the mean using theory (i.e. without going out and resampling MANY times) is a bit complicated, but if you're interested, you can learn more about it [here](https://stats.stackexchange.com/questions/89154/general-method-for-deriving-the-standard-error). Instead, we can capture the relationship between **standard deviation**, **sample size**, and **standard error** with the plot below.
<center>
```{r, tut=FALSE, echo=FALSE, message= FALSE, warning=FALSE, out.height=2, cache = TRUE, fig.align="center"}
d <- data.frame(N = seq(5, 1000, 5), sd = 2.1)
d$sterr <- d$sd/sqrt(d$N)
d %>%
plot_ly(
width = 600,
height = 350,
type = 'scatter',
mode ='markers',
x = ~N,
y = ~sterr,
marker = list(size = 10, opacity = 0.75),
hoverinfo = "text",
text=~paste("Standard Error:", round(sterr, 3), "\nN:", round(N, 1))
)%>%
config(displayModeBar = F) %>%
layout(autosize = F, width = 600, height = 350,
xaxis = list(zeroline = F),
yaxis = list(title = "Standard Error", zeroline = F)
)
```
</center>
The standard deviation in this plot is `2.1`, which represents ${\sigma}$ for giraffe heights on Island 1. This population value is technically still unknown but can be deduced in theory by repeating the groundhog day example for the standard deviation instead of for the mean. It's important to note that the plot would have the same *shape* regardless of what scenario or standard deviation we were using.
**Can you figure out what the equation is for the SEM?** Look at the plot above, hover over the points, and see if you can gather how standard error of the mean, standard deviation, and sample size are related. Here are some hints:
* SEM will be on one side of the equation, standard devation, and N will be on the other.
* The equation will involve division.
* There is one more missing piece of the puzzle: When you look at the shape of the plot above. What type of function does this remind you of? We haven't covered this explicitly, but take a look [here](https://www.mathsisfun.com/sets/functions-common.html) and see if you get any ideas.
Use the window below as a calculator to see if you can figure out the equation for the SEM.
<!---LEARNR EX 3-->
<iframe class="interactive" id="myIframe3" src="https://tinystats.shinyapps.io/06-standardError-ex3/" scrolling="no" frameborder="no"></iframe>
<!------------->
In case you weren't able to figure it out, remember to check the `Solutions` tab in the exercise window or take a look at this [link](https://en.wikipedia.org/wiki/Standard_error) for the equation for calculating the SEM. Recall that we're working with the sample (and not population) standard deviation ($s$), so make sure you find the correct equation.
# Confirming that the SEM equation works
Let's test out the SEM equation on our original sample of `heights_island1` and compare it to what we would have gotten by taking the standard deviation of the sampling distribution example with the N= 50 case. **Does the SEM seem like a good approximation of the standard deviation of the sampling distribution?**
Below, you will use the object `heights_island1`, which contains our single sample of N=50, and the object `sampling_distribution_N50`, which contains the data from the corresponding groundhog sampling distribution.
<!---LEARNR EX 4-->
<iframe class="interactive" id="myIframe4" src="https://tinystats.shinyapps.io/06-standardError-ex4/" scrolling="no" frameborder="no"></iframe>
<!------------->
Close enough! We wouldn't expect these to be *exactly* the same because of sampling variability.
# How do we apply the SEM?
Now that we have a better understanding of how to gauge the precision of our sample estimates, we can test our question about the ${\mu}$ being less than 11 cm once and for all.
To formally make inferences, we need to revisit the principles of the [empirical rule](04_variance.html#empirical) to construct confidence intervals. (Confidence intervals are just one way to make inferences-- we'll discuss other ways later.)
Remember, that the SEM is just the standard deviation of the sampling distribution, so we can apply the empirical rule. As a result, ± 2 SEM from a point estimate will capture ~95% of the sampling distribution. Actually, we were a little bit sloppy earlier when we said 2 standard deviations captures 95% of a normal distribution; this will actually give you 95.45% of the data. The true value is 1.96 standard deviations--and this is what we use to construct a 95% confidence interval (CI).
Loosely speaking, a 95% CI is the range of values that we are 95% confident contains the true mean of the population. We want to know whether our guess of 11 cm falls outside of this range of certainty. If it does -- we can be sure enough that the true ${\mu}$ of giraffe heights on Island 1 is less than 11 cm.
Use the window below to find out and make your first inference by constructing the 95% CI for the `heights_island1` mean estimate!
<!---LEARNR EX 5-->
<iframe class="interactive" id="myIframe5" src="https://tinystats.shinyapps.io/06-standardError-ex5/" scrolling="no" frameborder="no"></iframe>
<!------------->
The upper limit of our 95% CI is less than 11 cm, so the population mean of heights on island 1 is likely less than 11 cm. In the scientific community, this is a bonafide way of drawing this conclusion.
<center> {width=600px} </center>
# Things to think about
We've been a little fast and loose with our words. The formal definition of CIs is the following:
**If we were to sample over and over again, then 95% of the time the CIs would contain the true mean.**
Importantly, some examples of what the 95% CI does NOT mean are:
* A 95% CI does **not** mean that it contains 95% of the sample data.
* A CI is not a definitive range of likely values for the sample statistic, but you can think of it as estimate of likely values for the population parameter.
* It does not mean that values outside of the 95% CI have a 5% chance of being the true mean.
The precise interpretation of CIs is quite a nuanced and rather hotly debated topic [see here](https://featuredcontent.psychonomic.org/confidence-intervals-more-like-confusion-intervals/) and becomes somewhat philosophical-- so if these definition subtleties seem confusing, don't feel bad. As mentioned in the blog post linked above, one recent paper reported that 97% of surveyed researchers endorsed at least one misconception (out of 6) about CIs.
<script>
iFrameResize({}, ".interactive");
</script>
================================================
FILE: 07_ttest.Rmd
================================================
---
title: "t-test"
output:
bookdown::html_document2:
includes:
in_header: assets/07_tTest_image.html
after_body: assets/foot.html
---
:::obj
**Module learning objectives**
1. Determine how to quantify the uncertainty of an estimate
1. Describe the concept of statistical inference
:::
# The Two Islands
You'd like to make an [inference](06_standardError.html) to formally investigate whether you have any reason to believe that the mean of heights on Island 1 differs from the mean of the heights on Island 2.
The means of the heights of both islands are shown below:
```{r, echo= FALSE}
set.seed(12)
heights_island1 <- rnorm(50, 10, 2)
heights_island2 <- rnorm(50, 18, 1.2)
```
```{r}
mean(heights_island1)
mean(heights_island2)
```
It's obvious that the mean of the two **samples** we took are different, but the main question is if the **population** means are different?
This question is of interest because if the two population means are different, it may indicate that a cool evolutionary story is at play. For example, based on your experience it seems clear that the two groups of giraffes have been isolated. Their tiny stature would make it near impossible to move back and forth between the two islands, hence impeding mixing between the two groups. Over time, selection pressures could then have made the two groups distinct regarding height.
How do we test this?
# Testing for group difference
When testing for group mean differenes, [it is much more common for a researcher to be interested in the **difference** between means than in the specific values of the means themselves. ] stolen
When we focus on the **mean difference**, represented by $\Delta_{\bar{x}}$ (read "delta x-bar"), we can ask: is the $\Delta_{\bar{x}}$ meaningfully different from 0?
The sample mean difference is below:
```{r}
mean(heights_island2) - mean(heights_island1)
```
This is just another estimate at the sample level whose precision we need to quantify to be able to make inferences.
Formally, statistical inference is about testing hypotheses (which we intentionally did not introduce in the previous module). In research, a **hypothesis** is a statement of a suggested outcome for a study [THIS SENTENCE IS TOO VAGUE]. The goal of statistcal inference is to reject the **null hypotheses** ($H_0$, read "H-nought"), the default suggested outcome, which assumes that there is no association or difference between two or more groups. If we cannot reject $H_0$, then it means we must accept the alternative, $H_A$, that there *is* a meaningful difference or association.
Our null hypothesis is the following: the mean difference between the two populations is 0. The corresponding equations are shown below for the null and alternative hypotheses. Here, we use $\Delta_{\mu}$, because we are referring to the population values.
$H_0$ : $\Delta_{\mu}$ = 0
<br>
$H_A$ : $\Delta_{\mu}$ $\neq$ 0
[MAKE EQUATION??]
One way to reject the null hypothesis would be to construct 95% CIs around the estimate for $\Delta_{\bar{x}}$.
# Pooled standard deviation
As we learned previously, a prerequisite to calculating 95% CIs is to calculate the standard error (which we know will require the sample standard deviation). However, we're now working with two samples, so which sample's standard deviation do we use? Can we use both?
In this particular case, the standard error of the mean difference can be calculated based on a *combined*, or **pooled standard deviation** ($s_{p}$) from two samples. We use the standard deviation of each sample, weighted by sample size.
<div style="margin-bottom:50px"></div>
\begin{equation}
(\#eq:equation1)
\Large s_{p} = \sqrt{\frac{s^2(n_1-1) + s^2(n_2-1)}{(n_1-1) + (n_2-1)}}
\end{equation}
<div style="margin-bottom:50px"></div>
One thing to point out is that standard deviations from samples cannot be added together -- but variances can be, which is why in (1) we use $s^2$ in the numerator only to take then the square root of the entire term.
We see that the variances are being multiplied by a term containing the sample size ($n$). In the case that each of our samples were differently sized, we would want to more heavily weight the variance of the sample that was larger. In our case now, both of our samples have the same $n$, but we introduce the equation for more general cases.
If you're wondering why $n-1$ is necessary for the weighting, and not just $n$, hold that thought and we'll return to it later. But for now, we'll just point out that it is *not* to adjust for the inherent bias when calculating sample variance (i.e. not the same reason that we used N-1 in the variance module [link]).
```{r, include=FALSE}
tutorial::go_interactive(height = 160)
```
[DATA CAMP WINDOW WHERE THEY WILL CALCULATE THE S_P OF THE DATA]
# Standard Error (SE) of the mean difference
After calculating the pooled standard deviation, the next step is to determine the standard error of the mean difference. We will follow the same logic as we did when calculated the standard error based on a single sample -- except now we will use the pooled standard deviation. Again, we will be adding the terms from the two samples together, so to be able to sum these we need to use the pooled *variance* (the square of the pooled standard deviation.)
[ annotated?]
<div style="margin-bottom: 50px;"></div>
\begin{equation}
(\#eq:equation2)
\Large SE_{({\bar{x_1}-\bar{x_2})}} = \sqrt{\frac{s_p^2}{n_1} + {\frac{s_p^2}{n_2}}}
\end{equation}
<div style="margin-bottom:50px"></div>
[DATA CAMP WINDOW WHERE THEY WILL CALCULATE THE SE OF THE MEAN DIFF]
Now that you know the standard error, you are ready to construct the 95% CI around the mean difference. As before, this will be the mean difference plus/minus 1.96 * $SE_{({\bar{x_1}-\bar{x_2})}}$.
Now we can see whether or not our null hypothesis can be rejected. If the 95% CI for values of ${({\bar{x_1}-\bar{x_2})}$ includes 0, then we do not have reason to believe that the population means are different.
[Construct interval for yourself below, DATA CAMP, INSTRUCTIONS]
```{r, include=FALSE}
tutorial::go_interactive(height = 160)
```
```{r ex="ttest2", type="pre-exercise-code"}
set.seed(12)
heights_island1 <- rnorm(50,10,2)
heights_island2 <- rnorm(50, 18, 1.2)
```
```{r ex="ttest2", type="sample-code"}
# Calculate the mean diff
mean_diff <-
# Calculate the Sp for heights_island1 and heights_island2
Sp <-
# Calculate the SE_meandiff
SE_meandiff <-
# Add ± 1.96 SEM to the sample mean to construct the upper and lower bounds of the 95% CI
upperCI <-
lowerCI <-
meandiff_95CI <- c(lowerCI, upperCI)
meandiff_95CI
```
```{r ex="ttest2", type="solution"}
# Calculate the mean difference
mean_diff <- mean(heights_island2) - mean(heights_island1)
# Calculate the Sp for heights_island1 and heights_island2
N1=50
N2=50
Sp <- sqrt(((sd(heights_island1)^2)*(N1-1) + (sd(heights_island2)^2)*(N2-1))/((N1-1)+(N2-1)))
Sp <- sqrt((var(heights_island1)*(49) + var(heights_island2)*(49))/(N1+N2-2))
# Calculate the SE_meandiff
SE_meandiff <- sqrt(Sp^2/N1 + Sp^2/N2)
# Add ± 1.96 SEM to the sample mean to construct the upper and lower bounds of the 95% CI
upperCI <- mean_diff + 1.96*SE_meandiff
lowerCI <- mean_diff - 1.96*SE_meandiff
meandiff_95CI <- c(lowerCI, upperCI)
meandiff_95CI
```
Our 95% CI does not include 0 by a lot! So we can conclude that the population means from Island 1 and Island 2 are mostly likely distinct. In other words, we can reject $H_0$, the null hypothesis. In doing so, we say that the mean difference is *statistically significant*.
[T test function will calculate the 95CI using the t distribution @ 97.5%m, which doesn't always give 1.96]
# P-values
Even though CIs are great tools for inference, you are probably most familiar with seeing p-values in scientific literature. The **p-value** that is output from your statistical test gives you a metric that tells you whether or not your results are statistically significant. Typically, p-values < 0.05 meet this criterion.
The "p" in p-value stands for "probability". Probability of what? The **p-value** is the probability that you would have gotten your results or something more extreme if in fact the null hypothesis were true. "More extreme", in this case, would be a mean difference even greater than what we see in the present data. The lower the p-value, the less likely you'd be getting your results due to chance alone.
Now let's derive the p-value for the mean difference of the two island heights, and make sure that we can draw the same conclusion that we did when we used the 95% CI for inference. In order to do this, we will use a statistical test for comparing two groups: the **t-test**.
# The t-test
The t-test is all about the **t-statistic**, which is produced when the mean difference is divided by the standard error. When we divide by the standard error, we turn our mean difference estimate into a unitless metric that is not dependent on the scale that means were recorded with (i.e. centimeters). Furthermore, dividing by the standard error also will also account for the uncertainty in the estimate.
- The t-statistic is essentially combining whatever our sample estimate is (e.g. mean difference, sample mean, etc.) and its uncertainty (i.e. standard error) into one value.
- we convert the t-statistic into a p-value via the a specific kind of distribution called the t-distribution. [plot, here's an example of one]
- the further out in the tails of the t-distribution that the t-statistic falls. The lower the pvalue will be.
(3) Degrees of freedom; Hasse has some ideas.
(4) A formal definition of hypothesis including null hypothesis.
Implement, and then formally answer the question.
# Degrees of Freedom
- You know the final answer of a single estimate. You can pick whatever you want, until you're down to the last choice....then you don't have the "freedom". --> explains why we use Total -1 = DF.
- Explain Whyyyyyyyyy we need it.
- The t-distribution will look different depending on the degrees of freedom
Intermediate step here between CI and p-values.
T-test statistic greater than 1.96 will result in a significant p-value.
Write your own t-test function.
Start with same N, but then “to make it a more useful model, you need to be able to handle when the sample sizes are not the same.”
**Unequal variance: more fodder for things to think about**
================================================
FILE: Giraffe.Rproj
================================================
Version: 1.0
RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default
EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8
RnwWeave: Sweave
LaTeX: pdfLaTeX
BuildType: Website
================================================
FILE: README.md
================================================
# Teacups, Giraffes, & Statistics <img src='assets/hex_tinystats.png' align="right" height="138.5" />
An open resource which uses R Markdown to create a series of modules for learning R basics and statistics. Built with R Markdown in RStudio. This project is ongoing, and more modules are in development.
Created by:
* [Hasse Walum](https://github.com/haswal), Emory University, USA
* [Desirée De Leon](https://github.com/dcossyleon), Emory University, USA
This repository holds the source materials for this project. To view the online modules, please visit: https://tinystats.github.io/teacups-giraffes-and-statistics/.
### Licensing
The illustrations and [narrative](https://tinystats.github.io/teacups-giraffes-and-statistics/00_narrative.html) in this project are licensed under the [cc-by-nc-nd](https://creativecommons.org/licenses/by-nc-nd/2.0/) license. This means that these specific parts of the project cannot be modified or remixed if you use our materials.
Everything else in this project is licensed under the [cc-by-nc-sa 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) license. In summary, this means that you can adapt the lesson material to suit your needs as long as you cite the original project and authors.
# Getting Started
[**Intro to R:**](https://tinystats.github.io/teacups-giraffes-and-statistics/01_introToR.html) This module will introduce you to some basic tools and terminology that you will need to be familiar with to complete the modules. You can work through the exercises or use this page as a reference.
# The Modules
1. [**Introduction to the Normal Distribution.**](02_bellCurve.html) This module introduces the basics to visualizing data using `ggplot` and evaluating the data for normality.
2. [**Mean, Median, Mode.**](03_mean.html) Write your own functions for calculating the median and mean.
3. [**Spread of the Data**](04_variance.html). Write your own functions for calculating the variance and the standard deviation.
4. [**Covariance and Correlation**](05_correlation.html) Write your own function to quantify the strength of the relationship between two variables.
5. [**Standard Error, Introduction to Inference**](06_standardError.html)
## Planned Modules
6. T-Test, Inference Part II
7. ANOVA
8. Linear Regression
9. Revisiting T-Tests, ANOVA, and Regression: Assumptions & Violations
10. Bootstrapping
11. Permutation
12. Simulation & Power
13. Winner's Curse
14. Multiple Comparisons & Questionable Research Practices
# apps
================================================
FILE: _bookdown_files/02_bellCurve_cache/html/__packages
================================================
here
ggplot2
plotly
tweenr
================================================
FILE: _bookdown_files/03_mean_cache/html/__packages
================================================
here
ggplot2
plotly
tweenr
emdbook
================================================
FILE: _bookdown_files/03_mean_cache/html/unnamed-chunk-3_10110fd506496d65a16c9f8d338a2668.rdb
================================================
================================================
FILE: _bookdown_files/04_variance_cache/html/__packages
================================================
here
ggplot2
plotly
tweenr
emdbook
================================================
FILE: _bookdown_files/05_correlation_cache/html/__packages
================================================
here
ggplot2
plotly
tweenr
MASS
emdbook
================================================
FILE: _bookdown_files/06_standardError_cache/html/__packages
================================================
here
ggplot2
plotly
tweenr
MASS
emdbook
================================================
FILE: _site.yml
================================================
name: "cars"
output_dir: "docs"
navbar:
title: " "
left:
- icon: "fa-home"
href: index.html
- text: "History of Teacup Giraffes"
href: 00_narrative.html
- text: "Modules"
menu:
- text: "Intro to R"
href: 01_introToR.html
- text: "Intro to the Normal Distribution"
href: 02_bellCurve.html
- text: "Mean, Median, Mode"
href: 03_mean.html
- text: "Spread of the Data"
href: 04_variance.html
- text: "Covariance and Correlation"
href: 05_correlation.html
- text: "Standard Error"
href: 06_standardError.html
- text: "About the Authors"
href: aboutTheAuthors.html
right:
- icon: "fa-github"
href: https://github.com/tinystats/teacups-giraffes-and-statistics
output:
bookdown::html_document2:
toc: true
toc_float: true
theme: cosmo
number_sections: false
================================================
FILE: aboutTheAuthors.Rmd
================================================
---
title: "About the authors"
output:
bookdown::html_document2:
includes:
in_header: assets/aboutTheAuthors_image.html
toc: false
---
================================================
FILE: assets/00_narrative.html
================================================
<head>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-135221736-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-135221736-1');
</script>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lora:400,400i,700,700i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i,700,700i,900,900i" rel="stylesheet">
<link href="assets/landing.css" rel="stylesheet">
<link href="assets/mobile_narrative.css" rel="stylesheet">
</head>
<body>
<div class="narrative-container">
<div class = "slider">
<div id = slide0 class = "slide-content">
<div class = "narrative-cover">
<img src="images/00_narrative/cover.jpg">
</div>
<div class = "narrative-text">
<p>Teacup giraffes were first discovered by the Swedish naturalist and priest Olof Torén, an apostle of Carl Linnaeus, during his travels on the Swedish East India Company ship <i>Hoppet</i>. Departing from the port of Gothenburg, <i>Hoppet</i> set sail on the 26th of January 1748, an extraordinarily gloomy day when sea and sky was a single ashen entity and winds from the northwest brought a snow-mixed horizontal rain. The mood onboard the ship was cheerful nonetheless, as the crew dreamt of the transparent waters of southern seas, filled with colorful beings and stories to bring back home.</p>
<p>One suffocating evening in July 1748, shortly after <i>Hoppet</i> had rounded the Cape of Good Hope and sailed east of Madagascar, captain Erik Moreen was attacked by a headache so vicious it made him seasick for the first time since the beginning of his nautical career. Desperate to ease the pain he called on the ship surgeon, a crooked man who spent most of his time investigating fungi in the deepest corners of the ship’s bilge where the air tasted like year old bread.</p>
<p> <img class = "narrative-illo-small" align = "left" src="images/00_narrative/Vial.jpg"> The surgeon brought a small bottle containing a beverage brewed of equal parts fermented goat milk and a distillate of mushrooms which, when dissolved, produced such a colorful luminance that the use of protective goggles was necessary to prevent achromatopsia. Ignoring the surgeon’s recommendation to limit the dose to a few drops of the brew, the captain emptied the bottle in one gulp and for a few moments lost all senses while the hair on the back of his head spun into permanent curls. </p>
<p>Although the pain subsided within less than thirty minutes, this was just the beginning of a nightmarish intoxication. The captain heard sirens sing lost lullabies from all directions, saw the kraken swallow the moon and spit it out as thousands of stars, and was convinced that all of his crew had turned into sharp-stemmed ferns, stationary and threatening to amputate him with every wavering step he took across the deck. During this confusion the captain tied himself to the fore-mast, prepared to fall head first into the flaming depths of the underworld. He was standing there as the sun rose, as his inebriation started to fade into melancholy, and saw two small islands appear on the horizon. </p>
<p> <img class = "narrative-illo-small" align = "right" src="images/00_narrative/Froth.jpg">The ocean then formed a frothy path in front of Erik Moreen, from the bow to the two islands. In the captain’s still quivering mind time seemed to move backwards, and he tried to find solace from the rootlessness of this experience by searching his mind for pleasant memories. The path suddenly seemed indistinguishable from the road connecting the port of Gothenburg to his home in <i>Guldheden</i>, many nautical miles away. He even swore he could see a colony of black-backed gulls circling in the sky above him, establishing his notion that <i>Hoppet</i> somehow had made it back to the north. Confident he would soon be reunited with his wife, the captain gave orders to sail in the direction of the islands and would not listen to any objections until the ship was stranded on a sandbank no more than a stone’s throw away from its destination. Although Erik Moreen recovered from the surgeon’s medicament after a few days, the crew’s trust in him was not as easily restored and he was temporarily relieved of his duties as captain. </p>
<p>During the days it took the crew to dig <i>Hoppet</i> out of the sand, naturalist and ship priest Olof Torén visited the islands a few times but was apparently not very impressed by this occurrence. In his journals from this time, only one sentence makes mention of this part of the voyage: </p>
<p class="blockquote">Northeast of Madagascar lie two small islands not worth visiting for any other reason than the fact that they are inhabited by small, quadrupedal mammals with relatively long necks.</p>
</div>
</div>
<div id = slide6 class="slide-content">
<div class ="narrative-text">
<p>In line with the often undemocratic nature of human experiences, Olof Torén would encounter teacup giraffes twice over the course of a few years, while it would take centuries after they were first discovered before anybody else did. The second time Olof Torén visited the two small islands where teacup giraffes still live today, it was during his second and last intercontinental journey at sea, this time on the Swedish East India Company ship <i>Götha Leijon</i>. In 1750 he found himself back in the cerulean waters northeast of Madagascar. Again, it was an event characterized by pain that would bring the naturalist and ship priest to the teacup giraffe islands, but pain of the soul rather than the body. </p>
<p> <img class="narrative-illo-small" align = "left" src="images/00_narrative/Ships2.jpg"> In the evenings, Olof Torén and supercargo Anders Gotheen, a man who would not hesitate to let people know his personal values aligned perfectly with the new ideals of the intellectual revolution today known as the <i>Enlightenment</i>, enjoyed sitting down for a game of backgammon on the main deck. Or rather, Olof Torén enjoyed the game while Anders Gotheen, as he liked to say, enjoyed engaging in dialectic discourse while playing a game only slightly distracting since winning after all was mostly a question of luck. Olof Torén had noticed that conversations with Anders Gotheen often made him worried about things he had not previously contemplated and was therefore less amused by the dialectic aspect of their game nights. </p>
<p>This particular evening it seemed Anders Gotheen would definitely lose. He watched Olof Torén bear off three of his white checkers and as he collected the dice supercargo Gotheen turned to the naturalist.</p>
<p class="dialogue">– For the intellectually brave and honest, he said, no comfort can be found in the concept of infinity. Everything typical of human life, he continued, is characterized by the notion of a finite world, and therefore a free human mind can never truly be consoled by the appreciation of endlessness. He paused and drank some wine from a metal cup. </p>
<p class="dialogue">– This is also true for the afterlife, he then added. </p>
<p> <img class="narrative-illo-small" align = "right" src="images/00_narrative/Fireside.jpg"> The reason why, as Olof Torén would explain it a few days later during a one-way conversation with a group of patiently listening teacup giraffes, what Anders Gotheen said that evening had so effectively shaken the foundation of his world view, was not because it directly challenged his faith. No, it was the fact that what Anders Gotheen had said instead questioned how much existential relief any belief could offer whatsoever that resulted in a detrimental blow to his conviction.</p>
<p>For what felt like a very long time, Olof Torén listened to Anders Gotheen in detail describe the philosophical abyss all perspectives on <i>life after death</i> inescapably lead to. He started to feel lightheaded and ended the game early so that he could climb up to the upper deck to get some fresh air. It was a clear night and the sky seemed filled with an infinite number of stars. His head was now spinning, he lost his balance, made a futile attempt to reach for the shrouds, but inevitably fell overboard.</p>
<p>Olof Torén treaded water all night, motivated by his new fear of death. When the sun rose he for a moment forgot about the thoughts that had been plaguing him during those long hours in the dark water, because the early morning light draped the world in a calming emerald luster. He could now see he had drifted to only a yards away from the sandbank where <i>Hoppet</i> had been stranded a few years earlier. The sunlight was filtered through the foliage of a thousand palm trees on the islands between him and the rising sun and this is what created the green morning experience. He swam to the island closest to him and passed out on the beach, exhausted both physically and mentally. </p>
<p>When Olof Torén woke up the sun was about to set. As he slowly opened his eyes he saw a group of teacup giraffes walking towards him on the beach, and briefly thought they had come to welcome him back to the islands. But the small giraffe caravan walked past him and continued towards a large flat stone projecting out of the sand not far from where he was lying. In the light of dusk, everything on the beach seemed to cast extraordinarily long shadows and from where Olof Torén was positioned the stone looked enormous. The shape made him think of <i>runestones</i>, rocks Vikings would raise and decorate with runic inscriptions, but the size more resembled the <i>moai</i> stone statues of Easter island. The teacup giraffes took turns standing in front of the stone observing a large silhouette appear on the granite surface ahead. They seemed infatuated by watching their shadow twin move as they moved, grasping for palm tree leaves non-shadow teacup giraffes would never reach, and making low pitched vocal sounds reminding Olof Torén of larger animals. It was as if these giraffes knew about their unusually small stature and used the evening light to pretend they were tall, like their full-size relatives on the African mainland.<img class= "narrative-illo-big" src="images/00_narrative/ShadowPlay.jpg"></p>
<p>This time around Olof Torén spent two days in the company of teacup giraffes and grew to appreciate their cheerful demeanor, social competence and general friendliness. When not playing with shadows, chasing fireflies or resting in the crisp air next to a waterfall, they foraged the jungle for celery which seemed to be their favorite food. Time passed quickly on the islands because the teacup giraffes had an almost endless repertoire of delightful behaviors and at times it even appeared they adapted their conduct to what Olof Torén showed appreciation for.</p>
<p><img class="narrative-illo-big" src="images/00_narrative/Swing.jpg"></p>
<p>On the Swedish East India Company ship <i>Götha Leijon</i>, the consensus was that Olof Torén was unlikely to still be alive, but most of the crew were god fearing men and the idea of leaving a priest to drown without a convincing rescue attempt seemed like the type of thing the almighty would never forget. Some of the them had been present for the Erik Moreen debacle a few years earlier and remembered the location of the islands from this incident.</p>
<p>Olof Torén saw the ship approach the islands from far away. After two days on the teacup giraffe diet he was famished because the more celery he ate the hungrier he became. Longing for the salted meats that made up a large part of the meals onboard Swedish East India Company ships, he said goodbye to his new four-legged friends and waded out in the water to meet the rowboat launched to pick him up. As he climbed onboard he turned around to catch a last glimpse of the giraffes and saw them gather on the beach for another evening shadow play ritual.</p>
<p>Back on <i>Götha Leijon</i>, Olof Torén wrote down all the details of teacup giraffes’ lives he could remember. During a game of backgammon, he tried to describe their unusual physique and social behaviors, but was soon interrupted by Anders Gotheen who said</p>
<p class="dialogue"> – The human mind works in mysterious ways when deprived of energy</p>
</div>
</div>
<div id = slide10 class="slide-content">
<div class = "narrative-text">
<p>Olof Torén would in fact have a hard time convincing friends and colleagues, people he met as <i>Götha Leijon</i> sailed to Surat and Canton, as well as Carl Linnaeus, that his accounts of the teacup giraffe islands reflected reality. Maybe the feeling of not being trusted contributed to why his health started to deteriorate after his return to Sweden in 1752. On the 3rd of May 1753, a few months before his death, he wrote a last letter to Linnaeus. On the final page of this letter he drew a picture of two giraffes, one short and one tall. They were standing in front of a pair of heavy church doors and both their shadows stretched far above the tower and into the sky. The short giraffe, a female with pointy ears, looked like she was smiling.</p>
<p>Even today, when there are few true mysteries left in the world and all corners of the globe have been so carefully measured and illuminated that no colorless spots stain the pages of the modern atlas, teacup giraffes remain a relatively well kept secret. These animals were briefly mentioned in 9th edition of Carl Linnaeus’ <i>Systema Naturae</i> and given the Latin name <i>Giraffa minima</i>, but were removed before printing the 10th edition because of doubts about the trustworthiness of Olof Torén’s descriptions. <img class="narrative-illo-200" align = "right" src="images/00_narrative/backpack_350px.jpg">No songs have been sung about them, Rudyard Kipling was oblivious to their existence when writing the <i>Jungle Book</i>, schoolchildren have never wondered how many teacup giraffes they could fit in a backpack, and they were never made famous by a Twinings advertisement campaign.</p>
<p> But in December 2018, the <i>Olof Torén foundation</i> in Uppsala decided it was time that teacup giraffes were given a more prominent place in the world of zoology. The foundation set aside money for a stipend and requested applications from “young aspiring scientists devoted to conducting old-school observational field work and interested in spending time on remote islands in the Indian Ocean studying possibly the least known mammal on the planet”. <img class="narrative-illo-small" align = "left" src="images/00_narrative/uppsala.jpg"> In the announcement they also wrote “One crucial piece of information missing about teacup giraffes regards their physique, because although it is known that they are small, no reliable records of their exact size can be found anywhere”. And this is true because people falling overboard rarely bring measuring equipment. </p>
</div>
</div>
<div class = "end-text">The End</div>
</div>
</div>
</body>
================================================
FILE: assets/01_introToR_image.html
================================================
<head>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-135221736-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-135221736-1');
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/3.5.16/iframeResizer.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lora:400,400i,700,700i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,200i,300,300i,400,400i,600,600i,700,700i,900,900i" rel="stylesheet">
<link href="assets/style.css" rel="stylesheet">
</head>
<div class="image-descript">
<img class="big_image" src="images/big_image/Ship.jpg">
<div class="image-text">
<div class="lil-image-text">Before the Adventure Begins:</div>
<div class="big-image-text"><strong>Intro to R</strong></div>
</div>
</div>
================================================
FILE: assets/02_bellCurve_image.html
================================================
<head>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-135221736-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-135221736-1');
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/3.5.16/iframeResizer.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lora:400,400i,700,700i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,200i,300,300i,400,400i,600,600i,700,700i,900,900i" rel="stylesheet">
<link href="assets/style.css" rel="stylesheet">
</head>
<div class="image-descript">
<img class="big_image" src="images/big_image/Hills.jpg">
<div class="image-text">
<div class="lil-image-text">Introduction to the</div>
<div class="big-image-text"><strong>NORMAL DISTRIBUTION</strong></div>
</div>
</div>
================================================
FILE: assets/03_mean_image.html
================================================
<head>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-135221736-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-135221736-1');
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/3.5.16/iframeResizer.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lora:400,400i,700,700i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,200i,300,300i,400,400i,600,600i,700,700i,900,900i" rel="stylesheet">
<link href="assets/style.css" rel="stylesheet">
</head>
<div class="image-descript">
<img class="big_image" src="images/big_image/cave.jpg">
<div class="image-text">
<div class="lil-image-text">Measures of centrality:</div>
<div class="big-image-text"><strong>MEAN, MEDIAN, & MODE</strong></div>
</div>
</div>
================================================
FILE: assets/04_variance_image.html
================================================
<head>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-135221736-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-135221736-1');
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/3.5.16/iframeResizer.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lora:400,400i,700,700i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,200i,300,300i,400,400i,600,600i,700,700i,900,900i" rel="stylesheet">
<link href="assets/style.css" rel="stylesheet">
</head>
<div class="image-descript">
<img class="big_image" src="images/big_image/giraffe_beach.jpg">
<div class="image-text">
<div class="lil-image-text">The Spread of the Data:</div>
<div class="big-image-text"><strong>VARIANCE & STANDARD DEVIATION</strong></div>
</div>
</div>
================================================
FILE: assets/05_correlation_image.html
================================================
<head>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-135221736-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-135221736-1');
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/3.5.16/iframeResizer.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lora:400,400i,700,700i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,200i,300,300i,400,400i,600,600i,700,700i,900,900i" rel="stylesheet">
<link href="assets/style.css" rel="stylesheet">
</head>
<!---div class="image-descript">
<img class="big_image" src="images/big_image/Log.jpg">
<div class="image-text">
<div class="lil-image-text">A Tale of Two Variables:</div>
<div class="big-image-text"><strong>COVARIANCE & CORRELATION</strong></div>
</div>
</div-->
<div class= "hero-container">
<div class="hero-image">
<div class="hero-image-text">
<div class="hero-image-text-little">A tale of two variables:</div>
<div class="hero-image-text-big">Covariance & correlation</div>
</div>
</div>
</div>
================================================
FILE: assets/06_standardError_image.html
================================================
<head>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-135221736-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-135221736-1');
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/3.5.16/iframeResizer.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lora:400,400i,700,700i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,200i,300,300i,400,400i,600,600i,700,700i,900,900i" rel="stylesheet">
<link href="assets/style.css" rel="stylesheet">
</head>
<div class="image-descript">
<img class="big_image" src="images/big_image/Archer2.jpg">
<div class="image-text">
<div class="lil-image-text">Introduction to Inference:</div>
<div class="big-image-text"><strong>Standard Error</strong></div>
</div>
</div>
================================================
FILE: assets/07_tTest_image.html
================================================
<head>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-135221736-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-135221736-1');
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/iframe-resizer/3.5.16/iframeResizer.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lora:400,400i,700,700i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,200i,300,300i,400,400i,600,600i,700,700i,900,900i" rel="stylesheet">
<link href="assets/style.css" rel="stylesheet">
</head>
<div class="image-descript">
<img class="big_image" src="images/big_image/07_tTest_image.jpg">
<div class="image-text">
<div class="lil-image-text">The difference between two groups:</div>
<div class="big-image-text"><strong>T-TEST</strong></div>
</div>
</div>
================================================
FILE: assets/Landing_page.html
================================================
<head>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-135221736-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-135221736-1');
</script>
<!-- Clickable Giraffe -->
<script>
$(document).ready(function() {
$('.giraffe-container').click(function() {
$('body').addClass('expanded');
});
});
</script>
<!-- CSS -->
<link href="assets/landing.css" rel="stylesheet">
<link href="assets/button.css" rel="stylesheet">
<link href="assets/mobile_landing.css" rel="stylesheet">
</head>
<body>
<div id="preload">
<img src="images/Landing_page/g1_1200px.jpg">
</div>
<section class="landing container">
<section class="giraffe-container" >
<div class="singleGiraffe-clickme"></div>
<div class="singleGiraffe-clickme-hover"></div>
<div class="giraffeForest">
<div class="g1 opacity-after-click"></div>
</div>
<div class="singleGiraffe"></div>
<section class="image-descript">
<div class="image-text">
<div class="landing small-text">Welcome to the Wonderful World of</div>
<div class="landing big-text"><strong>TEACUPS, GIRAFFES, & STATISTICS</strong></div>
</div>
</section>
</section>
<div class="appears-after-click">
<div class="about">A delightful series of modules to learn statistics and R coding for students, scientists, and stats-enthusiasts.</div>
<div class="landing-buttons">
<a id="container" href="00_narrative.html">
<button class="learn-more">
<span class="circle">
<span class="icon arrow"></span>
</span>
<span class="button-text">Read the History of Teacup Giraffes</span>
</button>
</a>
<a id="container" href="01_introToR.html">
<button class="learn-more deemphasized">
<span class="circle">
<span class="icon arrow"></span>
</span>
<span class="button-text">Skip Straight to the Stats</span>
</button>
</a>
</div>
</div>
</section>
</body>
================================================
FILE: assets/aboutTheAuthors_image.html
================================================
<head>
<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0">
</head>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,700" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Lora:400,400i,700,700i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,200i,300,300i,400,400i,600,600i,700,700i,900,900i" rel="stylesheet"><link href="assets/style.css" rel="stylesheet">
<div class="image-descript">
<img class="main-image" src="images/aboutTheAuthors/Jungle.jpg">
<!--<div class="color-overlay"></div>-->
<div class="image-text image-text-about-the-authors">
<!--div class="lil-image-text"></div-->
<div class="big-image-text"><strong>ABOUT THE AUTHORS</strong></div>
</div>
</div>
<div class="back-panel">
<div class="back-panel-contents">
<div class="about-the-author-color-textbox">
<div class="about-the-author-color-textbox-title">HASSE WALUM</div>
<div class="about-the-author-color-textbox-text"> Hasse is a tall, Swedish teacup giraffe (one of the few giraffes from the North). When not munching on celery and doing creative writing, he spends his time working as an instructor at Emory University, coding in R, thinking about issues related to scientific rigor, and analyzing gene expression data. </div>
</div>
<div class="about-the-author-subimage"> <img src="images/aboutTheAuthors/giraffe_avatar.jpg"> </div>
<div class="about-the-author-color-textbox">
<div class="about-the-author-color-textbox-title""> DESIRÉE DE LEON</div>
<div class="about-the-author-color-textbox-text"">Desirée is a multidisciplinary teacup giraffe who is a recent PhD grad in neuroscience at Emory University, and also enjoys illustrating and bluegrass (both the music and the plant). Her graduate research involved using R to analyze pedigree data of cute monkey families living at the Yerkes National Primate Research Center.</div>
</div>
</div>
</div>
================================================
FILE: assets/button.css
================================================
a, a:active, a:focus{
outline: none; /* Removes dotted link outline. Works in Firefox, Chrome, IE8 and above */
}
/*------ BUTTONS ------*/
.landing-buttons {
display: flex;
flex-wrap: wrap; /* so that it will wrap nicely on mobile */
justify-content: center;
margin: 0 auto;
visibility: visible;
}
body.expanded .appears-after-click {
display: block;
animation: 3s fadeIn;
animation-fill-mode: forwards;
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
visibility: visible;
opacity: 1;
}
}
button {
position: relative;
display: inline-block;
cursor: pointer;
outline: none;
border: 0;
vertical-align: middle;
text-decoration: none;
background: transparent;
padding: 0;
font-size: inherit;
font-family: inherit;
}
button.learn-more {
width: 27rem;
height: auto;
margin: 1em
}
button.learn-more .circle {
transition: all 0.45s cubic-bezier(0.65, 0, 0.076, 1);
position: relative;
display: block;
margin: 0;
width: 3em;
height: 3em;
background: #282936;
border-radius: 1.625em;
}
button.learn-more.deemphasized .circle {
background: white;
border: 3px solid #282936;
}
button.learn-more .circle .icon {
transition: all 0.45s cubic-bezier(0.65, 0, 0.076, 1);
position: absolute;
top: 0;
bottom: 0;
margin: auto;
background: #fff;
}
button.learn-more.deemphasized .circle .icon {
background: #282936;
}
button.learn-more .circle .icon.arrow {
transition: all 0.45s cubic-bezier(0.65, 0, 0.076, 1);
left: 0.925rem;
width: 2.225rem;
height: 0.225rem;
background: none;
}
button.learn-more.deemphasized .circle .icon.arrow {
left: 0.625rem; /*accounts for 3px border, which pushes arrow*/
}
button.learn-more .circle .icon.arrow::before {
position: absolute;
content: '';
top: -0.45rem;
right: -0.0375rem;
width: 1.125rem;
height: 1.125rem;
border-top: 0.325rem solid #fff;
border-right: 0.325rem solid #fff;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
button.learn-more.deemphasized .circle .icon.arrow::before {
border-top: 0.325rem solid #282936;
border-right: 0.325rem solid #282936;
}
button.learn-more .button-text {
transition: all 0.45s cubic-bezier(0.65, 0, 0.076, 1);
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
padding: 0.75rem 0;
margin: 0 0 0 7.3rem;
color: #282936;
font-weight: 600;
line-height: 1.3;
text-align: left;
text-transform: uppercase;
font-size: 1.5rem;
font-family: "Source Sans Pro";
letter-spacing: 1px;
/*to vertically center text in button, 2 properties below*/
display: flex;
align-items: center;
}
button:hover .circle {
width: 100%;
}
button:hover .circle .icon.arrow {
background: #fff;
-webkit-transform: translate(1.7rem, 0);
transform: translate(1.7rem, 0);
}
button:hover.deemphasized .circle .icon.arrow {
background: #282936;
}
button:hover .button-text {
color: white;
}
button:hover.deemphasized .button-text {
color: #282936;
}
/* ---See mobile_landing.css for button styles on mobile--- */
================================================
FILE: assets/foot.html
================================================
<!DOCTYPE html>
<div class="foot">
<hr>
<p style="text-align: center;"> <span style="color: #808080; display: inline-block; width: 58%;"> This project was created entirely in RStudio using R Markdown and published on GitHub pages.
</span></p>
<p style="text-align: center;">
</p>
</div>
================================================
FILE: assets/landing.css
================================================
@import url('https://fonts.googleapis.com/css?family=Lora:400,400i&display=swap');
/*Loads background-images in HTML as <img> tags, so that they are already loaded when animated to display later*/
#preload {
display: none;
}
/* JS appear: */
/* After clicking, the class `.expanded` is added to the body tag, which applies the styles below to the elements below */
body.expanded .image-descript {
display: flex;
}
body.expanded .singleGiraffe-clickme {
display: none;
}
body.expanded .singleGiraffe {
display: block;
}
body.expanded .giraffeForest {
display: block;
}
/*------------NARRATIVE-----------*/
.narrative-container {
max-width: 650px;
margin: 4em auto;
}
.narrative-cover {
text-align: center;
margin: 0 auto 2em auto;
max-width: 650px;
background-color: white;
}
.narrative-illo-200 {
max-width: 200px !important;
display: inline-block !important;
margin: 0.5em 1em 0.5em 0.5em;
}
.narrative-illo-small {
max-width: 350px !important;
display: inline-block !important;
margin: 0.5em 1em 0.5em 0.5em;
}
.narrative-illo-big {
display: block !important;
max-width: 90% !important;
margin: 0.5em auto;
}
.narrative-text {
font-family: "Source Sans Pro";
line-height: 1.75;
}
.dialogue {
text-indent: 2em;
}
p.blockquote{
background: #fcf8f0;
border-left: 10px solid #f2e0c3;
padding: 1.5em 10px;
font-family: "Lora";
font-style: italic;
font-size: 0.85em;
margin: 1em 2em 1em 2em !important;
}
.slide-content > .narrative-text > p:first-of-type:first-letter { /*drop cap for first p that is a direct child of .narrative-text, which is in turn a direct child of .slide-content*/
color: #3fb5bd;
float: left;
font-family: 'Lora', serif;
font-weight: bold;
font-size: 7em;
line-height: 65px;
padding: 20px 8px 0 3px;
margin-bottom: 9px;
}
.narrative-text p {
margin-bottom: 1.5em;
}
.slide-content { /* space separating each "chapter" */
margin-bottom: 3em;
}
.end-text{
text-align: center;
margin-top: 100px 0 50px 0;
font-size: 3em;
font-family: 'Lora';
font-weight: 600;
color: #3fb5bd;
}
/*------------NAVBAR-------------*/
.navbar-default {
background-color: #ffffff33;
box-shadow: 0 0 50px rgba(255, 255, 255, 0.76);
background-image: linear-gradient(to bottom, #ffffff, #ffffff, #ffffffed, #ffffffba, #ffffff33) !important;
border: none;
}
.navbar-default .navbar-nav>li>a {
color: black;
}
.navbar-default .navbar-nav>.active>a,
.navbar-default .navbar-nav>.active>a:hover,
.navbar-default .navbar-nav>.active>a:focus
/*.navbar-default .navbar-nav>li>a:hover,*/
/*.navbar-default .navbar-nav>li>a:focus */{
color: #989898;
background-color: #ffffff33;
background-image: linear-gradient(to bottom, #ffffff, #ffffff, #ffffffed, #ffffffba, #ffffff33) !important;
}
/* Hovering over navbar + dropdown */
.navbar-default .navbar-nav>li>a:hover,
.navbar-default .navbar-nav>li>a:focus{
color: #989898;
background-color: white;
}
/* hamburger menu on mobile */
.icon-bar {
background-color: black !important;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
background-color: #ffffff !important;
}
/* Whole document: */
body {
font-size: 19px;
}
.title{
display: none;
}
.main-container {
max-width: 1326px !important;
}
.container-fluid { /* margin: 0 Left-aligns container; margin: auto to "center" (Default)*/
margin-right: auto !important;
margin-left: auto !important;
}
.row-fluid{
display: flex;
position: relative;
}
.col-xs-12 .col-sm-4 .col-md-3{
width: 25%;
position: relative;
}
.tocify-extend-page {
height: 0px !important; /* Gets rid of extra space after footer*/
}
body, html {
height: 100%;
}
/*@media screen and (max-width: 300px) {
.image-descript {
display: none;
}*/
/* --------------v2 Landing Page---------------*/
.landing-container {
max-width: 700px;
}
.giraffe-container {
height: 500px;
margin: 0.5em auto 0em auto;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.singleGiraffe-clickme {
height: 400px;
width: 354px;
left: 52%;
margin-left: -177px; /*half the container's width*, along with left: 50%*/
position: absolute;
display: block;
cursor: pointer;
background-repeat: no-repeat;
background-size: contain;
background-position: bottom;
background-image: url("../images/Landing_page/singleGiraffe-clickme.jpg");
}
.singleGiraffe-clickme-hover {
height: 400px;
width: 354px;
left: 52%;
margin-left: -177px; /*half the container's width*, along with left: 50%*/
position: absolute;
display: block;
cursor: pointer;
background-repeat: no-repeat;
background-size: contain;
background-position: bottom;
background-image: url("../images/Landing_page/singleGiraffe-clickme-hover.jpg");
opacity: 0;
}
.singleGiraffe-clickme-hover:hover {
opacity: 1;
}
.singleGiraffe {
height: 400px;
width: 354px;
left: 52%;
margin-left: -177px; /*half the container's width*, along with left: 50%*/
position: absolute;
display: none;
background-repeat: no-repeat;
background-size: contain;
background-position: bottom;
background-image: url("../images/Landing_page/singleGiraffe.png");
animation: slide-up 1s forwards;
}
.giraffeForest {
position: absolute;
height: 500px;
width: 1200px;
left: 50%;
margin-left: -600px;
display: none;
background-repeat: no-repeat;
background-size: contain;
background-position: center;
}
.g1 {
display: block;
height: 500px;
background-image: url('../images/Landing_page/g1_1200px.jpg');
background-size: contain;
background-repeat: no-repeat;
animation: slide-in-from-top 1s forwards;
}
@keyframes slide-up {
0% { opacity: 1; transform: translateY(0px); }
100% { opacity: 1; transform: translateY(-15px); }
}
@keyframes slide-in-from-bottom {
0% { opacity: 0; transform: translateY(100px); }
100% { opacity: 1; transform: translateY(0); }
}
@keyframes slide-in-from-top {
0% { opacity: 0; transform: translateY(-100px); }
100% { opacity: 1; transform: translateY(0); }
}
@keyframes slide-in-from-right{
0% { opacity: 0; transform: translateX(100px); }
100% { opacity: 1; transform: translateX(0); }
}
@keyframes slide-in-from-left {
0% { opacity: 0; transform: translateX(100px); }
100% { opacity: 1; transform: translateX(0); }
}
.image-descript {
position: relative;
display: none;
animation: slide-in-from-bottom 1s forwards;
justify-content: center; /* flex horizontal center */
align-items: center; /*flex vertical center*/
}
.big-text {
text-align: center;
color: #ffffff;
visibility: visible;
font-size: 3em;
text-shadow: 1px 1px 35px #0e0d0d38;
letter-spacing: 0.065em;
}
.small-text {
color: white;
margin: 0 auto 5px auto;
text-align: center;
display:block;
font-family: 'Lora', serif;
font-size: 22px;
font-weight: 500;
line-height: 1.5em;
letter-spacing: 1px;
font-style: italic;
text-shadow: 1px 1px 35px #0e0d0d38;
}
/*------ LANDING WELCOME INFO----- */
.appears-after-click {
display: none;
}
.appears-after-click .about {
text-align: center;
font-family: "Source Sans Pro";
font-size: 1.2em;
color: #707070;
max-width: 725px;
margin: 0 auto 1em auto;
}
/* Tablet */
@media only screen and (min-width: 480px) and (max-width: 540px) {
.toc-content {
width: 100%;
}
}
@media only screen and (min-width: 541px) and (max-width: 649px) {
.toc-content {
width: 100%;
}
}
@media only screen and (min-width: 650px) and (max-width: 767px) {
.toc-content {
width: 100%;
}
}
/*iPad portrait*/
@media only screen and (min-width: 768px) and (max-width: 1023px) {
.toc-content {
width: 100%;
}
}
/*iPad Pro portarit */
@media only screen and (min-width: 1024px) and (max-width: 1225px) {
.toc-content {
width: 100%;
}
}
@media only screen and (max-width: 768px) {
.col-xs-12.col-sm-4.col-md-3 {
display: none !important;
}
}
/* New hero images */
.hero-container {
height: 550px;
background-color: #1b3a42;
margin-bottom: 2em;
}
.hero-image {
max-width: 1800px;
margin-top: -50px !important;
margin-left: auto;
margin-right: auto;
position: relative;
margin-bottom: 2em;
background-image: linear-gradient( rgba(0,0,0,.2), rgba(0,0,0,.2) ),
url(../images/big_image/Log.jpg); /* liner gradient tints the image darker for readability*/
height: 550px;
background-size: cover;
background-color: #1b3a42;
background-position: center bottom;
display: flex; /* Change to `display: none` for no hero image */
justify-content: center;
align-items: center;
}
.hero-image-text-little {
position: relative;
font-family: 'Lora', serif;
font-size: 24px;
font-weight: 500;
line-height: 1.5em;
letter-spacing: 1px;
font-style: italic;
font-weight: normal;
color: #fff;
text-align: center;
}
.hero-image-text-big {
position: relative;
letter-spacing: 0.065em;
line-height: 1em;
font-size: 68px;
text-transform: uppercase;
text-align: center;
display: block;
color: #fff;
margin-bottom: 2.5rem;
font-weight: bold;
}
@media only screen and (max-width: 770px) {
.hero-image-text-big{
font-size: 3rem;
padding: 2rem 0rem 0rem 0rem;
}
.hero-image-text-little{
font-size: 19px;
}
.hero-image {
max-width: 770px;
height: 300px;
}
.hero-container {
height: 300px;
background-color: #1b3a42;
margin-bottom: 1em;
}
.toc-content.col-xs-12.col-sm-8.col-md-9{
width: 100%;
padding-left: 1px;
padding-right: 1px;
}
}
================================================
FILE: assets/landing_styles.css
================================================
* {
margin: 0;
padding: 0;
}
body {
font-size: 1em;
color: rgba(26,26,26,.9);
font-family: 'Open Sans', sans-serif;
background-color: #f5f5f5;
}
.branding-bar{
width: 100%;
height: 60px;
background-color: #22222270;
padding-right:4em;
text-align: left;
font-size: 1em;
color:#f7f7f7;
line-height: 80px;
position:fixed;
z-index: 999;
}
.button-link{
padding-left: 2em;
padding-right: 2em;
padding-top:1em;
padding-bottom:1em;
border-radius: 50px;
/* this is irrelevant, and just so the element can be visualised/displayed: */
margin: 2em auto;
border: 1.5px solid #fff;
color: #fff;
font-size: .75em;
text-decoration: none;
margin-right: 5%;
letter-spacing: 0.065em;
}
.button-link:hover {
color: #002878;
background-color:white;
}
.bar-link{
color: #fff;
text-decoration: none;
font-size: .75em;
text-transform: uppercase;
margin-right: 2em;
letter-spacing: 0.065em;
}
.bar-link:hover{
color:#f5f5f5;
font-style: bold;
}
.image-descript {
position: relative;
}
.main-image {
width: 100%;
display: block; /*This gets rid of the weird little space from inline-block*/
}
.image-text{
position: absolute;
top:30%;
left:0;
right:0;
bottom:0;
}
.lil-image-text {
color: #ededea;
margin-top: 20px;
margin-right: auto;
margin-bottom: 20px;
margin-left: auto;
padding-top: 2em;
text-align: center;
display:block;
font-family: 'Lora', serif;
font-size: 18px;
font-weight: 400;
line-height: 1.5em;
letter-spacing: 1px;
font-style: italic;
color: #fff;
}
.big-image-text {
letter-spacing: 0.065em;
line-height: 1em;
font-size: 68px;
text-transform: uppercase;
text-align: center;
display:block;
color: #fff;
}
.color-overlay {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: rgba(0,0,0,.1);
}
================================================
FILE: assets/mobile_landing.css
================================================
/* IPHONE 6/7/8 */
/* In summary:
1. Makes text on image smaller
1. Gets rid of hover-specific styles/ images
*/
@media only screen and (max-width: 500px) {
.giraffe-container { /* takes margin-top from 0.5em to 0*/
margin: 0 auto;
}
.big-text {
font-size: 2.1em; /*down from 3em */
text-shadow: 1px 1px 35px #0e0d0d78; /*text shadow a little darker */
line-height: 1.2; /* makes smaller */
}
.small-text {
font-size:18px; /*smaller*/
text-shadow: 1px 1px 35px #0e0d0d78; /*text shadow a little darker */
}
.singleGiraffe-clickme-hover {
display: none;
}
.landing.about {
font-size: 1.1em; /*smaller*/
}
/*-------- BUTTONS on iphone-------- */
/*Takes hovered styles and applies them to the static element */
button.learn-more .circle .icon.arrow {
background-color: white;
}
button.learn-more .circle {
width: 100%;
}
button.learn-more .circle .icon.arrow {
background: none; /*Eliminates arrow's horizontal line*/
-webkit-transform: translate(1.7rem, 0);
transform: translate(1.7rem, 0);
}
button.learn-more.deemphasized .circle .icon.arrow {
background: none; /*Eliminates arrow's horizontal line*/
}
button.learn-more .button-text {
color: white;
}
button.learn-more.deemphasized .button-text {
color: #282936;
}
}
/*--------- IPAD portrait-------- */
@media only screen and (min-width: 501px) and (max-width: 768px) {
.big-text {
text-shadow: 1px 1px 35px #0e0d0d78; /*text shadow a little darker */
line-height: 1.2; /* makes smaller */
}
.small-text {
font-size:18px; /*smaller*/
text-shadow: 1px 1px 35px #0e0d0d78; /*text shadow a little darker */
}
/* Remove hovered styles for clickme giraffe and buttons*/
.singleGiraffe-clickme-hover {
display: none;
}
/*--BUTTON--*/
button.learn-more .circle .icon.arrow {
background-color: white;
}
button.learn-more .circle {
width: 100%;
}
button.learn-more .circle .icon.arrow {
background: none; /*Eliminates arrow's horizontal line*/
-webkit-transform: translate(1.7rem, 0);
transform: translate(1.7rem, 0);
}
button.learn-more.deemphasized .circle .icon.arrow {
background: none; /*Eliminates arrow's horizontal line*/
}
button.learn-more .button-text {
color: white;
}
button.learn-more.deemphasized .button-text {
color: #282936;
}
}
/* LARGE MONITORS */
@media only screen and (min-width: 1500px) {
.giraffe-container {
height: 500px;
margin: 2em auto 1em auto;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.singleGiraffe {
animation: none;
}
}
@media (max-width: 767px) {
.navbar-default .navbar-nav .open .dropdown-menu>li>a {
color: black !important;
}
}
================================================
FILE: assets/mobile_narrative.css
================================================
/* IPHONE6/7/8 */
@media only screen and (max-width: 540px) {
.narrative-container {
margin: 0 auto 1em auto; /* reduce margin top */
}
.narrative-text {
padding: 0 16px; /* adds padding to sides */
margin: 0 auto; /* attempts to center */
}
.narrative-illo-200 {
max-width: 300px !important; /*makes larger, essentially full screen*/
}
.narrative-illo-small {
margin: 0.5em auto; /* override margin so doesn't overflow */
}
.narrative-illo-big {
max-width: 100% !important; /* overrides 90% */
}
p.blockquote {
margin: 0em 1em 0em 1em !important; /* makes wider */
}
.slide-content > .narrative-text > p:first-of-type:first-letter { /*drop cap*/
font-size: 4.5em;
line-height: 30px;
padding: 20px 5px 0 0;
}
}
@media (max-width: 767px) {
.navbar-default .navbar-nav .open .dropdown-menu>li>a {
color: black !important;
}
}
================================================
FILE: assets/style.css
================================================
@import url('https://fonts.googleapis.com/css?family=Lora:400,400i&display=swap');
/*------------NAVBAR-------------*/
.navbar-default {
background-color: #22222270;
border: none;
}
/* Whole document: */
body {
font-size: 20px;
}
.title{
display: none;
}
h1 {
padding-top: 2em !important;
margin-top: -1em !important;
}
p {
margin: 1em 0 1em 0 !important;
}
ul {
margin-bottom: 1em;
}
.main-container {
max-width: 1326px !
gitextract_se6ek936/
├── .gitignore
├── .nojekyll
├── 00_narrative.Rmd
├── 01_introToR.Rmd
├── 02_bellCurve.Rmd
├── 03_mean.Rmd
├── 04_variance.Rmd
├── 05_correlation.Rmd
├── 06_standardError.Rmd
├── 07_ttest.Rmd
├── Giraffe.Rproj
├── README.md
├── _bookdown_files/
│ ├── 02_bellCurve_cache/
│ │ └── html/
│ │ ├── __packages
│ │ ├── unnamed-chunk-10_f069c4cb7b2a37e345b54d932ab0c3fd.RData
│ │ ├── unnamed-chunk-10_f069c4cb7b2a37e345b54d932ab0c3fd.rdb
│ │ └── unnamed-chunk-10_f069c4cb7b2a37e345b54d932ab0c3fd.rdx
│ ├── 03_mean_cache/
│ │ └── html/
│ │ ├── __packages
│ │ ├── unnamed-chunk-3_10110fd506496d65a16c9f8d338a2668.RData
│ │ ├── unnamed-chunk-3_10110fd506496d65a16c9f8d338a2668.rdb
│ │ ├── unnamed-chunk-3_10110fd506496d65a16c9f8d338a2668.rdx
│ │ ├── unnamed-chunk-8_38b4ab5145979124668b8637fc2e735d.RData
│ │ ├── unnamed-chunk-8_38b4ab5145979124668b8637fc2e735d.rdb
│ │ └── unnamed-chunk-8_38b4ab5145979124668b8637fc2e735d.rdx
│ ├── 04_variance_cache/
│ │ └── html/
│ │ ├── __packages
│ │ ├── unnamed-chunk-1_ada9cb0ce5c4061a0c5ff1623d5f7f89.RData
│ │ ├── unnamed-chunk-1_ada9cb0ce5c4061a0c5ff1623d5f7f89.rdb
│ │ ├── unnamed-chunk-1_ada9cb0ce5c4061a0c5ff1623d5f7f89.rdx
│ │ ├── unnamed-chunk-6_73229a47f445dee6916147a2314d2a2e.RData
│ │ ├── unnamed-chunk-6_73229a47f445dee6916147a2314d2a2e.rdb
│ │ ├── unnamed-chunk-6_73229a47f445dee6916147a2314d2a2e.rdx
│ │ ├── unnamed-chunk-7_d6e227b9f890babb0c3fafa99f25cb53.RData
│ │ ├── unnamed-chunk-7_d6e227b9f890babb0c3fafa99f25cb53.rdb
│ │ ├── unnamed-chunk-7_d6e227b9f890babb0c3fafa99f25cb53.rdx
│ │ ├── unnamed-chunk-8_2be90eac193e2686e087f7209c6f8f82.RData
│ │ ├── unnamed-chunk-8_2be90eac193e2686e087f7209c6f8f82.rdb
│ │ └── unnamed-chunk-8_2be90eac193e2686e087f7209c6f8f82.rdx
│ ├── 05_correlation_cache/
│ │ └── html/
│ │ ├── __packages
│ │ ├── unnamed-chunk-3_1eebcf2610d87e4af3a12ab993fa91e9.RData
│ │ ├── unnamed-chunk-3_1eebcf2610d87e4af3a12ab993fa91e9.rdb
│ │ ├── unnamed-chunk-3_1eebcf2610d87e4af3a12ab993fa91e9.rdx
│ │ ├── unnamed-chunk-4_b717a42ace8f3afc385b7ca2d3e25357.RData
│ │ ├── unnamed-chunk-4_b717a42ace8f3afc385b7ca2d3e25357.rdb
│ │ └── unnamed-chunk-4_b717a42ace8f3afc385b7ca2d3e25357.rdx
│ └── 06_standardError_cache/
│ └── html/
│ ├── __packages
│ ├── unnamed-chunk-3_9cfde893520860c5b44c8622f1d3d7ab.RData
│ ├── unnamed-chunk-3_9cfde893520860c5b44c8622f1d3d7ab.rdb
│ ├── unnamed-chunk-3_9cfde893520860c5b44c8622f1d3d7ab.rdx
│ ├── unnamed-chunk-4_e5136729fcb5781a823ef76d4423bd9b.RData
│ ├── unnamed-chunk-4_e5136729fcb5781a823ef76d4423bd9b.rdb
│ ├── unnamed-chunk-4_e5136729fcb5781a823ef76d4423bd9b.rdx
│ ├── unnamed-chunk-5_6ba20d5ad665975d5a2f7608fb786bf6.RData
│ ├── unnamed-chunk-5_6ba20d5ad665975d5a2f7608fb786bf6.rdb
│ ├── unnamed-chunk-5_6ba20d5ad665975d5a2f7608fb786bf6.rdx
│ ├── unnamed-chunk-6_34d73e069af7b7720f4b88e28e921cb3.RData
│ ├── unnamed-chunk-6_34d73e069af7b7720f4b88e28e921cb3.rdb
│ └── unnamed-chunk-6_34d73e069af7b7720f4b88e28e921cb3.rdx
├── _site.yml
├── aboutTheAuthors.Rmd
├── assets/
│ ├── 00_narrative.html
│ ├── 01_introToR_image.html
│ ├── 02_bellCurve_image.html
│ ├── 03_mean_image.html
│ ├── 04_variance_image.html
│ ├── 05_correlation_image.html
│ ├── 06_standardError_image.html
│ ├── 07_tTest_image.html
│ ├── Landing_page.html
│ ├── aboutTheAuthors_image.html
│ ├── button.css
│ ├── foot.html
│ ├── landing.css
│ ├── landing_styles.css
│ ├── mobile_landing.css
│ ├── mobile_narrative.css
│ └── style.css
├── docs/
│ ├── 00_narrative.html
│ ├── 00_narrative.utf8.html
│ ├── 01_introToR.html
│ ├── 02_bellCurve.html
│ ├── 03_mean.html
│ ├── 04_variance.html
│ ├── 05_correlation.html
│ ├── 06_standardError.html
│ ├── 07_ttest.html
│ ├── aboutTheAuthors.html
│ ├── assets/
│ │ ├── 00_narrative.html
│ │ ├── 01_introToR_image.html
│ │ ├── 02_bellCurve_image.html
│ │ ├── 03_mean_image.html
│ │ ├── 04_variance_image.html
│ │ ├── 05_correlation_image.html
│ │ ├── 06_standardError_image.html
│ │ ├── 07_tTest_image.html
│ │ ├── Landing_page.html
│ │ ├── aboutTheAuthors_image.html
│ │ ├── button.css
│ │ ├── foot.html
│ │ ├── landing.css
│ │ ├── landing_styles.css
│ │ ├── mobile_landing.css
│ │ ├── mobile_narrative.css
│ │ └── style.css
│ ├── images/
│ │ ├── 02_bellCurve/
│ │ │ ├── lib/
│ │ │ │ ├── crosstalk-1.0.0/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── crosstalk.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ ├── crosstalk-1.2.0/
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── crosstalk.js
│ │ │ │ │ └── scss/
│ │ │ │ │ └── crosstalk.scss
│ │ │ │ ├── htmlwidgets-1.3/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── htmlwidgets-1.5.1/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── jquery-1.11.3/
│ │ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ │ └── jquery.js
│ │ │ │ ├── jquery-3.5.1/
│ │ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ │ └── jquery.js
│ │ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-binding-4.9.1/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ │ └── plotly-htmlwidgets.css
│ │ │ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ │ │ └── plotly-htmlwidgets.css
│ │ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ └── two_animated_hist.html
│ │ ├── 03_mean/
│ │ │ ├── Law_of_large_numbers.html
│ │ │ └── lib/
│ │ │ ├── crosstalk-1.0.0/
│ │ │ │ ├── css/
│ │ │ │ │ └── crosstalk.css
│ │ │ │ └── js/
│ │ │ │ └── crosstalk.js
│ │ │ ├── crosstalk-1.2.0/
│ │ │ │ ├── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ └── scss/
│ │ │ │ └── crosstalk.scss
│ │ │ ├── htmlwidgets-1.3/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.1/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── jquery-1.11.3/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── jquery-3.5.1/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.1/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ ├── 04_variance/
│ │ │ ├── lib/
│ │ │ │ ├── crosstalk-1.0.0/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── crosstalk.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ ├── crosstalk-1.2.0/
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── crosstalk.js
│ │ │ │ │ └── scss/
│ │ │ │ │ └── crosstalk.scss
│ │ │ │ ├── htmlwidgets-1.3/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── htmlwidgets-1.5.1/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ │ └── htmlwidgets.js
│ │ │ │ ├── jquery-1.11.3/
│ │ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ │ └── jquery.js
│ │ │ │ ├── jquery-3.5.1/
│ │ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ │ └── jquery.js
│ │ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-binding-4.9.1/
│ │ │ │ │ └── plotly.js
│ │ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ │ └── plotly-htmlwidgets.css
│ │ │ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ │ │ └── plotly-htmlwidgets.css
│ │ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ ├── mega_dots.html
│ │ │ └── static_bar.html
│ │ └── 05_correlation/
│ │ ├── cov_vs_sxsy.html
│ │ ├── factory.webm
│ │ ├── lib/
│ │ │ ├── crosstalk-1.0.0/
│ │ │ │ ├── css/
│ │ │ │ │ └── crosstalk.css
│ │ │ │ └── js/
│ │ │ │ └── crosstalk.js
│ │ │ ├── crosstalk-1.2.0/
│ │ │ │ ├── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ └── scss/
│ │ │ │ └── crosstalk.scss
│ │ │ ├── htmlwidgets-1.3/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── jquery-1.11.3/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── jquery-3.5.1/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ └── lines.webm
│ ├── index.html
│ ├── lib/
│ │ ├── crosstalk-1.0.0/
│ │ │ ├── css/
│ │ │ │ └── crosstalk.css
│ │ │ └── js/
│ │ │ └── crosstalk.js
│ │ ├── htmlwidgets-1.2/
│ │ │ └── htmlwidgets.js
│ │ ├── htmlwidgets-1.3/
│ │ │ └── htmlwidgets.js
│ │ ├── jquery-1.11.3/
│ │ │ ├── jquery-AUTHORS.txt
│ │ │ └── jquery.js
│ │ ├── plotly-binding-4.8.0/
│ │ │ └── plotly.js
│ │ ├── plotly-binding-4.9.0/
│ │ │ └── plotly.js
│ │ ├── plotly-htmlwidgets-css-1.39.2/
│ │ │ └── plotly-htmlwidgets.css
│ │ └── plotly-htmlwidgets-css-1.46.1/
│ │ └── plotly-htmlwidgets.css
│ └── site_libs/
│ ├── bootstrap-3.3.5/
│ │ ├── css/
│ │ │ ├── bootstrap-theme.css
│ │ │ └── bootstrap.css
│ │ └── js/
│ │ ├── bootstrap.js
│ │ └── npm.js
│ ├── crosstalk-1.2.0/
│ │ ├── js/
│ │ │ └── crosstalk.js
│ │ └── scss/
│ │ └── crosstalk.scss
│ ├── font-awesome-5.1.0/
│ │ └── css/
│ │ ├── all.css
│ │ └── v4-shims.css
│ ├── highlightjs-9.12.0/
│ │ ├── default.css
│ │ ├── highlight.js
│ │ └── textmate.css
│ ├── htmlwidgets-1.5.4/
│ │ └── htmlwidgets.js
│ ├── jquery-3.6.0/
│ │ └── jquery-3.6.0.js
│ ├── jqueryui-1.11.4/
│ │ ├── README
│ │ ├── index.html
│ │ ├── jquery-ui.css
│ │ ├── jquery-ui.js
│ │ ├── jquery-ui.structure.css
│ │ └── jquery-ui.theme.css
│ ├── navigation-1.1/
│ │ ├── codefolding.js
│ │ ├── sourceembed.js
│ │ └── tabsets.js
│ ├── plotly-binding-4.10.0/
│ │ └── plotly.js
│ ├── plotly-htmlwidgets-css-2.5.1/
│ │ └── plotly-htmlwidgets.css
│ └── tocify-1.9.1/
│ ├── jquery.tocify.css
│ └── jquery.tocify.js
├── five_points_scatter.R
├── images/
│ ├── 02_bellCurve/
│ │ ├── lib/
│ │ │ ├── crosstalk-1.0.0/
│ │ │ │ ├── css/
│ │ │ │ │ └── crosstalk.css
│ │ │ │ └── js/
│ │ │ │ └── crosstalk.js
│ │ │ ├── crosstalk-1.2.0/
│ │ │ │ ├── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ └── scss/
│ │ │ │ └── crosstalk.scss
│ │ │ ├── htmlwidgets-1.3/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.1/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── jquery-1.11.3/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── jquery-3.5.1/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.1/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ └── two_animated_hist.html
│ ├── 03_mean/
│ │ ├── Law_of_large_numbers.html
│ │ └── lib/
│ │ ├── crosstalk-1.0.0/
│ │ │ ├── css/
│ │ │ │ └── crosstalk.css
│ │ │ └── js/
│ │ │ └── crosstalk.js
│ │ ├── crosstalk-1.2.0/
│ │ │ ├── js/
│ │ │ │ └── crosstalk.js
│ │ │ └── scss/
│ │ │ └── crosstalk.scss
│ │ ├── htmlwidgets-1.3/
│ │ │ └── htmlwidgets.js
│ │ ├── htmlwidgets-1.5.1/
│ │ │ └── htmlwidgets.js
│ │ ├── htmlwidgets-1.5.4/
│ │ │ └── htmlwidgets.js
│ │ ├── jquery-1.11.3/
│ │ │ ├── jquery-AUTHORS.txt
│ │ │ └── jquery.js
│ │ ├── jquery-3.5.1/
│ │ │ ├── jquery-AUTHORS.txt
│ │ │ └── jquery.js
│ │ ├── plotly-binding-4.10.0/
│ │ │ └── plotly.js
│ │ ├── plotly-binding-4.9.0/
│ │ │ └── plotly.js
│ │ ├── plotly-binding-4.9.1/
│ │ │ └── plotly.js
│ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ └── plotly-htmlwidgets.css
│ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ └── plotly-htmlwidgets.css
│ ├── 04_variance/
│ │ ├── lib/
│ │ │ ├── crosstalk-1.0.0/
│ │ │ │ ├── css/
│ │ │ │ │ └── crosstalk.css
│ │ │ │ └── js/
│ │ │ │ └── crosstalk.js
│ │ │ ├── crosstalk-1.2.0/
│ │ │ │ ├── js/
│ │ │ │ │ └── crosstalk.js
│ │ │ │ └── scss/
│ │ │ │ └── crosstalk.scss
│ │ │ ├── htmlwidgets-1.3/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.1/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── htmlwidgets-1.5.4/
│ │ │ │ └── htmlwidgets.js
│ │ │ ├── jquery-1.11.3/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── jquery-3.5.1/
│ │ │ │ ├── jquery-AUTHORS.txt
│ │ │ │ └── jquery.js
│ │ │ ├── plotly-binding-4.10.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.0/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-binding-4.9.1/
│ │ │ │ └── plotly.js
│ │ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ ├── plotly-htmlwidgets-css-1.49.4/
│ │ │ │ └── plotly-htmlwidgets.css
│ │ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ ├── mega_dots.html
│ │ └── static_bar.html
│ └── 05_correlation/
│ ├── cov_vs_sxsy.html
│ ├── factory.webm
│ ├── lib/
│ │ ├── crosstalk-1.0.0/
│ │ │ ├── css/
│ │ │ │ └── crosstalk.css
│ │ │ └── js/
│ │ │ └── crosstalk.js
│ │ ├── crosstalk-1.2.0/
│ │ │ ├── js/
│ │ │ │ └── crosstalk.js
│ │ │ └── scss/
│ │ │ └── crosstalk.scss
│ │ ├── htmlwidgets-1.3/
│ │ │ └── htmlwidgets.js
│ │ ├── htmlwidgets-1.5.4/
│ │ │ └── htmlwidgets.js
│ │ ├── jquery-1.11.3/
│ │ │ ├── jquery-AUTHORS.txt
│ │ │ └── jquery.js
│ │ ├── jquery-3.5.1/
│ │ │ ├── jquery-AUTHORS.txt
│ │ │ └── jquery.js
│ │ ├── plotly-binding-4.10.0/
│ │ │ └── plotly.js
│ │ ├── plotly-binding-4.9.0/
│ │ │ └── plotly.js
│ │ ├── plotly-htmlwidgets-css-1.46.1/
│ │ │ └── plotly-htmlwidgets.css
│ │ └── plotly-htmlwidgets-css-2.5.1/
│ │ └── plotly-htmlwidgets.css
│ └── lines.webm
├── index.Rmd
├── lib/
│ ├── crosstalk-1.0.0/
│ │ ├── css/
│ │ │ └── crosstalk.css
│ │ └── js/
│ │ └── crosstalk.js
│ ├── htmlwidgets-1.2/
│ │ └── htmlwidgets.js
│ ├── htmlwidgets-1.3/
│ │ └── htmlwidgets.js
│ ├── jquery-1.11.3/
│ │ ├── jquery-AUTHORS.txt
│ │ └── jquery.js
│ ├── plotly-binding-4.8.0/
│ │ └── plotly.js
│ ├── plotly-binding-4.9.0/
│ │ └── plotly.js
│ ├── plotly-htmlwidgets-css-1.39.2/
│ │ └── plotly-htmlwidgets.css
│ └── plotly-htmlwidgets-css-1.46.1/
│ └── plotly-htmlwidgets.css
└── renv/
├── .gitignore
├── activate.R
└── settings.dcf
Showing preview only (286K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3420 symbols across 96 files)
FILE: docs/images/02_bellCurve/lib/crosstalk-1.0.0/js/crosstalk.js
function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 359) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 363) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 365) | function naturalComparator(a, b) {
function FilterSet (line 380) | function FilterSet() {
function defineProperties (line 490) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 500) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 502) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 509) | function group(groupName) {
function Group (line 526) | function Group(name) {
function _interopRequireDefault (line 583) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 587) | function var_(name) {
function has (line 591) | function has(name) {
function register (line 634) | function register(reg) {
function bind (line 645) | function bind() {
function $escape (line 655) | function $escape(val) {
function bindEl (line 659) | function bindEl(el) {
function bindInstance (line 669) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 720) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 784) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 897) | function getValue() {
function padZeros (line 977) | function padZeros(n, digits) {
function formatDateUTC (line 986) | function formatDateUTC(date) {
function defineProperties (line 1004) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1018) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1020) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1022) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1043) | function SelectionHandle() {
function defineProperties (line 1248) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1257) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1259) | function extend(target) {
function checkSorted (line 1277) | function checkSorted(list) {
function diffSortedLists (line 1285) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1319) | function dataframeToD3(df) {
function SubscriptionTracker (line 1351) | function SubscriptionTracker(emitter) {
function defineProperties (line 1400) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1406) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1408) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1411) | function Var(group, name, /*optional*/value) {
FILE: docs/images/02_bellCurve/lib/crosstalk-1.2.0/js/crosstalk.js
function e (line 1) | function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof requi...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 363) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 367) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 369) | function naturalComparator(a, b) {
function FilterSet (line 384) | function FilterSet() {
function defineProperties (line 494) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 504) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 506) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 513) | function group(groupName) {
function Group (line 530) | function Group(name) {
function _interopRequireDefault (line 587) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 591) | function var_(name) {
function has (line 595) | function has(name) {
function register (line 640) | function register(reg) {
function bind (line 651) | function bind() {
function $escape (line 661) | function $escape(val) {
function bindEl (line 665) | function bindEl(el) {
function bindInstance (line 675) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 724) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 786) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 903) | function getValue() {
function padZeros (line 983) | function padZeros(n, digits) {
function formatDateUTC (line 992) | function formatDateUTC(date) {
function defineProperties (line 1010) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1024) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1026) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1028) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1047) | function SelectionHandle() {
function defineProperties (line 1251) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1260) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1262) | function extend(target) {
function checkSorted (line 1280) | function checkSorted(list) {
function diffSortedLists (line 1288) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1322) | function dataframeToD3(df) {
function SubscriptionTracker (line 1354) | function SubscriptionTracker(emitter) {
function defineProperties (line 1403) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1409) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1411) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1414) | function Var(group, name, /*optional*/value) {
FILE: docs/images/02_bellCurve/lib/htmlwidgets-1.3/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function initSizing (line 245) | function initSizing(el) {
function scheduleStaticRender (line 536) | function scheduleStaticRender() {
function splitWithEscape (line 702) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 795) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 814) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/images/02_bellCurve/lib/htmlwidgets-1.5.1/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/images/02_bellCurve/lib/htmlwidgets-1.5.4/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/images/02_bellCurve/lib/jquery-1.11.3/jquery.js
function isArraylike (line 571) | function isArraylike( obj ) {
function Sizzle (line 788) | function Sizzle( selector, context, results, seed ) {
function createCache (line 902) | function createCache() {
function markFunction (line 920) | function markFunction( fn ) {
function assert (line 929) | function assert( fn ) {
function addHandle (line 951) | function addHandle( attrs, handler ) {
function siblingCheck (line 966) | function siblingCheck( a, b ) {
function createInputPseudo (line 993) | function createInputPseudo( type ) {
function createButtonPseudo (line 1004) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 1015) | function createPositionalPseudo( fn ) {
function testContext (line 1038) | function testContext( context ) {
function setFilters (line 2047) | function setFilters() {}
function toSelector (line 2118) | function toSelector( tokens ) {
function addCombinator (line 2128) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2181) | function elementMatcher( matchers ) {
function multipleContexts (line 2195) | function multipleContexts( selector, contexts, results ) {
function condense (line 2204) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2225) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2318) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2376) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function winnow (line 2672) | function winnow( elements, qualifier, not ) {
function sibling (line 3002) | function sibling( cur, dir ) {
function createOptions (line 3085) | function createOptions( options ) {
function detach (line 3485) | function detach() {
function completed (line 3499) | function completed() {
function dataAttr (line 3662) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 3694) | function isEmptyDataObject( obj ) {
function internalData (line 3710) | function internalData( elem, name, data, pvt /* Internal Use Only */ ) {
function internalRemoveData (line 3799) | function internalRemoveData( elem, name, pvt ) {
function returnTrue (line 4284) | function returnTrue() {
function returnFalse (line 4288) | function returnFalse() {
function safeActiveElement (line 4292) | function safeActiveElement() {
function createSafeFragment (line 5301) | function createSafeFragment( document ) {
function getAll (line 5353) | function getAll( context, tag ) {
function fixDefaultChecked (line 5376) | function fixDefaultChecked( elem ) {
function manipulationTarget (line 5384) | function manipulationTarget( elem, content ) {
function disableScript (line 5394) | function disableScript( elem ) {
function restoreScript (line 5398) | function restoreScript( elem ) {
function setGlobalEval (line 5409) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 5417) | function cloneCopyEvent( src, dest ) {
function fixCloneNodeIssues (line 5445) | function fixCloneNodeIssues( src, dest ) {
function actualDisplay (line 6036) | function actualDisplay( name, doc ) {
function defaultDisplay (line 6058) | function defaultDisplay( nodeName ) {
function addGetHookIf (line 6257) | function addGetHookIf( conditionFn, hookFn ) {
function computeStyleTests (line 6351) | function computeStyleTests() {
function vendorPropName (line 6471) | function vendorPropName( style, name ) {
function showHide (line 6493) | function showHide( elements, show ) {
function setPositiveNumber (line 6544) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 6552) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 6591) | function getWidthOrHeight( elem, name, extra ) {
function Tween (line 6930) | function Tween( elem, options, prop, end, easing ) {
function createFxNow (line 7099) | function createFxNow() {
function genFx (line 7107) | function genFx( type, includeWidth ) {
function createTween (line 7127) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7141) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7283) | function propFilter( props, specialEasing ) {
function Animation (line 7320) | function Animation( elem, properties, options ) {
function addToPrefiltersOrTransports (line 8634) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 8666) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 8693) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 8713) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8768) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9228) | function done( status, nativeStatusText, responses, headers ) {
function buildParams (line 9473) | function buildParams( prefix, obj, traditional, add ) {
function createStandardXHR (line 9746) | function createStandardXHR() {
function createActiveXHR (line 9752) | function createActiveXHR() {
function getWindow (line 10057) | function getWindow( elem ) {
FILE: docs/images/02_bellCurve/lib/jquery-3.5.1/jquery.js
function DOMEval (line 103) | function DOMEval( code, node, doc ) {
function toType (line 133) | function toType( obj ) {
function isArrayLike (line 503) | function isArrayLike( obj ) {
function Sizzle (line 755) | function Sizzle( selector, context, results, seed ) {
function createCache (line 903) | function createCache() {
function markFunction (line 923) | function markFunction( fn ) {
function assert (line 932) | function assert( fn ) {
function addHandle (line 956) | function addHandle( attrs, handler ) {
function siblingCheck (line 971) | function siblingCheck( a, b ) {
function createInputPseudo (line 997) | function createInputPseudo( type ) {
function createButtonPseudo (line 1008) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 1019) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 1075) | function createPositionalPseudo( fn ) {
function testContext (line 1098) | function testContext( context ) {
function setFilters (line 2309) | function setFilters() {}
function toSelector (line 2383) | function toSelector( tokens ) {
function addCombinator (line 2393) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2460) | function elementMatcher( matchers ) {
function multipleContexts (line 2474) | function multipleContexts( selector, contexts, results ) {
function condense (line 2483) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2504) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2604) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2667) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function nodeName (line 3025) | function nodeName( elem, name ) {
function winnow (line 3035) | function winnow( elements, qualifier, not ) {
function sibling (line 3330) | function sibling( cur, dir ) {
function createOptions (line 3423) | function createOptions( options ) {
function Identity (line 3648) | function Identity( v ) {
function Thrower (line 3651) | function Thrower( ex ) {
function adoptValue (line 3655) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 3748) | function resolve( depth, deferred, handler, special ) {
function completed (line 4113) | function completed() {
function fcamelCase (line 4208) | function fcamelCase( _all, letter ) {
function camelCase (line 4215) | function camelCase( string ) {
function Data (line 4232) | function Data() {
function getData (line 4401) | function getData( data ) {
function dataAttr (line 4426) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4738) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 4806) | function getDefaultDisplay( elem ) {
function showHide (line 4829) | function showHide( elements, show ) {
function getAll (line 4961) | function getAll( context, tag ) {
function setGlobalEval (line 4986) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 5002) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 5097) | function returnTrue() {
function returnFalse (line 5101) | function returnFalse() {
function expectSync (line 5111) | function expectSync( elem, type ) {
function safeActiveElement (line 5118) | function safeActiveElement() {
function on (line 5124) | function on( elem, types, selector, data, fn, one ) {
function leverageNative (line 5612) | function leverageNative( el, type, expectSync ) {
function manipulationTarget (line 5976) | function manipulationTarget( elem, content ) {
function disableScript (line 5987) | function disableScript( elem ) {
function restoreScript (line 5991) | function restoreScript( elem ) {
function cloneCopyEvent (line 6001) | function cloneCopyEvent( src, dest ) {
function fixInput (line 6034) | function fixInput( src, dest ) {
function domManip (line 6047) | function domManip( collection, args, callback, ignored ) {
function remove (line 6139) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 6453) | function computeStyleTests() {
function roundPixelMeasures (line 6497) | function roundPixelMeasures( measure ) {
function curCSS (line 6571) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 6624) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6649) | function vendorPropName( name ) {
function finalPropName (line 6664) | function finalPropName( name ) {
function setPositiveNumber (line 6690) | function setPositiveNumber( _elem, value, subtract ) {
function boxModelAdjustment (line 6702) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 6770) | function getWidthOrHeight( elem, dimension, extra ) {
function Tween (line 7146) | function Tween( elem, options, prop, end, easing ) {
function schedule (line 7269) | function schedule() {
function createFxNow (line 7282) | function createFxNow() {
function genFx (line 7290) | function genFx( type, includeWidth ) {
function createTween (line 7310) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7324) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7496) | function propFilter( props, specialEasing ) {
function Animation (line 7533) | function Animation( elem, properties, options ) {
function stripAndCollapse (line 8248) | function stripAndCollapse( value ) {
function getClass (line 8254) | function getClass( elem ) {
function classesToArray (line 8258) | function classesToArray( value ) {
function buildParams (line 8885) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 9039) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 9073) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 9102) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 9122) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 9180) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9696) | function done( status, nativeStatusText, responses, headers ) {
FILE: docs/images/02_bellCurve/lib/plotly-binding-4.10.0/plotly.js
function eventDataWithKey (line 225) | function eventDataWithKey(eventData) {
function pointsToKeys (line 369) | function pointsToKeys(points) {
function TraceManager (line 567) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 831) | function getMatchFunc(trace) {
function findMatches (line 837) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 848) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 858) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 872) | function isPlainObject(obj) {
function subsetArrayAttrs (line 879) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 903) | function subsetArray(arr, indices) {
function removeBrush (line 912) | function removeBrush(el) {
function debounce (line 926) | function debounce(func, wait, immediate) {
FILE: docs/images/02_bellCurve/lib/plotly-binding-4.9.0/plotly.js
function eventDataWithKey (line 221) | function eventDataWithKey(eventData) {
function pointsToKeys (line 361) | function pointsToKeys(points) {
function TraceManager (line 559) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 823) | function getMatchFunc(trace) {
function findMatches (line 829) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 840) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 850) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 864) | function isPlainObject(obj) {
function subsetArrayAttrs (line 871) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 895) | function subsetArray(arr, indices) {
function removeBrush (line 904) | function removeBrush(el) {
function debounce (line 918) | function debounce(func, wait, immediate) {
FILE: docs/images/02_bellCurve/lib/plotly-binding-4.9.1/plotly.js
function eventDataWithKey (line 221) | function eventDataWithKey(eventData) {
function pointsToKeys (line 365) | function pointsToKeys(points) {
function TraceManager (line 563) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 827) | function getMatchFunc(trace) {
function findMatches (line 833) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 844) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 854) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 868) | function isPlainObject(obj) {
function subsetArrayAttrs (line 875) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 899) | function subsetArray(arr, indices) {
function removeBrush (line 908) | function removeBrush(el) {
function debounce (line 922) | function debounce(func, wait, immediate) {
FILE: docs/images/03_mean/lib/crosstalk-1.0.0/js/crosstalk.js
function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 359) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 363) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 365) | function naturalComparator(a, b) {
function FilterSet (line 380) | function FilterSet() {
function defineProperties (line 490) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 500) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 502) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 509) | function group(groupName) {
function Group (line 526) | function Group(name) {
function _interopRequireDefault (line 583) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 587) | function var_(name) {
function has (line 591) | function has(name) {
function register (line 634) | function register(reg) {
function bind (line 645) | function bind() {
function $escape (line 655) | function $escape(val) {
function bindEl (line 659) | function bindEl(el) {
function bindInstance (line 669) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 720) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 784) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 897) | function getValue() {
function padZeros (line 977) | function padZeros(n, digits) {
function formatDateUTC (line 986) | function formatDateUTC(date) {
function defineProperties (line 1004) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1018) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1020) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1022) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1043) | function SelectionHandle() {
function defineProperties (line 1248) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1257) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1259) | function extend(target) {
function checkSorted (line 1277) | function checkSorted(list) {
function diffSortedLists (line 1285) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1319) | function dataframeToD3(df) {
function SubscriptionTracker (line 1351) | function SubscriptionTracker(emitter) {
function defineProperties (line 1400) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1406) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1408) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1411) | function Var(group, name, /*optional*/value) {
FILE: docs/images/03_mean/lib/crosstalk-1.2.0/js/crosstalk.js
function e (line 1) | function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof requi...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 363) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 367) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 369) | function naturalComparator(a, b) {
function FilterSet (line 384) | function FilterSet() {
function defineProperties (line 494) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 504) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 506) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 513) | function group(groupName) {
function Group (line 530) | function Group(name) {
function _interopRequireDefault (line 587) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 591) | function var_(name) {
function has (line 595) | function has(name) {
function register (line 640) | function register(reg) {
function bind (line 651) | function bind() {
function $escape (line 661) | function $escape(val) {
function bindEl (line 665) | function bindEl(el) {
function bindInstance (line 675) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 724) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 786) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 903) | function getValue() {
function padZeros (line 983) | function padZeros(n, digits) {
function formatDateUTC (line 992) | function formatDateUTC(date) {
function defineProperties (line 1010) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1024) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1026) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1028) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1047) | function SelectionHandle() {
function defineProperties (line 1251) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1260) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1262) | function extend(target) {
function checkSorted (line 1280) | function checkSorted(list) {
function diffSortedLists (line 1288) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1322) | function dataframeToD3(df) {
function SubscriptionTracker (line 1354) | function SubscriptionTracker(emitter) {
function defineProperties (line 1403) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1409) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1411) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1414) | function Var(group, name, /*optional*/value) {
FILE: docs/images/03_mean/lib/htmlwidgets-1.3/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function initSizing (line 245) | function initSizing(el) {
function scheduleStaticRender (line 536) | function scheduleStaticRender() {
function splitWithEscape (line 702) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 795) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 814) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/images/03_mean/lib/htmlwidgets-1.5.1/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/images/03_mean/lib/htmlwidgets-1.5.4/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/images/03_mean/lib/jquery-1.11.3/jquery.js
function isArraylike (line 571) | function isArraylike( obj ) {
function Sizzle (line 788) | function Sizzle( selector, context, results, seed ) {
function createCache (line 902) | function createCache() {
function markFunction (line 920) | function markFunction( fn ) {
function assert (line 929) | function assert( fn ) {
function addHandle (line 951) | function addHandle( attrs, handler ) {
function siblingCheck (line 966) | function siblingCheck( a, b ) {
function createInputPseudo (line 993) | function createInputPseudo( type ) {
function createButtonPseudo (line 1004) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 1015) | function createPositionalPseudo( fn ) {
function testContext (line 1038) | function testContext( context ) {
function setFilters (line 2047) | function setFilters() {}
function toSelector (line 2118) | function toSelector( tokens ) {
function addCombinator (line 2128) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2181) | function elementMatcher( matchers ) {
function multipleContexts (line 2195) | function multipleContexts( selector, contexts, results ) {
function condense (line 2204) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2225) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2318) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2376) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function winnow (line 2672) | function winnow( elements, qualifier, not ) {
function sibling (line 3002) | function sibling( cur, dir ) {
function createOptions (line 3085) | function createOptions( options ) {
function detach (line 3485) | function detach() {
function completed (line 3499) | function completed() {
function dataAttr (line 3662) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 3694) | function isEmptyDataObject( obj ) {
function internalData (line 3710) | function internalData( elem, name, data, pvt /* Internal Use Only */ ) {
function internalRemoveData (line 3799) | function internalRemoveData( elem, name, pvt ) {
function returnTrue (line 4284) | function returnTrue() {
function returnFalse (line 4288) | function returnFalse() {
function safeActiveElement (line 4292) | function safeActiveElement() {
function createSafeFragment (line 5301) | function createSafeFragment( document ) {
function getAll (line 5353) | function getAll( context, tag ) {
function fixDefaultChecked (line 5376) | function fixDefaultChecked( elem ) {
function manipulationTarget (line 5384) | function manipulationTarget( elem, content ) {
function disableScript (line 5394) | function disableScript( elem ) {
function restoreScript (line 5398) | function restoreScript( elem ) {
function setGlobalEval (line 5409) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 5417) | function cloneCopyEvent( src, dest ) {
function fixCloneNodeIssues (line 5445) | function fixCloneNodeIssues( src, dest ) {
function actualDisplay (line 6036) | function actualDisplay( name, doc ) {
function defaultDisplay (line 6058) | function defaultDisplay( nodeName ) {
function addGetHookIf (line 6257) | function addGetHookIf( conditionFn, hookFn ) {
function computeStyleTests (line 6351) | function computeStyleTests() {
function vendorPropName (line 6471) | function vendorPropName( style, name ) {
function showHide (line 6493) | function showHide( elements, show ) {
function setPositiveNumber (line 6544) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 6552) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 6591) | function getWidthOrHeight( elem, name, extra ) {
function Tween (line 6930) | function Tween( elem, options, prop, end, easing ) {
function createFxNow (line 7099) | function createFxNow() {
function genFx (line 7107) | function genFx( type, includeWidth ) {
function createTween (line 7127) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7141) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7283) | function propFilter( props, specialEasing ) {
function Animation (line 7320) | function Animation( elem, properties, options ) {
function addToPrefiltersOrTransports (line 8634) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 8666) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 8693) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 8713) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8768) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9228) | function done( status, nativeStatusText, responses, headers ) {
function buildParams (line 9473) | function buildParams( prefix, obj, traditional, add ) {
function createStandardXHR (line 9746) | function createStandardXHR() {
function createActiveXHR (line 9752) | function createActiveXHR() {
function getWindow (line 10057) | function getWindow( elem ) {
FILE: docs/images/03_mean/lib/jquery-3.5.1/jquery.js
function DOMEval (line 103) | function DOMEval( code, node, doc ) {
function toType (line 133) | function toType( obj ) {
function isArrayLike (line 503) | function isArrayLike( obj ) {
function Sizzle (line 755) | function Sizzle( selector, context, results, seed ) {
function createCache (line 903) | function createCache() {
function markFunction (line 923) | function markFunction( fn ) {
function assert (line 932) | function assert( fn ) {
function addHandle (line 956) | function addHandle( attrs, handler ) {
function siblingCheck (line 971) | function siblingCheck( a, b ) {
function createInputPseudo (line 997) | function createInputPseudo( type ) {
function createButtonPseudo (line 1008) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 1019) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 1075) | function createPositionalPseudo( fn ) {
function testContext (line 1098) | function testContext( context ) {
function setFilters (line 2309) | function setFilters() {}
function toSelector (line 2383) | function toSelector( tokens ) {
function addCombinator (line 2393) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2460) | function elementMatcher( matchers ) {
function multipleContexts (line 2474) | function multipleContexts( selector, contexts, results ) {
function condense (line 2483) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2504) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2604) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2667) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function nodeName (line 3025) | function nodeName( elem, name ) {
function winnow (line 3035) | function winnow( elements, qualifier, not ) {
function sibling (line 3330) | function sibling( cur, dir ) {
function createOptions (line 3423) | function createOptions( options ) {
function Identity (line 3648) | function Identity( v ) {
function Thrower (line 3651) | function Thrower( ex ) {
function adoptValue (line 3655) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 3748) | function resolve( depth, deferred, handler, special ) {
function completed (line 4113) | function completed() {
function fcamelCase (line 4208) | function fcamelCase( _all, letter ) {
function camelCase (line 4215) | function camelCase( string ) {
function Data (line 4232) | function Data() {
function getData (line 4401) | function getData( data ) {
function dataAttr (line 4426) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4738) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 4806) | function getDefaultDisplay( elem ) {
function showHide (line 4829) | function showHide( elements, show ) {
function getAll (line 4961) | function getAll( context, tag ) {
function setGlobalEval (line 4986) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 5002) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 5097) | function returnTrue() {
function returnFalse (line 5101) | function returnFalse() {
function expectSync (line 5111) | function expectSync( elem, type ) {
function safeActiveElement (line 5118) | function safeActiveElement() {
function on (line 5124) | function on( elem, types, selector, data, fn, one ) {
function leverageNative (line 5612) | function leverageNative( el, type, expectSync ) {
function manipulationTarget (line 5976) | function manipulationTarget( elem, content ) {
function disableScript (line 5987) | function disableScript( elem ) {
function restoreScript (line 5991) | function restoreScript( elem ) {
function cloneCopyEvent (line 6001) | function cloneCopyEvent( src, dest ) {
function fixInput (line 6034) | function fixInput( src, dest ) {
function domManip (line 6047) | function domManip( collection, args, callback, ignored ) {
function remove (line 6139) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 6453) | function computeStyleTests() {
function roundPixelMeasures (line 6497) | function roundPixelMeasures( measure ) {
function curCSS (line 6571) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 6624) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6649) | function vendorPropName( name ) {
function finalPropName (line 6664) | function finalPropName( name ) {
function setPositiveNumber (line 6690) | function setPositiveNumber( _elem, value, subtract ) {
function boxModelAdjustment (line 6702) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 6770) | function getWidthOrHeight( elem, dimension, extra ) {
function Tween (line 7146) | function Tween( elem, options, prop, end, easing ) {
function schedule (line 7269) | function schedule() {
function createFxNow (line 7282) | function createFxNow() {
function genFx (line 7290) | function genFx( type, includeWidth ) {
function createTween (line 7310) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7324) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7496) | function propFilter( props, specialEasing ) {
function Animation (line 7533) | function Animation( elem, properties, options ) {
function stripAndCollapse (line 8248) | function stripAndCollapse( value ) {
function getClass (line 8254) | function getClass( elem ) {
function classesToArray (line 8258) | function classesToArray( value ) {
function buildParams (line 8885) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 9039) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 9073) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 9102) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 9122) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 9180) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9696) | function done( status, nativeStatusText, responses, headers ) {
FILE: docs/images/03_mean/lib/plotly-binding-4.10.0/plotly.js
function eventDataWithKey (line 225) | function eventDataWithKey(eventData) {
function pointsToKeys (line 369) | function pointsToKeys(points) {
function TraceManager (line 567) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 831) | function getMatchFunc(trace) {
function findMatches (line 837) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 848) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 858) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 872) | function isPlainObject(obj) {
function subsetArrayAttrs (line 879) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 903) | function subsetArray(arr, indices) {
function removeBrush (line 912) | function removeBrush(el) {
function debounce (line 926) | function debounce(func, wait, immediate) {
FILE: docs/images/03_mean/lib/plotly-binding-4.9.0/plotly.js
function eventDataWithKey (line 221) | function eventDataWithKey(eventData) {
function pointsToKeys (line 361) | function pointsToKeys(points) {
function TraceManager (line 559) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 823) | function getMatchFunc(trace) {
function findMatches (line 829) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 840) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 850) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 864) | function isPlainObject(obj) {
function subsetArrayAttrs (line 871) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 895) | function subsetArray(arr, indices) {
function removeBrush (line 904) | function removeBrush(el) {
function debounce (line 918) | function debounce(func, wait, immediate) {
FILE: docs/images/03_mean/lib/plotly-binding-4.9.1/plotly.js
function eventDataWithKey (line 221) | function eventDataWithKey(eventData) {
function pointsToKeys (line 365) | function pointsToKeys(points) {
function TraceManager (line 563) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 827) | function getMatchFunc(trace) {
function findMatches (line 833) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 844) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 854) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 868) | function isPlainObject(obj) {
function subsetArrayAttrs (line 875) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 899) | function subsetArray(arr, indices) {
function removeBrush (line 908) | function removeBrush(el) {
function debounce (line 922) | function debounce(func, wait, immediate) {
FILE: docs/images/04_variance/lib/crosstalk-1.0.0/js/crosstalk.js
function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 359) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 363) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 365) | function naturalComparator(a, b) {
function FilterSet (line 380) | function FilterSet() {
function defineProperties (line 490) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 500) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 502) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 509) | function group(groupName) {
function Group (line 526) | function Group(name) {
function _interopRequireDefault (line 583) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 587) | function var_(name) {
function has (line 591) | function has(name) {
function register (line 634) | function register(reg) {
function bind (line 645) | function bind() {
function $escape (line 655) | function $escape(val) {
function bindEl (line 659) | function bindEl(el) {
function bindInstance (line 669) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 720) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 784) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 897) | function getValue() {
function padZeros (line 977) | function padZeros(n, digits) {
function formatDateUTC (line 986) | function formatDateUTC(date) {
function defineProperties (line 1004) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1018) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1020) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1022) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1043) | function SelectionHandle() {
function defineProperties (line 1248) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1257) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1259) | function extend(target) {
function checkSorted (line 1277) | function checkSorted(list) {
function diffSortedLists (line 1285) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1319) | function dataframeToD3(df) {
function SubscriptionTracker (line 1351) | function SubscriptionTracker(emitter) {
function defineProperties (line 1400) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1406) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1408) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1411) | function Var(group, name, /*optional*/value) {
FILE: docs/images/04_variance/lib/crosstalk-1.2.0/js/crosstalk.js
function e (line 1) | function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof requi...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 363) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 367) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 369) | function naturalComparator(a, b) {
function FilterSet (line 384) | function FilterSet() {
function defineProperties (line 494) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 504) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 506) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 513) | function group(groupName) {
function Group (line 530) | function Group(name) {
function _interopRequireDefault (line 587) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 591) | function var_(name) {
function has (line 595) | function has(name) {
function register (line 640) | function register(reg) {
function bind (line 651) | function bind() {
function $escape (line 661) | function $escape(val) {
function bindEl (line 665) | function bindEl(el) {
function bindInstance (line 675) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 724) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 786) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 903) | function getValue() {
function padZeros (line 983) | function padZeros(n, digits) {
function formatDateUTC (line 992) | function formatDateUTC(date) {
function defineProperties (line 1010) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1024) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1026) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1028) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1047) | function SelectionHandle() {
function defineProperties (line 1251) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1260) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1262) | function extend(target) {
function checkSorted (line 1280) | function checkSorted(list) {
function diffSortedLists (line 1288) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1322) | function dataframeToD3(df) {
function SubscriptionTracker (line 1354) | function SubscriptionTracker(emitter) {
function defineProperties (line 1403) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1409) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1411) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1414) | function Var(group, name, /*optional*/value) {
FILE: docs/images/04_variance/lib/htmlwidgets-1.3/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function initSizing (line 245) | function initSizing(el) {
function scheduleStaticRender (line 536) | function scheduleStaticRender() {
function splitWithEscape (line 702) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 795) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 814) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/images/04_variance/lib/htmlwidgets-1.5.1/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/images/04_variance/lib/htmlwidgets-1.5.4/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/images/04_variance/lib/jquery-1.11.3/jquery.js
function isArraylike (line 571) | function isArraylike( obj ) {
function Sizzle (line 788) | function Sizzle( selector, context, results, seed ) {
function createCache (line 902) | function createCache() {
function markFunction (line 920) | function markFunction( fn ) {
function assert (line 929) | function assert( fn ) {
function addHandle (line 951) | function addHandle( attrs, handler ) {
function siblingCheck (line 966) | function siblingCheck( a, b ) {
function createInputPseudo (line 993) | function createInputPseudo( type ) {
function createButtonPseudo (line 1004) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 1015) | function createPositionalPseudo( fn ) {
function testContext (line 1038) | function testContext( context ) {
function setFilters (line 2047) | function setFilters() {}
function toSelector (line 2118) | function toSelector( tokens ) {
function addCombinator (line 2128) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2181) | function elementMatcher( matchers ) {
function multipleContexts (line 2195) | function multipleContexts( selector, contexts, results ) {
function condense (line 2204) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2225) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2318) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2376) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function winnow (line 2672) | function winnow( elements, qualifier, not ) {
function sibling (line 3002) | function sibling( cur, dir ) {
function createOptions (line 3085) | function createOptions( options ) {
function detach (line 3485) | function detach() {
function completed (line 3499) | function completed() {
function dataAttr (line 3662) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 3694) | function isEmptyDataObject( obj ) {
function internalData (line 3710) | function internalData( elem, name, data, pvt /* Internal Use Only */ ) {
function internalRemoveData (line 3799) | function internalRemoveData( elem, name, pvt ) {
function returnTrue (line 4284) | function returnTrue() {
function returnFalse (line 4288) | function returnFalse() {
function safeActiveElement (line 4292) | function safeActiveElement() {
function createSafeFragment (line 5301) | function createSafeFragment( document ) {
function getAll (line 5353) | function getAll( context, tag ) {
function fixDefaultChecked (line 5376) | function fixDefaultChecked( elem ) {
function manipulationTarget (line 5384) | function manipulationTarget( elem, content ) {
function disableScript (line 5394) | function disableScript( elem ) {
function restoreScript (line 5398) | function restoreScript( elem ) {
function setGlobalEval (line 5409) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 5417) | function cloneCopyEvent( src, dest ) {
function fixCloneNodeIssues (line 5445) | function fixCloneNodeIssues( src, dest ) {
function actualDisplay (line 6036) | function actualDisplay( name, doc ) {
function defaultDisplay (line 6058) | function defaultDisplay( nodeName ) {
function addGetHookIf (line 6257) | function addGetHookIf( conditionFn, hookFn ) {
function computeStyleTests (line 6351) | function computeStyleTests() {
function vendorPropName (line 6471) | function vendorPropName( style, name ) {
function showHide (line 6493) | function showHide( elements, show ) {
function setPositiveNumber (line 6544) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 6552) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 6591) | function getWidthOrHeight( elem, name, extra ) {
function Tween (line 6930) | function Tween( elem, options, prop, end, easing ) {
function createFxNow (line 7099) | function createFxNow() {
function genFx (line 7107) | function genFx( type, includeWidth ) {
function createTween (line 7127) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7141) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7283) | function propFilter( props, specialEasing ) {
function Animation (line 7320) | function Animation( elem, properties, options ) {
function addToPrefiltersOrTransports (line 8634) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 8666) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 8693) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 8713) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8768) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9228) | function done( status, nativeStatusText, responses, headers ) {
function buildParams (line 9473) | function buildParams( prefix, obj, traditional, add ) {
function createStandardXHR (line 9746) | function createStandardXHR() {
function createActiveXHR (line 9752) | function createActiveXHR() {
function getWindow (line 10057) | function getWindow( elem ) {
FILE: docs/images/04_variance/lib/jquery-3.5.1/jquery.js
function DOMEval (line 103) | function DOMEval( code, node, doc ) {
function toType (line 133) | function toType( obj ) {
function isArrayLike (line 503) | function isArrayLike( obj ) {
function Sizzle (line 755) | function Sizzle( selector, context, results, seed ) {
function createCache (line 903) | function createCache() {
function markFunction (line 923) | function markFunction( fn ) {
function assert (line 932) | function assert( fn ) {
function addHandle (line 956) | function addHandle( attrs, handler ) {
function siblingCheck (line 971) | function siblingCheck( a, b ) {
function createInputPseudo (line 997) | function createInputPseudo( type ) {
function createButtonPseudo (line 1008) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 1019) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 1075) | function createPositionalPseudo( fn ) {
function testContext (line 1098) | function testContext( context ) {
function setFilters (line 2309) | function setFilters() {}
function toSelector (line 2383) | function toSelector( tokens ) {
function addCombinator (line 2393) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2460) | function elementMatcher( matchers ) {
function multipleContexts (line 2474) | function multipleContexts( selector, contexts, results ) {
function condense (line 2483) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2504) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2604) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2667) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function nodeName (line 3025) | function nodeName( elem, name ) {
function winnow (line 3035) | function winnow( elements, qualifier, not ) {
function sibling (line 3330) | function sibling( cur, dir ) {
function createOptions (line 3423) | function createOptions( options ) {
function Identity (line 3648) | function Identity( v ) {
function Thrower (line 3651) | function Thrower( ex ) {
function adoptValue (line 3655) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 3748) | function resolve( depth, deferred, handler, special ) {
function completed (line 4113) | function completed() {
function fcamelCase (line 4208) | function fcamelCase( _all, letter ) {
function camelCase (line 4215) | function camelCase( string ) {
function Data (line 4232) | function Data() {
function getData (line 4401) | function getData( data ) {
function dataAttr (line 4426) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4738) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 4806) | function getDefaultDisplay( elem ) {
function showHide (line 4829) | function showHide( elements, show ) {
function getAll (line 4961) | function getAll( context, tag ) {
function setGlobalEval (line 4986) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 5002) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 5097) | function returnTrue() {
function returnFalse (line 5101) | function returnFalse() {
function expectSync (line 5111) | function expectSync( elem, type ) {
function safeActiveElement (line 5118) | function safeActiveElement() {
function on (line 5124) | function on( elem, types, selector, data, fn, one ) {
function leverageNative (line 5612) | function leverageNative( el, type, expectSync ) {
function manipulationTarget (line 5976) | function manipulationTarget( elem, content ) {
function disableScript (line 5987) | function disableScript( elem ) {
function restoreScript (line 5991) | function restoreScript( elem ) {
function cloneCopyEvent (line 6001) | function cloneCopyEvent( src, dest ) {
function fixInput (line 6034) | function fixInput( src, dest ) {
function domManip (line 6047) | function domManip( collection, args, callback, ignored ) {
function remove (line 6139) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 6453) | function computeStyleTests() {
function roundPixelMeasures (line 6497) | function roundPixelMeasures( measure ) {
function curCSS (line 6571) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 6624) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6649) | function vendorPropName( name ) {
function finalPropName (line 6664) | function finalPropName( name ) {
function setPositiveNumber (line 6690) | function setPositiveNumber( _elem, value, subtract ) {
function boxModelAdjustment (line 6702) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 6770) | function getWidthOrHeight( elem, dimension, extra ) {
function Tween (line 7146) | function Tween( elem, options, prop, end, easing ) {
function schedule (line 7269) | function schedule() {
function createFxNow (line 7282) | function createFxNow() {
function genFx (line 7290) | function genFx( type, includeWidth ) {
function createTween (line 7310) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7324) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7496) | function propFilter( props, specialEasing ) {
function Animation (line 7533) | function Animation( elem, properties, options ) {
function stripAndCollapse (line 8248) | function stripAndCollapse( value ) {
function getClass (line 8254) | function getClass( elem ) {
function classesToArray (line 8258) | function classesToArray( value ) {
function buildParams (line 8885) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 9039) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 9073) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 9102) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 9122) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 9180) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9696) | function done( status, nativeStatusText, responses, headers ) {
FILE: docs/images/04_variance/lib/plotly-binding-4.10.0/plotly.js
function eventDataWithKey (line 225) | function eventDataWithKey(eventData) {
function pointsToKeys (line 369) | function pointsToKeys(points) {
function TraceManager (line 567) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 831) | function getMatchFunc(trace) {
function findMatches (line 837) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 848) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 858) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 872) | function isPlainObject(obj) {
function subsetArrayAttrs (line 879) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 903) | function subsetArray(arr, indices) {
function removeBrush (line 912) | function removeBrush(el) {
function debounce (line 926) | function debounce(func, wait, immediate) {
FILE: docs/images/04_variance/lib/plotly-binding-4.9.0/plotly.js
function eventDataWithKey (line 221) | function eventDataWithKey(eventData) {
function pointsToKeys (line 361) | function pointsToKeys(points) {
function TraceManager (line 559) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 823) | function getMatchFunc(trace) {
function findMatches (line 829) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 840) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 850) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 864) | function isPlainObject(obj) {
function subsetArrayAttrs (line 871) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 895) | function subsetArray(arr, indices) {
function removeBrush (line 904) | function removeBrush(el) {
function debounce (line 918) | function debounce(func, wait, immediate) {
FILE: docs/images/04_variance/lib/plotly-binding-4.9.1/plotly.js
function eventDataWithKey (line 221) | function eventDataWithKey(eventData) {
function pointsToKeys (line 365) | function pointsToKeys(points) {
function TraceManager (line 563) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 827) | function getMatchFunc(trace) {
function findMatches (line 833) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 844) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 854) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 868) | function isPlainObject(obj) {
function subsetArrayAttrs (line 875) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 899) | function subsetArray(arr, indices) {
function removeBrush (line 908) | function removeBrush(el) {
function debounce (line 922) | function debounce(func, wait, immediate) {
FILE: docs/images/05_correlation/lib/crosstalk-1.0.0/js/crosstalk.js
function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 359) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 363) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 365) | function naturalComparator(a, b) {
function FilterSet (line 380) | function FilterSet() {
function defineProperties (line 490) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 500) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 502) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 509) | function group(groupName) {
function Group (line 526) | function Group(name) {
function _interopRequireDefault (line 583) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 587) | function var_(name) {
function has (line 591) | function has(name) {
function register (line 634) | function register(reg) {
function bind (line 645) | function bind() {
function $escape (line 655) | function $escape(val) {
function bindEl (line 659) | function bindEl(el) {
function bindInstance (line 669) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 720) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 784) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 897) | function getValue() {
function padZeros (line 977) | function padZeros(n, digits) {
function formatDateUTC (line 986) | function formatDateUTC(date) {
function defineProperties (line 1004) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1018) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1020) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1022) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1043) | function SelectionHandle() {
function defineProperties (line 1248) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1257) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1259) | function extend(target) {
function checkSorted (line 1277) | function checkSorted(list) {
function diffSortedLists (line 1285) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1319) | function dataframeToD3(df) {
function SubscriptionTracker (line 1351) | function SubscriptionTracker(emitter) {
function defineProperties (line 1400) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1406) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1408) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1411) | function Var(group, name, /*optional*/value) {
FILE: docs/images/05_correlation/lib/crosstalk-1.2.0/js/crosstalk.js
function e (line 1) | function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof requi...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 363) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 367) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 369) | function naturalComparator(a, b) {
function FilterSet (line 384) | function FilterSet() {
function defineProperties (line 494) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 504) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 506) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 513) | function group(groupName) {
function Group (line 530) | function Group(name) {
function _interopRequireDefault (line 587) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 591) | function var_(name) {
function has (line 595) | function has(name) {
function register (line 640) | function register(reg) {
function bind (line 651) | function bind() {
function $escape (line 661) | function $escape(val) {
function bindEl (line 665) | function bindEl(el) {
function bindInstance (line 675) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 724) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 786) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 903) | function getValue() {
function padZeros (line 983) | function padZeros(n, digits) {
function formatDateUTC (line 992) | function formatDateUTC(date) {
function defineProperties (line 1010) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1024) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1026) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1028) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1047) | function SelectionHandle() {
function defineProperties (line 1251) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1260) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1262) | function extend(target) {
function checkSorted (line 1280) | function checkSorted(list) {
function diffSortedLists (line 1288) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1322) | function dataframeToD3(df) {
function SubscriptionTracker (line 1354) | function SubscriptionTracker(emitter) {
function defineProperties (line 1403) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1409) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1411) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1414) | function Var(group, name, /*optional*/value) {
FILE: docs/images/05_correlation/lib/htmlwidgets-1.3/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function initSizing (line 245) | function initSizing(el) {
function scheduleStaticRender (line 536) | function scheduleStaticRender() {
function splitWithEscape (line 702) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 795) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 814) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/images/05_correlation/lib/htmlwidgets-1.5.4/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/images/05_correlation/lib/jquery-1.11.3/jquery.js
function isArraylike (line 571) | function isArraylike( obj ) {
function Sizzle (line 788) | function Sizzle( selector, context, results, seed ) {
function createCache (line 902) | function createCache() {
function markFunction (line 920) | function markFunction( fn ) {
function assert (line 929) | function assert( fn ) {
function addHandle (line 951) | function addHandle( attrs, handler ) {
function siblingCheck (line 966) | function siblingCheck( a, b ) {
function createInputPseudo (line 993) | function createInputPseudo( type ) {
function createButtonPseudo (line 1004) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 1015) | function createPositionalPseudo( fn ) {
function testContext (line 1038) | function testContext( context ) {
function setFilters (line 2047) | function setFilters() {}
function toSelector (line 2118) | function toSelector( tokens ) {
function addCombinator (line 2128) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2181) | function elementMatcher( matchers ) {
function multipleContexts (line 2195) | function multipleContexts( selector, contexts, results ) {
function condense (line 2204) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2225) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2318) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2376) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function winnow (line 2672) | function winnow( elements, qualifier, not ) {
function sibling (line 3002) | function sibling( cur, dir ) {
function createOptions (line 3085) | function createOptions( options ) {
function detach (line 3485) | function detach() {
function completed (line 3499) | function completed() {
function dataAttr (line 3662) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 3694) | function isEmptyDataObject( obj ) {
function internalData (line 3710) | function internalData( elem, name, data, pvt /* Internal Use Only */ ) {
function internalRemoveData (line 3799) | function internalRemoveData( elem, name, pvt ) {
function returnTrue (line 4284) | function returnTrue() {
function returnFalse (line 4288) | function returnFalse() {
function safeActiveElement (line 4292) | function safeActiveElement() {
function createSafeFragment (line 5301) | function createSafeFragment( document ) {
function getAll (line 5353) | function getAll( context, tag ) {
function fixDefaultChecked (line 5376) | function fixDefaultChecked( elem ) {
function manipulationTarget (line 5384) | function manipulationTarget( elem, content ) {
function disableScript (line 5394) | function disableScript( elem ) {
function restoreScript (line 5398) | function restoreScript( elem ) {
function setGlobalEval (line 5409) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 5417) | function cloneCopyEvent( src, dest ) {
function fixCloneNodeIssues (line 5445) | function fixCloneNodeIssues( src, dest ) {
function actualDisplay (line 6036) | function actualDisplay( name, doc ) {
function defaultDisplay (line 6058) | function defaultDisplay( nodeName ) {
function addGetHookIf (line 6257) | function addGetHookIf( conditionFn, hookFn ) {
function computeStyleTests (line 6351) | function computeStyleTests() {
function vendorPropName (line 6471) | function vendorPropName( style, name ) {
function showHide (line 6493) | function showHide( elements, show ) {
function setPositiveNumber (line 6544) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 6552) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 6591) | function getWidthOrHeight( elem, name, extra ) {
function Tween (line 6930) | function Tween( elem, options, prop, end, easing ) {
function createFxNow (line 7099) | function createFxNow() {
function genFx (line 7107) | function genFx( type, includeWidth ) {
function createTween (line 7127) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7141) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7283) | function propFilter( props, specialEasing ) {
function Animation (line 7320) | function Animation( elem, properties, options ) {
function addToPrefiltersOrTransports (line 8634) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 8666) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 8693) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 8713) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8768) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9228) | function done( status, nativeStatusText, responses, headers ) {
function buildParams (line 9473) | function buildParams( prefix, obj, traditional, add ) {
function createStandardXHR (line 9746) | function createStandardXHR() {
function createActiveXHR (line 9752) | function createActiveXHR() {
function getWindow (line 10057) | function getWindow( elem ) {
FILE: docs/images/05_correlation/lib/jquery-3.5.1/jquery.js
function DOMEval (line 103) | function DOMEval( code, node, doc ) {
function toType (line 133) | function toType( obj ) {
function isArrayLike (line 503) | function isArrayLike( obj ) {
function Sizzle (line 755) | function Sizzle( selector, context, results, seed ) {
function createCache (line 903) | function createCache() {
function markFunction (line 923) | function markFunction( fn ) {
function assert (line 932) | function assert( fn ) {
function addHandle (line 956) | function addHandle( attrs, handler ) {
function siblingCheck (line 971) | function siblingCheck( a, b ) {
function createInputPseudo (line 997) | function createInputPseudo( type ) {
function createButtonPseudo (line 1008) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 1019) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 1075) | function createPositionalPseudo( fn ) {
function testContext (line 1098) | function testContext( context ) {
function setFilters (line 2309) | function setFilters() {}
function toSelector (line 2383) | function toSelector( tokens ) {
function addCombinator (line 2393) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2460) | function elementMatcher( matchers ) {
function multipleContexts (line 2474) | function multipleContexts( selector, contexts, results ) {
function condense (line 2483) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2504) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2604) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2667) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function nodeName (line 3025) | function nodeName( elem, name ) {
function winnow (line 3035) | function winnow( elements, qualifier, not ) {
function sibling (line 3330) | function sibling( cur, dir ) {
function createOptions (line 3423) | function createOptions( options ) {
function Identity (line 3648) | function Identity( v ) {
function Thrower (line 3651) | function Thrower( ex ) {
function adoptValue (line 3655) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 3748) | function resolve( depth, deferred, handler, special ) {
function completed (line 4113) | function completed() {
function fcamelCase (line 4208) | function fcamelCase( _all, letter ) {
function camelCase (line 4215) | function camelCase( string ) {
function Data (line 4232) | function Data() {
function getData (line 4401) | function getData( data ) {
function dataAttr (line 4426) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4738) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 4806) | function getDefaultDisplay( elem ) {
function showHide (line 4829) | function showHide( elements, show ) {
function getAll (line 4961) | function getAll( context, tag ) {
function setGlobalEval (line 4986) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 5002) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 5097) | function returnTrue() {
function returnFalse (line 5101) | function returnFalse() {
function expectSync (line 5111) | function expectSync( elem, type ) {
function safeActiveElement (line 5118) | function safeActiveElement() {
function on (line 5124) | function on( elem, types, selector, data, fn, one ) {
function leverageNative (line 5612) | function leverageNative( el, type, expectSync ) {
function manipulationTarget (line 5976) | function manipulationTarget( elem, content ) {
function disableScript (line 5987) | function disableScript( elem ) {
function restoreScript (line 5991) | function restoreScript( elem ) {
function cloneCopyEvent (line 6001) | function cloneCopyEvent( src, dest ) {
function fixInput (line 6034) | function fixInput( src, dest ) {
function domManip (line 6047) | function domManip( collection, args, callback, ignored ) {
function remove (line 6139) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 6453) | function computeStyleTests() {
function roundPixelMeasures (line 6497) | function roundPixelMeasures( measure ) {
function curCSS (line 6571) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 6624) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6649) | function vendorPropName( name ) {
function finalPropName (line 6664) | function finalPropName( name ) {
function setPositiveNumber (line 6690) | function setPositiveNumber( _elem, value, subtract ) {
function boxModelAdjustment (line 6702) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 6770) | function getWidthOrHeight( elem, dimension, extra ) {
function Tween (line 7146) | function Tween( elem, options, prop, end, easing ) {
function schedule (line 7269) | function schedule() {
function createFxNow (line 7282) | function createFxNow() {
function genFx (line 7290) | function genFx( type, includeWidth ) {
function createTween (line 7310) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7324) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7496) | function propFilter( props, specialEasing ) {
function Animation (line 7533) | function Animation( elem, properties, options ) {
function stripAndCollapse (line 8248) | function stripAndCollapse( value ) {
function getClass (line 8254) | function getClass( elem ) {
function classesToArray (line 8258) | function classesToArray( value ) {
function buildParams (line 8885) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 9039) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 9073) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 9102) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 9122) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 9180) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9696) | function done( status, nativeStatusText, responses, headers ) {
FILE: docs/images/05_correlation/lib/plotly-binding-4.10.0/plotly.js
function eventDataWithKey (line 225) | function eventDataWithKey(eventData) {
function pointsToKeys (line 369) | function pointsToKeys(points) {
function TraceManager (line 567) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 831) | function getMatchFunc(trace) {
function findMatches (line 837) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 848) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 858) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 872) | function isPlainObject(obj) {
function subsetArrayAttrs (line 879) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 903) | function subsetArray(arr, indices) {
function removeBrush (line 912) | function removeBrush(el) {
function debounce (line 926) | function debounce(func, wait, immediate) {
FILE: docs/images/05_correlation/lib/plotly-binding-4.9.0/plotly.js
function eventDataWithKey (line 221) | function eventDataWithKey(eventData) {
function pointsToKeys (line 361) | function pointsToKeys(points) {
function TraceManager (line 559) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 823) | function getMatchFunc(trace) {
function findMatches (line 829) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 840) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 850) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 864) | function isPlainObject(obj) {
function subsetArrayAttrs (line 871) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 895) | function subsetArray(arr, indices) {
function removeBrush (line 904) | function removeBrush(el) {
function debounce (line 918) | function debounce(func, wait, immediate) {
FILE: docs/lib/crosstalk-1.0.0/js/crosstalk.js
function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 359) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 363) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 365) | function naturalComparator(a, b) {
function FilterSet (line 380) | function FilterSet() {
function defineProperties (line 490) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 500) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 502) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 509) | function group(groupName) {
function Group (line 526) | function Group(name) {
function _interopRequireDefault (line 583) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 587) | function var_(name) {
function has (line 591) | function has(name) {
function register (line 634) | function register(reg) {
function bind (line 645) | function bind() {
function $escape (line 655) | function $escape(val) {
function bindEl (line 659) | function bindEl(el) {
function bindInstance (line 669) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 720) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 784) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 897) | function getValue() {
function padZeros (line 977) | function padZeros(n, digits) {
function formatDateUTC (line 986) | function formatDateUTC(date) {
function defineProperties (line 1004) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1018) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1020) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1022) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1043) | function SelectionHandle() {
function defineProperties (line 1248) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1257) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1259) | function extend(target) {
function checkSorted (line 1277) | function checkSorted(list) {
function diffSortedLists (line 1285) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1319) | function dataframeToD3(df) {
function SubscriptionTracker (line 1351) | function SubscriptionTracker(emitter) {
function defineProperties (line 1400) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1406) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1408) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1411) | function Var(group, name, /*optional*/value) {
FILE: docs/lib/htmlwidgets-1.2/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function initSizing (line 245) | function initSizing(el) {
function scheduleStaticRender (line 536) | function scheduleStaticRender() {
function splitWithEscape (line 699) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 792) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 811) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/lib/htmlwidgets-1.3/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function initSizing (line 245) | function initSizing(el) {
function scheduleStaticRender (line 536) | function scheduleStaticRender() {
function splitWithEscape (line 702) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 795) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 814) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/lib/jquery-1.11.3/jquery.js
function isArraylike (line 571) | function isArraylike( obj ) {
function Sizzle (line 788) | function Sizzle( selector, context, results, seed ) {
function createCache (line 902) | function createCache() {
function markFunction (line 920) | function markFunction( fn ) {
function assert (line 929) | function assert( fn ) {
function addHandle (line 951) | function addHandle( attrs, handler ) {
function siblingCheck (line 966) | function siblingCheck( a, b ) {
function createInputPseudo (line 993) | function createInputPseudo( type ) {
function createButtonPseudo (line 1004) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 1015) | function createPositionalPseudo( fn ) {
function testContext (line 1038) | function testContext( context ) {
function setFilters (line 2047) | function setFilters() {}
function toSelector (line 2118) | function toSelector( tokens ) {
function addCombinator (line 2128) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2181) | function elementMatcher( matchers ) {
function multipleContexts (line 2195) | function multipleContexts( selector, contexts, results ) {
function condense (line 2204) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2225) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2318) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2376) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function winnow (line 2672) | function winnow( elements, qualifier, not ) {
function sibling (line 3002) | function sibling( cur, dir ) {
function createOptions (line 3085) | function createOptions( options ) {
function detach (line 3485) | function detach() {
function completed (line 3499) | function completed() {
function dataAttr (line 3662) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 3694) | function isEmptyDataObject( obj ) {
function internalData (line 3710) | function internalData( elem, name, data, pvt /* Internal Use Only */ ) {
function internalRemoveData (line 3799) | function internalRemoveData( elem, name, pvt ) {
function returnTrue (line 4284) | function returnTrue() {
function returnFalse (line 4288) | function returnFalse() {
function safeActiveElement (line 4292) | function safeActiveElement() {
function createSafeFragment (line 5301) | function createSafeFragment( document ) {
function getAll (line 5353) | function getAll( context, tag ) {
function fixDefaultChecked (line 5376) | function fixDefaultChecked( elem ) {
function manipulationTarget (line 5384) | function manipulationTarget( elem, content ) {
function disableScript (line 5394) | function disableScript( elem ) {
function restoreScript (line 5398) | function restoreScript( elem ) {
function setGlobalEval (line 5409) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 5417) | function cloneCopyEvent( src, dest ) {
function fixCloneNodeIssues (line 5445) | function fixCloneNodeIssues( src, dest ) {
function actualDisplay (line 6036) | function actualDisplay( name, doc ) {
function defaultDisplay (line 6058) | function defaultDisplay( nodeName ) {
function addGetHookIf (line 6257) | function addGetHookIf( conditionFn, hookFn ) {
function computeStyleTests (line 6351) | function computeStyleTests() {
function vendorPropName (line 6471) | function vendorPropName( style, name ) {
function showHide (line 6493) | function showHide( elements, show ) {
function setPositiveNumber (line 6544) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 6552) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 6591) | function getWidthOrHeight( elem, name, extra ) {
function Tween (line 6930) | function Tween( elem, options, prop, end, easing ) {
function createFxNow (line 7099) | function createFxNow() {
function genFx (line 7107) | function genFx( type, includeWidth ) {
function createTween (line 7127) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7141) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7283) | function propFilter( props, specialEasing ) {
function Animation (line 7320) | function Animation( elem, properties, options ) {
function addToPrefiltersOrTransports (line 8634) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 8666) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 8693) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 8713) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8768) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9228) | function done( status, nativeStatusText, responses, headers ) {
function buildParams (line 9473) | function buildParams( prefix, obj, traditional, add ) {
function createStandardXHR (line 9746) | function createStandardXHR() {
function createActiveXHR (line 9752) | function createActiveXHR() {
function getWindow (line 10057) | function getWindow( elem ) {
FILE: docs/lib/plotly-binding-4.8.0/plotly.js
function eventDataWithKey (line 222) | function eventDataWithKey(eventData) {
function pointsToKeys (line 346) | function pointsToKeys(points) {
function TraceManager (line 544) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 807) | function getMatchFunc(trace) {
function findMatches (line 813) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 824) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 834) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 848) | function isPlainObject(obj) {
function subsetArrayAttrs (line 855) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 879) | function subsetArray(arr, indices) {
function removeBrush (line 888) | function removeBrush(el) {
function debounce (line 902) | function debounce(func, wait, immediate) {
FILE: docs/lib/plotly-binding-4.9.0/plotly.js
function eventDataWithKey (line 221) | function eventDataWithKey(eventData) {
function pointsToKeys (line 361) | function pointsToKeys(points) {
function TraceManager (line 559) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 823) | function getMatchFunc(trace) {
function findMatches (line 829) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 840) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 850) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 864) | function isPlainObject(obj) {
function subsetArrayAttrs (line 871) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 895) | function subsetArray(arr, indices) {
function removeBrush (line 904) | function removeBrush(el) {
function debounce (line 918) | function debounce(func, wait, immediate) {
FILE: docs/site_libs/bootstrap-3.3.5/js/bootstrap.js
function transitionEnd (line 34) | function transitionEnd() {
function removeElement (line 126) | function removeElement() {
function Plugin (line 142) | function Plugin(option) {
function Plugin (line 251) | function Plugin(option) {
function Plugin (line 470) | function Plugin(option) {
function getTargetFromTrigger (line 689) | function getTargetFromTrigger($trigger) {
function Plugin (line 701) | function Plugin(option) {
function getParent (line 768) | function getParent($this) {
function clearMenus (line 781) | function clearMenus(e) {
function Plugin (line 874) | function Plugin(option) {
function Plugin (line 1200) | function Plugin(option, _relatedTarget) {
function complete (line 1566) | function complete() {
function Plugin (line 1736) | function Plugin(option) {
function Plugin (line 1845) | function Plugin(option) {
function ScrollSpy (line 1888) | function ScrollSpy(element, options) {
function Plugin (line 2008) | function Plugin(option) {
function next (line 2117) | function next() {
function Plugin (line 2163) | function Plugin(option) {
function Plugin (line 2320) | function Plugin(option) {
FILE: docs/site_libs/crosstalk-1.2.0/js/crosstalk.js
function e (line 1) | function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof requi...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 363) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 367) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 369) | function naturalComparator(a, b) {
function FilterSet (line 384) | function FilterSet() {
function defineProperties (line 494) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 504) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 506) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 513) | function group(groupName) {
function Group (line 530) | function Group(name) {
function _interopRequireDefault (line 587) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 591) | function var_(name) {
function has (line 595) | function has(name) {
function register (line 640) | function register(reg) {
function bind (line 651) | function bind() {
function $escape (line 661) | function $escape(val) {
function bindEl (line 665) | function bindEl(el) {
function bindInstance (line 675) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 724) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 786) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 903) | function getValue() {
function padZeros (line 983) | function padZeros(n, digits) {
function formatDateUTC (line 992) | function formatDateUTC(date) {
function defineProperties (line 1010) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1024) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1026) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1028) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1047) | function SelectionHandle() {
function defineProperties (line 1251) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1260) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1262) | function extend(target) {
function checkSorted (line 1280) | function checkSorted(list) {
function diffSortedLists (line 1288) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1322) | function dataframeToD3(df) {
function SubscriptionTracker (line 1354) | function SubscriptionTracker(emitter) {
function defineProperties (line 1403) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1409) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1411) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1414) | function Var(group, name, /*optional*/value) {
FILE: docs/site_libs/highlightjs-9.12.0/highlight.js
function n (line 2) | function n(e){return e.replace(/&/g,"&").replace(/</g,"<").replac...
function t (line 2) | function t(e){return e.nodeName.toLowerCase()}
function r (line 2) | function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}
function a (line 2) | function a(e){return k.test(e)}
function i (line 2) | function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentN...
function o (line 2) | function o(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n...
function u (line 2) | function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i...
function c (line 2) | function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r...
function l (line 2) | function l(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map...
function s (line 2) | function s(e){function n(e){return e&&e.source||e}function t(t,r){return...
function f (line 2) | function f(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++...
function g (line 2) | function g(e,t){t=t||I.languages||x(y);var r={r:0,value:n(e)},a=r;return...
function p (line 2) | function p(e){return I.tabReplace||I.useBR?e.replace(M,function(e,n){ret...
function h (line 2) | function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)...
function d (line 2) | function d(e){var n,t,r,o,l,s=i(e);a(s)||(I.useBR?(n=document.createElem...
function b (line 2) | function b(e){I=o(I,e)}
function v (line 2) | function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("...
function m (line 2) | function m(){addEventListener("DOMContentLoaded",v,!1),addEventListener(...
function N (line 2) | function N(n,t){var r=y[n]=t(e);r.aliases&&r.aliases.forEach(function(e)...
function R (line 2) | function R(){return x(y)}
function w (line 2) | function w(e){return e=(e||"").toLowerCase(),y[e]||y[L[e]]}
FILE: docs/site_libs/htmlwidgets-1.5.4/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: docs/site_libs/jquery-3.6.0/jquery-3.6.0.js
function DOMEval (line 107) | function DOMEval( code, node, doc ) {
function toType (line 137) | function toType( obj ) {
function isArrayLike (line 507) | function isArrayLike( obj ) {
function Sizzle (line 759) | function Sizzle( selector, context, results, seed ) {
function createCache (line 907) | function createCache() {
function markFunction (line 927) | function markFunction( fn ) {
function assert (line 936) | function assert( fn ) {
function addHandle (line 960) | function addHandle( attrs, handler ) {
function siblingCheck (line 975) | function siblingCheck( a, b ) {
function createInputPseudo (line 1001) | function createInputPseudo( type ) {
function createButtonPseudo (line 1012) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 1023) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 1079) | function createPositionalPseudo( fn ) {
function testContext (line 1102) | function testContext( context ) {
function setFilters (line 2313) | function setFilters() {}
function toSelector (line 2387) | function toSelector( tokens ) {
function addCombinator (line 2397) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2464) | function elementMatcher( matchers ) {
function multipleContexts (line 2478) | function multipleContexts( selector, contexts, results ) {
function condense (line 2487) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2508) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2608) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2671) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function nodeName (line 3029) | function nodeName( elem, name ) {
function winnow (line 3039) | function winnow( elements, qualifier, not ) {
function sibling (line 3334) | function sibling( cur, dir ) {
function createOptions (line 3427) | function createOptions( options ) {
function Identity (line 3652) | function Identity( v ) {
function Thrower (line 3655) | function Thrower( ex ) {
function adoptValue (line 3659) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 3752) | function resolve( depth, deferred, handler, special ) {
function completed (line 4117) | function completed() {
function fcamelCase (line 4212) | function fcamelCase( _all, letter ) {
function camelCase (line 4219) | function camelCase( string ) {
function Data (line 4236) | function Data() {
function getData (line 4405) | function getData( data ) {
function dataAttr (line 4430) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4742) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 4810) | function getDefaultDisplay( elem ) {
function showHide (line 4833) | function showHide( elements, show ) {
function getAll (line 4965) | function getAll( context, tag ) {
function setGlobalEval (line 4990) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 5006) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 5098) | function returnTrue() {
function returnFalse (line 5102) | function returnFalse() {
function expectSync (line 5112) | function expectSync( elem, type ) {
function safeActiveElement (line 5119) | function safeActiveElement() {
function on (line 5125) | function on( elem, types, selector, data, fn, one ) {
function leverageNative (line 5613) | function leverageNative( el, type, expectSync ) {
function manipulationTarget (line 5962) | function manipulationTarget( elem, content ) {
function disableScript (line 5973) | function disableScript( elem ) {
function restoreScript (line 5977) | function restoreScript( elem ) {
function cloneCopyEvent (line 5987) | function cloneCopyEvent( src, dest ) {
function fixInput (line 6020) | function fixInput( src, dest ) {
function domManip (line 6033) | function domManip( collection, args, callback, ignored ) {
function remove (line 6125) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 6439) | function computeStyleTests() {
function roundPixelMeasures (line 6483) | function roundPixelMeasures( measure ) {
function curCSS (line 6576) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 6629) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6654) | function vendorPropName( name ) {
function finalPropName (line 6669) | function finalPropName( name ) {
function setPositiveNumber (line 6695) | function setPositiveNumber( _elem, value, subtract ) {
function boxModelAdjustment (line 6707) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 6775) | function getWidthOrHeight( elem, dimension, extra ) {
function Tween (line 7151) | function Tween( elem, options, prop, end, easing ) {
function schedule (line 7274) | function schedule() {
function createFxNow (line 7287) | function createFxNow() {
function genFx (line 7295) | function genFx( type, includeWidth ) {
function createTween (line 7315) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7329) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7501) | function propFilter( props, specialEasing ) {
function Animation (line 7538) | function Animation( elem, properties, options ) {
function stripAndCollapse (line 8254) | function stripAndCollapse( value ) {
function getClass (line 8260) | function getClass( elem ) {
function classesToArray (line 8264) | function classesToArray( value ) {
function buildParams (line 8894) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 9047) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 9081) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 9110) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 9130) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 9188) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9704) | function done( status, nativeStatusText, responses, headers ) {
FILE: docs/site_libs/jqueryui-1.11.4/jquery-ui.js
function focusable (line 94) | function focusable( element, isTabIndexNotNaN ) {
function visible (line 115) | function visible( element ) {
function reduce (line 157) | function reduce( elem, size, border, margin ) {
function handlerProxy (line 716) | function handlerProxy() {
function handlerProxy (line 758) | function handlerProxy() {
function getOffsets (line 1071) | function getOffsets( offsets, width, height ) {
function parseCss (line 1078) | function parseCss( element, property ) {
function getDimensions (line 1082) | function getDimensions( elem ) {
function isOverAxis (line 2880) | function isOverAxis( x, reference, size ) {
function addItems (line 5117) | function addItems() {
function delayEvent (line 5698) | function delayEvent( type, instance, container ) {
function checkFocus (line 8284) | function checkFocus() {
function filteredUi (line 8468) | function filteredUi( ui ) {
function filteredUi (line 8515) | function filteredUi( ui ) {
function spinner_modifier (line 10306) | function spinner_modifier( fn ) {
function checkFocus (line 10430) | function checkFocus() {
function constrain (line 11024) | function constrain() {
function complete (line 11400) | function complete() {
function show (line 11405) | function show() {
function position (line 11935) | function position( event ) {
function clamp (line 12293) | function clamp( value, prop, allowEmpty ) {
function stringParse (line 12319) | function stringParse( string ) {
function hue2rgb (line 12569) | function hue2rgb( p, q, h ) {
function getElementStyles (line 12835) | function getElementStyles( elem ) {
function styleDifference (line 12862) | function styleDifference( oldStyle, newStyle ) {
function _normalizeArguments (line 13182) | function _normalizeArguments( effect, options, speed, callback ) {
function standardAnimationOption (line 13234) | function standardAnimationOption( option ) {
function run (line 13279) | function run( next ) {
function childComplete (line 13759) | function childComplete() {
function animComplete (line 13808) | function animComplete() {
FILE: docs/site_libs/navigation-1.1/tabsets.js
function buildTabset (line 53) | function buildTabset(tabset) {
FILE: docs/site_libs/plotly-binding-4.10.0/plotly.js
function eventDataWithKey (line 225) | function eventDataWithKey(eventData) {
function pointsToKeys (line 369) | function pointsToKeys(points) {
function TraceManager (line 567) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 831) | function getMatchFunc(trace) {
function findMatches (line 837) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 848) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 858) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 872) | function isPlainObject(obj) {
function subsetArrayAttrs (line 879) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 903) | function subsetArray(arr, indices) {
function removeBrush (line 912) | function removeBrush(el) {
function debounce (line 926) | function debounce(func, wait, immediate) {
FILE: images/02_bellCurve/lib/crosstalk-1.0.0/js/crosstalk.js
function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 359) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 363) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 365) | function naturalComparator(a, b) {
function FilterSet (line 380) | function FilterSet() {
function defineProperties (line 490) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 500) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 502) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 509) | function group(groupName) {
function Group (line 526) | function Group(name) {
function _interopRequireDefault (line 583) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 587) | function var_(name) {
function has (line 591) | function has(name) {
function register (line 634) | function register(reg) {
function bind (line 645) | function bind() {
function $escape (line 655) | function $escape(val) {
function bindEl (line 659) | function bindEl(el) {
function bindInstance (line 669) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 720) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 784) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 897) | function getValue() {
function padZeros (line 977) | function padZeros(n, digits) {
function formatDateUTC (line 986) | function formatDateUTC(date) {
function defineProperties (line 1004) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1018) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1020) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1022) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1043) | function SelectionHandle() {
function defineProperties (line 1248) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1257) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1259) | function extend(target) {
function checkSorted (line 1277) | function checkSorted(list) {
function diffSortedLists (line 1285) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1319) | function dataframeToD3(df) {
function SubscriptionTracker (line 1351) | function SubscriptionTracker(emitter) {
function defineProperties (line 1400) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1406) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1408) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1411) | function Var(group, name, /*optional*/value) {
FILE: images/02_bellCurve/lib/crosstalk-1.2.0/js/crosstalk.js
function e (line 1) | function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof requi...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 363) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 367) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 369) | function naturalComparator(a, b) {
function FilterSet (line 384) | function FilterSet() {
function defineProperties (line 494) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 504) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 506) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 513) | function group(groupName) {
function Group (line 530) | function Group(name) {
function _interopRequireDefault (line 587) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 591) | function var_(name) {
function has (line 595) | function has(name) {
function register (line 640) | function register(reg) {
function bind (line 651) | function bind() {
function $escape (line 661) | function $escape(val) {
function bindEl (line 665) | function bindEl(el) {
function bindInstance (line 675) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 724) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 786) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 903) | function getValue() {
function padZeros (line 983) | function padZeros(n, digits) {
function formatDateUTC (line 992) | function formatDateUTC(date) {
function defineProperties (line 1010) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1024) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1026) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1028) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1047) | function SelectionHandle() {
function defineProperties (line 1251) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1260) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1262) | function extend(target) {
function checkSorted (line 1280) | function checkSorted(list) {
function diffSortedLists (line 1288) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1322) | function dataframeToD3(df) {
function SubscriptionTracker (line 1354) | function SubscriptionTracker(emitter) {
function defineProperties (line 1403) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1409) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1411) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1414) | function Var(group, name, /*optional*/value) {
FILE: images/02_bellCurve/lib/htmlwidgets-1.3/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function initSizing (line 245) | function initSizing(el) {
function scheduleStaticRender (line 536) | function scheduleStaticRender() {
function splitWithEscape (line 702) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 795) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 814) | function createLegacyDefinitionAdapter(defn) {
FILE: images/02_bellCurve/lib/htmlwidgets-1.5.1/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: images/02_bellCurve/lib/htmlwidgets-1.5.4/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: images/02_bellCurve/lib/jquery-1.11.3/jquery.js
function isArraylike (line 571) | function isArraylike( obj ) {
function Sizzle (line 788) | function Sizzle( selector, context, results, seed ) {
function createCache (line 902) | function createCache() {
function markFunction (line 920) | function markFunction( fn ) {
function assert (line 929) | function assert( fn ) {
function addHandle (line 951) | function addHandle( attrs, handler ) {
function siblingCheck (line 966) | function siblingCheck( a, b ) {
function createInputPseudo (line 993) | function createInputPseudo( type ) {
function createButtonPseudo (line 1004) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 1015) | function createPositionalPseudo( fn ) {
function testContext (line 1038) | function testContext( context ) {
function setFilters (line 2047) | function setFilters() {}
function toSelector (line 2118) | function toSelector( tokens ) {
function addCombinator (line 2128) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2181) | function elementMatcher( matchers ) {
function multipleContexts (line 2195) | function multipleContexts( selector, contexts, results ) {
function condense (line 2204) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2225) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2318) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2376) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function winnow (line 2672) | function winnow( elements, qualifier, not ) {
function sibling (line 3002) | function sibling( cur, dir ) {
function createOptions (line 3085) | function createOptions( options ) {
function detach (line 3485) | function detach() {
function completed (line 3499) | function completed() {
function dataAttr (line 3662) | function dataAttr( elem, key, data ) {
function isEmptyDataObject (line 3694) | function isEmptyDataObject( obj ) {
function internalData (line 3710) | function internalData( elem, name, data, pvt /* Internal Use Only */ ) {
function internalRemoveData (line 3799) | function internalRemoveData( elem, name, pvt ) {
function returnTrue (line 4284) | function returnTrue() {
function returnFalse (line 4288) | function returnFalse() {
function safeActiveElement (line 4292) | function safeActiveElement() {
function createSafeFragment (line 5301) | function createSafeFragment( document ) {
function getAll (line 5353) | function getAll( context, tag ) {
function fixDefaultChecked (line 5376) | function fixDefaultChecked( elem ) {
function manipulationTarget (line 5384) | function manipulationTarget( elem, content ) {
function disableScript (line 5394) | function disableScript( elem ) {
function restoreScript (line 5398) | function restoreScript( elem ) {
function setGlobalEval (line 5409) | function setGlobalEval( elems, refElements ) {
function cloneCopyEvent (line 5417) | function cloneCopyEvent( src, dest ) {
function fixCloneNodeIssues (line 5445) | function fixCloneNodeIssues( src, dest ) {
function actualDisplay (line 6036) | function actualDisplay( name, doc ) {
function defaultDisplay (line 6058) | function defaultDisplay( nodeName ) {
function addGetHookIf (line 6257) | function addGetHookIf( conditionFn, hookFn ) {
function computeStyleTests (line 6351) | function computeStyleTests() {
function vendorPropName (line 6471) | function vendorPropName( style, name ) {
function showHide (line 6493) | function showHide( elements, show ) {
function setPositiveNumber (line 6544) | function setPositiveNumber( elem, value, subtract ) {
function augmentWidthOrHeight (line 6552) | function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
function getWidthOrHeight (line 6591) | function getWidthOrHeight( elem, name, extra ) {
function Tween (line 6930) | function Tween( elem, options, prop, end, easing ) {
function createFxNow (line 7099) | function createFxNow() {
function genFx (line 7107) | function genFx( type, includeWidth ) {
function createTween (line 7127) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7141) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7283) | function propFilter( props, specialEasing ) {
function Animation (line 7320) | function Animation( elem, properties, options ) {
function addToPrefiltersOrTransports (line 8634) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 8666) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 8693) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 8713) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 8768) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9228) | function done( status, nativeStatusText, responses, headers ) {
function buildParams (line 9473) | function buildParams( prefix, obj, traditional, add ) {
function createStandardXHR (line 9746) | function createStandardXHR() {
function createActiveXHR (line 9752) | function createActiveXHR() {
function getWindow (line 10057) | function getWindow( elem ) {
FILE: images/02_bellCurve/lib/jquery-3.5.1/jquery.js
function DOMEval (line 103) | function DOMEval( code, node, doc ) {
function toType (line 133) | function toType( obj ) {
function isArrayLike (line 503) | function isArrayLike( obj ) {
function Sizzle (line 755) | function Sizzle( selector, context, results, seed ) {
function createCache (line 903) | function createCache() {
function markFunction (line 923) | function markFunction( fn ) {
function assert (line 932) | function assert( fn ) {
function addHandle (line 956) | function addHandle( attrs, handler ) {
function siblingCheck (line 971) | function siblingCheck( a, b ) {
function createInputPseudo (line 997) | function createInputPseudo( type ) {
function createButtonPseudo (line 1008) | function createButtonPseudo( type ) {
function createDisabledPseudo (line 1019) | function createDisabledPseudo( disabled ) {
function createPositionalPseudo (line 1075) | function createPositionalPseudo( fn ) {
function testContext (line 1098) | function testContext( context ) {
function setFilters (line 2309) | function setFilters() {}
function toSelector (line 2383) | function toSelector( tokens ) {
function addCombinator (line 2393) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2460) | function elementMatcher( matchers ) {
function multipleContexts (line 2474) | function multipleContexts( selector, contexts, results ) {
function condense (line 2483) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2504) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2604) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2667) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function nodeName (line 3025) | function nodeName( elem, name ) {
function winnow (line 3035) | function winnow( elements, qualifier, not ) {
function sibling (line 3330) | function sibling( cur, dir ) {
function createOptions (line 3423) | function createOptions( options ) {
function Identity (line 3648) | function Identity( v ) {
function Thrower (line 3651) | function Thrower( ex ) {
function adoptValue (line 3655) | function adoptValue( value, resolve, reject, noValue ) {
function resolve (line 3748) | function resolve( depth, deferred, handler, special ) {
function completed (line 4113) | function completed() {
function fcamelCase (line 4208) | function fcamelCase( _all, letter ) {
function camelCase (line 4215) | function camelCase( string ) {
function Data (line 4232) | function Data() {
function getData (line 4401) | function getData( data ) {
function dataAttr (line 4426) | function dataAttr( elem, key, data ) {
function adjustCSS (line 4738) | function adjustCSS( elem, prop, valueParts, tween ) {
function getDefaultDisplay (line 4806) | function getDefaultDisplay( elem ) {
function showHide (line 4829) | function showHide( elements, show ) {
function getAll (line 4961) | function getAll( context, tag ) {
function setGlobalEval (line 4986) | function setGlobalEval( elems, refElements ) {
function buildFragment (line 5002) | function buildFragment( elems, context, scripts, selection, ignored ) {
function returnTrue (line 5097) | function returnTrue() {
function returnFalse (line 5101) | function returnFalse() {
function expectSync (line 5111) | function expectSync( elem, type ) {
function safeActiveElement (line 5118) | function safeActiveElement() {
function on (line 5124) | function on( elem, types, selector, data, fn, one ) {
function leverageNative (line 5612) | function leverageNative( el, type, expectSync ) {
function manipulationTarget (line 5976) | function manipulationTarget( elem, content ) {
function disableScript (line 5987) | function disableScript( elem ) {
function restoreScript (line 5991) | function restoreScript( elem ) {
function cloneCopyEvent (line 6001) | function cloneCopyEvent( src, dest ) {
function fixInput (line 6034) | function fixInput( src, dest ) {
function domManip (line 6047) | function domManip( collection, args, callback, ignored ) {
function remove (line 6139) | function remove( elem, selector, keepData ) {
function computeStyleTests (line 6453) | function computeStyleTests() {
function roundPixelMeasures (line 6497) | function roundPixelMeasures( measure ) {
function curCSS (line 6571) | function curCSS( elem, name, computed ) {
function addGetHookIf (line 6624) | function addGetHookIf( conditionFn, hookFn ) {
function vendorPropName (line 6649) | function vendorPropName( name ) {
function finalPropName (line 6664) | function finalPropName( name ) {
function setPositiveNumber (line 6690) | function setPositiveNumber( _elem, value, subtract ) {
function boxModelAdjustment (line 6702) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
function getWidthOrHeight (line 6770) | function getWidthOrHeight( elem, dimension, extra ) {
function Tween (line 7146) | function Tween( elem, options, prop, end, easing ) {
function schedule (line 7269) | function schedule() {
function createFxNow (line 7282) | function createFxNow() {
function genFx (line 7290) | function genFx( type, includeWidth ) {
function createTween (line 7310) | function createTween( value, prop, animation ) {
function defaultPrefilter (line 7324) | function defaultPrefilter( elem, props, opts ) {
function propFilter (line 7496) | function propFilter( props, specialEasing ) {
function Animation (line 7533) | function Animation( elem, properties, options ) {
function stripAndCollapse (line 8248) | function stripAndCollapse( value ) {
function getClass (line 8254) | function getClass( elem ) {
function classesToArray (line 8258) | function classesToArray( value ) {
function buildParams (line 8885) | function buildParams( prefix, obj, traditional, add ) {
function addToPrefiltersOrTransports (line 9039) | function addToPrefiltersOrTransports( structure ) {
function inspectPrefiltersOrTransports (line 9073) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
function ajaxExtend (line 9102) | function ajaxExtend( target, src ) {
function ajaxHandleResponses (line 9122) | function ajaxHandleResponses( s, jqXHR, responses ) {
function ajaxConvert (line 9180) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
function done (line 9696) | function done( status, nativeStatusText, responses, headers ) {
FILE: images/02_bellCurve/lib/plotly-binding-4.10.0/plotly.js
function eventDataWithKey (line 225) | function eventDataWithKey(eventData) {
function pointsToKeys (line 369) | function pointsToKeys(points) {
function TraceManager (line 567) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 831) | function getMatchFunc(trace) {
function findMatches (line 837) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 848) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 858) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 872) | function isPlainObject(obj) {
function subsetArrayAttrs (line 879) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 903) | function subsetArray(arr, indices) {
function removeBrush (line 912) | function removeBrush(el) {
function debounce (line 926) | function debounce(func, wait, immediate) {
FILE: images/02_bellCurve/lib/plotly-binding-4.9.0/plotly.js
function eventDataWithKey (line 221) | function eventDataWithKey(eventData) {
function pointsToKeys (line 361) | function pointsToKeys(points) {
function TraceManager (line 559) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 823) | function getMatchFunc(trace) {
function findMatches (line 829) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 840) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 850) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 864) | function isPlainObject(obj) {
function subsetArrayAttrs (line 871) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 895) | function subsetArray(arr, indices) {
function removeBrush (line 904) | function removeBrush(el) {
function debounce (line 918) | function debounce(func, wait, immediate) {
FILE: images/02_bellCurve/lib/plotly-binding-4.9.1/plotly.js
function eventDataWithKey (line 221) | function eventDataWithKey(eventData) {
function pointsToKeys (line 365) | function pointsToKeys(points) {
function TraceManager (line 563) | function TraceManager(graphDiv, highlight) {
function getMatchFunc (line 827) | function getMatchFunc(trace) {
function findMatches (line 833) | function findMatches(haystack, needleSet) {
function findSimpleMatches (line 844) | function findSimpleMatches(haystack, needleSet) {
function findNestedMatches (line 854) | function findNestedMatches(haystack, needleSet) {
function isPlainObject (line 868) | function isPlainObject(obj) {
function subsetArrayAttrs (line 875) | function subsetArrayAttrs(obj, indices) {
function subsetArray (line 899) | function subsetArray(arr, indices) {
function removeBrush (line 908) | function removeBrush(el) {
function debounce (line 922) | function debounce(func, wait, immediate) {
FILE: images/03_mean/lib/crosstalk-1.0.0/js/crosstalk.js
function s (line 1) | function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&re...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 359) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 363) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 365) | function naturalComparator(a, b) {
function FilterSet (line 380) | function FilterSet() {
function defineProperties (line 490) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 500) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 502) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 509) | function group(groupName) {
function Group (line 526) | function Group(name) {
function _interopRequireDefault (line 583) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 587) | function var_(name) {
function has (line 591) | function has(name) {
function register (line 634) | function register(reg) {
function bind (line 645) | function bind() {
function $escape (line 655) | function $escape(val) {
function bindEl (line 659) | function bindEl(el) {
function bindInstance (line 669) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 720) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 784) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 897) | function getValue() {
function padZeros (line 977) | function padZeros(n, digits) {
function formatDateUTC (line 986) | function formatDateUTC(date) {
function defineProperties (line 1004) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1018) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1020) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1022) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1043) | function SelectionHandle() {
function defineProperties (line 1248) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1257) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1259) | function extend(target) {
function checkSorted (line 1277) | function checkSorted(list) {
function diffSortedLists (line 1285) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1319) | function dataframeToD3(df) {
function SubscriptionTracker (line 1351) | function SubscriptionTracker(emitter) {
function defineProperties (line 1400) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1406) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1408) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1411) | function Var(group, name, /*optional*/value) {
FILE: images/03_mean/lib/crosstalk-1.2.0/js/crosstalk.js
function e (line 1) | function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof requi...
function defineProperties (line 8) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 10) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Events (line 13) | function Events() {
function defineProperties (line 83) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 101) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 103) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 105) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function getFilterSet (line 107) | function getFilterSet(group) {
function nextId (line 118) | function nextId() {
function FilterHandle (line 148) | function FilterHandle(group, extraInfo) {
function defineProperties (line 363) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 367) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function naturalComparator (line 369) | function naturalComparator(a, b) {
function FilterSet (line 384) | function FilterSet() {
function defineProperties (line 494) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 504) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 506) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function group (line 513) | function group(groupName) {
function Group (line 530) | function Group(name) {
function _interopRequireDefault (line 587) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function var_ (line 591) | function var_(name) {
function has (line 595) | function has(name) {
function register (line 640) | function register(reg) {
function bind (line 651) | function bind() {
function $escape (line 661) | function $escape(val) {
function bindEl (line 665) | function bindEl(el) {
function bindInstance (line 675) | function bindInstance(binding, el) {
function _interopRequireWildcard (line 724) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireWildcard (line 786) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function sliceIterator (line 851) | function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = ...
function _interopRequireWildcard (line 859) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function getValue (line 903) | function getValue() {
function padZeros (line 983) | function padZeros(n, digits) {
function formatDateUTC (line 992) | function formatDateUTC(date) {
function defineProperties (line 1010) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireWildcard (line 1024) | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { ret...
function _interopRequireDefault (line 1026) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1028) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function SelectionHandle (line 1047) | function SelectionHandle() {
function defineProperties (line 1251) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _classCallCheck (line 1260) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function extend (line 1262) | function extend(target) {
function checkSorted (line 1280) | function checkSorted(list) {
function diffSortedLists (line 1288) | function diffSortedLists(a, b) {
function dataframeToD3 (line 1322) | function dataframeToD3(df) {
function SubscriptionTracker (line 1354) | function SubscriptionTracker(emitter) {
function defineProperties (line 1403) | function defineProperties(target, props) { for (var i = 0; i < props.len...
function _interopRequireDefault (line 1409) | function _interopRequireDefault(obj) { return obj && obj.__esModule ? ob...
function _classCallCheck (line 1411) | function _classCallCheck(instance, Constructor) { if (!(instance instanc...
function Var (line 1414) | function Var(group, name, /*optional*/value) {
FILE: images/03_mean/lib/htmlwidgets-1.3/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function initSizing (line 245) | function initSizing(el) {
function scheduleStaticRender (line 536) | function scheduleStaticRender() {
function splitWithEscape (line 702) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 795) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 814) | function createLegacyDefinitionAdapter(defn) {
FILE: images/03_mean/lib/htmlwidgets-1.5.1/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: images/03_mean/lib/htmlwidgets-1.5.4/htmlwidgets.js
function querySelectorAll (line 19) | function querySelectorAll(scope, selector) {
function asArray (line 28) | function asArray(value) {
function extend (line 37) | function extend(target /*, ... */) {
function forEach (line 53) | function forEach(values, callback, thisArg) {
function overrideMethod (line 70) | function overrideMethod(target, methodName, funcSource) {
function delegateMethod (line 98) | function delegateMethod(delegator, delegatee, methodName) {
function elementData (line 118) | function elementData(el, name, value) {
function escapeRegExp (line 131) | function escapeRegExp(str) {
function hasClass (line 135) | function hasClass(el, className) {
function filterByClass (line 144) | function filterByClass(elements, className, include) {
function on (line 153) | function on(obj, eventName, func) {
function off (line 161) | function off(obj, eventName, func) {
function unpackPadding (line 172) | function unpackPadding(value) {
function paddingToCss (line 190) | function paddingToCss(paddingObj) {
function px (line 195) | function px(x) {
function sizingPolicy (line 205) | function sizingPolicy(el) {
function evalAndRun (line 228) | function evalAndRun(tasks, target, args) {
function tryEval (line 249) | function tryEval(code) {
function initSizing (line 270) | function initSizing(el) {
function scheduleStaticRender (line 561) | function scheduleStaticRender() {
function has_jQuery3 (line 663) | function has_jQuery3() {
function maybeStaticRenderLater (line 694) | function maybeStaticRenderLater() {
function splitWithEscape (line 766) | function splitWithEscape(value, splitChar, escapeChar) {
function invokePostRenderHandlers (line 859) | function invokePostRenderHandlers() {
function createLegacyDefinitionAdapter (line 878) | function createLegacyDefinitionAdapter(defn) {
FILE: images/03_mean/lib/jquery-1.11.3/jquery.js
function isArraylike (line 571) | function isArraylike( obj ) {
function Sizzle (line 788) | function Sizzle( selector, context, results, seed ) {
function createCache (line 902) | function createCache() {
function markFunction (line 920) | function markFunction( fn ) {
function assert (line 929) | function assert( fn ) {
function addHandle (line 951) | function addHandle( attrs, handler ) {
function siblingCheck (line 966) | function siblingCheck( a, b ) {
function createInputPseudo (line 993) | function createInputPseudo( type ) {
function createButtonPseudo (line 1004) | function createButtonPseudo( type ) {
function createPositionalPseudo (line 1015) | function createPositionalPseudo( fn ) {
function testContext (line 1038) | function testContext( context ) {
function setFilters (line 2047) | function setFilters() {}
function toSelector (line 2118) | function toSelector( tokens ) {
function addCombinator (line 2128) | function addCombinator( matcher, combinator, base ) {
function elementMatcher (line 2181) | function elementMatcher( matchers ) {
function multipleContexts (line 2195) | function multipleContexts( selector, contexts, results ) {
function condense (line 2204) | function condense( unmatched, map, filter, context, xml ) {
function setMatcher (line 2225) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
function matcherFromTokens (line 2318) | function matcherFromTokens( tokens ) {
function matcherFromGroupMatchers (line 2376) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
function winnow (line 2672) | function winnow( elements, qualifier, not ) {
function sibling (line 3002) | function sibling( cur, dir ) {
function createOptions (line 3085) | function createOptions( options ) {
function detach (line 3485) | function detach() {
function completed (line 3499) | function completed() {
function
Copy disabled (too large)
Download .json
Condensed preview — 298 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (31,732K chars).
[
{
"path": ".gitignore",
"chars": 646,
"preview": ".DS_Store\n\n# History files\n.Rhistory\n.Rapp.history\n\n# Session Data files\n.RData\n\n# Example code in package build process"
},
{
"path": ".nojekyll",
"chars": 0,
"preview": ""
},
{
"path": "00_narrative.Rmd",
"chars": 150,
"preview": "---\ntitle: \"History of Teacup Giraffes\"\noutput:\n bookdown::html_document2:\n includes:\n in_header: assets/00_nar"
},
{
"path": "01_introToR.Rmd",
"chars": 8377,
"preview": "---\ntitle: \"Introduction to the R programming language\"\noutput:\n bookdown::html_document2:\n includes:\n in_heade"
},
{
"path": "02_bellCurve.Rmd",
"chars": 20564,
"preview": "---\ntitle: \"The Normal Distribution\"\noutput:\n bookdown::html_document2:\n includes:\n in_header: assets/02_bellCu"
},
{
"path": "03_mean.Rmd",
"chars": 13970,
"preview": "---\ntitle: \"Mean, Median, and Mode\"\noutput:\n bookdown::html_document2:\n includes:\n in_header: assets/03_mean_im"
},
{
"path": "04_variance.Rmd",
"chars": 30466,
"preview": "---\ntitle: \"The Spread of the Data\"\noutput:\n bookdown::html_document2:\n includes:\n in_header: assets/04_varianc"
},
{
"path": "05_correlation.Rmd",
"chars": 23794,
"preview": "---\ntitle: \"Covariance and Correlation\"\noutput:\n bookdown::html_document2:\n includes:\n in_header: assets/05_cor"
},
{
"path": "06_standardError.Rmd",
"chars": 33561,
"preview": "---\ntitle: \"Intro to Inference\"\noutput:\n bookdown::html_document2:\n includes:\n in_header: assets/06_standardErr"
},
{
"path": "07_ttest.Rmd",
"chars": 10489,
"preview": "---\ntitle: \"t-test\"\noutput:\n bookdown::html_document2:\n includes:\n in_header: assets/07_tTest_image.html\n "
},
{
"path": "Giraffe.Rproj",
"chars": 225,
"preview": "Version: 1.0\n\nRestoreWorkspace: Default\nSaveWorkspace: Default\nAlwaysSaveHistory: Default\n\nEnableCodeIndexing: Yes\nUseSp"
},
{
"path": "README.md",
"chars": 2510,
"preview": "# Teacups, Giraffes, & Statistics <img src='assets/hex_tinystats.png' align=\"right\" height=\"138.5\" />\n\nAn open resource "
},
{
"path": "_bookdown_files/02_bellCurve_cache/html/__packages",
"chars": 27,
"preview": "here\nggplot2\nplotly\ntweenr\n"
},
{
"path": "_bookdown_files/03_mean_cache/html/__packages",
"chars": 35,
"preview": "here\nggplot2\nplotly\ntweenr\nemdbook\n"
},
{
"path": "_bookdown_files/03_mean_cache/html/unnamed-chunk-3_10110fd506496d65a16c9f8d338a2668.rdb",
"chars": 0,
"preview": ""
},
{
"path": "_bookdown_files/04_variance_cache/html/__packages",
"chars": 35,
"preview": "here\nggplot2\nplotly\ntweenr\nemdbook\n"
},
{
"path": "_bookdown_files/05_correlation_cache/html/__packages",
"chars": 40,
"preview": "here\nggplot2\nplotly\ntweenr\nMASS\nemdbook\n"
},
{
"path": "_bookdown_files/06_standardError_cache/html/__packages",
"chars": 40,
"preview": "here\nggplot2\nplotly\ntweenr\nMASS\nemdbook\n"
},
{
"path": "_site.yml",
"chars": 903,
"preview": "name: \"cars\"\noutput_dir: \"docs\"\nnavbar:\n title: \" \"\n left:\n - icon: \"fa-home\"\n href: index.html\n - text: \"History"
},
{
"path": "aboutTheAuthors.Rmd",
"chars": 150,
"preview": "---\ntitle: \"About the authors\"\noutput:\n bookdown::html_document2:\n includes:\n in_header: assets/aboutTheAuthors"
},
{
"path": "assets/00_narrative.html",
"chars": 15839,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "assets/01_introToR_image.html",
"chars": 1226,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "assets/02_bellCurve_image.html",
"chars": 1223,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "assets/03_mean_image.html",
"chars": 1233,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "assets/04_variance_image.html",
"chars": 1250,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "assets/05_correlation_image.html",
"chars": 1510,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "assets/06_standardError_image.html",
"chars": 1231,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "assets/07_tTest_image.html",
"chars": 1239,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "assets/Landing_page.html",
"chars": 2414,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "assets/aboutTheAuthors_image.html",
"chars": 2012,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n</hea"
},
{
"path": "assets/button.css",
"chars": 3091,
"preview": "\n a, a:active, a:focus{\n outline: none; /* Removes dotted link outline. Works in Firefox, Chrome, IE8 and above */"
},
{
"path": "assets/foot.html",
"chars": 295,
"preview": "<!DOCTYPE html>\n\n<div class=\"foot\">\n\t<hr> \n\t<p style=\"text-align: center;\"> <span style=\"color: #808080; display: inline"
},
{
"path": "assets/landing.css",
"chars": 10113,
"preview": "@import url('https://fonts.googleapis.com/css?family=Lora:400,400i&display=swap');\n\n/*Loads background-images in HTML as"
},
{
"path": "assets/landing_styles.css",
"chars": 2119,
"preview": "* {\n margin: 0;\n padding: 0;\n}\n\n\nbody {\n\t \t\tfont-size: 1em;\n\t\t \tcolor: rgba(26,26,26,.9);\n\t\t \tfont-family: 'Open S"
},
{
"path": "assets/mobile_landing.css",
"chars": 2933,
"preview": "\n/* IPHONE 6/7/8 */\n/* In summary:\n1. Makes text on image smaller\n1. Gets rid of hover-specific styles/ images\n*/\n\n@medi"
},
{
"path": "assets/mobile_narrative.css",
"chars": 920,
"preview": "/* IPHONE6/7/8 */\n\n@media only screen and (max-width: 540px) {\n .narrative-container { \n margin: 0 auto 1em auto; /* "
},
{
"path": "assets/style.css",
"chars": 12119,
"preview": "@import url('https://fonts.googleapis.com/css?family=Lora:400,400i&display=swap');\n\n/*------------NAVBAR-------------*/\n"
},
{
"path": "docs/00_narrative.html",
"chars": 24052,
"preview": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n<meta charset=\"utf-8\" />\n<meta name=\"generator\" content=\"pandoc\" />\n<meta http-equiv=\"X"
},
{
"path": "docs/00_narrative.utf8.html",
"chars": 23899,
"preview": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n<meta charset=\"utf-8\" />\n<meta name=\"generator\" content=\"pandoc\" />\n<meta http-equiv=\"X"
},
{
"path": "docs/01_introToR.html",
"chars": 21637,
"preview": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n<meta charset=\"utf-8\" />\n<meta name=\"generator\" content=\"pandoc\" />\n<meta http-equiv=\"X"
},
{
"path": "docs/02_bellCurve.html",
"chars": 32322,
"preview": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n<meta charset=\"utf-8\" />\n<meta name=\"generator\" content=\"pandoc\" />\n<meta http-equiv=\"X"
},
{
"path": "docs/03_mean.html",
"chars": 23491,
"preview": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n<meta charset=\"utf-8\" />\n<meta name=\"generator\" content=\"pandoc\" />\n<meta http-equiv=\"X"
},
{
"path": "docs/04_variance.html",
"chars": 34674,
"preview": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n<meta charset=\"utf-8\" />\n<meta name=\"generator\" content=\"pandoc\" />\n<meta http-equiv=\"X"
},
{
"path": "docs/05_correlation.html",
"chars": 32882,
"preview": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n<meta charset=\"utf-8\" />\n<meta name=\"generator\" content=\"pandoc\" />\n<meta http-equiv=\"X"
},
{
"path": "docs/06_standardError.html",
"chars": 45424,
"preview": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n<meta charset=\"utf-8\" />\n<meta name=\"generator\" content=\"pandoc\" />\n<meta http-equiv=\"X"
},
{
"path": "docs/07_ttest.html",
"chars": 24479,
"preview": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n<meta charset=\"utf-8\" />\n<meta name=\"generator\" content=\"pandoc\" />\n<meta http-equiv=\"X"
},
{
"path": "docs/aboutTheAuthors.html",
"chars": 10207,
"preview": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n<meta charset=\"utf-8\" />\n<meta name=\"generator\" content=\"pandoc\" />\n<meta http-equiv=\"X"
},
{
"path": "docs/assets/00_narrative.html",
"chars": 15839,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "docs/assets/01_introToR_image.html",
"chars": 1226,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "docs/assets/02_bellCurve_image.html",
"chars": 1223,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "docs/assets/03_mean_image.html",
"chars": 1233,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "docs/assets/04_variance_image.html",
"chars": 1250,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "docs/assets/05_correlation_image.html",
"chars": 1510,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "docs/assets/06_standardError_image.html",
"chars": 1231,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "docs/assets/07_tTest_image.html",
"chars": 1239,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "docs/assets/Landing_page.html",
"chars": 2414,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n\t<!--"
},
{
"path": "docs/assets/aboutTheAuthors_image.html",
"chars": 2012,
"preview": "<head>\n\t<meta name=\"viewport\" content=\"width=device-width,minimum-scale=1.0,maximum-scale=10.0,initial-scale=1.0\">\n</hea"
},
{
"path": "docs/assets/button.css",
"chars": 3091,
"preview": "\n a, a:active, a:focus{\n outline: none; /* Removes dotted link outline. Works in Firefox, Chrome, IE8 and above */"
},
{
"path": "docs/assets/foot.html",
"chars": 295,
"preview": "<!DOCTYPE html>\n\n<div class=\"foot\">\n\t<hr> \n\t<p style=\"text-align: center;\"> <span style=\"color: #808080; display: inline"
},
{
"path": "docs/assets/landing.css",
"chars": 10113,
"preview": "@import url('https://fonts.googleapis.com/css?family=Lora:400,400i&display=swap');\n\n/*Loads background-images in HTML as"
},
{
"path": "docs/assets/landing_styles.css",
"chars": 2119,
"preview": "* {\n margin: 0;\n padding: 0;\n}\n\n\nbody {\n\t \t\tfont-size: 1em;\n\t\t \tcolor: rgba(26,26,26,.9);\n\t\t \tfont-family: 'Open S"
},
{
"path": "docs/assets/mobile_landing.css",
"chars": 2933,
"preview": "\n/* IPHONE 6/7/8 */\n/* In summary:\n1. Makes text on image smaller\n1. Gets rid of hover-specific styles/ images\n*/\n\n@medi"
},
{
"path": "docs/assets/mobile_narrative.css",
"chars": 920,
"preview": "/* IPHONE6/7/8 */\n\n@media only screen and (max-width: 540px) {\n .narrative-container { \n margin: 0 auto 1em auto; /* "
},
{
"path": "docs/assets/style.css",
"chars": 12119,
"preview": "@import url('https://fonts.googleapis.com/css?family=Lora:400,400i&display=swap');\n\n/*------------NAVBAR-------------*/\n"
},
{
"path": "docs/images/02_bellCurve/lib/crosstalk-1.0.0/css/crosstalk.css",
"chars": 784,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "docs/images/02_bellCurve/lib/crosstalk-1.0.0/js/crosstalk.js",
"chars": 49022,
"preview": "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0)"
},
{
"path": "docs/images/02_bellCurve/lib/crosstalk-1.2.0/js/crosstalk.js",
"chars": 49030,
"preview": "(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)ret"
},
{
"path": "docs/images/02_bellCurve/lib/crosstalk-1.2.0/scss/crosstalk.scss",
"chars": 1816,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "docs/images/02_bellCurve/lib/htmlwidgets-1.3/htmlwidgets.js",
"chars": 31037,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/images/02_bellCurve/lib/htmlwidgets-1.5.1/htmlwidgets.js",
"chars": 33194,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/images/02_bellCurve/lib/htmlwidgets-1.5.4/htmlwidgets.js",
"chars": 33196,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/images/02_bellCurve/lib/jquery-1.11.3/jquery-AUTHORS.txt",
"chars": 8033,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "docs/images/02_bellCurve/lib/jquery-1.11.3/jquery.js",
"chars": 284394,
"preview": "/*!\n * jQuery JavaScript Library v1.11.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Co"
},
{
"path": "docs/images/02_bellCurve/lib/jquery-3.5.1/jquery-AUTHORS.txt",
"chars": 13336,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "docs/images/02_bellCurve/lib/jquery-3.5.1/jquery.js",
"chars": 287630,
"preview": "/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * C"
},
{
"path": "docs/images/02_bellCurve/lib/plotly-binding-4.10.0/plotly.js",
"chars": 33701,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/images/02_bellCurve/lib/plotly-binding-4.9.0/plotly.js",
"chars": 33446,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/images/02_bellCurve/lib/plotly-binding-4.9.1/plotly.js",
"chars": 33599,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/images/02_bellCurve/lib/plotly-htmlwidgets-css-1.46.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/images/02_bellCurve/lib/plotly-htmlwidgets-css-1.49.4/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/images/02_bellCurve/lib/plotly-htmlwidgets-css-2.5.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/images/02_bellCurve/two_animated_hist.html",
"chars": 614952,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\"/>\n<style>body{background-color:white;}</style>\n<script src"
},
{
"path": "docs/images/03_mean/Law_of_large_numbers.html",
"chars": 1736185,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\"/>\n<style>body{background-color:white;}</style>\n<script src"
},
{
"path": "docs/images/03_mean/lib/crosstalk-1.0.0/css/crosstalk.css",
"chars": 784,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "docs/images/03_mean/lib/crosstalk-1.0.0/js/crosstalk.js",
"chars": 49022,
"preview": "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0)"
},
{
"path": "docs/images/03_mean/lib/crosstalk-1.2.0/js/crosstalk.js",
"chars": 49030,
"preview": "(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)ret"
},
{
"path": "docs/images/03_mean/lib/crosstalk-1.2.0/scss/crosstalk.scss",
"chars": 1816,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "docs/images/03_mean/lib/htmlwidgets-1.3/htmlwidgets.js",
"chars": 31037,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/images/03_mean/lib/htmlwidgets-1.5.1/htmlwidgets.js",
"chars": 33194,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/images/03_mean/lib/htmlwidgets-1.5.4/htmlwidgets.js",
"chars": 33196,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/images/03_mean/lib/jquery-1.11.3/jquery-AUTHORS.txt",
"chars": 8033,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "docs/images/03_mean/lib/jquery-1.11.3/jquery.js",
"chars": 284394,
"preview": "/*!\n * jQuery JavaScript Library v1.11.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Co"
},
{
"path": "docs/images/03_mean/lib/jquery-3.5.1/jquery-AUTHORS.txt",
"chars": 13336,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "docs/images/03_mean/lib/jquery-3.5.1/jquery.js",
"chars": 287630,
"preview": "/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * C"
},
{
"path": "docs/images/03_mean/lib/plotly-binding-4.10.0/plotly.js",
"chars": 33701,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/images/03_mean/lib/plotly-binding-4.9.0/plotly.js",
"chars": 33446,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/images/03_mean/lib/plotly-binding-4.9.1/plotly.js",
"chars": 33599,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/images/03_mean/lib/plotly-htmlwidgets-css-1.46.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/images/03_mean/lib/plotly-htmlwidgets-css-1.49.4/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/images/03_mean/lib/plotly-htmlwidgets-css-2.5.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/images/04_variance/lib/crosstalk-1.0.0/css/crosstalk.css",
"chars": 784,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "docs/images/04_variance/lib/crosstalk-1.0.0/js/crosstalk.js",
"chars": 49022,
"preview": "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0)"
},
{
"path": "docs/images/04_variance/lib/crosstalk-1.2.0/js/crosstalk.js",
"chars": 49030,
"preview": "(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)ret"
},
{
"path": "docs/images/04_variance/lib/crosstalk-1.2.0/scss/crosstalk.scss",
"chars": 1816,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "docs/images/04_variance/lib/htmlwidgets-1.3/htmlwidgets.js",
"chars": 31037,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/images/04_variance/lib/htmlwidgets-1.5.1/htmlwidgets.js",
"chars": 33194,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/images/04_variance/lib/htmlwidgets-1.5.4/htmlwidgets.js",
"chars": 33196,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/images/04_variance/lib/jquery-1.11.3/jquery-AUTHORS.txt",
"chars": 8033,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "docs/images/04_variance/lib/jquery-1.11.3/jquery.js",
"chars": 284394,
"preview": "/*!\n * jQuery JavaScript Library v1.11.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Co"
},
{
"path": "docs/images/04_variance/lib/jquery-3.5.1/jquery-AUTHORS.txt",
"chars": 13336,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "docs/images/04_variance/lib/jquery-3.5.1/jquery.js",
"chars": 287630,
"preview": "/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * C"
},
{
"path": "docs/images/04_variance/lib/plotly-binding-4.10.0/plotly.js",
"chars": 33701,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/images/04_variance/lib/plotly-binding-4.9.0/plotly.js",
"chars": 33446,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/images/04_variance/lib/plotly-binding-4.9.1/plotly.js",
"chars": 33599,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/images/04_variance/lib/plotly-htmlwidgets-css-1.46.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/images/04_variance/lib/plotly-htmlwidgets-css-1.49.4/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/images/04_variance/lib/plotly-htmlwidgets-css-2.5.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/images/04_variance/mega_dots.html",
"chars": 4318535,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\"/>\n<style>body{background-color:white;}</style>\n<script src"
},
{
"path": "docs/images/04_variance/static_bar.html",
"chars": 5885,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\"/>\n<style>body{background-color:white;}</style>\n<script src"
},
{
"path": "docs/images/05_correlation/cov_vs_sxsy.html",
"chars": 3295915,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\"/>\n<style>body{background-color:white;}</style>\n<script src"
},
{
"path": "docs/images/05_correlation/lib/crosstalk-1.0.0/css/crosstalk.css",
"chars": 784,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "docs/images/05_correlation/lib/crosstalk-1.0.0/js/crosstalk.js",
"chars": 49022,
"preview": "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0)"
},
{
"path": "docs/images/05_correlation/lib/crosstalk-1.2.0/js/crosstalk.js",
"chars": 49030,
"preview": "(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)ret"
},
{
"path": "docs/images/05_correlation/lib/crosstalk-1.2.0/scss/crosstalk.scss",
"chars": 1816,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "docs/images/05_correlation/lib/htmlwidgets-1.3/htmlwidgets.js",
"chars": 31037,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/images/05_correlation/lib/htmlwidgets-1.5.4/htmlwidgets.js",
"chars": 33196,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/images/05_correlation/lib/jquery-1.11.3/jquery-AUTHORS.txt",
"chars": 8033,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "docs/images/05_correlation/lib/jquery-1.11.3/jquery.js",
"chars": 284394,
"preview": "/*!\n * jQuery JavaScript Library v1.11.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Co"
},
{
"path": "docs/images/05_correlation/lib/jquery-3.5.1/jquery-AUTHORS.txt",
"chars": 13336,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "docs/images/05_correlation/lib/jquery-3.5.1/jquery.js",
"chars": 287630,
"preview": "/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * C"
},
{
"path": "docs/images/05_correlation/lib/plotly-binding-4.10.0/plotly.js",
"chars": 33701,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/images/05_correlation/lib/plotly-binding-4.9.0/plotly.js",
"chars": 33446,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/images/05_correlation/lib/plotly-htmlwidgets-css-1.46.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/images/05_correlation/lib/plotly-htmlwidgets-css-2.5.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/index.html",
"chars": 10584,
"preview": "<!DOCTYPE html>\n\n<html>\n\n<head>\n\n<meta charset=\"utf-8\" />\n<meta name=\"generator\" content=\"pandoc\" />\n<meta http-equiv=\"X"
},
{
"path": "docs/lib/crosstalk-1.0.0/css/crosstalk.css",
"chars": 784,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "docs/lib/crosstalk-1.0.0/js/crosstalk.js",
"chars": 49022,
"preview": "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0)"
},
{
"path": "docs/lib/htmlwidgets-1.2/htmlwidgets.js",
"chars": 30901,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/lib/htmlwidgets-1.3/htmlwidgets.js",
"chars": 31037,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/lib/jquery-1.11.3/jquery-AUTHORS.txt",
"chars": 8033,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "docs/lib/jquery-1.11.3/jquery.js",
"chars": 284394,
"preview": "/*!\n * jQuery JavaScript Library v1.11.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Co"
},
{
"path": "docs/lib/plotly-binding-4.8.0/plotly.js",
"chars": 32723,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/lib/plotly-binding-4.9.0/plotly.js",
"chars": 33446,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/lib/plotly-htmlwidgets-css-1.39.2/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/lib/plotly-htmlwidgets-css-1.46.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/site_libs/bootstrap-3.3.5/css/bootstrap-theme.css",
"chars": 26132,
"preview": "/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://gi"
},
{
"path": "docs/site_libs/bootstrap-3.3.5/css/bootstrap.css",
"chars": 147302,
"preview": "/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://gi"
},
{
"path": "docs/site_libs/bootstrap-3.3.5/js/bootstrap.js",
"chars": 68890,
"preview": "/*!\n * Bootstrap v3.3.5 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under the MIT license"
},
{
"path": "docs/site_libs/bootstrap-3.3.5/js/npm.js",
"chars": 484,
"preview": "// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequ"
},
{
"path": "docs/site_libs/crosstalk-1.2.0/js/crosstalk.js",
"chars": 49030,
"preview": "(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)ret"
},
{
"path": "docs/site_libs/crosstalk-1.2.0/scss/crosstalk.scss",
"chars": 1816,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "docs/site_libs/font-awesome-5.1.0/css/all.css",
"chars": 45687,
"preview": "/*!\n * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (I"
},
{
"path": "docs/site_libs/font-awesome-5.1.0/css/v4-shims.css",
"chars": 41293,
"preview": "/*!\n * Font Awesome Free 5.1.0 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (I"
},
{
"path": "docs/site_libs/highlightjs-9.12.0/default.css",
"chars": 213,
"preview": ".hljs-literal {\n color: #990073;\n}\n\n.hljs-number {\n color: #099;\n}\n\n.hljs-comment {\n color: #998;\n font-style: itali"
},
{
"path": "docs/site_libs/highlightjs-9.12.0/highlight.js",
"chars": 51210,
"preview": "/*! highlight.js v9.12.0 | BSD3 License | git.io/hljslicense */\n!function(e){var n=\"object\"==typeof window&&window||\"obj"
},
{
"path": "docs/site_libs/highlightjs-9.12.0/textmate.css",
"chars": 222,
"preview": ".hljs-literal {\n color: rgb(88, 72, 246);\n}\n\n.hljs-number {\n color: rgb(0, 0, 205);\n}\n\n.hljs-comment {\n color: rgb(76"
},
{
"path": "docs/site_libs/htmlwidgets-1.5.4/htmlwidgets.js",
"chars": 33196,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "docs/site_libs/jquery-3.6.0/jquery-3.6.0.js",
"chars": 288580,
"preview": "/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * C"
},
{
"path": "docs/site_libs/jqueryui-1.11.4/README",
"chars": 408,
"preview": "This a jQuery UI custom build, downloaded from:\nhttp://jqueryui.com/download/#!version=1.11.4&components=111111111111011"
},
{
"path": "docs/site_libs/jqueryui-1.11.4/index.html",
"chars": 31572,
"preview": "<!doctype html>\n<html lang=\"us\">\n<head>\n\t<meta charset=\"utf-8\">\n\t<title>jQuery UI Example Page</title>\n\t<link href=\"jque"
},
{
"path": "docs/site_libs/jqueryui-1.11.4/jquery-ui.css",
"chars": 31045,
"preview": "/*! jQuery UI - v1.11.4 - 2016-01-05\n* http://jqueryui.com\n* Includes: core.css, draggable.css, resizable.css, selectabl"
},
{
"path": "docs/site_libs/jqueryui-1.11.4/jquery-ui.js",
"chars": 392842,
"preview": "/*! jQuery UI - v1.11.4 - 2016-01-05\n* http://jqueryui.com\n* Includes: core.js, widget.js, mouse.js, position.js, dragga"
},
{
"path": "docs/site_libs/jqueryui-1.11.4/jquery-ui.structure.css",
"chars": 14618,
"preview": "/*!\n * jQuery UI CSS Framework 1.11.4\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n *"
},
{
"path": "docs/site_libs/jqueryui-1.11.4/jquery-ui.theme.css",
"chars": 16531,
"preview": "/*!\n * jQuery UI CSS Framework 1.11.4\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n *"
},
{
"path": "docs/site_libs/navigation-1.1/codefolding.js",
"chars": 2435,
"preview": "\nwindow.initializeCodeFolding = function(show) {\n\n // handlers for show-all and hide all\n $(\"#rmd-show-all-code\").clic"
},
{
"path": "docs/site_libs/navigation-1.1/sourceembed.js",
"chars": 357,
"preview": "\nwindow.initializeSourceEmbed = function(filename) {\n $(\"#rmd-download-source\").click(function() {\n var src = $(\"#rm"
},
{
"path": "docs/site_libs/navigation-1.1/tabsets.js",
"chars": 4299,
"preview": "\n\n/**\n * jQuery Plugin: Sticky Tabs\n *\n * @author Aidan Lister <aidan@php.net>\n * adapted by Ruben Arslan to activate pa"
},
{
"path": "docs/site_libs/plotly-binding-4.10.0/plotly.js",
"chars": 33701,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "docs/site_libs/plotly-htmlwidgets-css-2.5.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "docs/site_libs/tocify-1.9.1/jquery.tocify.css",
"chars": 1965,
"preview": "/*\n * jquery.tocify.css 1.9.1\n * Author: @gregfranko\n */\n\n/* The Table of Contents container element */\n.tocify {\n wi"
},
{
"path": "docs/site_libs/tocify-1.9.1/jquery.tocify.js",
"chars": 31746,
"preview": "/* jquery Tocify - v1.9.1 - 2013-10-22\n * http://www.gregfranko.com/jquery.tocify.js/\n * Copyright (c) 2013 Greg Franko;"
},
{
"path": "five_points_scatter.R",
"chars": 1299,
"preview": "\n\nlibrary(ggplot2)\nset.seed(12)\nx1 <- rnorm(50, 10, 2)\n\nx2 <- scale(matrix(rnorm(50), ncol=1))\nx12 <- cbind(scale(x1),x2"
},
{
"path": "images/02_bellCurve/lib/crosstalk-1.0.0/css/crosstalk.css",
"chars": 784,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "images/02_bellCurve/lib/crosstalk-1.0.0/js/crosstalk.js",
"chars": 49022,
"preview": "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0)"
},
{
"path": "images/02_bellCurve/lib/crosstalk-1.2.0/js/crosstalk.js",
"chars": 49030,
"preview": "(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)ret"
},
{
"path": "images/02_bellCurve/lib/crosstalk-1.2.0/scss/crosstalk.scss",
"chars": 1816,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "images/02_bellCurve/lib/htmlwidgets-1.3/htmlwidgets.js",
"chars": 31037,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "images/02_bellCurve/lib/htmlwidgets-1.5.1/htmlwidgets.js",
"chars": 33194,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "images/02_bellCurve/lib/htmlwidgets-1.5.4/htmlwidgets.js",
"chars": 33196,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "images/02_bellCurve/lib/jquery-1.11.3/jquery-AUTHORS.txt",
"chars": 8033,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "images/02_bellCurve/lib/jquery-1.11.3/jquery.js",
"chars": 284394,
"preview": "/*!\n * jQuery JavaScript Library v1.11.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Co"
},
{
"path": "images/02_bellCurve/lib/jquery-3.5.1/jquery-AUTHORS.txt",
"chars": 13336,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "images/02_bellCurve/lib/jquery-3.5.1/jquery.js",
"chars": 287630,
"preview": "/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * C"
},
{
"path": "images/02_bellCurve/lib/plotly-binding-4.10.0/plotly.js",
"chars": 33701,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "images/02_bellCurve/lib/plotly-binding-4.9.0/plotly.js",
"chars": 33446,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "images/02_bellCurve/lib/plotly-binding-4.9.1/plotly.js",
"chars": 33599,
"preview": "\nHTMLWidgets.widget({\n name: \"plotly\",\n type: \"output\",\n\n initialize: function(el, width, height) {\n return {};\n "
},
{
"path": "images/02_bellCurve/lib/plotly-htmlwidgets-css-1.46.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "images/02_bellCurve/lib/plotly-htmlwidgets-css-1.49.4/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "images/02_bellCurve/lib/plotly-htmlwidgets-css-2.5.1/plotly-htmlwidgets.css",
"chars": 173,
"preview": "/*\njust here so that plotly works\ncorrectly with ioslides.\nsee https://github.com/ropensci/plotly/issues/463\n*/\n\nslide:n"
},
{
"path": "images/02_bellCurve/two_animated_hist.html",
"chars": 614952,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\"/>\n<style>body{background-color:white;}</style>\n<script src"
},
{
"path": "images/03_mean/Law_of_large_numbers.html",
"chars": 1736185,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\"/>\n<style>body{background-color:white;}</style>\n<script src"
},
{
"path": "images/03_mean/lib/crosstalk-1.0.0/css/crosstalk.css",
"chars": 784,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "images/03_mean/lib/crosstalk-1.0.0/js/crosstalk.js",
"chars": 49022,
"preview": "(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0)"
},
{
"path": "images/03_mean/lib/crosstalk-1.2.0/js/crosstalk.js",
"chars": 49030,
"preview": "(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)ret"
},
{
"path": "images/03_mean/lib/crosstalk-1.2.0/scss/crosstalk.scss",
"chars": 1816,
"preview": "/* Adjust margins outwards, so column contents line up with the edges of the\n parent of container-fluid. */\n.container"
},
{
"path": "images/03_mean/lib/htmlwidgets-1.3/htmlwidgets.js",
"chars": 31037,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "images/03_mean/lib/htmlwidgets-1.5.1/htmlwidgets.js",
"chars": 33194,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "images/03_mean/lib/htmlwidgets-1.5.4/htmlwidgets.js",
"chars": 33196,
"preview": "(function() {\n // If window.HTMLWidgets is already defined, then use it; otherwise create a\n // new object. This allow"
},
{
"path": "images/03_mean/lib/jquery-1.11.3/jquery-AUTHORS.txt",
"chars": 8033,
"preview": "Authors ordered by first contribution.\n\nJohn Resig <jeresig@gmail.com>\nGilles van den Hoven <gilles0181@gmail.com>\nMicha"
},
{
"path": "images/03_mean/lib/jquery-1.11.3/jquery.js",
"chars": 284394,
"preview": "/*!\n * jQuery JavaScript Library v1.11.3\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Co"
}
]
// ... and 98 more files (download for full content)
About this extraction
This page contains the full source code of the tinystats/teacups-giraffes-and-statistics GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 298 files (28.4 MB), approximately 7.5M tokens, and a symbol index with 3420 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.