diff --git a/Makefile b/Makefile index 00660d8..38ba8e2 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ check_all: ${RSCRIPT} -e "library(methods); devtools::check(cran=TRUE)" README.md: README.Rmd - Rscript -e 'library(methods); devtools::load_all(); rmarkdown::render("README.Rmd", output="README.md")' + Rscript -e 'library(methods); devtools::load_all(); rmarkdown::render("README.Rmd", output_file="README.md")' sed -i.bak 's/[[:space:]]*$$//' $@ rm -f $@.bak diff --git a/README.Rmd b/README.Rmd index 2bd5c65..9be611e 100644 --- a/README.Rmd +++ b/README.Rmd @@ -2,7 +2,7 @@ title: "speedtest" output: github_document: - html_preview: false + html_preview: true --- ```{r include=FALSE} knitr::opts_chunk$set(cache=TRUE, message=FALSE, warning=FALSE, error=FALSE, fig.retina=2) diff --git a/README.html b/README.html new file mode 100644 index 0000000..87f0532 --- /dev/null +++ b/README.html @@ -0,0 +1,829 @@ + + + + + + + + + + + + + + + + + + +

speedtest

+

Tools to Test and Compare Internet Bandwidth Speeds

+

Description

+

The ‘Ookla’ ‘Speedtest’ site http://beta.speedtest.net/about provides interactive and programmatic services to test and compare bandwidth speeds from a source node on the Internet to thousands of test servers. Tools are provided to obtain test server lists, identify target servers for testing and performing speed/bandwidth tests.

+

What’s Inside The Tin

+

The following functions are implemented:

+ +

Make a CLI utility

+

While you can run spd_test() from an R console, it was desgined to be an easily wrapped into a bash (et al) alias or put into a small batch script. Or, you can just type out the following if you’re fleet-of-finger/have dexterous digits:

+
Rscript --quiet -e 'speedtest::spd_test()'
+
+

which will look something like:

+

+

TODO

+

Folks interested in contributing can take a look at the TODOs and pick as many as you like! Ones with question marks are truly a “I dunno if we shld” kinda thing. Ones with exclamation marks are essentials.

+ +

Installation

+
devtools::install_github("hrbrmstr/speedtest")
+
options(width=120)
+

Usage

+
library(speedtest)
+
library(stringi)
+
library(hrbrthemes)
+
library(ggbeeswarm)
+
library(tidyverse)
+
+
# current verison
+
packageVersion("speedtest")
+
## [1] '0.1.0'
+
+

Download Speed

+
config <- spd_config()
+
+
servers <- spd_servers(config=config)
+
closest_servers <- spd_closest_servers(servers, config=config)
+
only_the_best_severs <- spd_best_servers(closest_servers, config)
+

Individual download tests

+
glimpse(spd_download_test(closest_servers[1,], config=config))
+
## Observations: 1
+## Variables: 15
+## $ url     <chr> "http://speed0.xcelx.net/speedtest/upload.php"
+## $ lat     <dbl> 42.3875
+## $ lng     <dbl> -71.1
+## $ name    <chr> "Somerville, MA"
+## $ country <chr> "United States"
+## $ cc      <chr> "US"
+## $ sponsor <chr> "Axcelx Technologies LLC"
+## $ id      <chr> "5960"
+## $ host    <chr> "speed0.xcelx.net:8080"
+## $ url2    <chr> "http://speed1.xcelx.net/speedtest/upload.php"
+## $ min     <dbl> 14.40439
+## $ mean    <dbl> 60.06834
+## $ median  <dbl> 55.28457
+## $ max     <dbl> 127.9436
+## $ sd      <dbl> 34.20695
+
+
glimpse(spd_download_test(only_the_best_severs[1,], config=config))
+
## Observations: 1
+## Variables: 18
+## $ ping_time      <dbl> 0.02712567
+## $ total_time     <dbl> 0.059917
+## $ retrieval_time <dbl> 2.3e-05
+## $ url            <chr> "http://speed0.xcelx.net/speedtest/upload.php"
+## $ lat            <dbl> 42.3875
+## $ lng            <dbl> -71.1
+## $ name           <chr> "Somerville, MA"
+## $ country        <chr> "United States"
+## $ cc             <chr> "US"
+## $ sponsor        <chr> "Axcelx Technologies LLC"
+## $ id             <chr> "5960"
+## $ host           <chr> "speed0.xcelx.net:8080"
+## $ url2           <chr> "http://speed1.xcelx.net/speedtest/upload.php"
+## $ min            <dbl> 14.64922
+## $ mean           <dbl> 56.15303
+## $ median         <dbl> 51.89162
+## $ max            <dbl> 107.5084
+## $ sd             <dbl> 31.8866
+
+

Individual upload tests

+
glimpse(spd_upload_test(only_the_best_severs[1,], config=config))
+
## Observations: 1
+## Variables: 18
+## $ ping_time      <dbl> 0.02712567
+## $ total_time     <dbl> 0.059917
+## $ retrieval_time <dbl> 2.3e-05
+## $ url            <chr> "http://speed0.xcelx.net/speedtest/upload.php"
+## $ lat            <dbl> 42.3875
+## $ lng            <dbl> -71.1
+## $ name           <chr> "Somerville, MA"
+## $ country        <chr> "United States"
+## $ cc             <chr> "US"
+## $ sponsor        <chr> "Axcelx Technologies LLC"
+## $ id             <chr> "5960"
+## $ host           <chr> "speed0.xcelx.net:8080"
+## $ url2           <chr> "http://speed1.xcelx.net/speedtest/upload.php"
+## $ min            <dbl> 6.240858
+## $ mean           <dbl> 9.527599
+## $ median         <dbl> 9.303148
+## $ max            <dbl> 12.56686
+## $ sd             <dbl> 2.451778
+
+
glimpse(spd_upload_test(closest_servers[1,], config=config))
+
## Observations: 1
+## Variables: 15
+## $ url     <chr> "http://speed0.xcelx.net/speedtest/upload.php"
+## $ lat     <dbl> 42.3875
+## $ lng     <dbl> -71.1
+## $ name    <chr> "Somerville, MA"
+## $ country <chr> "United States"
+## $ cc      <chr> "US"
+## $ sponsor <chr> "Axcelx Technologies LLC"
+## $ id      <chr> "5960"
+## $ host    <chr> "speed0.xcelx.net:8080"
+## $ url2    <chr> "http://speed1.xcelx.net/speedtest/upload.php"
+## $ min     <dbl> 6.764702
+## $ mean    <dbl> 9.896179
+## $ median  <dbl> 10.3605
+## $ max     <dbl> 12.85389
+## $ sd      <dbl> 2.359868
+
+

Moar download tests

+

Choose closest, “best” and randomly (there can be, and are, some dups as a result for best/closest), run the test and chart the results. This will show just how disparate the results are from these core/crude tests. Most of the test servers compensate when they present the results. Newer, “socket”-based tests are more accurate but there are no free/hidden exposed APIs yet for most of them.

+
set.seed(8675309)
+
+
bind_rows(
+
+
closest_servers[1:3,] %>%
+
mutate(type="closest"),
+
+
only_the_best_severs[1:3,] %>%
+
mutate(type="best"),
+
+
filter(servers, !(id %in% c(closest_servers[1:3,]$id, only_the_best_severs[1:3,]$id))) %>%
+
sample_n(3) %>%
+
mutate(type="random")
+
+
) %>%
+
group_by(type) %>%
+
ungroup() -> to_compare
+
+
select(to_compare, sponsor, name, country, host, type)
+
## # A tibble: 9 x 5
+##                   sponsor            name       country
+##                     <chr>           <chr>         <chr>
+## 1 Axcelx Technologies LLC  Somerville, MA United States
+## 2                 Comcast      Boston, MA United States
+## 3            Starry, Inc.      Boston, MA United States
+## 4 Axcelx Technologies LLC  Somerville, MA United States
+## 5 Norwood Light Broadband     Norwood, MA United States
+## 6       CCI - New England  Providence, RI United States
+## 7                 PirxNet         Gliwice        Poland
+## 8           Interoute VDC Los Angeles, CA United States
+## 9                   UNPAD         Bandung     Indonesia
+## # ... with 2 more variables: host <chr>, type <chr>
+
+
map_df(1:nrow(to_compare), ~{
+
spd_download_test(to_compare[.x,], config=config, summarise=FALSE, timeout=30)
+
}) -> dl_results_full
+
mutate(dl_results_full, type=stri_trans_totitle(type)) %>%
+
ggplot(aes(type, bw, fill=type)) +
+
geom_quasirandom(aes(size=size, color=type), width=0.15, shape=21, stroke=0.25) +
+
scale_y_continuous(expand=c(0,5), labels=c(sprintf("%s", seq(0,150,50)), "200 Mb/s"), limits=c(0,200)) +
+
scale_size(range=c(2,6)) +
+
scale_color_manual(values=c(Random="#b2b2b2", Best="#2b2b2b", Closest="#2b2b2b")) +
+
scale_fill_ipsum() +
+
labs(x=NULL, y=NULL, title="Download bandwidth test by selected server type",
+
subtitle="Circle size scaled by size of file used in that speed test") +
+
theme_ipsum_rc(grid="Y") +
+
theme(legend.position="none")
+ + +

Moar upload tests

+

Choose closest and “best” and filter duplicates out since we’re really trying to measure here vs show the disparity:

+
bind_rows(
+
closest_servers[1:3,] %>% mutate(type="closest"),
+
only_the_best_severs[1:3,] %>% mutate(type="best")
+
) %>%
+
distinct(.keep_all=TRUE) -> to_compare
+
+
select(to_compare, sponsor, name, country, host, type)
+
## # A tibble: 6 x 5
+##                   sponsor           name       country
+##                     <chr>          <chr>         <chr>
+## 1 Axcelx Technologies LLC Somerville, MA United States
+## 2                 Comcast     Boston, MA United States
+## 3            Starry, Inc.     Boston, MA United States
+## 4 Axcelx Technologies LLC Somerville, MA United States
+## 5 Norwood Light Broadband    Norwood, MA United States
+## 6       CCI - New England Providence, RI United States
+## # ... with 2 more variables: host <chr>, type <chr>
+
+
map_df(1:nrow(to_compare), ~{
+
spd_upload_test(to_compare[.x,], config=config, summarise=FALSE, timeout=30)
+
}) -> ul_results_full
+
ggplot(ul_results_full, aes(x="Upload Test", y=bw)) +
+
geom_quasirandom(aes(size=size, fill="col"), width=0.1, shape=21, stroke=0.25, color="#2b2b2b") +
+
scale_y_continuous(expand=c(0,0.5), breaks=seq(0,16,4),
+
labels=c(sprintf("%s", seq(0,12,4)), "16 Mb/s"), limits=c(0,16)) +
+
scale_size(range=c(2,6)) +
+
scale_fill_ipsum() +
+
labs(x=NULL, y=NULL, title="Upload bandwidth test by selected server type",
+
subtitle="Circle size scaled by size of file used in that speed test") +
+
theme_ipsum_rc(grid="Y") +
+
theme(legend.position="none")
+ + +

Code of Conduct

+

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

+ + + diff --git a/README.md b/README.md index 41ab55e..dae81ab 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,20 @@ The following functions are implemented: - `spd_download_test`: Perform a download speed/bandwidth test - `spd_servers`: Retrieve a list of SpeedTest servers - `spd_upload_test`: Perform an upload speed/bandwidth test + - `spd_test`: Test your internet speed/bandwidth + +## Make a CLI utility + +While you can run `spd_test()` from an R console, it was desgined to be +an easily wrapped into a `bash` (et al) alias or put into a small batch +script. Or, you can just type out the following if you’re +fleet-of-finger/have dexterous digits: + + Rscript --quiet -e 'speedtest::spd_test()' + +which will look something like: + +![](imgs/spdtst.gif) ## TODO @@ -44,7 +58,6 @@ we shld” kinda thing. Ones with exclamation marks are essentials. statistical determination of the best target\! - \[ \] `autoplot` support\! - \[ \] RStudio Add-in - - \[ \] CLI wrapper - \[ \] Shiny app? ## Installation @@ -53,6 +66,10 @@ we shld” kinda thing. Ones with exclamation marks are essentials. devtools::install_github("hrbrmstr/speedtest") ``` +``` r +options(width=120) +``` + ## Usage ``` r @@ -96,11 +113,11 @@ glimpse(spd_download_test(closest_servers[1,], config=config)) ## $ id "5960" ## $ host "speed0.xcelx.net:8080" ## $ url2 "http://speed1.xcelx.net/speedtest/upload.php" - ## $ min 15.08594 - ## $ mean 72.25247 - ## $ median 77.6195 - ## $ max 126.3629 - ## $ sd 42.88343 + ## $ min 14.40439 + ## $ mean 60.06834 + ## $ median 55.28457 + ## $ max 127.9436 + ## $ sd 34.20695 ``` r glimpse(spd_download_test(only_the_best_severs[1,], config=config)) @@ -108,24 +125,24 @@ glimpse(spd_download_test(only_the_best_severs[1,], config=config)) ## Observations: 1 ## Variables: 18 - ## $ ping_time 0.036793 - ## $ total_time 0.06847 - ## $ retrieval_time 1.5e-05 - ## $ url "http://speedtest.norwoodlight.com/speedtest/upload.php" - ## $ lat 42.1944 - ## $ lng -71.2 - ## $ name "Norwood, MA" + ## $ ping_time 0.02712567 + ## $ total_time 0.059917 + ## $ retrieval_time 2.3e-05 + ## $ url "http://speed0.xcelx.net/speedtest/upload.php" + ## $ lat 42.3875 + ## $ lng -71.1 + ## $ name "Somerville, MA" ## $ country "United States" ## $ cc "US" - ## $ sponsor "Norwood Light Broadband" - ## $ id "4920" - ## $ host "speedtest.norwoodlight.com:8080" - ## $ url2 "http://netgauge.norwoodlight.com/speedtest/upload.php" - ## $ min 10.0315 - ## $ mean 65.53074 - ## $ median 29.70143 - ## $ max 169.5498 - ## $ sd 62.35961 + ## $ sponsor "Axcelx Technologies LLC" + ## $ id "5960" + ## $ host "speed0.xcelx.net:8080" + ## $ url2 "http://speed1.xcelx.net/speedtest/upload.php" + ## $ min 14.64922 + ## $ mean 56.15303 + ## $ median 51.89162 + ## $ max 107.5084 + ## $ sd 31.8866 ### Individual upload tests @@ -135,24 +152,24 @@ glimpse(spd_upload_test(only_the_best_severs[1,], config=config)) ## Observations: 1 ## Variables: 18 - ## $ ping_time 0.036793 - ## $ total_time 0.06847 - ## $ retrieval_time 1.5e-05 - ## $ url "http://speedtest.norwoodlight.com/speedtest/upload.php" - ## $ lat 42.1944 - ## $ lng -71.2 - ## $ name "Norwood, MA" + ## $ ping_time 0.02712567 + ## $ total_time 0.059917 + ## $ retrieval_time 2.3e-05 + ## $ url "http://speed0.xcelx.net/speedtest/upload.php" + ## $ lat 42.3875 + ## $ lng -71.1 + ## $ name "Somerville, MA" ## $ country "United States" ## $ cc "US" - ## $ sponsor "Norwood Light Broadband" - ## $ id "4920" - ## $ host "speedtest.norwoodlight.com:8080" - ## $ url2 "http://netgauge.norwoodlight.com/speedtest/upload.php" - ## $ min 6.855551 - ## $ mean 8.643362 - ## $ median 8.680511 - ## $ max 10.2592 - ## $ sd 1.52269 + ## $ sponsor "Axcelx Technologies LLC" + ## $ id "5960" + ## $ host "speed0.xcelx.net:8080" + ## $ url2 "http://speed1.xcelx.net/speedtest/upload.php" + ## $ min 6.240858 + ## $ mean 9.527599 + ## $ median 9.303148 + ## $ max 12.56686 + ## $ sd 2.451778 ``` r glimpse(spd_upload_test(closest_servers[1,], config=config)) @@ -170,11 +187,11 @@ glimpse(spd_upload_test(closest_servers[1,], config=config)) ## $ id "5960" ## $ host "speed0.xcelx.net:8080" ## $ url2 "http://speed1.xcelx.net/speedtest/upload.php" - ## $ min 3.505325 - ## $ mean 6.558145 - ## $ median 7.087147 - ## $ max 9.341766 - ## $ sd 2.102159 + ## $ min 6.764702 + ## $ mean 9.896179 + ## $ median 10.3605 + ## $ max 12.85389 + ## $ sd 2.359868 ### Moar download tests @@ -208,17 +225,18 @@ select(to_compare, sponsor, name, country, host, type) ``` ## # A tibble: 9 x 5 - ## sponsor name country host type - ## - ## 1 Axcelx Technologies LLC Somerville, MA United States speed0.xcelx.net:8080 closest - ## 2 Comcast Boston, MA United States stosat-ndhm-01.sys.comcast.net:8080 closest - ## 3 Starry, Inc. Boston, MA United States speedtest-server.starry.com:8080 closest - ## 4 Norwood Light Broadband Norwood, MA United States speedtest.norwoodlight.com:8080 best - ## 5 vzalpha Waltham, MA United States pdi-ookla2.vzalpha.com:8080 best - ## 6 BELD Broadband Braintree, MA United States wotan.beld.net:8080 best - ## 7 SowNet Gliwice Poland speedtest.sownet.pl:8080 random - ## 8 SingTel Los Angeles, CA United States speedtest-la.singnet.com.sg:8080 random - ## 9 StarNet Bandung Indonesia speedtest.starnet.net.id:8080 random + ## sponsor name country + ## + ## 1 Axcelx Technologies LLC Somerville, MA United States + ## 2 Comcast Boston, MA United States + ## 3 Starry, Inc. Boston, MA United States + ## 4 Axcelx Technologies LLC Somerville, MA United States + ## 5 Norwood Light Broadband Norwood, MA United States + ## 6 CCI - New England Providence, RI United States + ## 7 PirxNet Gliwice Poland + ## 8 Interoute VDC Los Angeles, CA United States + ## 9 UNPAD Bandung Indonesia + ## # ... with 2 more variables: host , type ``` r map_df(1:nrow(to_compare), ~{ @@ -240,7 +258,7 @@ mutate(dl_results_full, type=stri_trans_totitle(type)) %>% theme(legend.position="none") ``` -![](README_files/figure-gfm/unnamed-chunk-9-1.png) + ### Moar upload tests @@ -258,14 +276,15 @@ select(to_compare, sponsor, name, country, host, type) ``` ## # A tibble: 6 x 5 - ## sponsor name country host type - ## - ## 1 Axcelx Technologies LLC Somerville, MA United States speed0.xcelx.net:8080 closest - ## 2 Comcast Boston, MA United States stosat-ndhm-01.sys.comcast.net:8080 closest - ## 3 Starry, Inc. Boston, MA United States speedtest-server.starry.com:8080 closest - ## 4 Norwood Light Broadband Norwood, MA United States speedtest.norwoodlight.com:8080 best - ## 5 vzalpha Waltham, MA United States pdi-ookla2.vzalpha.com:8080 best - ## 6 BELD Broadband Braintree, MA United States wotan.beld.net:8080 best + ## sponsor name country + ## + ## 1 Axcelx Technologies LLC Somerville, MA United States + ## 2 Comcast Boston, MA United States + ## 3 Starry, Inc. Boston, MA United States + ## 4 Axcelx Technologies LLC Somerville, MA United States + ## 5 Norwood Light Broadband Norwood, MA United States + ## 6 CCI - New England Providence, RI United States + ## # ... with 2 more variables: host , type ``` r map_df(1:nrow(to_compare), ~{ @@ -286,7 +305,7 @@ ggplot(ul_results_full, aes(x="Upload Test", y=bw)) + theme(legend.position="none") ``` -![](README_files/figure-gfm/unnamed-chunk-11-1.png) + ## Code of Conduct diff --git a/README_cache/gfm/unnamed-chunk-10_4d98d1659e285abd58b2e63521be5f01.RData b/README_cache/gfm/unnamed-chunk-10_4d98d1659e285abd58b2e63521be5f01.RData deleted file mode 100644 index c78f26b..0000000 Binary files a/README_cache/gfm/unnamed-chunk-10_4d98d1659e285abd58b2e63521be5f01.RData and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-10_e8754b5b331ba823e763a65b62d6a4df.RData b/README_cache/gfm/unnamed-chunk-10_e8754b5b331ba823e763a65b62d6a4df.RData new file mode 100644 index 0000000..86d083e Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-10_e8754b5b331ba823e763a65b62d6a4df.RData differ diff --git a/README_cache/gfm/unnamed-chunk-7_be30a4052cd886d3cd693fdb7d88514b.rdb b/README_cache/gfm/unnamed-chunk-10_e8754b5b331ba823e763a65b62d6a4df.rdb similarity index 100% rename from README_cache/gfm/unnamed-chunk-7_be30a4052cd886d3cd693fdb7d88514b.rdb rename to README_cache/gfm/unnamed-chunk-10_e8754b5b331ba823e763a65b62d6a4df.rdb diff --git a/README_cache/gfm/unnamed-chunk-7_be30a4052cd886d3cd693fdb7d88514b.rdx b/README_cache/gfm/unnamed-chunk-10_e8754b5b331ba823e763a65b62d6a4df.rdx similarity index 100% rename from README_cache/gfm/unnamed-chunk-7_be30a4052cd886d3cd693fdb7d88514b.rdx rename to README_cache/gfm/unnamed-chunk-10_e8754b5b331ba823e763a65b62d6a4df.rdx diff --git a/README_cache/gfm/unnamed-chunk-11_39b45efd40b24f84231df0d94958feec.RData b/README_cache/gfm/unnamed-chunk-11_39b45efd40b24f84231df0d94958feec.RData deleted file mode 100644 index 25d6585..0000000 Binary files a/README_cache/gfm/unnamed-chunk-11_39b45efd40b24f84231df0d94958feec.RData and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-11_39b45efd40b24f84231df0d94958feec.rdb b/README_cache/gfm/unnamed-chunk-11_39b45efd40b24f84231df0d94958feec.rdb deleted file mode 100644 index 2be1980..0000000 Binary files a/README_cache/gfm/unnamed-chunk-11_39b45efd40b24f84231df0d94958feec.rdb and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-11_39b45efd40b24f84231df0d94958feec.rdx b/README_cache/gfm/unnamed-chunk-11_39b45efd40b24f84231df0d94958feec.rdx deleted file mode 100644 index 81623e5..0000000 Binary files a/README_cache/gfm/unnamed-chunk-11_39b45efd40b24f84231df0d94958feec.rdx and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-11_7def8c4e0574346221b17493aa83ccd1.RData b/README_cache/gfm/unnamed-chunk-11_7def8c4e0574346221b17493aa83ccd1.RData new file mode 100644 index 0000000..48696b9 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-11_7def8c4e0574346221b17493aa83ccd1.RData differ diff --git a/README_cache/gfm/unnamed-chunk-11_7def8c4e0574346221b17493aa83ccd1.rdb b/README_cache/gfm/unnamed-chunk-11_7def8c4e0574346221b17493aa83ccd1.rdb new file mode 100644 index 0000000..ad15c31 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-11_7def8c4e0574346221b17493aa83ccd1.rdb differ diff --git a/README_cache/gfm/unnamed-chunk-11_7def8c4e0574346221b17493aa83ccd1.rdx b/README_cache/gfm/unnamed-chunk-11_7def8c4e0574346221b17493aa83ccd1.rdx new file mode 100644 index 0000000..463df2c Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-11_7def8c4e0574346221b17493aa83ccd1.rdx differ diff --git a/README_cache/gfm/unnamed-chunk-12_3e0d1e073d3190e79d40300a41b9847f.RData b/README_cache/gfm/unnamed-chunk-12_3e0d1e073d3190e79d40300a41b9847f.RData deleted file mode 100644 index e39594f..0000000 Binary files a/README_cache/gfm/unnamed-chunk-12_3e0d1e073d3190e79d40300a41b9847f.RData and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-12_4aea996115d1adb3628289f0593b852d.RData b/README_cache/gfm/unnamed-chunk-12_4aea996115d1adb3628289f0593b852d.RData new file mode 100644 index 0000000..c663a6e Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-12_4aea996115d1adb3628289f0593b852d.RData differ diff --git a/README_cache/gfm/unnamed-chunk-6_0c85fb28e508cb26554f94f8ddf73552.rdb b/README_cache/gfm/unnamed-chunk-12_4aea996115d1adb3628289f0593b852d.rdb similarity index 100% rename from README_cache/gfm/unnamed-chunk-6_0c85fb28e508cb26554f94f8ddf73552.rdb rename to README_cache/gfm/unnamed-chunk-12_4aea996115d1adb3628289f0593b852d.rdb diff --git a/README_cache/gfm/unnamed-chunk-6_0c85fb28e508cb26554f94f8ddf73552.rdx b/README_cache/gfm/unnamed-chunk-12_4aea996115d1adb3628289f0593b852d.rdx similarity index 100% rename from README_cache/gfm/unnamed-chunk-6_0c85fb28e508cb26554f94f8ddf73552.rdx rename to README_cache/gfm/unnamed-chunk-12_4aea996115d1adb3628289f0593b852d.rdx diff --git a/README_cache/gfm/unnamed-chunk-2_44beb6ecb7c370fc7485c585cf493f0c.RData b/README_cache/gfm/unnamed-chunk-2_44beb6ecb7c370fc7485c585cf493f0c.RData deleted file mode 100644 index 1c7932c..0000000 Binary files a/README_cache/gfm/unnamed-chunk-2_44beb6ecb7c370fc7485c585cf493f0c.RData and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-2_5b0ba01bb43aefa1232c8b724a6601e4.RData b/README_cache/gfm/unnamed-chunk-2_5b0ba01bb43aefa1232c8b724a6601e4.RData new file mode 100644 index 0000000..9eeec78 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-2_5b0ba01bb43aefa1232c8b724a6601e4.RData differ diff --git a/README_cache/gfm/unnamed-chunk-3_ab442556d166aa13ea2e9166ec787eb1.rdb b/README_cache/gfm/unnamed-chunk-2_5b0ba01bb43aefa1232c8b724a6601e4.rdb similarity index 100% rename from README_cache/gfm/unnamed-chunk-3_ab442556d166aa13ea2e9166ec787eb1.rdb rename to README_cache/gfm/unnamed-chunk-2_5b0ba01bb43aefa1232c8b724a6601e4.rdb diff --git a/README_cache/gfm/unnamed-chunk-3_ab442556d166aa13ea2e9166ec787eb1.rdx b/README_cache/gfm/unnamed-chunk-2_5b0ba01bb43aefa1232c8b724a6601e4.rdx similarity index 100% rename from README_cache/gfm/unnamed-chunk-3_ab442556d166aa13ea2e9166ec787eb1.rdx rename to README_cache/gfm/unnamed-chunk-2_5b0ba01bb43aefa1232c8b724a6601e4.rdx diff --git a/README_cache/gfm/unnamed-chunk-3_ab442556d166aa13ea2e9166ec787eb1.RData b/README_cache/gfm/unnamed-chunk-3_ab442556d166aa13ea2e9166ec787eb1.RData deleted file mode 100644 index 7872c7d..0000000 Binary files a/README_cache/gfm/unnamed-chunk-3_ab442556d166aa13ea2e9166ec787eb1.RData and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-3_c2d6adad80c87c748cd07e4fbf805a99.RData b/README_cache/gfm/unnamed-chunk-3_c2d6adad80c87c748cd07e4fbf805a99.RData new file mode 100644 index 0000000..0e4d8e5 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-3_c2d6adad80c87c748cd07e4fbf805a99.RData differ diff --git a/README_cache/gfm/unnamed-chunk-2_44beb6ecb7c370fc7485c585cf493f0c.rdb b/README_cache/gfm/unnamed-chunk-3_c2d6adad80c87c748cd07e4fbf805a99.rdb similarity index 100% rename from README_cache/gfm/unnamed-chunk-2_44beb6ecb7c370fc7485c585cf493f0c.rdb rename to README_cache/gfm/unnamed-chunk-3_c2d6adad80c87c748cd07e4fbf805a99.rdb diff --git a/README_cache/gfm/unnamed-chunk-2_44beb6ecb7c370fc7485c585cf493f0c.rdx b/README_cache/gfm/unnamed-chunk-3_c2d6adad80c87c748cd07e4fbf805a99.rdx similarity index 100% rename from README_cache/gfm/unnamed-chunk-2_44beb6ecb7c370fc7485c585cf493f0c.rdx rename to README_cache/gfm/unnamed-chunk-3_c2d6adad80c87c748cd07e4fbf805a99.rdx diff --git a/README_cache/gfm/unnamed-chunk-5_08af825d6f4cb3312e5f922882aff56f.RData b/README_cache/gfm/unnamed-chunk-5_08af825d6f4cb3312e5f922882aff56f.RData new file mode 100644 index 0000000..0491bf8 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-5_08af825d6f4cb3312e5f922882aff56f.RData differ diff --git a/README_cache/gfm/unnamed-chunk-5_08af825d6f4cb3312e5f922882aff56f.rdb b/README_cache/gfm/unnamed-chunk-5_08af825d6f4cb3312e5f922882aff56f.rdb new file mode 100644 index 0000000..2b5aca2 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-5_08af825d6f4cb3312e5f922882aff56f.rdb differ diff --git a/README_cache/gfm/unnamed-chunk-5_08af825d6f4cb3312e5f922882aff56f.rdx b/README_cache/gfm/unnamed-chunk-5_08af825d6f4cb3312e5f922882aff56f.rdx new file mode 100644 index 0000000..b63131f Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-5_08af825d6f4cb3312e5f922882aff56f.rdx differ diff --git a/README_cache/gfm/unnamed-chunk-5_38a84ac6249d2b3cbc6790bd447d8f38.RData b/README_cache/gfm/unnamed-chunk-5_38a84ac6249d2b3cbc6790bd447d8f38.RData deleted file mode 100644 index c8a6df3..0000000 Binary files a/README_cache/gfm/unnamed-chunk-5_38a84ac6249d2b3cbc6790bd447d8f38.RData and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-5_38a84ac6249d2b3cbc6790bd447d8f38.rdb b/README_cache/gfm/unnamed-chunk-5_38a84ac6249d2b3cbc6790bd447d8f38.rdb deleted file mode 100644 index 88976f2..0000000 Binary files a/README_cache/gfm/unnamed-chunk-5_38a84ac6249d2b3cbc6790bd447d8f38.rdb and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-5_38a84ac6249d2b3cbc6790bd447d8f38.rdx b/README_cache/gfm/unnamed-chunk-5_38a84ac6249d2b3cbc6790bd447d8f38.rdx deleted file mode 100644 index 4fb1f03..0000000 Binary files a/README_cache/gfm/unnamed-chunk-5_38a84ac6249d2b3cbc6790bd447d8f38.rdx and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-6_0c85fb28e508cb26554f94f8ddf73552.RData b/README_cache/gfm/unnamed-chunk-6_0c85fb28e508cb26554f94f8ddf73552.RData deleted file mode 100644 index ca6e89d..0000000 Binary files a/README_cache/gfm/unnamed-chunk-6_0c85fb28e508cb26554f94f8ddf73552.RData and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-6_a08421919cfedfed307e2451eebc3090.RData b/README_cache/gfm/unnamed-chunk-6_a08421919cfedfed307e2451eebc3090.RData new file mode 100644 index 0000000..463af02 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-6_a08421919cfedfed307e2451eebc3090.RData differ diff --git a/README_cache/gfm/unnamed-chunk-12_3e0d1e073d3190e79d40300a41b9847f.rdb b/README_cache/gfm/unnamed-chunk-6_a08421919cfedfed307e2451eebc3090.rdb similarity index 100% rename from README_cache/gfm/unnamed-chunk-12_3e0d1e073d3190e79d40300a41b9847f.rdb rename to README_cache/gfm/unnamed-chunk-6_a08421919cfedfed307e2451eebc3090.rdb diff --git a/README_cache/gfm/unnamed-chunk-12_3e0d1e073d3190e79d40300a41b9847f.rdx b/README_cache/gfm/unnamed-chunk-6_a08421919cfedfed307e2451eebc3090.rdx similarity index 100% rename from README_cache/gfm/unnamed-chunk-12_3e0d1e073d3190e79d40300a41b9847f.rdx rename to README_cache/gfm/unnamed-chunk-6_a08421919cfedfed307e2451eebc3090.rdx diff --git a/README_cache/gfm/unnamed-chunk-7_be30a4052cd886d3cd693fdb7d88514b.RData b/README_cache/gfm/unnamed-chunk-7_be30a4052cd886d3cd693fdb7d88514b.RData deleted file mode 100644 index f4492c4..0000000 Binary files a/README_cache/gfm/unnamed-chunk-7_be30a4052cd886d3cd693fdb7d88514b.RData and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-7_c4f4f0b44c2fc2d6ee8870ae77830ebf.RData b/README_cache/gfm/unnamed-chunk-7_c4f4f0b44c2fc2d6ee8870ae77830ebf.RData new file mode 100644 index 0000000..acbd3c7 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-7_c4f4f0b44c2fc2d6ee8870ae77830ebf.RData differ diff --git a/README_cache/gfm/unnamed-chunk-10_4d98d1659e285abd58b2e63521be5f01.rdb b/README_cache/gfm/unnamed-chunk-7_c4f4f0b44c2fc2d6ee8870ae77830ebf.rdb similarity index 100% rename from README_cache/gfm/unnamed-chunk-10_4d98d1659e285abd58b2e63521be5f01.rdb rename to README_cache/gfm/unnamed-chunk-7_c4f4f0b44c2fc2d6ee8870ae77830ebf.rdb diff --git a/README_cache/gfm/unnamed-chunk-10_4d98d1659e285abd58b2e63521be5f01.rdx b/README_cache/gfm/unnamed-chunk-7_c4f4f0b44c2fc2d6ee8870ae77830ebf.rdx similarity index 100% rename from README_cache/gfm/unnamed-chunk-10_4d98d1659e285abd58b2e63521be5f01.rdx rename to README_cache/gfm/unnamed-chunk-7_c4f4f0b44c2fc2d6ee8870ae77830ebf.rdx diff --git a/README_cache/gfm/unnamed-chunk-8_589608964690a85b75a2c454d204378e.RData b/README_cache/gfm/unnamed-chunk-8_589608964690a85b75a2c454d204378e.RData new file mode 100644 index 0000000..e44f245 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-8_589608964690a85b75a2c454d204378e.RData differ diff --git a/README_cache/gfm/unnamed-chunk-8_589608964690a85b75a2c454d204378e.rdb b/README_cache/gfm/unnamed-chunk-8_589608964690a85b75a2c454d204378e.rdb new file mode 100644 index 0000000..730ba8b Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-8_589608964690a85b75a2c454d204378e.rdb differ diff --git a/README_cache/gfm/unnamed-chunk-8_589608964690a85b75a2c454d204378e.rdx b/README_cache/gfm/unnamed-chunk-8_589608964690a85b75a2c454d204378e.rdx new file mode 100644 index 0000000..1c195a1 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-8_589608964690a85b75a2c454d204378e.rdx differ diff --git a/README_cache/gfm/unnamed-chunk-8_bb3d1883dfa63f203c351034b7b48347.RData b/README_cache/gfm/unnamed-chunk-8_bb3d1883dfa63f203c351034b7b48347.RData deleted file mode 100644 index 0877bbe..0000000 Binary files a/README_cache/gfm/unnamed-chunk-8_bb3d1883dfa63f203c351034b7b48347.RData and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-8_bb3d1883dfa63f203c351034b7b48347.rdb b/README_cache/gfm/unnamed-chunk-8_bb3d1883dfa63f203c351034b7b48347.rdb deleted file mode 100644 index 51254bf..0000000 Binary files a/README_cache/gfm/unnamed-chunk-8_bb3d1883dfa63f203c351034b7b48347.rdb and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-8_bb3d1883dfa63f203c351034b7b48347.rdx b/README_cache/gfm/unnamed-chunk-8_bb3d1883dfa63f203c351034b7b48347.rdx deleted file mode 100644 index 58ef4d3..0000000 Binary files a/README_cache/gfm/unnamed-chunk-8_bb3d1883dfa63f203c351034b7b48347.rdx and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-9_985a1f13399eac6c2318ad4ac811995b.rdb b/README_cache/gfm/unnamed-chunk-9_985a1f13399eac6c2318ad4ac811995b.rdb deleted file mode 100644 index 2b4ad0f..0000000 Binary files a/README_cache/gfm/unnamed-chunk-9_985a1f13399eac6c2318ad4ac811995b.rdb and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-9_985a1f13399eac6c2318ad4ac811995b.rdx b/README_cache/gfm/unnamed-chunk-9_985a1f13399eac6c2318ad4ac811995b.rdx deleted file mode 100644 index bd2e8a9..0000000 Binary files a/README_cache/gfm/unnamed-chunk-9_985a1f13399eac6c2318ad4ac811995b.rdx and /dev/null differ diff --git a/README_cache/gfm/unnamed-chunk-9_985a1f13399eac6c2318ad4ac811995b.RData b/README_cache/gfm/unnamed-chunk-9_c2b4b56b83ed174d8c32859946fd3840.RData similarity index 97% rename from README_cache/gfm/unnamed-chunk-9_985a1f13399eac6c2318ad4ac811995b.RData rename to README_cache/gfm/unnamed-chunk-9_c2b4b56b83ed174d8c32859946fd3840.RData index 9134cdf..9cf9b55 100644 Binary files a/README_cache/gfm/unnamed-chunk-9_985a1f13399eac6c2318ad4ac811995b.RData and b/README_cache/gfm/unnamed-chunk-9_c2b4b56b83ed174d8c32859946fd3840.RData differ diff --git a/README_cache/gfm/unnamed-chunk-9_c2b4b56b83ed174d8c32859946fd3840.rdb b/README_cache/gfm/unnamed-chunk-9_c2b4b56b83ed174d8c32859946fd3840.rdb new file mode 100644 index 0000000..7c02803 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-9_c2b4b56b83ed174d8c32859946fd3840.rdb differ diff --git a/README_cache/gfm/unnamed-chunk-9_c2b4b56b83ed174d8c32859946fd3840.rdx b/README_cache/gfm/unnamed-chunk-9_c2b4b56b83ed174d8c32859946fd3840.rdx new file mode 100644 index 0000000..6240861 Binary files /dev/null and b/README_cache/gfm/unnamed-chunk-9_c2b4b56b83ed174d8c32859946fd3840.rdx differ diff --git a/README_files/figure-gfm/unnamed-chunk-10-1.png b/README_files/figure-gfm/unnamed-chunk-10-1.png new file mode 100644 index 0000000..2975c88 Binary files /dev/null and b/README_files/figure-gfm/unnamed-chunk-10-1.png differ diff --git a/README_files/figure-gfm/unnamed-chunk-12-1.png b/README_files/figure-gfm/unnamed-chunk-12-1.png new file mode 100644 index 0000000..4b42207 Binary files /dev/null and b/README_files/figure-gfm/unnamed-chunk-12-1.png differ