From 9642099bc12a3a692cffbb1515a445a06c7d27e1 Mon Sep 17 00:00:00 2001 From: Joseph de la Torre Dwyer Date: Wed, 23 Mar 2022 08:10:08 +0000 Subject: [PATCH] version 0.2.0 --- DESCRIPTION | 29 + MD5 | 39 + NAMESPACE | 12 + NEWS.md | 74 + R/basics.R | 639 ++++++++ R/utils-pipe.R | 11 + README.md | 27 + build/vignette.rds | Bin 0 -> 192 bytes inst/doc/MetaculR.Rmd | 704 +++++++++ inst/doc/MetaculR.html | 1361 ++++++++++++++++++ man/MetaculR_brier.Rd | 57 + man/MetaculR_excitement.Rd | 30 + man/MetaculR_login.Rd | 23 + man/MetaculR_myDiff.Rd | 43 + man/MetaculR_myPredictions.Rd | 50 + man/MetaculR_myPredictions_Resolved.Rd | 50 + man/MetaculR_plot.Rd | 28 + man/MetaculR_questions.Rd | 52 + man/pipe.Rd | 12 + vignettes/MetaculR.Rmd | 704 +++++++++ vignettes/MetaculR.Rmd.orig | 569 ++++++++ vignettes/MetaculRRMD_unnamed-chunk-10-1.png | Bin 0 -> 20060 bytes vignettes/MetaculRRMD_unnamed-chunk-11-1.png | Bin 0 -> 15672 bytes vignettes/MetaculRRMD_unnamed-chunk-14-1.png | Bin 0 -> 6790 bytes vignettes/MetaculRRMD_unnamed-chunk-15-1.png | Bin 0 -> 4621 bytes vignettes/MetaculRRMD_unnamed-chunk-16-1.png | Bin 0 -> 14826 bytes vignettes/MetaculRRMD_unnamed-chunk-18-1.png | Bin 0 -> 6759 bytes vignettes/MetaculRRMD_unnamed-chunk-19-1.png | Bin 0 -> 4737 bytes vignettes/MetaculRRMD_unnamed-chunk-20-1.png | Bin 0 -> 12234 bytes vignettes/MetaculRRMD_unnamed-chunk-23-1.png | Bin 0 -> 6475 bytes vignettes/MetaculRRMD_unnamed-chunk-24-1.png | Bin 0 -> 4448 bytes vignettes/MetaculRRMD_unnamed-chunk-25-1.png | Bin 0 -> 7108 bytes vignettes/MetaculRRMD_unnamed-chunk-27-1.png | Bin 0 -> 6449 bytes vignettes/MetaculRRMD_unnamed-chunk-28-1.png | Bin 0 -> 4920 bytes vignettes/MetaculRRMD_unnamed-chunk-29-1.png | Bin 0 -> 7788 bytes vignettes/MetaculRRMD_unnamed-chunk-31-1.png | Bin 0 -> 19358 bytes vignettes/MetaculRRMD_unnamed-chunk-33-1.png | Bin 0 -> 18896 bytes vignettes/MetaculRRMD_unnamed-chunk-35-1.png | Bin 0 -> 13945 bytes vignettes/MetaculRRMD_unnamed-chunk-38-1.png | Bin 0 -> 11604 bytes vignettes/MetaculRRMD_unnamed-chunk-8-1.png | Bin 0 -> 5144 bytes 40 files changed, 4514 insertions(+) create mode 100644 DESCRIPTION create mode 100644 MD5 create mode 100644 NAMESPACE create mode 100644 NEWS.md create mode 100644 R/basics.R create mode 100644 R/utils-pipe.R create mode 100644 README.md create mode 100644 build/vignette.rds create mode 100644 inst/doc/MetaculR.Rmd create mode 100644 inst/doc/MetaculR.html create mode 100644 man/MetaculR_brier.Rd create mode 100644 man/MetaculR_excitement.Rd create mode 100644 man/MetaculR_login.Rd create mode 100644 man/MetaculR_myDiff.Rd create mode 100644 man/MetaculR_myPredictions.Rd create mode 100644 man/MetaculR_myPredictions_Resolved.Rd create mode 100644 man/MetaculR_plot.Rd create mode 100644 man/MetaculR_questions.Rd create mode 100644 man/pipe.Rd create mode 100644 vignettes/MetaculR.Rmd create mode 100644 vignettes/MetaculR.Rmd.orig create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-10-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-11-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-14-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-15-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-16-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-18-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-19-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-20-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-23-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-24-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-25-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-27-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-28-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-29-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-31-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-33-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-35-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-38-1.png create mode 100644 vignettes/MetaculRRMD_unnamed-chunk-8-1.png diff --git a/DESCRIPTION b/DESCRIPTION new file mode 100644 index 0000000..e62bdbb --- /dev/null +++ b/DESCRIPTION @@ -0,0 +1,29 @@ +Package: MetaculR +Title: Analyze Metaculus Predictions and Questions +Version: 0.2.0 +Authors@R: + person(given = "Joseph de la Torre", + family = "Dwyer", + role = c("aut", "cre"), + email = "JosephD@BRdata.com", + comment = c(ORCID = "0000-0002-2717-9077")) +URL: https://ntrlshrp.gitlab.io/metaculr, + https://gitlab.com/ntrlshrp/metaculr +BugReports: https://gitlab.com/ntrlshrp/metaculr/-/issues +Description: Login, download, and analyze questions predicted by you and/or the + Metaculus community by interacting with the Metaculus API, currently + located at . +License: GPL-3 +Encoding: UTF-8 +RoxygenNote: 7.1.1 +Suggests: knitr, rmarkdown +VignetteBuilder: knitr +Imports: magrittr, dplyr, ggplot2, httr, jsonlite, progress, tidyr, + verification, stats +NeedsCompilation: no +Packaged: 2022-03-21 20:19:12 UTC; jtd +Author: Joseph de la Torre Dwyer [aut, cre] + () +Maintainer: Joseph de la Torre Dwyer +Repository: CRAN +Date/Publication: 2022-03-23 09:10:08 UTC diff --git a/MD5 b/MD5 new file mode 100644 index 0000000..0a6e893 --- /dev/null +++ b/MD5 @@ -0,0 +1,39 @@ +c7eb6e1f6102fb485cbefc70ba9faea4 *DESCRIPTION +abc0b7e2e39198047304d6eef4adbb71 *NAMESPACE +ea713468808c5593b19ea1b1e49271d5 *NEWS.md +739035306992ea4d20849bb91fa2ccd1 *R/basics.R +65cef5e0674056f6fc07dd2b3ca85c13 *R/utils-pipe.R +ffba6968739d8d14025a85e5a82e4386 *README.md +c1f87d51b4555a7f07cb51304efae4c7 *build/vignette.rds +eb065d12830ae93cf928b886fae64746 *inst/doc/MetaculR.Rmd +010745fdcec80613bfb4493c2813bccb *inst/doc/MetaculR.html +05c996fb466c5a8fff693a22b82dc9e7 *man/MetaculR_brier.Rd +8d21e69870b2fca59fa22cb5b708b50b *man/MetaculR_excitement.Rd +1abe71f8165d64e635e4705d7323f98b *man/MetaculR_login.Rd +64cea5ff02665bd49347a0f03a16255e *man/MetaculR_myDiff.Rd +e4cf8f749852e58e090e7ad2e05d2a75 *man/MetaculR_myPredictions.Rd +ffabb5a7a472581c2ab9f9aac0925080 *man/MetaculR_myPredictions_Resolved.Rd +4896445083921ec11932885b3e0621d6 *man/MetaculR_plot.Rd +082e06f15f440aacab88e00368196949 *man/MetaculR_questions.Rd +4894ca10756199e25f914bfd34f517b0 *man/pipe.Rd +eb065d12830ae93cf928b886fae64746 *vignettes/MetaculR.Rmd +13dd8116388c92090eef1630a03d2793 *vignettes/MetaculR.Rmd.orig +a083dafdedfe195ddc4735ebca4a11c2 *vignettes/MetaculRRMD_unnamed-chunk-10-1.png +72c1cac22c5f48e97050e705706d631b *vignettes/MetaculRRMD_unnamed-chunk-11-1.png +8a71507824584017854e530f2921f962 *vignettes/MetaculRRMD_unnamed-chunk-14-1.png +6d1fcca217ce43166579559e55d84e25 *vignettes/MetaculRRMD_unnamed-chunk-15-1.png +7a61ce0721540163fc418b730d3c2e58 *vignettes/MetaculRRMD_unnamed-chunk-16-1.png +280155f25e3e1930361a1a5617716129 *vignettes/MetaculRRMD_unnamed-chunk-18-1.png +5e11d3aa809efb9f394d4a5218816b90 *vignettes/MetaculRRMD_unnamed-chunk-19-1.png +45831d3308b4371107c467bb5fc04a89 *vignettes/MetaculRRMD_unnamed-chunk-20-1.png +c2c2151d99b08f04b581bed378af630e *vignettes/MetaculRRMD_unnamed-chunk-23-1.png +af4e193c946ad2e548651564d2f862ac *vignettes/MetaculRRMD_unnamed-chunk-24-1.png +86c93b4d19a9dd7a1d07ae7598b889e8 *vignettes/MetaculRRMD_unnamed-chunk-25-1.png +ae7dd7235e52386d0e99f1e2e9761a52 *vignettes/MetaculRRMD_unnamed-chunk-27-1.png +4ac8ff2f1378b4b9236b23f2e1cb2403 *vignettes/MetaculRRMD_unnamed-chunk-28-1.png +c64564072001a3c80520ef5f67511a54 *vignettes/MetaculRRMD_unnamed-chunk-29-1.png +e15ba1fecfd1208995f05f3d182596cf *vignettes/MetaculRRMD_unnamed-chunk-31-1.png +6b4fd57327337d811bafa472128c8581 *vignettes/MetaculRRMD_unnamed-chunk-33-1.png +f596ec96d2e103f01ab531f8fcb68610 *vignettes/MetaculRRMD_unnamed-chunk-35-1.png +6e1aaeaa8dec107fffcf7c609c70198d *vignettes/MetaculRRMD_unnamed-chunk-38-1.png +5db34fd049dca27a3799cdca1758b9dd *vignettes/MetaculRRMD_unnamed-chunk-8-1.png diff --git a/NAMESPACE b/NAMESPACE new file mode 100644 index 0000000..69e03a2 --- /dev/null +++ b/NAMESPACE @@ -0,0 +1,12 @@ +# Generated by roxygen2: do not edit by hand + +export("%>%") +export(MetaculR_brier) +export(MetaculR_excitement) +export(MetaculR_login) +export(MetaculR_myDiff) +export(MetaculR_myPredictions) +export(MetaculR_myPredictions_Resolved) +export(MetaculR_plot) +export(MetaculR_questions) +importFrom(magrittr,"%>%") diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 0000000..0f33b63 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,74 @@ + + + + +## 0.2.0 +2022-03-21 + +### Breaking changes + +#### **cran:** Update Description field; add examples (e3e2af6b5fa677c73abaaaf773b2bf60a8cfdd64) + +This commit changed functions with capital letters after the underscore to lowercase letters, e.g., + +- `MetaculR_Brier()` --> `MetaculR_brier()` +- `MetaculR_Questions()` --> `MetaculR_questions()` + +# MetaculR 0.1.1 +2022-03-21 + +## Fixes + +- **.rbuildignore:** Add some unnecessary `httptest` files (6ea3a4e8ee95b7e6a4e03a971ab0de1cadc4f84b) +- **news.md:** Added NEWS.md and added to Site (4fff8e9fc037e52f2e1ebf94df892cce23bc60a8) +- **cran-comments.md:** Added more NOTES after `rhub::check_for_cran()` (fb246d2ef7b32f426de64f15b61d9aa2353e36c7) +- **cran:** Add CRAN-RELEASE to .Rbuildignore (0c23c006da8d1b7ddc0edc225a621f6eec7ca9a2) +- **site:** Add Site URL to README; update MetaculR.Rmd (382c6e99cf30f4bf2d2ad02ee4a6827ae8aedff5) +- **functions:** Add return values description (f71805f9c9ea05944c999386f70babd39d68d8f6) +- **metaculr_login:** Add user_agent; trim empty final page (0700722137837bc06731090daa365cebd7235e81) +- **site:** Build vignette and site (9f641bc77034c8b1b240ed4240a9b03bb3e59f95) +- **.gitlab-ci.yml:** Remove extra `devtools::check()` jobs (8690e9d249104c8087be643e495ff208f0ca5f45) +- **cran:** Remove extra test environments and fixed NOTE (1f3f549f8b415334a383c403c581961f2245c0df) +- **.gitlab-ci.yml:** Install pandoc in jobs (5dc7e5a0dd7c236a9cefec020b005942b3ee5a8b) +- **news.md:** Use NEWS.md with automated semantic versioning (cb3a7c488984892d5afc0b7cca7e3a9e7c57f122) +- **news.md:** Add tag for automated semantic versioning (65923936e87598bf779d25a8342f647e3bcfec60) + +# MetaculR 0.1.0 +2022-03-11 + +## Features + +- Initialize project (da01a45c9e39e3bed9493658d78cd8236bcb65df) +- **site:** Add GitLab Pages to .gitlab-ci.yml (1b2f4c5fb056dc1f6d811b8b30c1e79dc40b133f) + +## Fixes + +- **site:** Remove `docs` from .gitignore (de31aa4ff16129d0a62653ad7d705a50988752b7) +- **.gitlab-ci.yml:** Installed devtools to run `devtools::check()` (bebaff5b67e12d6960cd85073922b886a7faa6bf) +- **.gitlab-ci.yml:** Remove `sudo` (ed26fca99eeb19b0d4a0b95e808169034b32eed1) +- **.gitlab-ci.yml:** Install dependencies (c5ca5e55aa713dc2b308e8334759295f2e22958c) +- **.gitlab-ci.yml:** Add rmarkdown to Check (b98b1594d4cdf5015acfaea90384474a34959aa0) +- **.rbuildignore:** Add go-semrel-gitlab files to be ignored (b6087d6c9eb6d47cdb55b565890e23e4397a6745) +- **news.md:** Use NEWS.md rather than CHANGELOG.md (025b2f66e51f9eb65a556ccac60c6a6259d25422) +- **site:** Update title, badges, pkgdown and bug links (751b45686a9141f7bed4f4e5a1f8a62062f07af1) +- **cran-comments:** Updated test images (d48d6e793cdf4a120425d4d74a9232acf9bcca82) +- **.gitlab-ci.yml:** Install dependencies differently (17d3d732643da3a9fa8ffb8325d8d5da83c6b3f8) +- **readme.md:** Update link to lifecyle definitions (77ed4502d940e8671600f9ca695d0ee7975d5fa5) +- **description:** Remove `LazyData: true` (e46f6e965a6339799936350b914830e58a8dbbda) +- **.gitlab-ci.yml:** Add `devtools::check_win_devel()` (c2fa1702db371c1a52033e0a44ac877289e3b177) +- **vignette:** Workaround to mock API calls (34b6f4318acd3a9de81d9705abc4d93dd733ac92) +- **site:** Build website with new vignette file (0efd3fd1871b88825d2b40db33e157859401207e) +- **man:** Updated roxygen notes for all functions (c2a604e204c54b2289a7cd8792dc8e9030c439aa) +- **cran-comments.md:** Added note about API authentication workaround (f7cf6035d07744c9bccf4c5288d092a9ade1ba6b) +- **.gitlab-ci.yml:** Add code coverage job (22dbd70cb89a69be01d70094f7f0901145935839) +- **.gitlab-ci.yml:** Update job dependency name (bc7c332a334a8b8789d9b125a94df47c73593822) +- **.gitlab-ci.yml:** Use `R` in script, not `Rscript` (e2b48bc9873a92908ee6fda4a51496679a7d3127) +- **.gitlab-ci.yml:** Add image to code coverage job (858c5d2da09a892f30890c2b4f425eec7fd9b700) +- **.gitlab-ci.yml:** Install 'covr' in job (11cd866348c86f7360a91e261d7f2e6b6be9a6fc) +- **.gitlab-ci.yml:** Add Debian packages needed for 'covr' (ccca15459245f7d1dc202df9c1b6be5e2a55189c) +- **.gitlab-ci.yml:** Add MetaculR dependencies to job (d041476db5dd9165b4ac2f4fd46c5d56f6e479b2) +- **.gitlab-ci.yml:** Add 'testthat' and 'devtools' to job (cf63056999a94abf0c1ae3fcb0ce6d522595579e) +- **.gitlab-ci.yml:** Use correct path, `/coverage` (2820435ae48c74190d16aac90b5882a28657759d) +- **site:** Updated with new function documentation (4b1a87911362328051de7389f52e85a93d11ea74) + + diff --git a/R/basics.R b/R/basics.R new file mode 100644 index 0000000..dd9373e --- /dev/null +++ b/R/basics.R @@ -0,0 +1,639 @@ +user_agent <- httr::user_agent("https://gitlab.com/ntrlshrp/metaculr") + +#' Retrieve questions from Metaculus API +#' +#' @param api_domain Use "www" unless you have a custom Metaculus domain +#' @param order_by Choose "last_prediction_time", "-activity", "-votes", "-publish_time", "close_time", "resolve_time", "last_prediction_time" +#' @param status Choose "all", "upcoming", "open", "closed", "resolved" +#' @param search Search term(s) +#' @param guessed_by Generally your Metaculus_user_id +#' @param offset Question offset +#' @param pages Number of pages to request +#' +#' @return A list of questions, ordered by last prediction time. +#' @export +#' @family Question Retrieval functions +#' +#' @examples +#' \dontrun{ +#' questions_recent_open <- +#' MetaculR_questions( +#' order_by = "close_time", +#' status = "open", +#' guessed_by = "") +#' } + +MetaculR_questions <- function(api_domain = "www", order_by = "last_prediction_time", status = "all", search = "", guessed_by = "", offset = 0, pages = 10) { + pb <- progress::progress_bar$new( + format = " downloading [:bar] :percent eta: :eta", + total = pages - 1, clear = FALSE, width= 60) + pb$tick(0) + #for (i in 1:100) { + + #} + + endpoint <- paste0("https://", api_domain, ".metaculus.com/api2/questions/?") + extra <- paste0("order_by=", order_by, "&status=", status, "&search=", search, "&guessed_by=", guessed_by, "&limit=20&offset=", offset) + + endpoint <- paste0(endpoint, extra) + message(endpoint) + + get <- httr::GET(url = endpoint, user_agent) + data = jsonlite::fromJSON(rawToChar(get$content)) + data_all <- list(data) + + page <- 1 + offset_base <- 20 + + while(length(data$results$id) == 20) { + pb$tick() + Sys.sleep(0.5) + #print(paste0(page, " ")) + + endpoint <- paste0("https://", api_domain, ".metaculus.com/api2/questions/?") + extra <- paste0("order_by=", order_by, "&status=", status, "&search=", search, "&guessed_by=", guessed_by, "&limit=20&offset=", offset + offset_base) + + endpoint <- paste0(endpoint, extra) + + get <- httr::GET(url = endpoint, user_agent) + data <- jsonlite::fromJSON(rawToChar(get$content)) + if(length(data$results) == 0) break + data_all <- append(data_all, list(data)) + + page <- page + 1 + offset_base <- page * 20 + + if(page == pages) break + } + + return(data_all) +} + + + + + +#' Retrieve questions from Metaculus API (A wrapper for MetaculR_questions()) +#' +#' @param api_domain Use "www" unless you have a custom Metaculus domain +#' @param order_by Default is "last_prediction_time" +#' @param status Choose "all", "upcoming", "open", "closed", "resolved" +#' @param search Search term(s) +#' @param guessed_by Generally your Metaculus_user_id +#' @param offset Question offset +#' @param pages Number of pages to request +#' +#' @return A list of questions that I've predicted, ordered by last prediction time. +#' @export +#' @family Question Retrieval functions +#' +#' @examples +#' \dontrun{ +#' questions_myPredictions <- +#' MetaculR_myPredictions( +#' guessed_by = Metaculus_user_id) +#' } + +MetaculR_myPredictions <- function(api_domain = "www", order_by = "last_prediction_time", status = "all", search = "", guessed_by = "", offset = 0, pages = 10) { + data_all <- MetaculR_questions(api_domain = api_domain, order_by = order_by, status = status, search = search, guessed_by = guessed_by, offset = offset, pages = pages) + + return(data_all) +} + + + + + +#' Retrieve questions from Metaculus API (A wrapper for MetaculR_questions()) +#' +#' @param api_domain Use "www" unless you have a custom Metaculus domain +#' @param order_by Default is "-resolve_time" +#' @param status Default is "resolved" +#' @param search Search term(s) +#' @param guessed_by Generally your Metaculus_user_id +#' @param offset Question offset +#' @param pages Number of pages to request +#' +#' @return A list of questions that I've predicted, ordered by last prediction time, and resolved. +#' @export +#' @family Question Retrieval functions +#' +#' @examples +#' \dontrun{ +#' questions_myPredictions_resolved <- +#' MetaculR_myPredictions_Resolved( +#' guessed_by = Metaculus_user_id) +#' } + +MetaculR_myPredictions_Resolved <- function(api_domain = "www", order_by = "-resolve_time", status = "resolved", search = "", guessed_by = "", offset = 0, pages = 10) { + data_all <- MetaculR_questions(api_domain = "www", order_by = order_by, status = status, search = "", guessed_by = guessed_by, offset = offset, pages = pages) + + return(data_all) +} + + + + + +#' Login to Metaculus +#' +#' @param api_domain Use "www" unless you have a custom Metaculus domain +#' +#' @return Your Metaculus_user_ID. +#' @export +#' +#' @examples +#' \dontrun{ +#' Metaculus_user_id <- +#' MetaculR_login() +#' } + +MetaculR_login <- function(api_domain = "www") { + if(Sys.getenv("Metaculus_username") == "") { + stop("No username in .Renviron!") + } + + endpoint <- paste0("https://", api_domain, ".metaculus.com/api2/accounts/login/") + + response <- httr::POST(url = endpoint, + httr::accept_json(), + httr::content_type_json(), + body = jsonlite::toJSON(list(username = Sys.getenv("Metaculus_username"), password = Sys.getenv("Metaculus_password")), + auto_unbox = TRUE), + encode = "json") + + return(jsonlite::fromJSON(rawToChar(response$content))) +} + + + + + +#' Calculate Brier statistics on MetaculR_questions object +#' +#' @param MetaculR_questions A MetaculR_questions object +#' @param me Show my scores alongside Metaculus scores +#' @param thresholds Thresholds to bin questions +#' +#' @return A list of Brier statistics for you and Metaculus. +#' \item{brier_me, brier_Metaculus}{} +#' \item{baseline.tf}{Logical indicator of whether climatology was provided.} +#' \item{bs}{Brier score} +#' \item{bs.baseline}{Brier Score for climatology} +#' \item{ss}{Skill score} +#' \item{bs.reliability}{Reliability portion of Brier score.} +#' \item{bs.resolution}{Resolution component of Brier score.} +#' \item{bs.uncert}{Uncertainty component of Brier score.} +#' \item{y.i}{Forecast bins -- described as the center value of the bins.} +#' \item{obar.i}{Observation bins -- described as the center value of the bins.} +#' \item{prob.y}{Proportion of time using each forecast.} +#' \item{obar}{Forecast based on climatology or average sample observations.} +#' \item{thresholds}{The thresholds for the forecast bins.} +#' \item{check}{ Reliability - resolution + uncertainty should equal brier score.} +#' \item{Other}{} +#' \item{ss_me_Metaculus}{Skill score, me vs. Metaculus.} +#' \item{count_questions}{Number of total questions included.} +#' \item{brier_df: Used for plotting Brier score statistics}{} +#' \item{ID}{Predictor.} +#' \item{name}{Name of value, see above.} +#' \item{value}{Value.} +#' \item{brier_bins_df: Used for plotting histogram and calibration plots.}{} +#' \item{ID}{Predictor.} +#' \item{centers}{y.i, see above.} +#' \item{freqs}{prob.y, see above.} +#' \item{obars}{obar.i, see above.} +#' \item{ideal}{Ideal calibration where centers equals obars.} +#' \item{ci_low}{Low end of 95% confidence interval for obar.i.} +#' \item{ci_high}{High end of 95% confidence interval for obar.i.} +#' @export +#' +#' @examples +#' \dontrun{ +#' brier_me <- +#' MetaculR_brier( +#' questions_myPredictions_resolved) +#' } + +MetaculR_brier <- function(MetaculR_questions, me = TRUE, thresholds = seq(0,1,0.1)) { + ## no visible binding for global variable solution + ID <- NULL + + my_predictions <- unlist(lapply(MetaculR_questions, function(x) if(is.data.frame(x$results$my_predictions)) {lapply(x$results$my_predictions$predictions[which(x$results$possibilities$type == "binary" & !is.na(x$results$resolution) & x$results$resolution != -1 & unlist(lapply(x$results$metaculus_prediction$full, function(z) !is.null(z))))], function(f) f$x[length(f$x)])})) + + if(is.null(my_predictions) | + me == FALSE) { + binary_questions <- data.frame( + id = unlist(lapply(MetaculR_questions, function(x) x$results$id[which(x$results$possibilities$type == "binary" & !is.na(x$results$resolution) & x$results$resolution != -1 & unlist(lapply(x$results$metaculus_prediction$full, function(z) !is.null(z))))])), + observed = unlist(lapply(MetaculR_questions, function(x) x$results$resolution[which(x$results$possibilities$type == "binary" & !is.na(x$results$resolution) & x$results$resolution != -1 & unlist(lapply(x$results$metaculus_prediction$full, function(z) !is.null(z))))])), + metaculus_prediction = unlist(lapply(MetaculR_questions, function(x) x$results$metaculus_prediction$full[which(x$results$possibilities$type == "binary" & !is.na(x$results$resolution) & x$results$resolution != -1 & unlist(lapply(x$results$metaculus_prediction$full, function(z) !is.null(z))))])) + ) + + brier_me <- NULL + brier_Metaculus <- + verification::brier( + obs = binary_questions$observed, + pred = binary_questions$metaculus_prediction, + thresholds = thresholds) ### c(0, exp(seq(from = -4.59512, to = 4.59512, by = 0.919024)) / (exp(seq(from = -4.59512, to = 4.59512, by = 0.919024)) + 1), 1) + ss_me_Metaculus <- NULL + + brier_df <- + data.frame(ID = c("Me", "Metaculus", "NA"), + bs = c(NA, brier_Metaculus$bs, NA), + bs.baseline = c(NA, brier_Metaculus$bs.baseline, NA), + bs.reliability = c(NA, brier_Metaculus$bs.reliability, NA), + bs.resolution = c(NA, brier_Metaculus$bs.resol, NA), + bs.uncertainty = c(NA, brier_Metaculus$bs.uncert, NA), + skill_baseline = c(NA, brier_Metaculus$ss, NA), + obar = c(NA, NA, brier_Metaculus$obar), + skill_me_Metaculus = c(NA, NA, NA)) %>% + tidyr::pivot_longer(cols = -ID) + + bins_df <- data.frame(x = round(brier_Metaculus$obar.i * brier_Metaculus$prob.y * nrow(binary_questions), 0), + n = round(brier_Metaculus$prob.y * nrow(binary_questions), 0)) + + df_binom.test <- apply(bins_df[which(!is.na(bins_df$x)), ], + MARGIN = 1, + FUN = function(z) stats::binom.test(z[1], z[2])) + + brier_bins_df <- + data.frame(centers = brier_Metaculus$y.i[which(!is.na(bins_df$x))], + freqs = brier_Metaculus$prob.y[which(!is.na(bins_df$x))], + obars = brier_Metaculus$obar.i[which(!is.na(bins_df$x))], + ideal = brier_Metaculus$y.i[which(!is.na(bins_df$x))], + ci_low = unlist(lapply(df_binom.test, function(x) x$conf.int[1])), + ci_high = unlist(lapply(df_binom.test, function(x) x$conf.int[2]))) + } else { + binary_questions <- data.frame( + id = unlist(lapply(MetaculR_questions, function(x) x$results$id[which(x$results$possibilities$type == "binary" & !is.na(x$results$resolution) & x$results$resolution != -1 & unlist(lapply(x$results$metaculus_prediction$full, function(z) !is.null(z))))])), + observed = unlist(lapply(MetaculR_questions, function(x) x$results$resolution[which(x$results$possibilities$type == "binary" & !is.na(x$results$resolution) & x$results$resolution != -1 & unlist(lapply(x$results$metaculus_prediction$full, function(z) !is.null(z))))])), + metaculus_prediction = unlist(lapply(MetaculR_questions, function(x) x$results$metaculus_prediction$full[which(x$results$possibilities$type == "binary" & !is.na(x$results$resolution) & x$results$resolution != -1 & unlist(lapply(x$results$metaculus_prediction$full, function(z) !is.null(z))))])) + ) + + binary_questions_me <- data.frame( + id = unlist(lapply(MetaculR_questions, function(x) if(is.data.frame(x$results$my_predictions)) {x$results$id[which(x$results$possibilities$type == "binary" & !is.na(x$results$resolution) & x$results$resolution != -1 & !is.na(x$results$my_predictions$question) & unlist(lapply(x$results$metaculus_prediction$full, function(z) !is.null(z))))]})), + my_prediction = my_predictions + ) + + binary_questions <- merge(binary_questions, + binary_questions_me) + + brier_me <- + verification::brier( + obs = binary_questions$observed, + pred = binary_questions$my_prediction, + thresholds = thresholds) ### c(0, exp(seq(from = -4.59512, to = 4.59512, by = 0.919024)) / (exp(seq(from = -4.59512, to = 4.59512, by = 0.919024)) + 1), 1) + brier_Metaculus <- + verification::brier( + obs = binary_questions$observed, + pred = binary_questions$metaculus_prediction, + thresholds = thresholds) ### c(0, exp(seq(from = -4.59512, to = 4.59512, by = 0.919024)) / (exp(seq(from = -4.59512, to = 4.59512, by = 0.919024)) + 1), 1) + + brier_df <- + data.frame(ID = c("Me", "Metaculus", "NA"), + bs = c(brier_me$bs, brier_Metaculus$bs, NA), + bs.baseline = c(brier_me$bs.baseline, brier_Metaculus$bs.baseline, NA), + bs.reliability = c(brier_me$bs.reliability, brier_Metaculus$bs.reliability, NA), + bs.resolution = c(brier_me$bs.resol, brier_Metaculus$bs.resol, NA), + bs.uncertainty = c(brier_me$bs.uncert, brier_Metaculus$bs.uncert, NA), + skill_baseline = c(brier_me$ss, brier_Metaculus$ss, NA), + obar = c(NA, NA, brier_me$obar), + skill_me_Metaculus = c(NA, NA, 1 - brier_me$bs / brier_Metaculus$bs)) %>% + tidyr::pivot_longer(cols = -ID) + + bins_df <- data.frame(x = round(brier_me$obar.i * brier_me$prob.y * nrow(binary_questions), 0), + n = round(brier_me$prob.y * nrow(binary_questions), 0)) + + df_binom.test <- apply(bins_df[which(!is.na(bins_df$x)), ], + MARGIN = 1, + FUN = function(z) stats::binom.test(z[1], z[2])) + + brier_me_bins_df <- + data.frame(ID = "Me", + centers = brier_me$y.i[which(!is.na(bins_df$x))], + freqs = brier_me$prob.y[which(!is.na(bins_df$x))], + obars = brier_me$obar.i[which(!is.na(bins_df$x))], + ideal = brier_me$y.i[which(!is.na(bins_df$x))], + ci_low = unlist(lapply(df_binom.test, function(x) x$conf.int[1])), + ci_high = unlist(lapply(df_binom.test, function(x) x$conf.int[2]))) + + bins_df <- data.frame(x = round(brier_Metaculus$obar.i * brier_Metaculus$prob.y * nrow(binary_questions), 0), + n = round(brier_Metaculus$prob.y * nrow(binary_questions), 0)) + + df_binom.test <- apply(bins_df[which(!is.na(bins_df$x)), ], + MARGIN = 1, + FUN = function(z) stats::binom.test(z[1], z[2])) + + brier_Metaculus_bins_df <- + data.frame(ID = "Metaculus", + centers = brier_Metaculus$y.i[which(!is.na(bins_df$x))], + freqs = brier_Metaculus$prob.y[which(!is.na(bins_df$x))], + obars = brier_Metaculus$obar.i[which(!is.na(bins_df$x))], + ideal = brier_Metaculus$y.i[which(!is.na(bins_df$x))], + ci_low = unlist(lapply(df_binom.test, function(x) x$conf.int[1])), + ci_high = unlist(lapply(df_binom.test, function(x) x$conf.int[2]))) + + brier_bins_df <- rbind(brier_me_bins_df, + brier_Metaculus_bins_df) + } + + results <- list(brier_me = brier_me, + brier_Metaculus = brier_Metaculus, + ss_me_Metaculus = 1 - brier_me$bs / brier_Metaculus$bs, + count_questions = nrow(binary_questions), + brier_df = brier_df, + brier_bins_df = brier_bins_df) + + return(results) +} + + + + + +#' Find important changes within MetaculR_questions object +#' +#' @param MetaculR_questions A MetaculR_questions object +#' +#' @return A dataframe of questions with difference measures (your most recent prediction vs. community's most recent prediction, etc.). +#' \item{id}{Question ID.} +#' \item{title}{Question title.} +#' \item{my_prediction}{My most recent prediction.} +#' \item{community_q2}{Community median.} +#' \item{community_ave}{Community average.} +#' \item{community_q2_pre_me}{Community median immediately prior to my_prediction.} +#' \item{community_ave_pre_me}{Community average immediately prior to my_prediction.} +#' \item{diff_me_q2}{Difference between me and the community median, by logodds.} +#' \item{diff_me_ave}{Difference between me and the community average, by logodds.} +#' \item{diff_comm_q2_pre_me}{Difference between community_q2_pre_me and the community average, by logodds.} +#' \item{diff_comm_ave_pre_me}{Difference between community_ave_pre_me and the community average, by logodds.} +#' \item{diff_me_q2_abs}{Absolute difference between me and the community median, by logodds.} +#' \item{diff_me_ave_abs}{Absolute difference between me and the community average, by logodds.} +#' \item{diff_comm_q2_pre_me_abs}{Absolute difference between community_q2_pre_me and the community average, by logodds.} +#' \item{diff_comm_ave_pre_me_abs}{Absolute difference between community_ave_pre_me and the community average, by logodds.} +#' \item{diff_me_q2_abs_odds}{Absolute difference between me and the community median, by odds.} +#' \item{diff_me_ave_abs_odds}{Absolute difference between me and the community average, by odds.} +#' \item{diff_comm_q2_pre_me_abs_odds}{Absolute difference between community_q2_pre_me and the community average, by odds.} +#' \item{diff_comm_ave_pre_me_abs_odds}{Absolute difference between community_ave_pre_me and the community average, by odds.} +#' @export +#' +#' @examples +#' \dontrun{ +#' questions_myPredictions_byDiff <- +#' MetaculR_myDiff( +#' questions_myPredictions) +#' } + +MetaculR_myDiff <- function(MetaculR_questions) { + ## no visible binding for global variable solution + my_prediction <- community_q2 <- community_ave <- community_q2_pre_me <- community_ave_pre_me <- diff_me_q2 <- diff_me_ave <- diff_comm_q2_pre_me <- diff_comm_ave_pre_me <- diff_me_q2_abs <- NULL + + loop_results <- data.frame() + for(l in 1:length(MetaculR_questions)) { + if(is.data.frame(MetaculR_questions[[l]]$results$my_predictions)) { + for(el in which(MetaculR_questions[[l]]$results$possibilities$type == "binary" & is.na(MetaculR_questions[[l]]$results$resolution) & !is.na(MetaculR_questions[[l]]$results$community_prediction$full$q2))) { + loop_results <- + rbind( + loop_results, + data.frame( + community_q2_pre_me = MetaculR_questions[[l]]$results$community_prediction$history[[el]]$x1$q2[max(which(MetaculR_questions[[l]]$results$community_prediction$history[[el]]$t <= MetaculR_questions[[l]]$results$my_predictions$predictions[[el]]$t))], + community_ave_pre_me = MetaculR_questions[[l]]$results$community_prediction$history[[el]]$x2$avg[max(which(MetaculR_questions[[l]]$results$community_prediction$history[[el]]$t <= MetaculR_questions[[l]]$results$my_predictions$predictions[[el]]$t))] ###, + # community_t_pre_me = MetaculR_questions[[l]]$results$community_prediction$history[[el]]$t[max(which(MetaculR_questions[[l]]$results$community_prediction$history[[el]]$t <= MetaculR_questions[[l]]$results$my_predictions$predictions[[el]]$t))] + )) + }}} + + binary_questions <- data.frame( + id = unlist(lapply(MetaculR_questions, function(x) if(is.data.frame(x$results$my_predictions)) {x$results$id[which(x$results$possibilities$type == "binary" & is.na(x$results$resolution) & !is.na(x$results$community_prediction$full$q2))]})), + title = unlist(lapply(MetaculR_questions, function(x) if(is.data.frame(x$results$my_predictions)) {x$results$title[which(x$results$possibilities$type == "binary" & is.na(x$results$resolution) & !is.na(x$results$community_prediction$full$q2))]})), + my_prediction = unlist(lapply(MetaculR_questions, function(x) if(is.data.frame(x$results$my_predictions)) {lapply(x$results$my_predictions$predictions[which(x$results$possibilities$type == "binary" & is.na(x$results$resolution) & !is.na(x$results$community_prediction$full$q2))], function(f) f$x[length(f$x)])})), + community_q2 = unlist(lapply(MetaculR_questions, function(x) if(is.data.frame(x$results$my_predictions)) {x$results$community_prediction$full$q2[which(x$results$possibilities$type == "binary" & is.na(x$results$resolution) & !is.na(x$results$community_prediction$full$q2))]})), + community_ave = unlist(lapply(MetaculR_questions, function(x) if(is.data.frame(x$results$my_predictions)) {lapply(x$results$community_prediction$history[which(x$results$possibilities$type == "binary" & is.na(x$results$resolution) & !is.na(x$results$community_prediction$full$q2))], function(f) f$x2$avg[length(f$x2$avg)])})) + ) %>% + cbind(loop_results) %>% + dplyr::mutate(diff_me_q2 = log(my_prediction / (1 - my_prediction)) - log(community_q2 / (1 - community_q2)), + diff_me_ave = log(my_prediction / (1 - my_prediction)) - log(community_ave / (1 - community_ave)), + diff_comm_q2_pre_me = log(community_q2 / (1 - community_q2)) - log(community_q2_pre_me / (1 - community_q2_pre_me)), + diff_comm_ave_pre_me = log(community_ave / (1 - community_ave)) - log(community_ave_pre_me / (1 - community_ave_pre_me))) %>% + dplyr::mutate(diff_me_q2_abs = abs(diff_me_q2), + diff_me_ave_abs = abs(diff_me_ave), + diff_comm_q2_pre_me_abs = abs(diff_comm_q2_pre_me), + diff_comm_ave_pre_me_abs = abs(diff_comm_ave_pre_me), + diff_me_q2_abs_odds = exp(abs(diff_me_q2)), + diff_me_ave_abs_odds = exp(abs(diff_me_ave)), + diff_comm_q2_pre_me_abs_odds = exp(abs(diff_comm_q2_pre_me)), + diff_comm_ave_pre_me_abs_odds = exp(abs(diff_comm_ave_pre_me))) %>% + dplyr::arrange(dplyr::desc(diff_me_q2_abs)) +} + + + + + +#' Plot the history of a single question +#' +#' @param MetaculR_questions A MetaculR_questions object +#' @param Metacular_id The ID of the question to plot +#' @param scale_binary Choose "prob", "odds", or "logodds" +#' +#' @return A ggplot. +#' @export +#' +#' @examples +#' \dontrun{ +#' MetaculR_plot( +#' MetaculR_questions = questions_myPredictions, +#' Metacular_id = 10004) +#' } + +MetaculR_plot <- function(MetaculR_questions, Metacular_id, scale_binary = "prob") { + ## no visible binding for global variable solution + Date <- q1 <- q2 <- q3 <- x <- community_q2_pre_me <- community_ave_pre_me <- NULL + + community <- data.frame( + cbind(Date = as.POSIXct(unlist(lapply(MetaculR_questions, function(x) if(TRUE) {lapply(x$results$community_prediction$history[which(x$results$id == Metacular_id)], function(f) f$t)})), origin = "1970-01-01 00:00.00 UTC"), + q1 = unlist(lapply(MetaculR_questions, function(x) if(TRUE) {lapply(x$results$community_prediction$history[which(x$results$id == Metacular_id)], function(f) f$x1$q1)})), + q2 = unlist(lapply(MetaculR_questions, function(x) if(TRUE) {lapply(x$results$community_prediction$history[which(x$results$id == Metacular_id)], function(f) f$x1$q2)})), + q3 = unlist(lapply(MetaculR_questions, function(x) if(TRUE) {lapply(x$results$community_prediction$history[which(x$results$id == Metacular_id)], function(f) f$x1$q3)}))) + ) %>% + dplyr::mutate(Date = as.POSIXct(Date, origin = "1970-01-01 00:00.00 UTC")) + + if(is.null(unlist(lapply(MetaculR_questions, function(x) if(is.data.frame(x$results$my_predictions)) {lapply(x$results$my_predictions$predictions[which(x$results$id == Metacular_id)], function(f) f$t)})))) { + me_predict <- FALSE + } else { + me_predict <- TRUE + } + + if(me_predict == TRUE) { + me <- data.frame( + cbind(Date = as.POSIXct(unlist(lapply(MetaculR_questions, function(x) if(is.data.frame(x$results$my_predictions)) {lapply(x$results$my_predictions$predictions[which(x$results$id == Metacular_id)], function(f) f$t)})), origin = "1970-01-01 00:00.00 UTC"), + x = unlist(lapply(MetaculR_questions, function(x) if(is.data.frame(x$results$my_predictions)) {lapply(x$results$my_predictions$predictions[which(x$results$id == Metacular_id)], function(f) f$x)}))) + ) %>% + dplyr::mutate(Date = as.POSIXct(Date, origin = "1970-01-01 00:00.00 UTC")) + + loop_results <- data.frame() + for(l in 1:length(MetaculR_questions)) { + if(is.data.frame(MetaculR_questions[[l]]$results$my_predictions)) { + for(el in which(MetaculR_questions[[l]]$results$id == Metacular_id)) { + loop_results <- + rbind( + loop_results, + data.frame( + community_q2_pre_me = MetaculR_questions[[l]]$results$community_prediction$history[[el]]$x1$q2[max(which(MetaculR_questions[[l]]$results$community_prediction$history[[el]]$t <= MetaculR_questions[[l]]$results$my_predictions$predictions[[el]]$t[length(MetaculR_questions[[l]]$results$my_predictions$predictions[[el]]$t)]))], + community_ave_pre_me = MetaculR_questions[[l]]$results$community_prediction$history[[el]]$x2$avg[max(which(MetaculR_questions[[l]]$results$community_prediction$history[[el]]$t <= MetaculR_questions[[l]]$results$my_predictions$predictions[[el]]$t[length(MetaculR_questions[[l]]$results$my_predictions$predictions[[el]]$t)]))], + Date = MetaculR_questions[[l]]$results$community_prediction$history[[el]]$t[max(which(MetaculR_questions[[l]]$results$community_prediction$history[[el]]$t <= MetaculR_questions[[l]]$results$my_predictions$predictions[[el]]$t[length(MetaculR_questions[[l]]$results$my_predictions$predictions[[el]]$t)]))] + )) %>% + dplyr::mutate(Date = as.POSIXct(Date, origin = "1970-01-01 00:00.00 UTC")) + }}} + + diff_comm_q2_pre_me_abs_odds <- + round(exp(abs(log(community$q2[length(community$q2)] / (1 - community$q2[length(community$q2)])) - log(loop_results$community_q2_pre_me / (1 - loop_results$community_q2_pre_me)))), 2) + diff_me_q2_abs_odds <- + round(exp(abs(log(community$q2[length(community$q2)] / (1 - community$q2[length(community$q2)])) - log(me$x[length(me$x)] / (1 - me$x[length(me$x)])))), 2) + } + + ylim <- c(0, 1) + + if(scale_binary == "odds") { + community <- community %>% + dplyr::mutate(q1 = ifelse(q1 >= 0.5, + q1 / (1- q1), + -(1 - q1) / q1), + q2 = ifelse(q2 >= 0.5, + q2 / (1- q2), + -(1 - q2) / q2), + q3 = ifelse(q3 >= 0.5, + q3 / (1- q3), + -(1 - q3) / q3)) + + if(me_predict == TRUE) { + me <- me %>% + dplyr::mutate(x = ifelse(x >= 0.5, + x / (1 - x), + -(1 - x) / x)) + + loop_results <- loop_results %>% + dplyr::mutate(community_q2_pre_me = ifelse(community_q2_pre_me >= 0.5, + community_q2_pre_me / (1 - community_q2_pre_me), + -(1 - community_q2_pre_me) / community_q2_pre_me), + community_ave_pre_me = ifelse(community_ave_pre_me >= 0.5, + community_ave_pre_me / (1 - community_ave_pre_me), + -(1 - community_ave_pre_me) / community_ave_pre_me)) + } + + ylim <- c(-99, 99) + } + if(scale_binary == "logodds") { + community <- community %>% + dplyr::mutate(q1 = log(q1 / (1 - q1)), + q2 = log(q2 / (1 - q2)), + q3 = log(q3 / (1 - q3))) + + if(me_predict == TRUE) { + me <- me %>% + dplyr::mutate(x = log(x / (1 - x))) + + loop_results <- loop_results %>% + dplyr::mutate(community_q2_pre_me = log(community_q2_pre_me / (1 - community_q2_pre_me)), + community_ave_pre_me = log(community_ave_pre_me / (1 - community_ave_pre_me))) + } + + + ylim <- c(log(1 / 99), log(99)) + } + + gg <- community %>% + ggplot2::ggplot() + + ggplot2::geom_line( + ggplot2::aes(x = Date, + y = q2) + ) + + ggplot2::geom_ribbon( + ggplot2::aes(x = Date, + ymin = q1, + ymax = q3), + alpha = 0.1) + + if(me_predict == TRUE) { + gg <- gg + + ggplot2::geom_point( + data = me, + ggplot2::aes(x = Date, + y = x), + shape = 21 + ) + + ggplot2::geom_point( + data = loop_results, + ggplot2::aes(x = Date, + y = community_q2_pre_me), + shape = 21, + fill = "black" + ) + + ggplot2::geom_segment( + ggplot2::aes(x = loop_results$Date, + y = loop_results$community_q2_pre_me, + xend = loop_results$Date, + yend = q2[length(q2)], + color = "red")) + + ggplot2::annotate("text", + x = loop_results$Date, + y = community$q2[length(community$q2)], + label = paste0("Odds diff: ", diff_comm_q2_pre_me_abs_odds), + size = 3) + + ggplot2::geom_segment( + ggplot2::aes(x = Date[length(Date)], + y = q2[length(q2)], + xend = Date[length(Date)], + yend = me$x[length(me$x)], + color = "red")) + + ggplot2::annotate("text", + x = me$Date[length(me$Date)], ###community$Date[length(community$Date)], + y = me$x[length(me$x)] - (ylim[2] - ylim[1]) * 0.04, + label = paste0("Odds diff: ", diff_me_q2_abs_odds), + size = 3) + } + + gg + + ggplot2::theme_classic() + + ggplot2::coord_cartesian( + ylim = ylim + ) + + ggplot2::ggtitle(label = paste0(Metacular_id, ": ", unlist(lapply(MetaculR_questions, function(x) if(TRUE) {x$results$title[which(x$results$id == Metacular_id)]})))) + + ggplot2::labs(y = "Community prediction") + + ggplot2::guides(color = FALSE) +} + + + + + +#' Find exciting questions +#' +#' @param MetaculR_questions A MetaculR_questions object +#' +#' @return A dataframe of questions with excitement measures. +#' \item{id}{Question ID.} +#' \item{title}{Question title.} +#' \item{Total_Change}{Cumulative delta in time period, by probability.} +#' \item{Total_logodds_Change}{Cumulative delta in time period, by logodds.} +#' \item{Total_Change_Even}{Cumulative delta toward even odds in time period, by probability.} +#' \item{Total_logodds_Change_Even}{Cumulative delta toward even odds in time period, by logodds.} +#' @export +#' +#' @examples +#' \dontrun{ +#' questions_myPredictions_byExcitement <- +#' MetaculR_excitement( +#' questions_myPredictions) +#' } + +MetaculR_excitement <- function(MetaculR_questions) { + ## no visible binding for global variable solution + x1 <- Date <- q2_delta <- q2_logodds_delta <- q2_delta_even <- q2_logodds_delta_even <- NULL + + binary_questions <- data.frame( + id = unlist(lapply(MetaculR_questions, function(x) if(TRUE) {x$results$id[which(x$results$possibilities$type == "binary" & as.Date(x$results$close_time) >= as.Date(Sys.time()) - 30 & unlist(lapply(x$results$community_prediction$history, function(z) nrow(z) > 0)))]})), + title = unlist(lapply(MetaculR_questions, function(x) if(TRUE) {x$results$title[which(x$results$possibilities$type == "binary" & as.Date(x$results$close_time) >= as.Date(Sys.time()) - 30 & unlist(lapply(x$results$community_prediction$history, function(z) nrow(z) > 0)))]})), + Total_Change = unlist(lapply(MetaculR_questions, function(x) lapply(x$results$community_prediction$history[which(x$results$possibilities$type == "binary" & as.Date(x$results$close_time) >= as.Date(Sys.time()) - 30)], function(z) if(nrow(z) > 0) {z %>% dplyr::mutate(Date = as.POSIXct(t, origin = "1970-01-01 00:00.00 UTC"), q2_delta = x1$q2 - dplyr::lag(x1$q2)) %>% dplyr::filter(as.Date(Date) >= as.Date(Sys.time()) - 30) %>% dplyr::summarize(Total_Change = sum(abs(q2_delta)))}))), + Total_logodds_Change = unlist(lapply(MetaculR_questions, function(x) lapply(x$results$community_prediction$history[which(x$results$possibilities$type == "binary" & as.Date(x$results$close_time) >= as.Date(Sys.time()) - 30)], function(z) if(nrow(z) > 0) {z %>% dplyr::mutate(Date = as.POSIXct(t, origin = "1970-01-01 00:00.00 UTC"), q2_logodds_delta = log(x1$q2 / (1 - x1$q2)) - log(dplyr::lag(x1$q2) / (1 - dplyr::lag(x1$q2)))) %>% dplyr::filter(as.Date(Date) >= as.Date(Sys.time()) - 30) %>% dplyr::summarize(Total_logodds_Change = sum(abs(q2_logodds_delta)))}))), + Total_Change_Even = unlist(lapply(MetaculR_questions, function(x) lapply(x$results$community_prediction$history[which(x$results$possibilities$type == "binary" & as.Date(x$results$close_time) >= as.Date(Sys.time()) - 30)], function(z) if(nrow(z) > 0) {z %>% dplyr::mutate(Date = as.POSIXct(t, origin = "1970-01-01 00:00.00 UTC"), q2_delta_even = ifelse(x1$q2 > 0.5 & x1$q2 - dplyr::lag(x1$q2) < 0, x1$q2 - dplyr::lag(x1$q2), ifelse(x1$q2 < 0.5 & x1$q2 - dplyr::lag(x1$q2) > 0, x1$q2 - dplyr::lag(x1$q2), 0))) %>% dplyr::filter(as.Date(Date) >= as.Date(Sys.time()) - 30) %>% dplyr::summarize(Total_Change_Even = sum(abs(q2_delta_even)))}))), + Total_logodds_Change_Even = unlist(lapply(MetaculR_questions, function(x) lapply(x$results$community_prediction$history[which(x$results$possibilities$type == "binary" & as.Date(x$results$close_time) >= as.Date(Sys.time()) - 30)], function(z) if(nrow(z) > 0) {z %>% dplyr::mutate(Date = as.POSIXct(t, origin = "1970-01-01 00:00.00 UTC"), q2_logodds_delta_even = ifelse(x1$q2 > 0.5 & x1$q2 - dplyr::lag(x1$q2) < 0, log(x1$q2 / (1 - x1$q2)) - log(dplyr::lag(x1$q2) / (1 - dplyr::lag(x1$q2))), ifelse(x1$q2 < 0.5 & x1$q2 - dplyr::lag(x1$q2) > 0, log(x1$q2 / (1 - x1$q2)) - log(dplyr::lag(x1$q2) / (1 - dplyr::lag(x1$q2))), 0))) %>% dplyr::filter(as.Date(Date) >= as.Date(Sys.time()) - 30) %>% dplyr::summarize(Total_logodds_Change_Even = sum(abs(q2_logodds_delta_even)))})))) +} diff --git a/R/utils-pipe.R b/R/utils-pipe.R new file mode 100644 index 0000000..e79f3d8 --- /dev/null +++ b/R/utils-pipe.R @@ -0,0 +1,11 @@ +#' Pipe operator +#' +#' See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. +#' +#' @name %>% +#' @rdname pipe +#' @keywords internal +#' @export +#' @importFrom magrittr %>% +#' @usage lhs \%>\% rhs +NULL diff --git a/README.md b/README.md new file mode 100644 index 0000000..f799471 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ + +# MetaculR + + +[![CRAN status](https://www.r-pkg.org/badges/version/MetaculR)](https://CRAN.R-project.org/package=MetaculR) +[![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://lifecycle.r-lib.org/articles/stages.html) +[![pipeline status](https://gitlab.com/ntrlshrp/metaculr/badges/master/pipeline.svg)](https://gitlab.com/ntrlshrp/metaculr/-/commits/master) +[![coverage report](https://gitlab.com/ntrlshrp/metaculr/badges/master/coverage.svg)](https://gitlab.com/ntrlshrp/metaculr/-/commits/master) +[![Latest Release](https://gitlab.com/ntrlshrp/metaculr/-/badges/release.svg)](https://gitlab.com/ntrlshrp/metaculr/-/releases) + + +The goal of MetaculR is to enable [Metaculus](https://www.metaculus.com/questions/) users to easily login, download, and analyze questions predicted by you and/or the Metaculus community. +See vignettes, changelogs, and other documentation at [https://ntrlshrp.gitlab.io/metaculr/](https://ntrlshrp.gitlab.io/metaculr/). + +## Installation + +You can install the released version of MetaculR from [CRAN](https://CRAN.R-project.org) with: + +``` r +install.packages("MetaculR") +``` + +You can install the development version with: + +``` r +remotes::install_gitlab("ntrlshrp/metaculr") +``` diff --git a/build/vignette.rds b/build/vignette.rds new file mode 100644 index 0000000000000000000000000000000000000000..4b4ba0e4380cb48c25fc258a1fd96c699790dbe3 GIT binary patch literal 192 zcmV;x06+g9iwFP!000001B>8dU|?WkU}j@xU}6R`nT3G_8xRWsF(U&D11FH?@l7pB zOfJm{(hJH>L6hTv$)Sn!!u4d7WG%e#Zakj`L2fEYB~3=|NG$235o2mYI_Zvo|EO1kPa&aB+h&8H3Q>fMGt0`#Fp9 u%k^M>;05`%0Z9A@0(6fi=Oh-Rdz33Bu_RG1tq7 + %\VignetteIndexEntry{MetaculR} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + + + + + + + + +```r +library(MetaculR) +``` + +# Login + +Add the following lines to `.Renviron` using `usethis::edit_r_environ()`: + +``` +Metaculus_username="yourUsername" +Metaculus_password="yourPassword" +``` + +Then, login: + + +```r +Metaculus_user_id <- MetaculR_login() +``` + +# Download Your Predictions + + +```r +questions_myPredictions <- MetaculR_myPredictions(guessed_by = Metaculus_user_id) +``` + +# Analyze Your Predictions + +## How different is my last prediction from current community? + + +```r +questions_myPredictions_byDiff <- MetaculR_myDiff(questions_myPredictions) +``` + + + +```r +questions_myPredictions_byDiff %>% + dplyr::select(id, title, my_prediction, community_q2, community_q2_pre_me, diff_me_q2_abs_odds) %>% + dplyr::mutate(diff_me_q2_abs_odds = round(diff_me_q2_abs_odds, 1)) %>% + dplyr::arrange(dplyr::desc(diff_me_q2_abs_odds)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | my_prediction| community_q2| community_q2_pre_me| diff_me_q2_abs_odds| +|----:|:-------------------------------------------------------------------------------------|-------------:|------------:|-------------------:|-------------------:| +| 1634|Will US Income Inequality Increase by 2025? | 0.02| 0.53| 0.47| 55.3| +| 9933|Will any NATO country invoke Article 5 by March 31, 2022? | 0.13| 0.01| 0.02| 14.8| +| 5407|If Starlink offers an IPO before 2030, will it set a record for the largest IPO? | 0.03| 0.24| 0.30| 10.2| +| 9937|Will more than 50,000 people be killed in the Russo-Ukrainian War in 2022? | 0.15| 0.60| 0.45| 8.5| +| 2605|Will any country's military expenditure exceed that of the United States before 2030? | 0.01| 0.07| 0.08| 7.5| +| 7977|Will US core CPI inflation rise by more than 3% from December 2021 to December 2022? | 0.94| 0.70| 0.68| 6.7| + +### Plot those differences + + +```r +questions_myPredictions_byDiff %>% + dplyr::arrange(dplyr::desc(diff_me_q2_abs_odds)) %>% + dplyr::slice_head(n = 10) %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = reorder(factor(id), -diff_me_q2_abs_odds), + y = diff_me_q2_abs_odds, + fill = reorder(factor(id), -diff_me_q2_abs_odds)) + ) + + ggplot2::theme_classic() + + ggplot2::labs(x = "ID", + y = "Odds difference between me and community q2") + + ggplot2::guides(fill = FALSE) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +``` + +![plot of chunk unnamed-chunk-8](MetaculRRMD_unnamed-chunk-8-1.png) + +## Where has community moved most since my last prediction? + + +```r +questions_myPredictions_byDiff %>% + dplyr::select(id, title, my_prediction, community_q2, community_q2_pre_me, diff_comm_q2_pre_me_abs_odds) %>% + dplyr::mutate(diff_comm_q2_pre_me_abs_odds = round(diff_comm_q2_pre_me_abs_odds, 1)) %>% + dplyr::arrange(dplyr::desc(diff_comm_q2_pre_me_abs_odds)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | my_prediction| community_q2| community_q2_pre_me| diff_comm_q2_pre_me_abs_odds| +|-----:|:-----------------------------------------------------------------------------|-------------:|------------:|-------------------:|----------------------------:| +| 10004|Will a major nuclear power plant in Germany be operational on June 1, 2023? | 0.10| 0.20| 0.56| 5.1| +| 9939|Will Kyiv fall to Russian forces by April 2022? | 0.01| 0.02| 0.09| 4.8| +| 6604|Will annual U.S. inflation reach 100% in any year before 2050? | 0.01| 0.02| 0.08| 4.3| +| 8766|Will the Omicron variant be less lethal than Delta? | 0.98| 0.98| 0.94| 3.1| +| 9933|Will any NATO country invoke Article 5 by March 31, 2022? | 0.13| 0.01| 0.02| 2.0| +| 6725|Will a large American city fully abolish their police department before 2035? | 0.01| 0.02| 0.04| 2.0| + +### Plot those differences + + +```r +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 10004) +``` + +![plot of chunk unnamed-chunk-10](MetaculRRMD_unnamed-chunk-10-1.png) + + +```r +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 6604, + scale_binary = "logodds") +``` + +![plot of chunk unnamed-chunk-11](MetaculRRMD_unnamed-chunk-11-1.png) + +## Score Predictions + +Let's see some Brier statistics on resolved questions: + + +```r +questions_myPredictions_resolved <- MetaculR_myPredictions_Resolved(guessed_by = Metaculus_user_id) +``` + + +```r +brier_me <- MetaculR_brier(questions_myPredictions_resolved) +``` + +### Plot scores + + +```r +brier_me$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +#> Warning: Removed 10 rows containing missing values (geom_col). +#> Warning: Removed 10 rows containing missing values (geom_text). +``` + +![plot of chunk unnamed-chunk-14](MetaculRRMD_unnamed-chunk-14-1.png) + +#### Histogram + + +```r +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs, + fill = ID), + position = ggplot2::position_dodge2(width = 0.1, preserve = "single") + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, 1)) +``` + +![plot of chunk unnamed-chunk-15](MetaculRRMD_unnamed-chunk-15-1.png) + +#### Calibration + + +```r +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high, + color = ID), + position = ggplot2::position_dodge2(width = 0.02) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_me$brier_bins_df $obars) * 1.1)) +``` + +![plot of chunk unnamed-chunk-16](MetaculRRMD_unnamed-chunk-16-1.png) + +## Score Predictions (Equivalent Evidentiary Bins) + +What if question bins were not 5 percentage points each, but were based on logodds? + + +```r +brier_me <- MetaculR_brier(questions_myPredictions_resolved, + thresholds = c(0, exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) / (exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) + 1), 1)) +``` + + +```r +brier_me$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +#> Warning: Removed 10 rows containing missing values (geom_col). +#> Warning: Removed 10 rows containing missing values (geom_text). +``` + +![plot of chunk unnamed-chunk-18](MetaculRRMD_unnamed-chunk-18-1.png) + +#### Histogram (Equivalent Evidentiary Bins) + + +```r +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs, + fill = ID), + position = ggplot2::position_dodge2(width = 0.1, preserve = "single") + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.05), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, 1)) +``` + +![plot of chunk unnamed-chunk-19](MetaculRRMD_unnamed-chunk-19-1.png) + +#### Calibration (Equivalent Evidentiary Bins) + + +```r +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high, + color = ID), + position = ggplot2::position_dodge2(width = 0.02) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_me$brier_bins_df$obars) * 1.1)) +``` + +![plot of chunk unnamed-chunk-20](MetaculRRMD_unnamed-chunk-20-1.png) + +# Analyze community predictions + +For questions you may not have predicted. + +## Score, Community Predictions + +Let's see some Brier statistics on resolved questions: + + +```r +questions_recent_resolved <- + MetaculR_questions( + order_by = "-resolve_time", + status= "resolved", + guessed_by = "", + pages = 32, + offset = 0) +``` + + +```r +brier_recent_resolved <- + MetaculR_brier( + questions_recent_resolved, + me = FALSE) +``` + +### Plot scores, Community Predictions + + +```r +brier_recent_resolved$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +#> Warning: Removed 17 rows containing missing values (geom_col). +#> Warning: Removed 17 rows containing missing values (geom_text). +``` + +![plot of chunk unnamed-chunk-23](MetaculRRMD_unnamed-chunk-23-1.png) + +#### Histogram, Community Predictions + + +```r +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$freqs) * 1.1)) +``` + +![plot of chunk unnamed-chunk-24](MetaculRRMD_unnamed-chunk-24-1.png) + +#### Calibration, Community Predictions + + +```r +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$obars) * 1.1)) +``` + +![plot of chunk unnamed-chunk-25](MetaculRRMD_unnamed-chunk-25-1.png) + +## Score Predictions, Community Predictions (Equivalent Evidentiary Bins) + + +```r +brier_recent_resolved <- + MetaculR_brier( + questions_recent_resolved, + me = FALSE, + thresholds = c(0, exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) / (exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) + 1), 1)) +``` + + +```r +brier_recent_resolved$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +#> Warning: Removed 17 rows containing missing values (geom_col). +#> Warning: Removed 17 rows containing missing values (geom_text). +``` + +![plot of chunk unnamed-chunk-27](MetaculRRMD_unnamed-chunk-27-1.png) + +#### Histogram, Community Predictions (Equivalent Evidentiary Bins) + + +```r +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$freqs) * 1.1)) +``` + +![plot of chunk unnamed-chunk-28](MetaculRRMD_unnamed-chunk-28-1.png) + +#### Calibration, Community Predictions (Equivalent Evidentiary Bins) + + +```r +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$obars) * 1.1)) +``` + +![plot of chunk unnamed-chunk-29](MetaculRRMD_unnamed-chunk-29-1.png) + +# Find Exciting Questions + +Various sports now have an "Excitement Index" to identify games that interest fans--maybe we can do the same for predictions? + +## Among your predictions + + +```r +questions_myPredictions_byExcitement <- MetaculR_excitement(questions_myPredictions) + +questions_myPredictions_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_Change)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | Total_Change| Total_logodds_Change| Total_Change_Even| Total_logodds_Change_Even| +|----:|:---------------------------------------------------------------------------------|------------:|--------------------:|-----------------:|-------------------------:| +| 9790|Will Éric Zemmour be in the 2nd round of the 2022 French presidential election? | 1.12| 5.38| 0.50| 2.32| +| 8944|Will Boris Johnson be Prime Minister of the UK on June 1, 2022? | 0.35| 2.00| 0.00| 0.00| +| 8882|Will 2022 be the hottest year on record? | 0.22| 1.60| 0.11| 0.80| +| 8554|Will women receive at least 70% of bachelor's degrees in the US in the year 2050? | 0.19| 1.49| 0.10| 0.79| +| 2511|Will Emmanuel Macron be re-elected President of France in 2022? | 0.18| 1.40| 0.00| 0.00| +| 6330|Will Donald J. Trump be a candidate for President in the 2024 cycle? | 0.15| 0.79| 0.05| 0.25| + + +```r +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 9790) +``` + +![plot of chunk unnamed-chunk-31](MetaculRRMD_unnamed-chunk-31-1.png) + + +```r +questions_myPredictions_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_logodds_Change)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | Total_Change| Total_logodds_Change| Total_Change_Even| Total_logodds_Change_Even| +|----:|:---------------------------------------------------------------------------------|------------:|--------------------:|-----------------:|-------------------------:| +| 9790|Will Éric Zemmour be in the 2nd round of the 2022 French presidential election? | 1.12| 5.38| 0.50| 2.32| +| 8944|Will Boris Johnson be Prime Minister of the UK on June 1, 2022? | 0.35| 2.00| 0.00| 0.00| +| 8882|Will 2022 be the hottest year on record? | 0.22| 1.60| 0.11| 0.80| +| 8554|Will women receive at least 70% of bachelor's degrees in the US in the year 2050? | 0.19| 1.49| 0.10| 0.79| +| 6604|Will annual U.S. inflation reach 100% in any year before 2050? | 0.06| 1.45| 0.00| 0.00| +| 2511|Will Emmanuel Macron be re-elected President of France in 2022? | 0.18| 1.40| 0.00| 0.00| + + +```r +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 6725) +``` + +![plot of chunk unnamed-chunk-33](MetaculRRMD_unnamed-chunk-33-1.png) + +## Among community predictions + +### Resolved questions + +What were the most exciting resolved questions? + + +```r +questions_recent_byExcitement <- MetaculR_excitement(questions_recent_resolved) + +questions_recent_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_Change_Even)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | Total_Change| Total_logodds_Change| Total_Change_Even| Total_logodds_Change_Even| +|----:|:--------------------------------------------------------------------------------------------------------------------|------------:|--------------------:|-----------------:|-------------------------:| +| 8859|Will Ukraine ban wheat export before April 2023? | 0.17| 1.37| 0.11| 0.92| +| 9517|Will Russian troops enter Mariupol, Ukraine by December 31, 2022? | 0.52| 4.86| 0.09| 0.44| +| 9590|Will there be a Pi variant of COVID by Pi Day (March 14, 2022)? | 0.41| 1.95| 0.07| 0.30| +| 8898|Will Russia invade Ukrainian territory before 2023? | 0.38| 2.97| 0.06| 0.32| +| 7211|Will any body of the US federal government conclude that COVID-19 originated in a lab in Hubei before June 1st 2022? | 0.02| 0.08| 0.02| 0.08| +| 9693|Will the gray wolf be relisted as Threatened or Endangered by the US before 2030? | 0.00| 0.00| 0.00| 0.00| + + +```r +MetaculR_plot(MetaculR_questions = questions_recent_resolved, + Metacular_id = 8898) +``` + +![plot of chunk unnamed-chunk-35](MetaculRRMD_unnamed-chunk-35-1.png) + +### Open questions + +What are the most exciting questions that are still open? + + +```r +questions_recent_open <- + MetaculR_questions( + order_by = "close_time", + status = "open", + guessed_by = "") +``` + + +```r +questions_recent_open_byExcitement <- MetaculR_excitement(questions_recent_open) + +questions_recent_open_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_logodds_Change_Even)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | Total_Change| Total_logodds_Change| Total_Change_Even| Total_logodds_Change_Even| +|----:|:------------------------------------------------------------------------------------------------------|------------:|--------------------:|-----------------:|-------------------------:| +| 9746|Will Ukraine fulfill its Minsk-II obligations in Donetsk and Luhansk Oblast by 2023? | 0.57| 11.73| 0.14| 4.72| +| 9566|Will Russian troops enter Odessa, Ukraine before December 31, 2022? | 1.18| 10.03| 0.48| 4.56| +| 9791|Will Éric Zemmour win the French presidential election in 2022? | 0.15| 9.40| 0.07| 4.35| +| 9743|Will Volodymyr Zelensky remain President of Ukraine by 2023? | 1.66| 8.13| 0.74| 3.70| +| 7237|Will Coinbase default on an obligation to hand over their users’ assets on request by the end of 2022? | 0.13| 5.05| 0.07| 2.67| +| 9584|Will Ketanji Brown Jackson be confirmed as an Associate Justice of the Supreme Court before 2023? | 0.67| 8.62| 0.12| 2.46| + + +```r +MetaculR_plot(MetaculR_questions = questions_recent_open, + Metacular_id = 9566) +``` + +![plot of chunk unnamed-chunk-38](MetaculRRMD_unnamed-chunk-38-1.png) + + diff --git a/inst/doc/MetaculR.html b/inst/doc/MetaculR.html new file mode 100644 index 0000000..f12bd5c --- /dev/null +++ b/inst/doc/MetaculR.html @@ -0,0 +1,1361 @@ + + + + + + + + + + + + + + +MetaculR + + + + + + + + + + + + + + + + + + + + + + + + +

MetaculR

+ + + +
library(MetaculR)
+
+

Login

+

Add the following lines to .Renviron using usethis::edit_r_environ():

+
Metaculus_username="yourUsername"
+Metaculus_password="yourPassword"
+

Then, login:

+
Metaculus_user_id <- MetaculR_login()
+
+
+

Download Your Predictions

+
questions_myPredictions <- MetaculR_myPredictions(guessed_by = Metaculus_user_id)
+
+
+

Analyze Your Predictions

+
+

How different is my last prediction from current community?

+
questions_myPredictions_byDiff <- MetaculR_myDiff(questions_myPredictions)
+
questions_myPredictions_byDiff %>%
+  dplyr::select(id, title, my_prediction, community_q2, community_q2_pre_me, diff_me_q2_abs_odds) %>%
+  dplyr::mutate(diff_me_q2_abs_odds = round(diff_me_q2_abs_odds, 1)) %>%
+  dplyr::arrange(dplyr::desc(diff_me_q2_abs_odds)) %>%
+  head() %>%
+  knitr::kable()
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
idtitlemy_predictioncommunity_q2community_q2_pre_mediff_me_q2_abs_odds
1634Will US Income Inequality Increase by 2025?0.020.530.4755.3
9933Will any NATO country invoke Article 5 by March 31, 2022?0.130.010.0214.8
5407If Starlink offers an IPO before 2030, will it set a record for the largest IPO?0.030.240.3010.2
9937Will more than 50,000 people be killed in the Russo-Ukrainian War in 2022?0.150.600.458.5
2605Will any country’s military expenditure exceed that of the United States before 2030?0.010.070.087.5
7977Will US core CPI inflation rise by more than 3% from December 2021 to December 2022?0.940.700.686.7
+
+

Plot those differences

+
questions_myPredictions_byDiff %>%
+  dplyr::arrange(dplyr::desc(diff_me_q2_abs_odds)) %>%
+  dplyr::slice_head(n = 10) %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_col(
+    ggplot2::aes(x = reorder(factor(id), -diff_me_q2_abs_odds),
+                 y = diff_me_q2_abs_odds,
+                 fill = reorder(factor(id), -diff_me_q2_abs_odds))
+  ) +
+  ggplot2::theme_classic() +
+  ggplot2::labs(x = "ID",
+                y = "Odds difference between me and community q2") +
+  ggplot2::guides(fill = FALSE) +
+  ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1))
+
+ +

plot of chunk unnamed-chunk-8

+
+
+
+
+

Where has community moved most since my last prediction?

+
questions_myPredictions_byDiff %>%
+  dplyr::select(id, title, my_prediction, community_q2, community_q2_pre_me, diff_comm_q2_pre_me_abs_odds) %>%
+  dplyr::mutate(diff_comm_q2_pre_me_abs_odds = round(diff_comm_q2_pre_me_abs_odds, 1)) %>%
+  dplyr::arrange(dplyr::desc(diff_comm_q2_pre_me_abs_odds)) %>%
+  head() %>%
+  knitr::kable()
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
idtitlemy_predictioncommunity_q2community_q2_pre_mediff_comm_q2_pre_me_abs_odds
10004Will a major nuclear power plant in Germany be operational on June 1, 2023?0.100.200.565.1
9939Will Kyiv fall to Russian forces by April 2022?0.010.020.094.8
6604Will annual U.S. inflation reach 100% in any year before 2050?0.010.020.084.3
8766Will the Omicron variant be less lethal than Delta?0.980.980.943.1
9933Will any NATO country invoke Article 5 by March 31, 2022?0.130.010.022.0
6725Will a large American city fully abolish their police department before 2035?0.010.020.042.0
+
+

Plot those differences

+
MetaculR_plot(MetaculR_questions = questions_myPredictions,
+              Metacular_id = 10004)
+
+ +

plot of chunk unnamed-chunk-10

+
+
MetaculR_plot(MetaculR_questions = questions_myPredictions,
+              Metacular_id = 6604,
+              scale_binary = "logodds")
+
+ +

plot of chunk unnamed-chunk-11

+
+
+
+
+

Score Predictions

+

Let’s see some Brier statistics on resolved questions:

+
questions_myPredictions_resolved <- MetaculR_myPredictions_Resolved(guessed_by = Metaculus_user_id)
+
brier_me <- MetaculR_brier(questions_myPredictions_resolved)
+
+

Plot scores

+
brier_me$brier_df %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_col(
+    ggplot2::aes(x = name,
+                 y = value,
+                 fill = ID),
+    position = "dodge2"
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = name,
+                 y = value,
+                 label = round(value, 3)),
+    size = 2,
+    position = ggplot2::position_dodge2(width = 1), #"dodge2",
+    vjust = 0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::labs(x = "Statistic",
+                y = "Value") +
+  ggplot2::coord_cartesian(ylim = c(0, 1)) +
+  ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1))
+#> Warning: Removed 10 rows containing missing values (geom_col).
+#> Warning: Removed 10 rows containing missing values (geom_text).
+
+ +

plot of chunk unnamed-chunk-14

+
+
+

Histogram

+
brier_me$brier_bins_df %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_col(
+    ggplot2::aes(x = centers,
+                 y = freqs,
+                 fill = ID),
+    position = ggplot2::position_dodge2(width = 0.1, preserve = "single")
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = centers,
+                 y = freqs,
+                 label = round(freqs, 3)),
+    size = 2,
+    position = ggplot2::position_dodge2(width = 0.1), #"dodge2",
+    # vjust = 0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::coord_cartesian(ylim = c(0, 1))
+
+ +

plot of chunk unnamed-chunk-15

+
+
+
+

Calibration

+
brier_me$brier_bins_df %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_pointrange(
+    ggplot2::aes(x = centers,
+                 y = obars,
+                 ymin = ci_low,
+                 ymax = ci_high,
+                 color = ID),
+    position = ggplot2::position_dodge2(width = 0.02)
+  ) +
+  ggplot2::geom_line(
+    ggplot2::aes(x = centers,
+                 y = ideal)
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = centers,
+                 y = obars,
+                 label = format(round(obars, 3), nsmall = 3)),
+    size = 2,
+    position = ggplot2::position_dodge2(width = 0.1), #"dodge2",
+    vjust = -0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::coord_cartesian(ylim = c(0, max(brier_me$brier_bins_df $obars) * 1.1))
+
+ +

plot of chunk unnamed-chunk-16

+
+
+
+
+
+

Score Predictions (Equivalent Evidentiary Bins)

+

What if question bins were not 5 percentage points each, but were based on logodds?

+
brier_me <- MetaculR_brier(questions_myPredictions_resolved,
+                           thresholds = c(0, exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) / (exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) + 1), 1))
+
brier_me$brier_df  %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_col(
+    ggplot2::aes(x = name,
+                 y = value,
+                 fill = ID),
+    position = "dodge2"
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = name,
+                 y = value,
+                 label = round(value, 3)),
+    size = 2,
+    position = ggplot2::position_dodge2(width = 1), #"dodge2",
+    vjust = 0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::labs(x = "Statistic",
+                y = "Value") +
+  ggplot2::coord_cartesian(ylim = c(0, 1)) +
+  ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1))
+#> Warning: Removed 10 rows containing missing values (geom_col).
+#> Warning: Removed 10 rows containing missing values (geom_text).
+
+ +

plot of chunk unnamed-chunk-18

+
+
+

Histogram (Equivalent Evidentiary Bins)

+
brier_me$brier_bins_df %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_col(
+    ggplot2::aes(x = centers,
+                 y = freqs,
+                 fill = ID),
+    position = ggplot2::position_dodge2(width = 0.1, preserve = "single")
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = centers,
+                 y = freqs,
+                 label = round(freqs, 3)),
+    size = 2,
+    position = ggplot2::position_dodge2(width = 0.05), #"dodge2",
+    # vjust = 0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::coord_cartesian(ylim = c(0, 1))
+
+ +

plot of chunk unnamed-chunk-19

+
+
+
+

Calibration (Equivalent Evidentiary Bins)

+
brier_me$brier_bins_df %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_pointrange(
+    ggplot2::aes(x = centers,
+                 y = obars,
+                 ymin = ci_low,
+                 ymax = ci_high,
+                 color = ID),
+    position = ggplot2::position_dodge2(width = 0.02)
+  ) +
+  ggplot2::geom_line(
+    ggplot2::aes(x = centers,
+                 y = ideal)
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = centers,
+                 y = obars,
+                 label = format(round(obars, 3), nsmall = 3)),
+    size = 2,
+    position = ggplot2::position_dodge2(width = 0.1), #"dodge2",
+    vjust = -0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::coord_cartesian(ylim = c(0, max(brier_me$brier_bins_df$obars) * 1.1))
+
+ +

plot of chunk unnamed-chunk-20

+
+
+
+
+
+

Analyze community predictions

+

For questions you may not have predicted.

+
+

Score, Community Predictions

+

Let’s see some Brier statistics on resolved questions:

+
questions_recent_resolved <-
+  MetaculR_questions(
+    order_by = "-resolve_time",
+    status= "resolved",
+    guessed_by = "",
+    pages = 32,
+    offset = 0)
+
brier_recent_resolved <-
+  MetaculR_brier(
+    questions_recent_resolved,
+    me = FALSE)
+
+

Plot scores, Community Predictions

+
brier_recent_resolved$brier_df %>%
+    ggplot2::ggplot() +
+  ggplot2::geom_col(
+    ggplot2::aes(x = name,
+                 y = value,
+                 fill = ID),
+    position = "dodge2"
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = name,
+                 y = value,
+                 label = round(value, 3)),
+    size = 2,
+    position = ggplot2::position_dodge2(width = 1), #"dodge2",
+    vjust = 0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::labs(x = "Statistic",
+                y = "Value") +
+  ggplot2::coord_cartesian(ylim = c(0, 1)) +
+  ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1))
+#> Warning: Removed 17 rows containing missing values (geom_col).
+#> Warning: Removed 17 rows containing missing values (geom_text).
+
+ +

plot of chunk unnamed-chunk-23

+
+
+

Histogram, Community Predictions

+
brier_recent_resolved$brier_bins_df %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_col(
+    ggplot2::aes(x = centers,
+                 y = freqs)
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = centers,
+                 y = freqs,
+                 label = round(freqs, 3)),
+    size = 2,
+    # position = ggplot2::position_dodge2(width = 0.1), #"dodge2",
+    # vjust = 0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$freqs) * 1.1))
+
+ +

plot of chunk unnamed-chunk-24

+
+
+
+

Calibration, Community Predictions

+
brier_recent_resolved$brier_bins_df %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_pointrange(
+    ggplot2::aes(x = centers,
+                 y = obars,
+                 ymin = ci_low,
+                 ymax = ci_high)
+  ) +
+  ggplot2::geom_line(
+    ggplot2::aes(x = centers,
+                 y = ideal)
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = centers,
+                 y = obars,
+                 label = format(round(obars, 3), nsmall = 3)),
+    size = 2,
+    # position = ggplot2::position_dodge2(width = 0.1), #"dodge2",
+    vjust = -0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$obars) * 1.1))
+
+ +

plot of chunk unnamed-chunk-25

+
+
+
+
+
+

Score Predictions, Community Predictions (Equivalent Evidentiary Bins)

+
brier_recent_resolved <-
+  MetaculR_brier(
+    questions_recent_resolved,
+    me = FALSE,
+    thresholds = c(0, exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) / (exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) + 1), 1))
+
brier_recent_resolved$brier_df %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_col(
+    ggplot2::aes(x = name,
+                 y = value,
+                 fill = ID),
+    position = "dodge2"
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = name,
+                 y = value,
+                 label = round(value, 3)),
+    size = 2,
+    position = ggplot2::position_dodge2(width = 1), #"dodge2",
+    vjust = 0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::labs(x = "Statistic",
+                y = "Value") +
+  ggplot2::coord_cartesian(ylim = c(0, 1)) +
+  ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1))
+#> Warning: Removed 17 rows containing missing values (geom_col).
+#> Warning: Removed 17 rows containing missing values (geom_text).
+
+ +

plot of chunk unnamed-chunk-27

+
+
+

Histogram, Community Predictions (Equivalent Evidentiary Bins)

+
brier_recent_resolved$brier_bins_df %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_col(
+    ggplot2::aes(x = centers,
+                 y = freqs)
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = centers,
+                 y = freqs,
+                 label = round(freqs, 3)),
+    size = 2,
+    # position = ggplot2::position_dodge2(width = 0.1), #"dodge2",
+    # vjust = 0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$freqs) * 1.1))
+
+ +

plot of chunk unnamed-chunk-28

+
+
+
+

Calibration, Community Predictions (Equivalent Evidentiary Bins)

+
brier_recent_resolved$brier_bins_df %>%
+  ggplot2::ggplot() +
+  ggplot2::geom_pointrange(
+    ggplot2::aes(x = centers,
+                 y = obars,
+                 ymin = ci_low,
+                 ymax = ci_high)
+  ) +
+  ggplot2::geom_line(
+    ggplot2::aes(x = centers,
+                 y = ideal)
+  ) +
+  ggplot2::geom_text(
+    ggplot2::aes(x = centers,
+                 y = obars,
+                 label = format(round(obars, 3), nsmall = 3)),
+    size = 2,
+    # position = ggplot2::position_dodge2(width = 0.1), #"dodge2",
+    vjust = -0.5,
+    hjust = -0.25,
+    angle = 90) +
+  ggplot2::theme_classic() +
+  ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$obars) * 1.1))
+
+ +

plot of chunk unnamed-chunk-29

+
+
+
+
+
+

Find Exciting Questions

+

Various sports now have an “Excitement Index” to identify games that interest fans–maybe we can do the same for predictions?

+
+

Among your predictions

+
questions_myPredictions_byExcitement <- MetaculR_excitement(questions_myPredictions)
+
+questions_myPredictions_byExcitement %>%
+  dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2),
+                Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>%
+  dplyr::arrange(dplyr::desc(Total_Change)) %>%
+  head() %>%
+  knitr::kable()
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
idtitleTotal_ChangeTotal_logodds_ChangeTotal_Change_EvenTotal_logodds_Change_Even
9790Will Éric Zemmour be in the 2nd round of the 2022 French presidential election?1.125.380.502.32
8944Will Boris Johnson be Prime Minister of the UK on June 1, 2022?0.352.000.000.00
8882Will 2022 be the hottest year on record?0.221.600.110.80
8554Will women receive at least 70% of bachelor’s degrees in the US in the year 2050?0.191.490.100.79
2511Will Emmanuel Macron be re-elected President of France in 2022?0.181.400.000.00
6330Will Donald J. Trump be a candidate for President in the 2024 cycle?0.150.790.050.25
+
MetaculR_plot(MetaculR_questions = questions_myPredictions,
+              Metacular_id = 9790)
+
+ +

plot of chunk unnamed-chunk-31

+
+
questions_myPredictions_byExcitement %>%
+  dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2),
+                Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>%
+  dplyr::arrange(dplyr::desc(Total_logodds_Change)) %>%
+  head() %>%
+  knitr::kable()
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
idtitleTotal_ChangeTotal_logodds_ChangeTotal_Change_EvenTotal_logodds_Change_Even
9790Will Éric Zemmour be in the 2nd round of the 2022 French presidential election?1.125.380.502.32
8944Will Boris Johnson be Prime Minister of the UK on June 1, 2022?0.352.000.000.00
8882Will 2022 be the hottest year on record?0.221.600.110.80
8554Will women receive at least 70% of bachelor’s degrees in the US in the year 2050?0.191.490.100.79
6604Will annual U.S. inflation reach 100% in any year before 2050?0.061.450.000.00
2511Will Emmanuel Macron be re-elected President of France in 2022?0.181.400.000.00
+
MetaculR_plot(MetaculR_questions = questions_myPredictions,
+              Metacular_id = 6725)
+
+ +

plot of chunk unnamed-chunk-33

+
+
+
+

Among community predictions

+
+

Resolved questions

+

What were the most exciting resolved questions?

+
questions_recent_byExcitement <- MetaculR_excitement(questions_recent_resolved)
+
+questions_recent_byExcitement %>%
+  dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2),
+                Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>%
+  dplyr::arrange(dplyr::desc(Total_Change_Even)) %>%
+  head() %>%
+  knitr::kable()
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
idtitleTotal_ChangeTotal_logodds_ChangeTotal_Change_EvenTotal_logodds_Change_Even
8859Will Ukraine ban wheat export before April 2023?0.171.370.110.92
9517Will Russian troops enter Mariupol, Ukraine by December 31, 2022?0.524.860.090.44
9590Will there be a Pi variant of COVID by Pi Day (March 14, 2022)?0.411.950.070.30
8898Will Russia invade Ukrainian territory before 2023?0.382.970.060.32
7211Will any body of the US federal government conclude that COVID-19 originated in a lab in Hubei before June 1st 2022?0.020.080.020.08
9693Will the gray wolf be relisted as Threatened or Endangered by the US before 2030?0.000.000.000.00
+
MetaculR_plot(MetaculR_questions = questions_recent_resolved,
+              Metacular_id = 8898)
+
+ +

plot of chunk unnamed-chunk-35

+
+
+
+

Open questions

+

What are the most exciting questions that are still open?

+
questions_recent_open <-
+  MetaculR_questions(
+    order_by = "close_time",
+    status = "open",
+    guessed_by = "")
+
questions_recent_open_byExcitement <- MetaculR_excitement(questions_recent_open)
+
+questions_recent_open_byExcitement %>%
+  dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2),
+                Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>%
+  dplyr::arrange(dplyr::desc(Total_logodds_Change_Even)) %>%
+  head() %>%
+  knitr::kable()
+ ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
idtitleTotal_ChangeTotal_logodds_ChangeTotal_Change_EvenTotal_logodds_Change_Even
9746Will Ukraine fulfill its Minsk-II obligations in Donetsk and Luhansk Oblast by 2023?0.5711.730.144.72
9566Will Russian troops enter Odessa, Ukraine before December 31, 2022?1.1810.030.484.56
9791Will Éric Zemmour win the French presidential election in 2022?0.159.400.074.35
9743Will Volodymyr Zelensky remain President of Ukraine by 2023?1.668.130.743.70
7237Will Coinbase default on an obligation to hand over their users’ assets on request by the end of 2022?0.135.050.072.67
9584Will Ketanji Brown Jackson be confirmed as an Associate Justice of the Supreme Court before 2023?0.678.620.122.46
+
MetaculR_plot(MetaculR_questions = questions_recent_open,
+              Metacular_id = 9566)
+
+ +

plot of chunk unnamed-chunk-38

+
+
+
+
+ + + + + + + + + + + diff --git a/man/MetaculR_brier.Rd b/man/MetaculR_brier.Rd new file mode 100644 index 0000000..2a1616f --- /dev/null +++ b/man/MetaculR_brier.Rd @@ -0,0 +1,57 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/basics.R +\name{MetaculR_brier} +\alias{MetaculR_brier} +\title{Calculate Brier statistics on MetaculR_questions object} +\usage{ +MetaculR_brier(MetaculR_questions, me = TRUE, thresholds = seq(0, 1, 0.1)) +} +\arguments{ +\item{MetaculR_questions}{A MetaculR_questions object} + +\item{me}{Show my scores alongside Metaculus scores} + +\item{thresholds}{Thresholds to bin questions} +} +\value{ +A list of Brier statistics for you and Metaculus. +\item{brier_me, brier_Metaculus}{} +\item{baseline.tf}{Logical indicator of whether climatology was provided.} +\item{bs}{Brier score} +\item{bs.baseline}{Brier Score for climatology} +\item{ss}{Skill score} +\item{bs.reliability}{Reliability portion of Brier score.} +\item{bs.resolution}{Resolution component of Brier score.} +\item{bs.uncert}{Uncertainty component of Brier score.} +\item{y.i}{Forecast bins -- described as the center value of the bins.} +\item{obar.i}{Observation bins -- described as the center value of the bins.} +\item{prob.y}{Proportion of time using each forecast.} +\item{obar}{Forecast based on climatology or average sample observations.} +\item{thresholds}{The thresholds for the forecast bins.} +\item{check}{ Reliability - resolution + uncertainty should equal brier score.} +\item{Other}{} +\item{ss_me_Metaculus}{Skill score, me vs. Metaculus.} +\item{count_questions}{Number of total questions included.} +\item{brier_df: Used for plotting Brier score statistics}{} +\item{ID}{Predictor.} +\item{name}{Name of value, see above.} +\item{value}{Value.} +\item{brier_bins_df: Used for plotting histogram and calibration plots.}{} +\item{ID}{Predictor.} +\item{centers}{y.i, see above.} +\item{freqs}{prob.y, see above.} +\item{obars}{obar.i, see above.} +\item{ideal}{Ideal calibration where centers equals obars.} +\item{ci_low}{Low end of 95\% confidence interval for obar.i.} +\item{ci_high}{High end of 95\% confidence interval for obar.i.} +} +\description{ +Calculate Brier statistics on MetaculR_questions object +} +\examples{ +\dontrun{ +brier_me <- + MetaculR_brier( + questions_myPredictions_resolved) +} +} diff --git a/man/MetaculR_excitement.Rd b/man/MetaculR_excitement.Rd new file mode 100644 index 0000000..8056747 --- /dev/null +++ b/man/MetaculR_excitement.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/basics.R +\name{MetaculR_excitement} +\alias{MetaculR_excitement} +\title{Find exciting questions} +\usage{ +MetaculR_excitement(MetaculR_questions) +} +\arguments{ +\item{MetaculR_questions}{A MetaculR_questions object} +} +\value{ +A dataframe of questions with excitement measures. +\item{id}{Question ID.} +\item{title}{Question title.} +\item{Total_Change}{Cumulative delta in time period, by probability.} +\item{Total_logodds_Change}{Cumulative delta in time period, by logodds.} +\item{Total_Change_Even}{Cumulative delta toward even odds in time period, by probability.} +\item{Total_logodds_Change_Even}{Cumulative delta toward even odds in time period, by logodds.} +} +\description{ +Find exciting questions +} +\examples{ +\dontrun{ +questions_myPredictions_byExcitement <- + MetaculR_excitement( + questions_myPredictions) +} +} diff --git a/man/MetaculR_login.Rd b/man/MetaculR_login.Rd new file mode 100644 index 0000000..81487a5 --- /dev/null +++ b/man/MetaculR_login.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/basics.R +\name{MetaculR_login} +\alias{MetaculR_login} +\title{Login to Metaculus} +\usage{ +MetaculR_login(api_domain = "www") +} +\arguments{ +\item{api_domain}{Use "www" unless you have a custom Metaculus domain} +} +\value{ +Your Metaculus_user_ID. +} +\description{ +Login to Metaculus +} +\examples{ +\dontrun{ +Metaculus_user_id <- + MetaculR_login() +} +} diff --git a/man/MetaculR_myDiff.Rd b/man/MetaculR_myDiff.Rd new file mode 100644 index 0000000..373397c --- /dev/null +++ b/man/MetaculR_myDiff.Rd @@ -0,0 +1,43 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/basics.R +\name{MetaculR_myDiff} +\alias{MetaculR_myDiff} +\title{Find important changes within MetaculR_questions object} +\usage{ +MetaculR_myDiff(MetaculR_questions) +} +\arguments{ +\item{MetaculR_questions}{A MetaculR_questions object} +} +\value{ +A dataframe of questions with difference measures (your most recent prediction vs. community's most recent prediction, etc.). +\item{id}{Question ID.} +\item{title}{Question title.} +\item{my_prediction}{My most recent prediction.} +\item{community_q2}{Community median.} +\item{community_ave}{Community average.} +\item{community_q2_pre_me}{Community median immediately prior to my_prediction.} +\item{community_ave_pre_me}{Community average immediately prior to my_prediction.} +\item{diff_me_q2}{Difference between me and the community median, by logodds.} +\item{diff_me_ave}{Difference between me and the community average, by logodds.} +\item{diff_comm_q2_pre_me}{Difference between community_q2_pre_me and the community average, by logodds.} +\item{diff_comm_ave_pre_me}{Difference between community_ave_pre_me and the community average, by logodds.} +\item{diff_me_q2_abs}{Absolute difference between me and the community median, by logodds.} +\item{diff_me_ave_abs}{Absolute difference between me and the community average, by logodds.} +\item{diff_comm_q2_pre_me_abs}{Absolute difference between community_q2_pre_me and the community average, by logodds.} +\item{diff_comm_ave_pre_me_abs}{Absolute difference between community_ave_pre_me and the community average, by logodds.} +\item{diff_me_q2_abs_odds}{Absolute difference between me and the community median, by odds.} +\item{diff_me_ave_abs_odds}{Absolute difference between me and the community average, by odds.} +\item{diff_comm_q2_pre_me_abs_odds}{Absolute difference between community_q2_pre_me and the community average, by odds.} +\item{diff_comm_ave_pre_me_abs_odds}{Absolute difference between community_ave_pre_me and the community average, by odds.} +} +\description{ +Find important changes within MetaculR_questions object +} +\examples{ +\dontrun{ +questions_myPredictions_byDiff <- + MetaculR_myDiff( + questions_myPredictions) +} +} diff --git a/man/MetaculR_myPredictions.Rd b/man/MetaculR_myPredictions.Rd new file mode 100644 index 0000000..e2acca4 --- /dev/null +++ b/man/MetaculR_myPredictions.Rd @@ -0,0 +1,50 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/basics.R +\name{MetaculR_myPredictions} +\alias{MetaculR_myPredictions} +\title{Retrieve questions from Metaculus API (A wrapper for MetaculR_questions())} +\usage{ +MetaculR_myPredictions( + api_domain = "www", + order_by = "last_prediction_time", + status = "all", + search = "", + guessed_by = "", + offset = 0, + pages = 10 +) +} +\arguments{ +\item{api_domain}{Use "www" unless you have a custom Metaculus domain} + +\item{order_by}{Default is "last_prediction_time"} + +\item{status}{Choose "all", "upcoming", "open", "closed", "resolved"} + +\item{search}{Search term(s)} + +\item{guessed_by}{Generally your Metaculus_user_id} + +\item{offset}{Question offset} + +\item{pages}{Number of pages to request} +} +\value{ +A list of questions that I've predicted, ordered by last prediction time. +} +\description{ +Retrieve questions from Metaculus API (A wrapper for MetaculR_questions()) +} +\examples{ +\dontrun{ +questions_myPredictions <- + MetaculR_myPredictions( + guessed_by = Metaculus_user_id) +} +} +\seealso{ +Other Question Retrieval functions: +\code{\link{MetaculR_myPredictions_Resolved}()}, +\code{\link{MetaculR_questions}()} +} +\concept{Question Retrieval functions} diff --git a/man/MetaculR_myPredictions_Resolved.Rd b/man/MetaculR_myPredictions_Resolved.Rd new file mode 100644 index 0000000..1258d96 --- /dev/null +++ b/man/MetaculR_myPredictions_Resolved.Rd @@ -0,0 +1,50 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/basics.R +\name{MetaculR_myPredictions_Resolved} +\alias{MetaculR_myPredictions_Resolved} +\title{Retrieve questions from Metaculus API (A wrapper for MetaculR_questions())} +\usage{ +MetaculR_myPredictions_Resolved( + api_domain = "www", + order_by = "-resolve_time", + status = "resolved", + search = "", + guessed_by = "", + offset = 0, + pages = 10 +) +} +\arguments{ +\item{api_domain}{Use "www" unless you have a custom Metaculus domain} + +\item{order_by}{Default is "-resolve_time"} + +\item{status}{Default is "resolved"} + +\item{search}{Search term(s)} + +\item{guessed_by}{Generally your Metaculus_user_id} + +\item{offset}{Question offset} + +\item{pages}{Number of pages to request} +} +\value{ +A list of questions that I've predicted, ordered by last prediction time, and resolved. +} +\description{ +Retrieve questions from Metaculus API (A wrapper for MetaculR_questions()) +} +\examples{ +\dontrun{ +questions_myPredictions_resolved <- + MetaculR_myPredictions_Resolved( + guessed_by = Metaculus_user_id) +} +} +\seealso{ +Other Question Retrieval functions: +\code{\link{MetaculR_myPredictions}()}, +\code{\link{MetaculR_questions}()} +} +\concept{Question Retrieval functions} diff --git a/man/MetaculR_plot.Rd b/man/MetaculR_plot.Rd new file mode 100644 index 0000000..b84eca3 --- /dev/null +++ b/man/MetaculR_plot.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/basics.R +\name{MetaculR_plot} +\alias{MetaculR_plot} +\title{Plot the history of a single question} +\usage{ +MetaculR_plot(MetaculR_questions, Metacular_id, scale_binary = "prob") +} +\arguments{ +\item{MetaculR_questions}{A MetaculR_questions object} + +\item{Metacular_id}{The ID of the question to plot} + +\item{scale_binary}{Choose "prob", "odds", or "logodds"} +} +\value{ +A ggplot. +} +\description{ +Plot the history of a single question +} +\examples{ +\dontrun{ +MetaculR_plot( + MetaculR_questions = questions_myPredictions, + Metacular_id = 10004) +} +} diff --git a/man/MetaculR_questions.Rd b/man/MetaculR_questions.Rd new file mode 100644 index 0000000..947b071 --- /dev/null +++ b/man/MetaculR_questions.Rd @@ -0,0 +1,52 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/basics.R +\name{MetaculR_questions} +\alias{MetaculR_questions} +\title{Retrieve questions from Metaculus API} +\usage{ +MetaculR_questions( + api_domain = "www", + order_by = "last_prediction_time", + status = "all", + search = "", + guessed_by = "", + offset = 0, + pages = 10 +) +} +\arguments{ +\item{api_domain}{Use "www" unless you have a custom Metaculus domain} + +\item{order_by}{Choose "last_prediction_time", "-activity", "-votes", "-publish_time", "close_time", "resolve_time", "last_prediction_time"} + +\item{status}{Choose "all", "upcoming", "open", "closed", "resolved"} + +\item{search}{Search term(s)} + +\item{guessed_by}{Generally your Metaculus_user_id} + +\item{offset}{Question offset} + +\item{pages}{Number of pages to request} +} +\value{ +A list of questions, ordered by last prediction time. +} +\description{ +Retrieve questions from Metaculus API +} +\examples{ +\dontrun{ +questions_recent_open <- + MetaculR_questions( + order_by = "close_time", + status = "open", + guessed_by = "") +} +} +\seealso{ +Other Question Retrieval functions: +\code{\link{MetaculR_myPredictions_Resolved}()}, +\code{\link{MetaculR_myPredictions}()} +} +\concept{Question Retrieval functions} diff --git a/man/pipe.Rd b/man/pipe.Rd new file mode 100644 index 0000000..0eec752 --- /dev/null +++ b/man/pipe.Rd @@ -0,0 +1,12 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utils-pipe.R +\name{\%>\%} +\alias{\%>\%} +\title{Pipe operator} +\usage{ +lhs \%>\% rhs +} +\description{ +See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. +} +\keyword{internal} diff --git a/vignettes/MetaculR.Rmd b/vignettes/MetaculR.Rmd new file mode 100644 index 0000000..ef7e62a --- /dev/null +++ b/vignettes/MetaculR.Rmd @@ -0,0 +1,704 @@ +--- +title: "MetaculR" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{MetaculR} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + + + + + + + + +```r +library(MetaculR) +``` + +# Login + +Add the following lines to `.Renviron` using `usethis::edit_r_environ()`: + +``` +Metaculus_username="yourUsername" +Metaculus_password="yourPassword" +``` + +Then, login: + + +```r +Metaculus_user_id <- MetaculR_login() +``` + +# Download Your Predictions + + +```r +questions_myPredictions <- MetaculR_myPredictions(guessed_by = Metaculus_user_id) +``` + +# Analyze Your Predictions + +## How different is my last prediction from current community? + + +```r +questions_myPredictions_byDiff <- MetaculR_myDiff(questions_myPredictions) +``` + + + +```r +questions_myPredictions_byDiff %>% + dplyr::select(id, title, my_prediction, community_q2, community_q2_pre_me, diff_me_q2_abs_odds) %>% + dplyr::mutate(diff_me_q2_abs_odds = round(diff_me_q2_abs_odds, 1)) %>% + dplyr::arrange(dplyr::desc(diff_me_q2_abs_odds)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | my_prediction| community_q2| community_q2_pre_me| diff_me_q2_abs_odds| +|----:|:-------------------------------------------------------------------------------------|-------------:|------------:|-------------------:|-------------------:| +| 1634|Will US Income Inequality Increase by 2025? | 0.02| 0.53| 0.47| 55.3| +| 9933|Will any NATO country invoke Article 5 by March 31, 2022? | 0.13| 0.01| 0.02| 14.8| +| 5407|If Starlink offers an IPO before 2030, will it set a record for the largest IPO? | 0.03| 0.24| 0.30| 10.2| +| 9937|Will more than 50,000 people be killed in the Russo-Ukrainian War in 2022? | 0.15| 0.60| 0.45| 8.5| +| 2605|Will any country's military expenditure exceed that of the United States before 2030? | 0.01| 0.07| 0.08| 7.5| +| 7977|Will US core CPI inflation rise by more than 3% from December 2021 to December 2022? | 0.94| 0.70| 0.68| 6.7| + +### Plot those differences + + +```r +questions_myPredictions_byDiff %>% + dplyr::arrange(dplyr::desc(diff_me_q2_abs_odds)) %>% + dplyr::slice_head(n = 10) %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = reorder(factor(id), -diff_me_q2_abs_odds), + y = diff_me_q2_abs_odds, + fill = reorder(factor(id), -diff_me_q2_abs_odds)) + ) + + ggplot2::theme_classic() + + ggplot2::labs(x = "ID", + y = "Odds difference between me and community q2") + + ggplot2::guides(fill = FALSE) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +``` + +![plot of chunk unnamed-chunk-8](MetaculRRMD_unnamed-chunk-8-1.png) + +## Where has community moved most since my last prediction? + + +```r +questions_myPredictions_byDiff %>% + dplyr::select(id, title, my_prediction, community_q2, community_q2_pre_me, diff_comm_q2_pre_me_abs_odds) %>% + dplyr::mutate(diff_comm_q2_pre_me_abs_odds = round(diff_comm_q2_pre_me_abs_odds, 1)) %>% + dplyr::arrange(dplyr::desc(diff_comm_q2_pre_me_abs_odds)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | my_prediction| community_q2| community_q2_pre_me| diff_comm_q2_pre_me_abs_odds| +|-----:|:-----------------------------------------------------------------------------|-------------:|------------:|-------------------:|----------------------------:| +| 10004|Will a major nuclear power plant in Germany be operational on June 1, 2023? | 0.10| 0.20| 0.56| 5.1| +| 9939|Will Kyiv fall to Russian forces by April 2022? | 0.01| 0.02| 0.09| 4.8| +| 6604|Will annual U.S. inflation reach 100% in any year before 2050? | 0.01| 0.02| 0.08| 4.3| +| 8766|Will the Omicron variant be less lethal than Delta? | 0.98| 0.98| 0.94| 3.1| +| 9933|Will any NATO country invoke Article 5 by March 31, 2022? | 0.13| 0.01| 0.02| 2.0| +| 6725|Will a large American city fully abolish their police department before 2035? | 0.01| 0.02| 0.04| 2.0| + +### Plot those differences + + +```r +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 10004) +``` + +![plot of chunk unnamed-chunk-10](MetaculRRMD_unnamed-chunk-10-1.png) + + +```r +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 6604, + scale_binary = "logodds") +``` + +![plot of chunk unnamed-chunk-11](MetaculRRMD_unnamed-chunk-11-1.png) + +## Score Predictions + +Let's see some Brier statistics on resolved questions: + + +```r +questions_myPredictions_resolved <- MetaculR_myPredictions_Resolved(guessed_by = Metaculus_user_id) +``` + + +```r +brier_me <- MetaculR_brier(questions_myPredictions_resolved) +``` + +### Plot scores + + +```r +brier_me$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +#> Warning: Removed 10 rows containing missing values (geom_col). +#> Warning: Removed 10 rows containing missing values (geom_text). +``` + +![plot of chunk unnamed-chunk-14](MetaculRRMD_unnamed-chunk-14-1.png) + +#### Histogram + + +```r +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs, + fill = ID), + position = ggplot2::position_dodge2(width = 0.1, preserve = "single") + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, 1)) +``` + +![plot of chunk unnamed-chunk-15](MetaculRRMD_unnamed-chunk-15-1.png) + +#### Calibration + + +```r +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high, + color = ID), + position = ggplot2::position_dodge2(width = 0.02) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_me$brier_bins_df $obars) * 1.1)) +``` + +![plot of chunk unnamed-chunk-16](MetaculRRMD_unnamed-chunk-16-1.png) + +## Score Predictions (Equivalent Evidentiary Bins) + +What if question bins were not 5 percentage points each, but were based on logodds? + + +```r +brier_me <- MetaculR_brier(questions_myPredictions_resolved, + thresholds = c(0, exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) / (exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) + 1), 1)) +``` + + +```r +brier_me$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +#> Warning: Removed 10 rows containing missing values (geom_col). +#> Warning: Removed 10 rows containing missing values (geom_text). +``` + +![plot of chunk unnamed-chunk-18](MetaculRRMD_unnamed-chunk-18-1.png) + +#### Histogram (Equivalent Evidentiary Bins) + + +```r +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs, + fill = ID), + position = ggplot2::position_dodge2(width = 0.1, preserve = "single") + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.05), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, 1)) +``` + +![plot of chunk unnamed-chunk-19](MetaculRRMD_unnamed-chunk-19-1.png) + +#### Calibration (Equivalent Evidentiary Bins) + + +```r +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high, + color = ID), + position = ggplot2::position_dodge2(width = 0.02) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_me$brier_bins_df$obars) * 1.1)) +``` + +![plot of chunk unnamed-chunk-20](MetaculRRMD_unnamed-chunk-20-1.png) + +# Analyze community predictions + +For questions you may not have predicted. + +## Score, Community Predictions + +Let's see some Brier statistics on resolved questions: + + +```r +questions_recent_resolved <- + MetaculR_questions( + order_by = "-resolve_time", + status= "resolved", + guessed_by = "", + pages = 32, + offset = 0) +``` + + +```r +brier_recent_resolved <- + MetaculR_brier( + questions_recent_resolved, + me = FALSE) +``` + +### Plot scores, Community Predictions + + +```r +brier_recent_resolved$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +#> Warning: Removed 17 rows containing missing values (geom_col). +#> Warning: Removed 17 rows containing missing values (geom_text). +``` + +![plot of chunk unnamed-chunk-23](MetaculRRMD_unnamed-chunk-23-1.png) + +#### Histogram, Community Predictions + + +```r +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$freqs) * 1.1)) +``` + +![plot of chunk unnamed-chunk-24](MetaculRRMD_unnamed-chunk-24-1.png) + +#### Calibration, Community Predictions + + +```r +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$obars) * 1.1)) +``` + +![plot of chunk unnamed-chunk-25](MetaculRRMD_unnamed-chunk-25-1.png) + +## Score Predictions, Community Predictions (Equivalent Evidentiary Bins) + + +```r +brier_recent_resolved <- + MetaculR_brier( + questions_recent_resolved, + me = FALSE, + thresholds = c(0, exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) / (exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) + 1), 1)) +``` + + +```r +brier_recent_resolved$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +#> Warning: Removed 17 rows containing missing values (geom_col). +#> Warning: Removed 17 rows containing missing values (geom_text). +``` + +![plot of chunk unnamed-chunk-27](MetaculRRMD_unnamed-chunk-27-1.png) + +#### Histogram, Community Predictions (Equivalent Evidentiary Bins) + + +```r +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$freqs) * 1.1)) +``` + +![plot of chunk unnamed-chunk-28](MetaculRRMD_unnamed-chunk-28-1.png) + +#### Calibration, Community Predictions (Equivalent Evidentiary Bins) + + +```r +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$obars) * 1.1)) +``` + +![plot of chunk unnamed-chunk-29](MetaculRRMD_unnamed-chunk-29-1.png) + +# Find Exciting Questions + +Various sports now have an "Excitement Index" to identify games that interest fans--maybe we can do the same for predictions? + +## Among your predictions + + +```r +questions_myPredictions_byExcitement <- MetaculR_excitement(questions_myPredictions) + +questions_myPredictions_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_Change)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | Total_Change| Total_logodds_Change| Total_Change_Even| Total_logodds_Change_Even| +|----:|:---------------------------------------------------------------------------------|------------:|--------------------:|-----------------:|-------------------------:| +| 9790|Will Éric Zemmour be in the 2nd round of the 2022 French presidential election? | 1.12| 5.38| 0.50| 2.32| +| 8944|Will Boris Johnson be Prime Minister of the UK on June 1, 2022? | 0.35| 2.00| 0.00| 0.00| +| 8882|Will 2022 be the hottest year on record? | 0.22| 1.60| 0.11| 0.80| +| 8554|Will women receive at least 70% of bachelor's degrees in the US in the year 2050? | 0.19| 1.49| 0.10| 0.79| +| 2511|Will Emmanuel Macron be re-elected President of France in 2022? | 0.18| 1.40| 0.00| 0.00| +| 6330|Will Donald J. Trump be a candidate for President in the 2024 cycle? | 0.15| 0.79| 0.05| 0.25| + + +```r +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 9790) +``` + +![plot of chunk unnamed-chunk-31](MetaculRRMD_unnamed-chunk-31-1.png) + + +```r +questions_myPredictions_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_logodds_Change)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | Total_Change| Total_logodds_Change| Total_Change_Even| Total_logodds_Change_Even| +|----:|:---------------------------------------------------------------------------------|------------:|--------------------:|-----------------:|-------------------------:| +| 9790|Will Éric Zemmour be in the 2nd round of the 2022 French presidential election? | 1.12| 5.38| 0.50| 2.32| +| 8944|Will Boris Johnson be Prime Minister of the UK on June 1, 2022? | 0.35| 2.00| 0.00| 0.00| +| 8882|Will 2022 be the hottest year on record? | 0.22| 1.60| 0.11| 0.80| +| 8554|Will women receive at least 70% of bachelor's degrees in the US in the year 2050? | 0.19| 1.49| 0.10| 0.79| +| 6604|Will annual U.S. inflation reach 100% in any year before 2050? | 0.06| 1.45| 0.00| 0.00| +| 2511|Will Emmanuel Macron be re-elected President of France in 2022? | 0.18| 1.40| 0.00| 0.00| + + +```r +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 6725) +``` + +![plot of chunk unnamed-chunk-33](MetaculRRMD_unnamed-chunk-33-1.png) + +## Among community predictions + +### Resolved questions + +What were the most exciting resolved questions? + + +```r +questions_recent_byExcitement <- MetaculR_excitement(questions_recent_resolved) + +questions_recent_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_Change_Even)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | Total_Change| Total_logodds_Change| Total_Change_Even| Total_logodds_Change_Even| +|----:|:--------------------------------------------------------------------------------------------------------------------|------------:|--------------------:|-----------------:|-------------------------:| +| 8859|Will Ukraine ban wheat export before April 2023? | 0.17| 1.37| 0.11| 0.92| +| 9517|Will Russian troops enter Mariupol, Ukraine by December 31, 2022? | 0.52| 4.86| 0.09| 0.44| +| 9590|Will there be a Pi variant of COVID by Pi Day (March 14, 2022)? | 0.41| 1.95| 0.07| 0.30| +| 8898|Will Russia invade Ukrainian territory before 2023? | 0.38| 2.97| 0.06| 0.32| +| 7211|Will any body of the US federal government conclude that COVID-19 originated in a lab in Hubei before June 1st 2022? | 0.02| 0.08| 0.02| 0.08| +| 9693|Will the gray wolf be relisted as Threatened or Endangered by the US before 2030? | 0.00| 0.00| 0.00| 0.00| + + +```r +MetaculR_plot(MetaculR_questions = questions_recent_resolved, + Metacular_id = 8898) +``` + +![plot of chunk unnamed-chunk-35](MetaculRRMD_unnamed-chunk-35-1.png) + +### Open questions + +What are the most exciting questions that are still open? + + +```r +questions_recent_open <- + MetaculR_questions( + order_by = "close_time", + status = "open", + guessed_by = "") +``` + + +```r +questions_recent_open_byExcitement <- MetaculR_excitement(questions_recent_open) + +questions_recent_open_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_logodds_Change_Even)) %>% + head() %>% + knitr::kable() +``` + + + +| id|title | Total_Change| Total_logodds_Change| Total_Change_Even| Total_logodds_Change_Even| +|----:|:------------------------------------------------------------------------------------------------------|------------:|--------------------:|-----------------:|-------------------------:| +| 9746|Will Ukraine fulfill its Minsk-II obligations in Donetsk and Luhansk Oblast by 2023? | 0.57| 11.73| 0.14| 4.72| +| 9566|Will Russian troops enter Odessa, Ukraine before December 31, 2022? | 1.18| 10.03| 0.48| 4.56| +| 9791|Will Éric Zemmour win the French presidential election in 2022? | 0.15| 9.40| 0.07| 4.35| +| 9743|Will Volodymyr Zelensky remain President of Ukraine by 2023? | 1.66| 8.13| 0.74| 3.70| +| 7237|Will Coinbase default on an obligation to hand over their users’ assets on request by the end of 2022? | 0.13| 5.05| 0.07| 2.67| +| 9584|Will Ketanji Brown Jackson be confirmed as an Associate Justice of the Supreme Court before 2023? | 0.67| 8.62| 0.12| 2.46| + + +```r +MetaculR_plot(MetaculR_questions = questions_recent_open, + Metacular_id = 9566) +``` + +![plot of chunk unnamed-chunk-38](MetaculRRMD_unnamed-chunk-38-1.png) + + diff --git a/vignettes/MetaculR.Rmd.orig b/vignettes/MetaculR.Rmd.orig new file mode 100644 index 0000000..4d15f08 --- /dev/null +++ b/vignettes/MetaculR.Rmd.orig @@ -0,0 +1,569 @@ +--- +title: "MetaculR" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{MetaculR} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r eval=FALSE, include=FALSE} +# Use `knitr::knit("vignettes/MetaculR.Rmd.orig", output = "vignettes/MetaculR.Rmd")` in the Console to pre-build the .Rmd, move the `/figure` directory into `/vignettes`, and anyone can build the .Rmd without my credentials. +``` + +```{r eval=FALSE, include=FALSE} +library(httptest) +httptest::start_vignette("MetaculR") +``` + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>", + fig.path = "MetaculRRMD_" +) +``` + +```{r setup} +library(MetaculR) +``` + +# Login + +Add the following lines to `.Renviron` using `usethis::edit_r_environ()`: + +``` +Metaculus_username="yourUsername" +Metaculus_password="yourPassword" +``` + +Then, login: + +```{r message=FALSE} +Metaculus_user_id <- MetaculR_login() +``` + +# Download Your Predictions + +```{r message=FALSE} +questions_myPredictions <- MetaculR_myPredictions(guessed_by = Metaculus_user_id) +``` + +# Analyze Your Predictions + +## How different is my last prediction from current community? + +```{r message=FALSE, warning=FALSE} +questions_myPredictions_byDiff <- MetaculR_myDiff(questions_myPredictions) +``` + + +```{r} +questions_myPredictions_byDiff %>% + dplyr::select(id, title, my_prediction, community_q2, community_q2_pre_me, diff_me_q2_abs_odds) %>% + dplyr::mutate(diff_me_q2_abs_odds = round(diff_me_q2_abs_odds, 1)) %>% + dplyr::arrange(dplyr::desc(diff_me_q2_abs_odds)) %>% + head() %>% + knitr::kable() +``` + +### Plot those differences + +```{r} +questions_myPredictions_byDiff %>% + dplyr::arrange(dplyr::desc(diff_me_q2_abs_odds)) %>% + dplyr::slice_head(n = 10) %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = reorder(factor(id), -diff_me_q2_abs_odds), + y = diff_me_q2_abs_odds, + fill = reorder(factor(id), -diff_me_q2_abs_odds)) + ) + + ggplot2::theme_classic() + + ggplot2::labs(x = "ID", + y = "Odds difference between me and community q2") + + ggplot2::guides(fill = FALSE) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +``` + +## Where has community moved most since my last prediction? + +```{r} +questions_myPredictions_byDiff %>% + dplyr::select(id, title, my_prediction, community_q2, community_q2_pre_me, diff_comm_q2_pre_me_abs_odds) %>% + dplyr::mutate(diff_comm_q2_pre_me_abs_odds = round(diff_comm_q2_pre_me_abs_odds, 1)) %>% + dplyr::arrange(dplyr::desc(diff_comm_q2_pre_me_abs_odds)) %>% + head() %>% + knitr::kable() +``` + +### Plot those differences + +```{r} +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 10004) +``` + +```{r} +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 6604, + scale_binary = "logodds") +``` + +## Score Predictions + +Let's see some Brier statistics on resolved questions: + +```{r message=FALSE} +questions_myPredictions_resolved <- MetaculR_myPredictions_Resolved(guessed_by = Metaculus_user_id) +``` + +```{r} +brier_me <- MetaculR_brier(questions_myPredictions_resolved) +``` + +### Plot scores + +```{r} +brier_me$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +``` + +#### Histogram + +```{r} +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs, + fill = ID), + position = ggplot2::position_dodge2(width = 0.1, preserve = "single") + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, 1)) +``` + +#### Calibration + +```{r} +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high, + color = ID), + position = ggplot2::position_dodge2(width = 0.02) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_me$brier_bins_df $obars) * 1.1)) +``` + +## Score Predictions (Equivalent Evidentiary Bins) + +What if question bins were not 5 percentage points each, but were based on logodds? + +```{r} +brier_me <- MetaculR_brier(questions_myPredictions_resolved, + thresholds = c(0, exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) / (exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) + 1), 1)) +``` + +```{r} +brier_me$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +``` + +#### Histogram (Equivalent Evidentiary Bins) + +```{r} +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs, + fill = ID), + position = ggplot2::position_dodge2(width = 0.1, preserve = "single") + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.05), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, 1)) +``` + +#### Calibration (Equivalent Evidentiary Bins) + +```{r} +brier_me$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high, + color = ID), + position = ggplot2::position_dodge2(width = 0.02) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_me$brier_bins_df$obars) * 1.1)) +``` + +# Analyze community predictions + +For questions you may not have predicted. + +## Score, Community Predictions + +Let's see some Brier statistics on resolved questions: + +```{r message=FALSE} +questions_recent_resolved <- + MetaculR_questions( + order_by = "-resolve_time", + status= "resolved", + guessed_by = "", + pages = 32, + offset = 0) +``` + +```{r} +brier_recent_resolved <- + MetaculR_brier( + questions_recent_resolved, + me = FALSE) +``` + +### Plot scores, Community Predictions + +```{r} +brier_recent_resolved$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +``` + +#### Histogram, Community Predictions + +```{r} +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$freqs) * 1.1)) +``` + +#### Calibration, Community Predictions + +```{r} +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$obars) * 1.1)) +``` + +## Score Predictions, Community Predictions (Equivalent Evidentiary Bins) + +```{r} +brier_recent_resolved <- + MetaculR_brier( + questions_recent_resolved, + me = FALSE, + thresholds = c(0, exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) / (exp(seq(from = -log(99), to = log(99), by = log(99) / 5)) + 1), 1)) +``` + +```{r} +brier_recent_resolved$brier_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = name, + y = value, + fill = ID), + position = "dodge2" + ) + + ggplot2::geom_text( + ggplot2::aes(x = name, + y = value, + label = round(value, 3)), + size = 2, + position = ggplot2::position_dodge2(width = 1), #"dodge2", + vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::labs(x = "Statistic", + y = "Value") + + ggplot2::coord_cartesian(ylim = c(0, 1)) + + ggplot2::theme(axis.text.x = ggplot2::element_text(angle = 45, vjust = 1, hjust = 1)) +``` + +#### Histogram, Community Predictions (Equivalent Evidentiary Bins) + +```{r} +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_col( + ggplot2::aes(x = centers, + y = freqs) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = freqs, + label = round(freqs, 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + # vjust = 0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$freqs) * 1.1)) +``` + +#### Calibration, Community Predictions (Equivalent Evidentiary Bins) + +```{r} +brier_recent_resolved$brier_bins_df %>% + ggplot2::ggplot() + + ggplot2::geom_pointrange( + ggplot2::aes(x = centers, + y = obars, + ymin = ci_low, + ymax = ci_high) + ) + + ggplot2::geom_line( + ggplot2::aes(x = centers, + y = ideal) + ) + + ggplot2::geom_text( + ggplot2::aes(x = centers, + y = obars, + label = format(round(obars, 3), nsmall = 3)), + size = 2, + # position = ggplot2::position_dodge2(width = 0.1), #"dodge2", + vjust = -0.5, + hjust = -0.25, + angle = 90) + + ggplot2::theme_classic() + + ggplot2::coord_cartesian(ylim = c(0, max(brier_recent_resolved$brier_bins_df$obars) * 1.1)) +``` + +# Find Exciting Questions + +Various sports now have an "Excitement Index" to identify games that interest fans--maybe we can do the same for predictions? + +## Among your predictions + +```{r} +questions_myPredictions_byExcitement <- MetaculR_excitement(questions_myPredictions) + +questions_myPredictions_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_Change)) %>% + head() %>% + knitr::kable() +``` + +```{r} +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 9790) +``` + +```{r} +questions_myPredictions_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_logodds_Change)) %>% + head() %>% + knitr::kable() +``` + +```{r} +MetaculR_plot(MetaculR_questions = questions_myPredictions, + Metacular_id = 6725) +``` + +## Among community predictions + +### Resolved questions + +What were the most exciting resolved questions? + +```{r} +questions_recent_byExcitement <- MetaculR_excitement(questions_recent_resolved) + +questions_recent_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_Change_Even)) %>% + head() %>% + knitr::kable() +``` + +```{r} +MetaculR_plot(MetaculR_questions = questions_recent_resolved, + Metacular_id = 8898) +``` + +### Open questions + +What are the most exciting questions that are still open? + +```{r message=FALSE} +questions_recent_open <- + MetaculR_questions( + order_by = "close_time", + status = "open", + guessed_by = "") +``` + +```{r} +questions_recent_open_byExcitement <- MetaculR_excitement(questions_recent_open) + +questions_recent_open_byExcitement %>% + dplyr::mutate(Total_logodds_Change = round(Total_logodds_Change, 2), + Total_logodds_Change_Even = round(Total_logodds_Change_Even, 2)) %>% + dplyr::arrange(dplyr::desc(Total_logodds_Change_Even)) %>% + head() %>% + knitr::kable() +``` + +```{r} +MetaculR_plot(MetaculR_questions = questions_recent_open, + Metacular_id = 9566) +``` + +```{r eval=FALSE, include=FALSE} +httptest::end_vignette() +``` diff --git a/vignettes/MetaculRRMD_unnamed-chunk-10-1.png b/vignettes/MetaculRRMD_unnamed-chunk-10-1.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb8514bd2f389aa84d077767c7a96701b24eae0 GIT binary patch literal 20060 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 KB1h?B!2bZ+gStil literal 0 HcmV?d00001 diff --git a/vignettes/MetaculRRMD_unnamed-chunk-11-1.png b/vignettes/MetaculRRMD_unnamed-chunk-11-1.png new file mode 100644 index 0000000000000000000000000000000000000000..af09849de8c11d75521f1fec201f2ff3cf620815 GIT binary patch literal 15672 zcmeIZcR1Gn|2BS!LT1?&(zI8hVHYK2C7Xn@_ulFX86ico(?FS_>{3aoT%w4Om8*=b z%#FwY6AYWTZ6**13~DEj>kjmb&L#J>3}neSd%e^*GHN*3zS*eAFlEEIPU;5KB2e>}yg zPjxw?uixC!iyB#T+FpZ>_>dp%Ay z`}_Cr-A`QFR@L0*G&sy^{k?{o62{XGOG}7;YBdp=H^( zXWu?)DJh-AC(b>)h%aBg(n)0Ek;U?HN}PYmr0|ENX(AYa^SpWYPS)#Zdvmf_{o?mj ztj_A6nU<~JWu&E(Y8IF0fA!S{JSi%2Nqxw3*nQ~n#g?we8Y;V)X)2t$*|%>Oa?F;S zG?xDS`Ln2TSrdum`tFtl7Z+E%N64S4*CDHm5#A~>-3N5tzC8aHjsVYb(^vKoAO zl?5lxOiRO+6n=fJocUVmarb5ic0*{-o;|<&8n1D8ccndl{yaZFU(CFQhJk^BiAlkI z=wyew{>}}4xp{f5pFU}-sb%kb;?(W^(@-&N7}o)O*-8ICcix=(z3X_yLT^` zo2l;z?mXSqkac|_-oZqvvJGi-b@7iT-l0a^Vj*5zjjV&^(zF=dsUNkORTWe&> z*Pe*uv3h-tjnTYy;t67}x~l5u=x7|*f$vj;uNyX+*9H2KvXuP&{dt2IvOBA2_-000 z>V2mMYW!x1e>ZD)X3L0srKzZare^F?O+C(4RJU}>%&e9rz{K&pH;)T83#)uLL)X|i zzpyYPF>!a*jxMgQN`qJCbgi#8Q(Y1 zJL&bY0CVST`JkmgEo*<`^793yu$o8p^z^!t@8ihLB{z%Jx3{%z7eDvxP2zr&02^Aq zsi`Rx0U|R`-27z!v7ZtFO~d1RWn}}&q-@;KK^zAT-C>XKGy$_ryz(`Hi|);zL@esQzJ7gTC-WoYa{HbtFKpb;pFfMt zYwsLcwzISQ^5x6z+qW-O_|NL=>l+&z^YQVisHoJh%%$e%+pDUo+Sv(2yhu?92{tnN z()K_LoAV+4=!x!Iw{Pb^d?;kvbwfa}p`pPx`O8h7TE(4D{bs(0Qc$*k`m|s3cA3Y> z2juao;KRgJEt87S!V~yg@$Lz+Dh*U=N@_+{4vrHlDnH2NKP&Tn1qCO`?^9)PGwR8r zB7%bXMMY0aOS?*K)ZN_N933BBz4~Un`-vSLzo4L`xcDLDm!%~in_{4R=Fe6!)2GEX zHGjT5zKAE_5H-!}VWOa*XyB0>4?EFqh+TEZbmeQlsM7}| zB>Ja(H-vqQ;0@+f2(IZoW%7ZvS}V9@94R{U_NLGd#u4-{5ncQS6-_EXJKGHb@p;#khLM?- zm6a2*+w@ILg!)yicj#BvRNqKWRtQ@1ocLOa9eLZ-bW6f29L>ti%&b{eK2yxw`1(>) zh3Ait4BMq=M?17;wF=U=-9F?t5YDijh7X}19;Zn`8m})JJ9~xO zV579b84HWG@h5$A6Ftix@2LmMhr9@9FctNAdqV)-NWpuo6HjN%?)v-ZC)|LTQ7MtR z)bhoq0|y=>IqdDKy~nY!oRZc}chwS&yZK92NYl@9oZ4Gkw~TxF2LwD>vq~9CC#?>~ z`p?(;{OZNYK4i#syYr_-1-EhqFONU*p3p~$>386(FqD(4Jr==;I*&jtGOPP5$n%P!FzDNmk5z_^`X!@&$GkXFG~^JTx?vBo>>PsCVobWpeXg zqOj@HNfaI?Iyw&z4~N4KCZ`Ze>q|58f!jMxoa4F{NiS#)q06Ei&cs`H?)fD$*_M|# zGbxrAU9;Nf7g6i3{C)1j?!*`U3rkDV2M-smJP(YqZ@2Q&TfLJBwn1+JGZ)=DiFydIe#SENpb%(eZ1>`x~ax_f~91Mn<~7e4*Vx zJ~ozXSvL2m>Ep-i%+u4u%>x7HTV?987$4c=QS$;H_q$iFuC5Z}pSbjG=1`$Ya7~Mp zl#sCV`_?KQB|nPxfR>!28XFZ8WBT}lW>C;dvPCf0jvd05DqFpkm*ZqalaKmLd~Iqv z>EJLL!NhA`<*DYVBXaSO-?a77c|nz@lqyDshPLR(aojt01TXYccX6oC3T(YbO)K`K z)Bk{^B^R&$0gr3p)8 z8s+tVGpf^)CZ!b>K!saRPcQz7iJ>oie(R?FQk^|bpf>H-Dm^P~-quZW>Ck9QRHp;hHIrlsu&Q&cojM3@Z@4(5GX2wc6d znJT|BtLNn8q)g+bUCz5++xP>c6n8Gnb-QS#AJI25s!jsA(u>&mv$FCY=ulP`xb%y=-T4D$Aw{~!S@f_}TAi;?X=y#FsJL(Th^)6~2h&z_ z=hnRkrKSCSecvI^fp!{J6qi2|BO>~qx(&|$XlwBLje;~C{nV*j`oxLXNhWVSrw?;2 z_XhmJ=PoNtzws-}gK-MMOFtd}ImB1Ac6IrGysNfd#`)31hja`K?^{|j6+-IBS7h2b zh6zZ){-T1N`~t&mZ)P zIfWh)DZVQT$%G!R6X70_R2jH9Ef+Ai{mPYcI?YziyGf8Tes?-J?o7uEG`yT zP^f1tZ~%&Y_39OZIT*W`8M1mfaA9)4RtAZ^7`eZ&uz4MwEn z=TOO5<%a=`QF<#%O9!TW+qsOr?s>uPA2s`3W=2W`r~*lEuI}#i2j9h7wDF<#~f<6EZT) z>w{P7)>fCZvUVOj_M)anR{3O5kepOpa`dU|?pV&eG&Y=6oy zf%&)F313a?^XCUTORT&+Jslk#a}S#c?GzQAsGaX^`}`R>en|gu=kQI;mWxxbdF|#4 z$Zrglgs9COPFSJ7H6`p85){mRgIzWWGS70L_RXJwY4=pm7R<$R6Ic>-=D2EYcGU2WB9^=EB0l%F0SS zH=5SZ0j5C;f}%lFzqt$`$1{By+|y+-4GKc>j!Qg*&|&6T0zo(;iyAxe|K?8qXFLAy zkN%&x0;kJIqjL)iT4pYU4(vidT>dfk2|w zrCI9iG~B;`zm`@D=$w6f_GqL?USZbN)g3?&7$5KXJxqy6JZVX8L??OwK9>0ois}9P zs#5HTUUv3y;yM@L6U2s-+3Av7nK;EmnXliv<%|9uyIn>%7F889DbV!#Jz+`-r{_|p zsl-eI!UW^|tHG(NI&)M4CIKorz9BS|PoF+*mv$t5{CLM0OrMIJtB;SCx_Zu~-mb3O zEh92gQZ^SZoU*CK_4WzS_n;+4G!GY=*BYCcm~?XT@MPS$ah&GOn>P|tQunq+p!&P? z)&RJ99D3SCO;A+5OUltYb?TJ5`Z8b-EgwdZv7YLA+$jLgH6A(t)jxi_cki~R;w2D< zlvQ>zH~HQ~21a56ii)~E3=RzR)&&VUPR-3F z>8pWY)|^$Uw{5)x9`@qJit~$<#v(50?*^(=ahfWiIs|H@3uBM8=_d1om9q6y4$YObMF&zULKyHymJudkuGc(gP3f-fSOJg*3Z(AlfhK%8x~e3;BnT-&ilTGXt{b9(5FWC0z4aQC<@*=MYC3nD%> zbvvk#@=0G=N=nKUj!gu@M?Riew85~jFz`OI{+ zSs z81nzD)e8}3ou z-EWx6vUuXm%?JK_uYkatmoLE~1TA}OX=xq4vA%4IA>2VaItiHeej93O6+L}w7`_+b zbFkII{6~Mk1Wu@+puiZxvTfTDt48|&J^{eIyxYKWM@Qj^7vSKGDjZY(^90$vRXY0m z!|s*fj$U8m_VD&TtA8&<0g?3T1n+FBv{O`MFd;6ZiM|pVyFRl{^inqy^gFof#W0OL_jsQgA zTFc;u|J}03k1)5od3#@ri*vEJKeA4@_P?ieYK)#s!mAwX|F?Qi1OV@0eq}Yu7Go!+-W&%%p<8FMK269Q9I`kB7(6 z;6J{A&K@2!AomfJ|6D7GRAgK(C?vE_vE%e>tH0K+CniD|xX5LIYv?NR&LS;Z-n~1c zr?;Ev8xR1}qWNzE-9GDL5A=WZryEdnrhJg~eL15f$$~gS8E(J6Koa`BYW>n^Gm?U$P=`g z%Ca)VhlTQP0-=c~h*S?e4eBp8GLlpLoT97iB=%>o@U8;~0I?I82gqa)zyjGNXgpb2 zS*4}AJDE><;8(M}W{=5$_rgSjVNV`&M3vX*=?qyr2ZsQxK1y6!8sZ84E|vMty?gp* zW+K^B{{^t(2M>-V6(DBW$pNz$Kcr#!zLt|Sh}M4o{CSk)fIkaUucA5HK0M0FL3*px zfWTV6AJS9*-#!@7y!VgIsU@!l5<3_37kf(!(`osydR;K73kA~90R zTWbnkT$-(9=FU;?F&ZYOmiO<=%gXK=`^sj7g*}H9CQ_iEamZ~KlnFt>Q^s^yf7+L? z-(Ch;O-YG?&JXIBr4nOP7L;m$Zz7s*He6uqFJAe50jB|ie; z9K}=?g6IgJH5di(!%!%0p7>9P>Ub<>T$Y=g+w|p&QRl$;xX8nQ670WiYQl+@@XU8s z$N9pAq|{WQL0xRwQPMn_fu4S8{+9x%+kPhMfl?m=A^Z*#y3=~0H*dU$H1)}1TAH4A z=jxy!5PFF6Wbn?4a$rwD0ey#Z0rJu2-+aoH_0wH=ipl8JE0wdq5uZ28gD7kOpNLON zunLXYzgnYL)8_QCjfSh6SWGIHjIB>*0U%y)GBbHBct&rXiy-8dQ3;_VqEa&M@FWi9j&c8jh}FZ_Ezd3?5e+iRgAh_J(vLH$dZzh8aj-7gr)3M{3h>F z??+%z`uqOd?~ogX&;=lttgQV{Gfg|}aX%}IV1-~7R_x1>Ie2hr%2!ep<-UqCD6Y4u zspET*-R_4()w-i+PG*hV}t160utuv@FeMje^g^^S8loVcIEmP^o2b zDk?e}`G44{s|+EibxT}n&c=&%Y0&XfBz3&#)I;YCg%Ib97w5riY*nV(@cbJ0QP3P| zj5G=K1j3HqbuU0#ns8i~HN)aAi@j_6ekl_=RclVHz2dMK`&yZ}?S_HA{yN(vR{v)! zD=RC+-?(W-ft_C|s&4wm$qNXmjkS+n->ZJ(?g^&S2vONk`bg?p&^%^l>9*<^O(qLx zA4QN7xQ@$)zKdk)@%8t2Mo9(T);>HFD8H_xWU)4kLr3TH?2gR?^N-rt-C8>f&_$Fv~@r2TnLr!TwS2=#% zv_9CZSN~7QsbvPOdp)j%MoVkb`pvYjNFBXvqNkR(i)jnfGvSyWRa{ycNHG zIgt9?uKSy6Yt(Joga&yQ8K2p{Wt)|x6aM^C4(Hy;$u)b2_3%|r?)j)1D~haRx3jua9ym-912I z7?+^bLgK0ASBVV39$Z%>H7A-5;Br}x%(K%GLmNY#Up0YX7~b=^&)?z8if-DBefqPe ztcyl*Jl3@Jn`uQ#R`sN2F3F3C6rfK)dz}`gB3Pd?c6+yE=yKIhDFh_(&!6^w1{4Iz zPd_}*HvIjRiSYLRie;?fgDW`qedR|_ST0}YDUxUk?X+yX#!~t2$ZnCjtxcl}b*{Da zU0%vDHF;d2j>S(8Jino7bt-)`>>-Ld<=g#A1$UHya}n}^Ji%pnbFbF=yDSyBd8E3MfXw& zNi4A&aDVFA9z7B0V`V}@-oX`;pO<%a{fCB!hMMl}IVZEHt}KbRC&Ed|0!nM?Q7xL1 z(o$F(2B&;YMW2+9Kz;B=+PM2EXd4(n7+pV5-J$)Jl{qe&Z`^#X_1F>ay#-<1cWWGr zMaU2H^C1NpS8V6vf(lj>ywU}VcBh8!x) z%@v0rhm)_mKuawxVmNX<@5ln{-mlh;mbmq^XFqO|<9i7o%>MlkY)BkzYz3Ht_U;`H zS(^_5b5B~4s(@b+D${JX$OmPdICL1 zY{IW7^>zK8ZWmvHrbiTk6bn)S4xCIG7juw=U`$J^eLsKrZjEq>IN4;hA5Zgrc$jwo%=C2K z($9xr%hxsZ%E~wS&pxz${OInwelR=1u_Oxa6N)G(2(Tp(g>W=AeVg)yW{37lxrx5G ztgH+xgujc6zqwAD*)D1m8S6|-Z+gE-n3im;$?Ev@>E>j|=SDIuAAX#Mkx@QyL0l>? zKfmhytEj~NTF}f+)t@rLWO47qz_sl%r#qVlr=S$Ufq^=R19(PLE^DPhyeu(1yzw$M zQx#9!+b_@e)A&@LHz#4foK1D9vl}nk>Ob4t+k4=`JLc1fCjdSqyZ5GX&d<_|ro)|r0)>kjBu^v5^V zn?paG>y9iS^2jL~%#MAT>8bXaF5HlH0I5(A+e+zq1rwJ4>@#ggx+RFWv*hff_$d}8 zCi+(uS-_fAw3m2@oIaxIeo94P3;K(;)`@Q8(VRRTA&klD6vrDxh%$0N9I8$64Z+|Au+M+#w{_){4JDh2L|_;_Z>9#>iRdk2Xq!&&D~>g?oq)X>th zfF=$HLiJPEuRgTKR<^bv;@e0h#h?otjqGi0JL^M2U~7}<3!H%?N3Cwxu_`P8WRWvx zsM;0hBe(3fuCN!l-mrZTE&ynLDgR;hbaGU6{$cgx<>g@_0G)Pc8$fOylzxTPh084? zKK@<}9fr3Si19cZC>k&Sl(LvL&8p~);qbtHY;PA96HE5tJ2e8kP1}7<_0y-X#m1tP z+_ZViqKv#)7fR*oyhhoNxe$66c~+o~L+hKs-3<)5132Of5PLKs8`N$sV5|eQJr+*S zN1O$SM(E>KlHRT*O)&cNS$@umD;mnR^oJ44kK>N;P-g;%jgyn+nL|XHTLBNcKTxk= zpK|*bz(KfHenr`dUX_B_|K^QdQ~X~NpHIZ#@4*w7oSE5o^Nv76+{WSIVMICXTV|%` zQqz6*)LnleUMsu;_Zm6?xD-$ok1HyYd=3-;GXMJ+Ni2CWt^4=xg%B46qX97u)Do9Z=)G)fXR*uiQyTZxL;wjY~rM{p+>Faz` zH#Zj+-w3;L;|3lQ83F37r?FABcQ{fPXGrj2NWaVPax;BrPu8yiHG{ND{Y{)zKhC0d zfp|)Rqy#+@rIAf|n3j)Nsnk-V{^81gYogUG#__~`n)Xh?ToGbR3sGu<5n+FGyJrYf z=0k&`&+Y9s-s897bF6932D+cd5P$60v4*m~l=H4}<|nTmli8YexkaAb>O-BsTLEIf z(c=qfmjaFm1}`SVHUbizou>X7=_!(Jw#} zp zqtetbxs3v4dEJ^C8w+_fzsBJQCr-lrDF^I_V!h5)Tn1A0= zGBA`}uzqx=k(@Gpgd%ho$fhl|>AUpAkFIxlFyVGCzC9JUkV06fE?n5xC2D!F5z52tG4@6$f}&vV zxr7}8+}!;M&WaLJ>zZBl>h2OSaw^Lrf|YTD2c#f4vPOMvGu`k#J;sLohMAy!I%;y$ zvzn}A!ix#QPM@gwvGay((8V^ZC@EX0UFHc2A!zfQ+J;YhPADCjR(|?(6G3r_Rd6(= zBj@$HqQ>1&!-J8e7rtKO-pf2MCP+Noa;IM|+33o?W6gj4dZ+thX75QFuRhAJ8fHDh9+;Y! zfjF}$hotG{I@+c#5F1ID|`NhEE=l=(VdCh+gC zoc{#(AxtMKf0Y&(+lEavmIVyrcoZexNY)Q!+#D0PZi>HqchCK_TPl!lJ#WRvGQ_=x z=|M6f+|?n z$n_^qU4P;iti^4cw{~`S1MsnPa5PuPSCs4_PbpAUF;&Njsye3cV$J(_M@3)%)AQ$H zTVBix(_&G+iM?pmBu8f(uQ zJ$6En)z9&Gg2QeiY(TTW`YfhSxUAolGG=x3mKng<>1iNgmX$Ur0KBrkq%Lc97}SCm zmfnkLB|=IEVm=(Q3PZ>rbl$$;<=8SWsURbx6fpBeMZZA4Ed&OG$;206x+}n9iMpJp z#>EwtysD1Ew!CBOR(F_-QS6+%%HDKzJQ;nGVk+MbQ!*?$UT9Y++wccLYT6_6;WftY zU`*=`Zzd-v*K=4{7&Pt=kZPb8=H}+W^OjXqz^d}|yxMrgGM>E~+5|jkr(xM*9)Ppg z&TjF~qKBsD`_NDV3#U$_u;df(o?5H$))N+fpf3_a!A%C*lVHC)#Je0sbq z?hm`ozz~b&K-PhfqvH?-L$814472j|%nS@bQh^Ju_ScyueJ9VsArTd|*~`mIJ~IS( z2PV|O)x{BX+CX`WL#dp2tREB1RC1vW;7LUV1QLAM+&|xJT?EO3&eDIkpuh=j?fCJR zSTE4Aqd$M1qWMzpkW99QmmaHHUA+v1mV0rfgI;jQPa!=zc41&*dKwzonlq1h3GxjM zyo%nf8pC-{$K-+`KBHps@CWNnv(o zruoeq0e=34p+v1+yLW?rKxnSPvcz6?$yNWU?ur@`Bn2NaQuB6dDzqltlc-5W%=-1pV8=ChWa#$&9hY*`lfGbe8b1VXxkJZ&jg)DK z1%P&7z<^)mg8$rFm&m%{Y3%FkTLZxfB#hC|>`Nn~PQr={&wmNq{5EylMcz;wURkA9 z?TEA(rpL~kmp)f0XZISg&V-b`^G;Y@9nasvHc@!&qw&t|;m)ixw+Nvhp0C;FS)m9N z>-r3(6K!^x8`1xLDFlU6d*{NrR&Hc>6kQ&*ZWt&8l`xqKXVfd()az97*BviBknmYs zuM68eUTkEghQi3Yq4#4I)4!&PsMB0kRd0)9-HHEtC;mj3`hO;W@R7k@QSRKFErhcZ zgkLXYozS8VZJo3*+{DQ{OE|S5j3zxii#l{|SF;amO~9K?|DG`>Y*oyY5&s*a{AD6} z`QOtfHr?kCzFeMlR7@TBZ4>6GZ=63Z3YL`u22Fq*Kctn?n zSRWjHbm*q%HWnF6d>?TF0*_0|z8yNuu-WO?crZd&(ydzyfa_e_w`-+Ji@>uTV6bne zEE}7EXk5ZE8I3VU!pSYClip(3Z3CAN6q0`Z`gs?ZzS`xBEtWq-ndJNlp%qS@#e8^& z1UAOF$jDBlW=-=CPSrV_-&#XmeH8DOptdKHa{l)XCdEdcp0l6`WZ|Q#shOUhKE754 zv6Y&Mr%d|GR;d>)3TtWc@xUMwHg9iWiq?`}9D>{T&f{7z6o^{hz{%$qGlLpOX7U>G zY6Fxz*zhO5JbqB__jel&g+L7K*)s$u8_ZEXWp;^0MMa7`$peyLzF)^~PfkliQdwhN zP|qQ>Mt+z?{`&g)K@`RihccFVW)RR6B{%>Q0jMi5@?CyaajX+wdd9|8XsM{hEXwfp z!3{WOduQ)Jb2I(UU(Rph|I7~sH-=Rv}A${-$X@49vw|i zO8Rh1V)uaqdY+O30(Jo6paEbgUvB`!$oH;f5+CNZ$jC_4dRu$@`*-h};w2%xi-9`0 zfGwfrgEg!C@#Eb@oQy6ca|q}zI5?OXzh$@T-TU`HerOB2%RKwv(eh3#-pYaXa&CIM z>xqj6ux@3gUxxt|fy4(h6zo(DYAAV7nQ%q)uNdy5pTRFMmpXKaw!Vpsq=BO8<1>%4 zqSLZ9HEdvH-Z800mUmP$gcP>!stTLlz_ zCDeHRro=t<;L|cR^8|Kw`}UVPhnwQ9FGaMXUnkNl6K0r7e6wtNV$}C2ugb1F6G!YzO|VUHRn&+qO!N z5qN@wAU=U5u^hypJkeLLMFa2t55$Vy$Pf8+-l|H7I*?~z#WyoG&1J_DW3c5r7S61U zHNjgxw0!8V;HTT^|0+bmD;VG*(N&oqCMa%4Vw`9fjV;FI&kkO$pXa5Uz26kgdvamm}#>wvQ<{L1lpX_nvw({PQKC zkKph1@$rEqTjHl0$J0}=taNWQhaXm-b(2mw{b8@4H`3F4K%~*|p-c&gie_Lm4x^-I z7d7QSqRP8vO9}FnnmR(Xkb@s+00x@04KYUv zjfM(uf>;Dj;hg|XyfWCyW6H{?gPIx|>|*A^b2qR~z;r%twTgc5-#~z`uCB)9uu)fE z-wPXVI(a`WEj>LiakH{6jemR*ep~@03sM-IGiwvp5B35Z*Dz`E4Z#PJrW~D|q#!w& zZRBTnavH}t2|h}j^)HOv;T%T5`-PlUmUoeSrcYg!R8+1s4?|z+{QUXsY!P}KcBNfY zK+z9A5*TKE@bou)__AD?XW!`=8v0@iz(b9a$rz*|gLq)nzw@NocX1k~r0;n7Vc2jF zfuE5|ZU(~L`%Hz*rHSy8k|}safiu@&ZVp;onMYR!(8F*DPzd`Uc)@8=cI$#ikH!!^ zpf=z>{xkNt<-C>EI$G`QZ0dKFcI?c`k6N34OJjxm(AE9;K#RBkE+{)7a~Kqtf7RDx zTf!8@EgPur)_ly*&7J)HyQkRl7@o$>O@i-bXQwaf5a?dK>NQ=+I7F$`B8yGIpxy8W z3>$bM6g&#bP0Y&Jk(gh{1h@Z8oo#3H1nmjP0Dl8m%`E3;l^{AZ3yb>7N~1cjOEo*m zDHkE2!kyAyK*S)qwlpdR=M3PYwhyfw3=wz*qVTr9AkJX(_Xt{=g^_A%a&loHT8zlM zd}zlX83XU9*D?~|ykcczd)4m>CF%rk(9pMUlQ7Z1B8H`=-*JcpQwF^U@UvkZaQB$HeE^sd3}qhRFTT~SJv)vru1w( z6Ul2`e1K`~2t3Bh%F6KGDDE_@^)E;12fUAB6T*YxmhldV!t&Swdvc42TS71}r6BvoXT{;6R$=MG!cogHdnLY2d#23OtF}1A;uIp%Dn+2n}u* z&avlt!5G07;x#?@ky+GIpojH*f>#zVgiaP=_zniFzzx5#n$!hW{)yUXO9`o@ zex2fknBUtg4>zi~_@u?!QgU1zlUIj0AJXWikijNuY8GWwuBqSd+ODtxFT??k;=MO} z$fKBwV&m}E+2rK>e8Q*Ey+U~sux%%i z8MqmXf)0i6>peKVMHzh?)F>jp7`0+)aS<44p4@uO!Xo5LsSTzAT!B~OJh8TR1>TYq xF`RtArt##O@7GOv05|`5k^g_JpA%~oa|B)YFrKgaFyau@R8Ai+R6cj<{{e;g@ZJCb literal 0 HcmV?d00001 diff --git a/vignettes/MetaculRRMD_unnamed-chunk-14-1.png b/vignettes/MetaculRRMD_unnamed-chunk-14-1.png new file mode 100644 index 0000000000000000000000000000000000000000..c3d69b3187049bd912f7a11eb2806f33315d4bda GIT binary patch literal 6790 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 z z)_Z4=B407+wZ^x^m-nXQyDsyF#02zlJu$0JX7?!Ql8n#ZKdh>s`LL3hwFDzCo;K^r zQq z^P{;41= z$C<@rW0r$nOyR+j9m>vTp_Y65UX!ttHbb+oxO$ejggDQLDA;l1)unIre#xE+&7&fd zc_}JhYzJ#wP0^OaR7lLakYyOp#;jqate3yA#E?f?v-Gq0Pco9bGEDj<8+BR{dcaU> zl@SWrYPFOvPMb})>Mz`2!X^!HtuI~BEJAy3RtNf;${IRXVT%z@)~)@LLJelfY4_rJ zy|XJ<>@2{V_UIb751%3f1=$0(a~FD5s{Qy5_;>Ps1j#XM+OF3{n!0*5GKvcjg#jcx zZ8=7}u4RyKqkMCLTH&(Wg1#rU#*2?;J&Z~{v!6G{v-yi0n14siN=b}2jR)rIw(X=S zzTUjxwleWWyC>&KS)UU2`W*p3YMOInF=;}}L)AD-AIQ8ARy&Dy2KCtuCs#kP1RgUB zNSet{3wT$cOQ4pyD@pU}&Jtal=6*uo#KwRC8qfLastn4~D%-_`L7&1rNRw5h`c#P` zr4EXCz0V$6F#{ZsTyV;~mMmQf3mYa!bZC70&3T?&-Wm?^!ua>oQZ6q&o)t1GpjXrR zf|~Mjpp+KnfvxayEf?>8`8Yc>+HOIYgtWddMO>Q0e>nCZDz*4;wJ~1a&R$rZz0<4i z86!w;`&mhYfd9}a2^`RP_8+cocZ>GEh_+?rN`JyoBX$K zW;r(o81?TA8I3dWkshr)o=D!vPpoE>=Q5?$i{0dD;AEh_h(PWZl&_;IGznCRo9xkL z2KAq4m1|W5I=dV~66C!ft3OYlWp_+@OufQKjALI!h5<6Gp_tK4~$Hs(L4z+-6#jdNrz9pYGaDh?3l8wibB&o-kcW1#Gv?0fk2<+M4 z%YsygS=W74}O6j5}Um8GDZgb(!5q@`|=XEMq^xBGiN3J)-5IL z^L;n7E1ASb%|>AHRH|A%VBk-$C0k?+;XNF})?-~cdj5PWh9NUJ( zL_laz3F~Yr9p-rtIKkv{RF-58VrZvJP_q}_X=DM|&o9Fv6V$WCqYQpZhY^s8Cl6&+ zmPB8?4Tp3-DPP}rPC{8-u{j6C-4sJB+>uZwBpDG9S0jq<;MiGU!$^SsnA9yghZ5q8 zs?O3NIXj8{$9au?AwCVUzhttA!9QF!@OH1^M<&n_7c5$YLg3tffOC z)EC#P(2m7XD2OxY+O;B(-_(6g1rx*en#w(pLh|8zkpiM1-Q)BR OB~3LwRfO`RXa5EJq%M8{ literal 0 HcmV?d00001 diff --git a/vignettes/MetaculRRMD_unnamed-chunk-15-1.png b/vignettes/MetaculRRMD_unnamed-chunk-15-1.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a9db69651be2657e8d71a1595393330c40ac03 GIT binary patch literal 4621 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 literal 0 HcmV?d00001 diff --git a/vignettes/MetaculRRMD_unnamed-chunk-16-1.png b/vignettes/MetaculRRMD_unnamed-chunk-16-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf33bd29b528da09c6a08c90d20a807f4611409 GIT binary patch literal 14826 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 ZH*bDeXpb6wZ_eO=ECuj#Pu<=Kls zAlP&-U%HM!&~4KGv+RL4;(Cr^(ER0o*}?;XU_C(lPuDqu+Cdz09(|&-3vQV@vPw-WL6(>jhb6JcH|ET%A29hHP4# z6b?3DFZy}?t6cYw&tHynR%L!X@w|z0)&qr3@s>MMzE9S}6+11s9aJQ{bo38t{pah| zRIF}{2pytbhCP!Rfhaqy!H!VUX{Qfr069t*7GC(P{B?Xg|&AuK(jX_%W7#x6Me zAx0oi0oGlgiV=maoR3GB-O|eE;FY z&yNoEW*Z1*HhwjI6W}DL@QLakC9uwQ`0!x0w3wKo`+;sudA7C({Vcl<=~Hy#P;TbG zj~eXTzU2j$|Ivxaw7&e%s`%fTC&C5(>mvvvC{t>B#ls--4^yvTtcdQymj3;|k0TXc zvswDd!>hC7mrk5GL8Vgl4Cs{q86$9Ix+_ftnsQoD(e)kQEgE< z_lEa|prQ`@w%(O1I?)1@$}vi-vplO%Ol)j?Dhs}I*f^v7@md%rEYQB_{Har?jvue> z>oaFDx>f9o_uR6+d)KGPPu&pH*>%)1GF$s{%(;!6IP}-<++v+O+!OCA5@*gasTv!- z_S*!H&^ebaa`MD-`zq?bK2Wmx_O7{)=dzd5F7@t4r zPvtQ(v)m#|b{b^=Uc4$aj}z2A%b2r(yggKdP1`*oE{gr>#1*r&ej3+aJ~=sDJ@a-b#IZTT(y4ZD}F*Do>c3#tWvI&Y}dx-9|x!6 zxHXe5#f!AGC~wur-_D%wRDFk|Sv&}8PbwQD z<4$A5N6r5RKmGq}a)PYltojv&r+rZW(Wd$9b5YyY?tUkAN=Y<8+YakWitti;7iw#Z_}A|h1S zAF;6XLlRrH^(WcF!lJ;k_<+_4y=Xfr5I%9})2%w$whOVZUk?-tzc7>t!Z43pR{AWa zDtQsN7x7~mI_#MaXT(}z=y$?8Q4##g-Ysv=QMNbC{SQwbC(xDscy>_q>3;q@H&Q|)$o_h&mhJ7r~MYP(x)vi3g>{SRk=WmQDpyEoJHN|<@ykx%XunwbuC8tgR# zxw*LwQT#)>rg^4$X5uQWA>+Bch}OG#_=UmZ=H?e6MvSRUh*pt4(MO!3^g;xAw1&YpevBToDp&w(I4BXkc#V>E%CPqF=jarW=uzhMQk4y{eR zrLH4`rEX)HR}yV2JZHK;7}GxIfzS6gK2cRrP&j!~n}ze>!Pw+vNw*7V>Q1D>s8~q& z^XE$5b4kY93>eLBsWQ;Unc0}g2eqX`yO zzRL}fyrCTL-o4WoI1;pygLir{sY3!=n3atHk~E3jPqlkDa?R1!(fGgA~G6&4m|8>C&+)%|P# z{{8IiZQsA^Ub!;cUpSd?%F6c9a{bcM(tds=#RrB6C(xm%TdULP&55wTSL-33nwlD| zvYs?Ql#?U2#erHFF29z<8bmfk_lWH^M(~7?^St5Ah&mM0E^xPN7;3H;99czNLc(ak zA`S+L#4x+tJfswR&Gyosm<}SgbMQna0|CVL4T`A(bnK`~?l@{i}@*b!7kbzhaL-h=}HcsHCppU`oR+9HRUiM+M zqzWTOC72YN7uep(f=i$&`KfF`*BgB0}95Uu6Hpn?(XM&9B!A3-Q-P`LW)MiGQ>#;mEC)V-A~ z{_5;hKf+SQ;=|AD^BL6VgYafm-nsviK|g<9^;_$+axK>aVN^hvoVV8Kz_lK83kp{h9HVLMEcV6WQ#`Wv5g=Y3 zh=&8%brq#e?6n$c+153UzEK|K1OqNUu#V~i@?a4KD z!>#qInxR8iL7?aTL@d9OCzve)vj%%ks5Kf6UUJP`k+!$FH}mkL4;uOP+VfB<5TxAX;QeJpZ090U${i!(gTTnUe02lJ$nZIQ83iQ67ph$qo0ryix ztRY{b`5tNb*r_I!xvYJ-+ylR}(yS7&Zio&I2CX&C!E2s?_5`#l&~E)EOXk5V*hlxX z(47~C$(n48hRqy=&FcC+JJveu`lRYbQ6XG>cVhLtcRuGm@x0)^LNlK1B7%0?QEA`H^*o||504P z2fU^S{EU*p?|imKy9|8J>?}e=f|pvmY+!)=bdzq)+!2(yJCrQx83Yo~Dm~gfy=G1T zCGPjx*<5~iG3+`zbU!SWALJKhP%$(HKNikO6BF#vcxi54V>JH|_*s5q2~oUzsiwyp9pKxLi*_0O z^5IIUD_oVH<>lp>-h!cy44rs^Zx6sNi%Ux7ll!5<@~l&^wcY z&~K(ABaGwr_WC>$O<99p1!j51Pnl8(OA~dIyX0ED{k6);DCOr;hcg==>)j(?`tsjh zB^r(P%NTI3-d?DLlTp4|6J*yI^_}-gaByvH?H+piWL4>LYq+WtPY&vAMADXOa`*0C z@RcSeah*>TTbD7>5fMLITMujAad6Pl)*h7qv4z^%d@%GOxxc?ZOu(PeYvs1KG=5w# z=Q0X~vbMIqe*O9{TwQ!BqlBr2#d(L;6cmLV8X5}m<0PNKD0J$|HpqVeo`IP;EG%sL z_wVswY=u$ zwb;=~udFo7WM^l)(SicWh&oiesHiAhc4shM_C;G^f+*jqc=O>4hsXDV#bV`_9xk+F z&coLl&M{N!UvMv0t+vh&l}7WO{~Wlz?&s&{D!}Tl1U6kiS>9`&=3@}0p9M)c|22QY zyD;!Zr@V*TRa1V0!liAmMlkS%<>pGIEqwWN$7(;yb?Y|Xv4(jZR{svRCSmuK^UI_pMSqeb zw}FM)whk#;l}t!g3204K8G_LKV%UC_&G9F&nT~tQsTFQxszj`NO8xa>r51l;$d1ig z#i4n*c4aNG^L5wS=mQ9+k`>$zYd!)849?<^=ApxfqxjB0 zB(%Q+OViWSBh9;2F~^LHj*jL?57<~hqPFhB@i^btqLTm<-g^A4@@n#;J^(lu^>!T{ zoo3db)w|Sfz!Zlx;V$SWot~JCR*Q;?LQO_0Sf6njnM9HWfR&d#Uof~dLv z!uEDU*hxijE-6iS)=P^z@O~E;0-8^if*`+#-0*MDdt`AOS5VkUcB>vJ_sITRlGe9H zLZFai)b-N3Fm@ke_dW3UX(+O|pcB(t26gZB3c}W0yq6~-PJzbbZ^XAT5=0daS2C@T(!V`dlN6A)PVQy8TE zY8Km-rJrYn);BO{Yi&&s`CeBiEFs}k8}gT)K1<7)(2|Yn#mBiVyjm6?IBL5;7xx7o z)TesyU%fv&Qn`_I#*Vt0w%arY#`>I)&;)K{l$DL`t>S}p*0AdR+Zt+K#BLD%-mh=Z zK!x3^mK%J=0!trG=_wd6$-OL~T5cs z|K$nOT|Is9--&p|fc5;Hdhn>uyLpGUJsj@b`TggQe?S1MP(!pJARg{u0iuZyr5FgB z@87?#a0aHS1`ewU$h9>#9^w$QWH=`>W!g+NRhXEVU}R)m=}VMB?%%i1bMmtKMYwrj zCO%oAPf1CA33M6Cq|5lQiC@mq(Aqj>h?$;v9I)fufUyr{ZDpz%Fx^#seKr;rF==V< zA>W`}uzq;Qj`Z^$e;`nka~pjGSfx#6BPF?U53zlTJPW=DqQ&!pWKwn-YS5dD;ilaB zm=3iKP4(DZx>YnF6_Nzkp`dh>JXh3K;d8pCTDu2nRqFaSHg;>iC%Gz!Swe|~KQ1n@_o@Ni^XHe<>I0~W@18+%C zHk{W2W_r7_Lpb8IulYw*w=HYDlc|(Oek{zay**-eqyKxU%ZN{$c@od*n?Y5z-3DqD zlN&d{OtL2=CW2C+)`&fz$12`)H}EJ*YQVyIH8nf{aLO!lm%KHdCVDmL=GoU|SYV0E zP_k>q3_E(W4m=?fyMWYgKbNGLb!8zC6syy1*xXzmHPjA0`vt>|%j?(-W)sbic!13< zC-U$K@n*PngV`D5mHQqu!$+|SW~BvEK2(`tCeuFKy~858vq*s|Dp%G?{WpgM1qF{B z+3dqpy_yqF!Trg;_Et|<_ceHz*0;(hbR}f4Xi*@3CgIFC02FU+ZS@4$!Hqo8hg948 zeUQ6=>ZC$`V&ZGDQ*k+kLo@tW`h;3nUNDE|K1ZX~RhO!(S-^zJ{jM(I%JL@>ghHBH zT1H^FIC0~Zm6gE~${M4Fx_S*<2~qtwaj~(+Ha3AILPvl94WVzWGF3MNmYs?%@9(<% zO}^KS^`7g0urcDJ@Ege(EFdxUvlZB^XI)whT;x-n)StzXB*eSs~9<*^DW`7Atw_(SMhzD1FQq@)b8S}Npa zX;W2I)yI)dU_?}QcUIvtBP%@b;Q*5v3WKNfp0`XyJ!Lo8vlMc1Bf|TJxB`qoV_iRkFNG1#n^D zoq(jdQ8ZBHzea@n|2``#iszh!h{zp?`tSGV&-7u(Ac}EO^Y|9d+2=af{;uvKy9#Nk zj$PsXg{I^}Lw+lY7i^g{MN6P#-kE4Ty{d1Zj40>}N z?ZRi!W*>V%WwFdSi4uw(SY4-@#vW`|;qhS<#h~~)E@}biy$DXCp%YjP~Z{ z^B;S$6B(iPzp}J=YI7$Qys~6;t;f5zt`wF~-0jyc+DK00YYe%|~hibMSkf zA0tet!i-uRB=^|vZWAIl=s1gi*+qYUa?FV<|96zDG&j0w9>!~J#*5q|T< zea_AA=-g$cu_3JdYN$t>OA|6U(t$N|bqxj;YXEVW1JI@e?<6e^$P&ZEpppVtmd2sp zx&^@v-MR6W8;VEadqCX(*&c-FPMeW19-THN3%Vn1KL4oA3*!2F1gS# zD$rC4BMyp;!7a_imjCa*)o;gde{j7QmARKXI)gd{)go~il7~!fK_y>??Tq>jb zBnK&H4736wbon!9I@~sK0IM(^z}?rG0Sn{s5m2o=gGO`(%Bn1f~(Y*0;3e4r59$+vj)a#*mtXqiI4! zU=%6_iW~sH^#OW(2O@B3xH*c8i-TYz!i32C6!IE8(IPPrV2s882`I@CW(~JX@WI82 z6}`Ie&CReONA_yCNv#mEw6{V8wo4!Jqh5Wq)xlF_Es#!Et{D3tM!41|7d}1Khiql8Uro*!oDK=MpBK*1mh#s4q#)*jvbE}FIv2&S*WVD=dS7XhWr24)>X zOi+?f4|c+VSS|%mt{I+`lr%g%4BIR8?WNGg9SQ}YAV^?Y>UwHyWoK&@`g2QLzZCf{ zez8uPh(*jjyg+#I;zf&n5l3xX8@8t=h_nR+W&D zSlQTcBY!Is_`BmycO)K3W?pbn6?dBxfbsYD zdvGp0uW7B%WvIjm&1m>!QbX|Q(bsR^o(gGdZH>ed~I^Civlm)6(!v#@M-rBQ!> z(|Di)$KBnsjM*TO9sz~zJf;m~iI&!1Lcm08iT(_I3Sl=EPgR1E`!3$ns{^{xC_@|4 z35d1hgkmB@=?@+}ppEeY(~&L9Q{X3ng~iPH%9=$2pw!Z; z2V4f~;CMXPHqyT3jTVem#6ij}f|QTXs9zXpsDlup2Mit}TbN)P0D;+nPX49%j0srESt zKc6pb$weU8-D$M|ahmOwPpr}W7kq(LLoDdDSEdwD$s71x8(94jPPc}N1Z#9bem?C6 ziZkHue_!jv1#G~+Vh#n5h9*c^e10(50P#LxX-FB}v}VBN!AXIY$6cYd0t~oSSR+OP zM7RTY2_RlJj0DW3L(D7|JgOqhO4Mjq);BWhfD91a^$TvJ7htF$pp2)1EQOR7ZEhD| z+1|h4TsFqgX|RdKLWH+BflU~DwAupL`_ZFEV1*G*#|g=LAMp#oYQQ&M@bt|L&Bo3S z*)YVXXp9ed0|c;@%9lUltCt%f89|o=bgL3rDgN^h-^1yHU}SADNa|KBK^c% z^Uvx%d}T}CiRk+Oex(Da)y@}O4V>nlcCp}Ujl(jwSK$P-IZ11PEk@u<|NDzTrT6?B z)j*o!57wJ1cx?e=0}gou=qcK+*f3DM{xNC4G81i|zj#5jlDnTCcc|`(+J1z} z_{xv5&1NJOIOw2O4wCsP+bUm(W+BT6D<}M=u`3B-o6q7X;C9$>gu`({XjvAOho8Ry ze8>2ms@sqgq^up?+;V!6;Mevenuk=N8Gf43>Ef4Ayw8f~D`$2|E+ z`P99Lvm>^)-)YZX4(;F=5&eYIw9#scNr!2pV3=%hS7^){d}8F;|3wh-@m+N zz`?HXEH}dU>TLcjXfe4EXtaTWffx}#U*Ai^zOmtDUl&|T7Ke5L zrQd3yV0~<%;LWlAR;J_Hd}AE*!cMP zQuG*`ununX*9$cW~|W8zs3~EpX~}45E$C2X4?uwi}FwUr?Xwh`BEw#FE}oCw-o2$<$r(Km+jiF zNPCsD5k9)`A(>Iw2M(GQ&R2M?>ARX@9W$@>0ss`ti5!%Lt&${AuXV7 zVdPh4T!lHh<>yb>ce&s4L2SzVNE$e1$8&0XCOW?LE%2Mc@FWt+Ky_DB)e8>Qbg`{` z)Fmhnwav+*XF#v`7?$xTxiD}c2S=84Yp4~!ibB|;sd#6lfBR_q_u!r{c!Zv#a zIZ}Qsf{{4x+ivw=G6!G1k4B6{Mit_oku4_TGqc;Czerrzogk!yFO5EKnc_9MQ7~3N z9MhMp|Em5v=Yh`Bi@qaj)0Um(vOSeP&xu5$Pp{wT`Tj|5+jkf5aM@ZsBU z^J^uoR%C1fn%!Pp>7_h+C#2T(nL@ujgg%g4>T-{q)BeS8C3PK-YmxX?H7UxK!t8#$ z(O~2dH+OQ2y--M68WMsAe%{^XX!IjehYrLWkc^KcbH$s@GiXPS~VM!T+>D+ox77wgs5dE%7m-b`$A;{IEt z<*fj?(+QX&pg(}BckaeI{<-BeZ?l?~ZkT3&QfN@&zS;KrEmd#%LC*g4KZgYcCuWCo z1~8&67p{IS-uPla`u+mx>;Fty^cJ2G5qS@s2V_&uyyl^dwa~i^b@!hwwBZ%{R)eWo z8f&N+=(6*4pMAP>waqG^cX*{THGR2A!$82%Jiy?7UXw^r*ZKcV9Y9`T;mj(nYUzEu z_exyqN#pA`2*FXDn&HP}u=;0gDz|qnxA(8!D|u(-8CR|`ZF_;4I$E@QObB0f`t=33 z`Kfb{JiBy4vvBSg8+ASobR8H9yD%iKIq@1HdPX-US=GvMez2J4=%7xIegkJ>8u+=Y zswmAZvdywk@0YKiUuF-_-St(cIUzs4*PdsPU!3orRakgSPv~D;ms9WhQm9b6vhFlB zQnl{Q9$WUkt;1us8kKc=|G*M&-%uAqzpEka4IP3Hl7Rn~3DW9#`2Kt4;Q!sLh3yOE zpr9atYY^^YN3HZ??iAjriomTr>2c!H^z}VLM*boaoxJIFV|Xh2Kew8gn?wFa-dm{i z)2C06< zEg)f9VNS`9D!Ra3%7z*cB{n`InWSTSkW-}qN&s-s{=8it>O`d9=)4#%jk{R~xkfe~ zs6CRYKE1L$2cKp_~(OnkCd=@H)FrHu5eZDvzsjNBh!IVpQnqnbRRHR}7lsFbv8<`78RW%77GjVl z0XhW0Oz6|6*Iu8U0@fAq4^**0g$zti17Cag?1>Zjdw$^Nz2+~L1n{a9ZX+taX65fR z!S7FjJcoNsgu)!9Q8p1>;Ff66YoU7Eb?9!f_7!?=qs?x8uv1sBMsOTIdGe%!Lf?O` z9e@$Q2QEz@pofQswt>A>1s2rOa&Td!l8diL3s&uP;f~z`(`Tr&LL$c?pbA`Mg2)c4 zL!iK^&sENnr!2fy18HsTET0_80Xa!1IPz8)#6_m|2L=J}1xcO@zDwh<1(2L^kxzCj zpGp8dLPIJK#xU}z4i#BRx4i%`GS>la}=P%-@qt z6DSnQl`B_5IUog6VtX|*(%UUVv@akCI5WuVrmCTtLsZztp$Ox<{M2cDk_-C!&^p&(zN?+m(ymRM{w|5E0ab;!Yvu8X1V|z|Z zN;Y?Otu8kTCPpKB3#>#1ztZYXg&;EM$|Ihoy0y=z_(O8tIJ8 z$1lVl@#E@mL*Y^$B*mf56d0wX*w|G7;36ka+Ex}exExC9h27Lf27utc=ndS8aRelAU*x1;(F}32ZYr$CKz~32+J4oyQsXLH&7w~r1ib7 zte)y+NKm|a`I19W5P!S=IRtzcc9!a(a)tNwO?7SUr@_&jhWvlIC(;r|NIVKm0;~;E zcjBVowyAFaggxI}o;>{GE_irl@42S7wnbn~M0AVYsz8Y# zuK|fE&6xMVi_;R4F(P;E?Nzsa$No^gu5PNB9<~ig-VXi)jR3R-3~-~!zU8c}tc*>C zColt%0xD!ETif1PL*W`YbU~=;A_6QLEOAM;5;%yVN^0sC?Fp9va$lXvYc^AWmQ*Dih3ycztz E09oF^mjD0& literal 0 HcmV?d00001 diff --git a/vignettes/MetaculRRMD_unnamed-chunk-23-1.png b/vignettes/MetaculRRMD_unnamed-chunk-23-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1eccff25bd521bf3f2a7bbacf6bcba656988b8f7 GIT binary patch literal 6475 zcmds6cT`i$xl5bNJKi5-CygZkJAzgyj5$&SQNQB1_V6_uRR2WMpI%6cm({lvGqy)YQ~8G&Hod zv>*_Oo}Qk8fq{{ck%@_knVFe|g@u)s^^ZUPU}IxrXJ_Z&;JAGG@|7!BI5|1FxVX5v zxp{bau3fu!{rYuYUfvrwZt(H(@$>Tw2ngJ~dGpq-TY`duLPA2q!ongVB4T1<;^N{G z5)zV@#xW`$B!RtYHDg}X=!U~>*(m{>gww0>FMk18yFZE8X6iI89jaa)Y#bA z#KgqZ)b!c2XXfVS78VwkmX^lZIx*x1;B!C+fkTRS^DdwY8a2M0$- zM<*vIXJ=;@7nfJBUb(uuy1BWzySsaMczAkxdU<(ydwWA55GWMt+9#|=kM$teMH*em= z$H%{Y`}WP%efpG}o12%Hm!F?sP*6}Bs;cVh>YAFG+S*z;99~yfS6^S>(9qD>*oZ(NnwpxLo12kHAFTW@cw+=jP_nX!QL2{KCS*_wU~U09agH{PE+*&!0b+ zmX?;6mseI+e*OBjy1Kfywzj^$zOk{fxw(nKV1EDpjm2WOwzhCM-1heN&d$#6?(W{+ z9^T6dkH_!t?;ji-93CDX9UUDX9}@_KlarHdUi}T?#HM(qX6#NvLd9@;og0}8I3gio z;ZT2YUmudbkr5ZjJf7NFBVszaF)dW$WjZ;{>OEdlVp`JZFn%?x!G$Ge1}GMCdCzYd z^v4AyQHr;h9wr6974KBlN94*)c++FGzOv`x8Pl;C2o!oBjj+ z(qakFfce2l*+^gQOlh(CRI%lBX?G0t!UH$+Au^H{60A}%Bu5dU^9}GeNEN*Jo1+#V zBbd-m5>WHga*|k)Jx+VXyrnkgIYB8(m92@HDo- zcGyY{>y(ep4>$OM_@?Mrt*G!nJNF-a z{{JAp&d6o)9zJa{2DY6?HaIGI?aJ<^fw+X;N4pf~x6<+%Y&ko|?cG4B#=iJ7?-_Qc z>J@-49|e~FS}MNME5@mkF}%~x*5AmPYPjdNRNQX;i?96MC?gYFztEcXRLl`P=fjGf zW6M*EUNY*0ZFXdE%(|oBI@zaHmg1L{^A8M&#%foSSqz_;3J5`GWX6|&2y1?GQTji8 zEXUi1M)P`CJa|UVVGq<3S?;;FrBh;y{* z6b%=C1w)SY*DaDxJch#6$Wd#2$uSfLO^UUwT98-%XQH(4`a@(yRoZjCv-{feRK5Gs zJ;pyR2~-l8FP@DTuv#kCEPQ73pG!e(neOUJW!`x};y;(oZJ~g%cg?tm{`)}IHnkWn z%CUnE`=Bszx9xdHFr*)UE%Sg-><)3|HW!nRF64mIh@3W&!qT+Gl43t%)sLn`a*OF$ z2~i5Np0lEhiU{x#DDW3=^5X~I!Y?dIRR3+2K8`&>YQM9;95qReqOw6n2Re)tnHAkp zl8b+LBVb?;Iqcgu%f!Z$sVWLM3dbUt5S zoqqTB8WlY6)L;lhRvpCDdjebPs$ko}CKrT@?A3h{2I0I`#^o{^2#t9S8nn)fh8G`1 zPZGXqb|(KQt7S1`tgM>Hj(`Sjh?+Dnfhad1hbbC#w#c_4ocs^+c$hR;Neg67`n=0oh;CWkTd=E2UwY-CA_@%KX z=*`vb_<3if;%CApb)Mff+EHNegekRy4W#fZMxpUntAKNZJt?#Cj+gt$!_! z%^mo;j$SrfTzo`T^0{n#C4DxZg3pN*EBEjt9+qjUr)6}OLn0@j09orvpZPP+M}FxH zzIMI@)3an*qUbV%aV_r@2(boh@7rD5<3Cnjo1-K?M@4|V|7(#5ei5n0+bnTX+zYPB zd&YypT~a&BX1nWcao8hdy_vs9*tYOecpT6Q`@7^{M2cUBR;WLyMcuOxdP(w`v4|R=p_<+5Lk_pjWu#P zj#niohOXelzj5k^C@|hq<^J(cI3t2qLHpXD^>|x|fRtA$I4!KdfsFSLtVAGJ;hvx} z{3wcp9FSmqi|_4uiRF5BvQgD{7X(WULWvNxl6jl0hMPogpBCGB2BZh>_yc}s?_}^g zm{?GcbpU%0vkC0ryk}=JfH>{+6$Lj-GDv!~4U7AW*VCHF@Qn_TPGuz;2@OE#{EenD z_Sl9XNIwyIPbFM7H+Nw@finB5MAEG&W$S(51?&^B@AokBNxqXyKyKgkW-3+YBLY22 zH5Dq6q5uBqT2%aFk;g8N5L{ zRW~QmVhu3O3F^|H1e-@>7CB0PCh#`x268xT7-cBeD*KH$VqWOJ;g5BhR#cggXzq6Y zZUEP@NjNSL#tJmA&Jklh^YIijfA!c`*&^LMv^Gb={#DPXl8k4v*x9^w8vNfd<99I( zTu7bE4az!~GbI3`!-BFdMtKM0sW0_w1w*1D@#2aIDwM6FofjoaSq@cr4lv`ECsnG_ zd^H?^}$Bgq>Vpsbh2y4_JNt>*V(_SAL0wWWISBuUv8dc{lpdvQ2gcJ%6 z&ey?vJnsKBguE``>*CKZGI%C=j7cQ5?PI+Fh<%OBX!Rvw0j}|7?vV(hR5j#I&OMEa zPlOOizks*|ut(&UJjA~K0+;^DGoBy7xDwGtWj}UqG#Ma90<@8$Zk1m;qe3rYkFs`x z@xQb0%bnQzbIZ%wfd)^ExuWRk*ikU(XUk1?L+Uez)dM`ra7N1%AIxs4PE=Vb`ay=c z(aF&wKFZ1nT5R)UzhMq`z%y#k28cxufnbh52JoferW_vgWXNLG$DN1>i1;SAJdNFK zz2Z@4wrin4HEf}_6o?^)O|-0tAX4b>e)$_=_}?Vhm|Gzb@~Fu_rj5AGT~$CB5-hv& zA?2CpSGdis?JR;J?acQPq$o$~jawjC-PI`XAV^$}KN-MmbOB2Xg59o$g_$CX$X$8l ze*l{IqNuPutS+nfpGDEtL-ZISXHw0DaQxd?DT!cKKv|g6py_t2&_Dm9J5Zr@Acga& zGzjRdMVzd4n5i7QcgH0-F_zc#&R9QgbNVQwXY?ppMMTF?^ZUns#J%}yaCkDUBBI-x z5=e+S+aS7p&*upU;*YhcieI%tw?0xnB6-4MF`-qVNo0~|J&spi1k#>HsBs6IG+~Th z5JGHY2i{jSC)50K{g*@lDYGYpN~COA_LU+;ZMxXP-sh8AbT)9Htm0pIxb^Ra+9~jCs;E>#f7P-8e^?dT4rRVCAS32@yR{gpe?c zBaAXbL%Y5}$o+V{&@KIs-WsT?Hu{6#lzQ!=4TljAV)11L8+`IVz~yOXW4&~9k3_J| z$6e3o#vGJ$71Plw!s0Mm8KyJ(CQ+d-g9<0AF_tfkJ<}fHCja zNpt0~u`%E#R9Ay7Ch)=uoukXT$J&Ib8}7-#$r!-%=`>A+ewOU=dR2zV#wnWH!A1RX zMPbAHRXsViai%Qdx>g4!hR#jYhwSr*I)c~>)^hH96Zq~>3TLyI8}}Vy-=~jEOMx z$9Ne^_WI4<87ztImQj0&(=6>Xd?Yj=_b`3vc6fsBcaw+cik`WLjb^r4bbYfvSl6xz ziNUTFeb~O35U$V5qso(TGbO%p$@pb@jUPM4Wa%p`zsqsb75+r3IT}WsJ=Uqq>8;K? zGCLIyonNl?74=WGlw2w0tar+U>Q4KIr~fK-OqDh7EYDwE(xxspTV6NUzxm-M3m=zvqiA8-(*{KU zWhNv!p@|aassj~sST*6m#9@-=sAY73+eN5;glfjQgHL5BS@(3)lA0+~Xb$u9c`L`N z2H$~-D}qbyrm9kVy9r`lquDxajilS_wC~&<$5F@H;ZD^Us+(74B1DDJ_Zm{+S?T2j z$pD*m+9BLlLx#|`@sbfqPQic}*=-kwMPM%X(0^%zuhZ`}RQRQ_Yx?|(;p$6)PqlHo zb_qEV5$8MFOD@k*hRXerWTUI%m~%K*mtcZdz$I;MzwF4RGGowF2c(B9hU`C{q*ds{ zzo^)_UEs=hdbzTDlM}gY%-fO&!3<0oFAdLqa?>^88}L11d(_X|sg3MRyPOj>BB^x< zg?GoOQsf#mjbxOy-5U6}Ts;_CZb`PuVHH zI=*}(X;E9jvb2T~Ha=?`!-&SX-3zN^zTnG}y2OTB2wWnG?}~vvp;GtfLLav9`94z)?9~bnEMdCca937a25oi(~&^s!; zz?8}B$|b(|=4*X|__u@wJW9J3x-^BJv*l|Ic~^|y0K{FVXN%*3x}>&lH}qou%>;3# zUna8)DVQI=aF}dPOP@sMe4L&ilWn$}W$hKU=kFuV%clMEPFsAlZ?qq8R>?uyZ28%> z6Vo9;9R#T%4gA*OK=Xyq{_{}sBmx#8i0h+zvo}`Vs?s7?V6wB$CcawJ7TMR+vZj;y zo#jDrGh$~??rB9VRI1z8K}H|l_S=B}p#!<@y3WlC8NAh@rfXIErXGExp~=}Xvkf`MO-M` zb0D=Q)XGtjKB+j*YviHN;rF+%2kF3h(YBu^*mWYzk`N8Wj^JBOPGBp{m#EK>nu(x0 zvri&XmCVHDfsW@1Gt5o-8~3hLNG2$8Q9HU665br5{&<#qM9HI_yth+ojfO}Qw*`vF z;3kYBg5qG@W#W(q#gPqFMIQ9~WCcS=QQDmAMo43f2*@R*yglx?SZdAxBH+2$KVliU z9~Pc=lG!)P0%oH1;N;A2uTC2`^mBOa#)`VYKY z1Dcf)=g#Bnqlu~CxbWMZk?miBKaoEs5W5O{W~NcNIQlk6%#A(YBXx06O< zZho8K!mHJESi}^Sjc;Sk;GRA_K>8DGql+v!JY8Bf#^M$B7hUGQ^s5hFOSUNgoi_S} zHw3UhU_HTg3m%<%7zvpd=@EnMKoxeaqLC=IN>hpo_f_t}4%#8^%9A?b!2{cn6yy73xg>7;@@=w=+6Yuo%B9 Vl_9;;diqsFT}A6bxsqkbe*tP0tj+)c literal 0 HcmV?d00001 diff --git a/vignettes/MetaculRRMD_unnamed-chunk-24-1.png b/vignettes/MetaculRRMD_unnamed-chunk-24-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1edefc830423e4b5c279c17b898380944a828136 GIT binary patch literal 4448 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 ac^9EpJd3wvVmPl`9*DM~R`Jb85q|+?QMr%+ literal 0 HcmV?d00001 diff --git a/vignettes/MetaculRRMD_unnamed-chunk-25-1.png b/vignettes/MetaculRRMD_unnamed-chunk-25-1.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b2f175f3daa1be1404c8b92c9931c745c6d046 GIT binary patch literal 7108 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 DgMmSA literal 0 HcmV?d00001 diff --git a/vignettes/MetaculRRMD_unnamed-chunk-27-1.png b/vignettes/MetaculRRMD_unnamed-chunk-27-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a290cb73bc81c42b1699a1cebc111cd9a3b6ed64 GIT binary patch literal 6449 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 UygpMMoc{Nrp{lD=sq`fDZ=XPm4gdfE literal 0 HcmV?d00001 diff --git a/vignettes/MetaculRRMD_unnamed-chunk-28-1.png b/vignettes/MetaculRRMD_unnamed-chunk-28-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a8464a7ce628eaf8728370754294fa0696166fac GIT binary patch literal 4920 zcmeHLc{tST+gF`V#uAxAq9Gv%ImeRS*doGIiesB0Wl14}8S4~dOGwC0loAzX3u9y~ z$(p?^GiNNLC^PnnG2ZV?ozpp2o%j0v@xJe0?;mqr_wso@_cQl>KleP(#GbM=;pGzH z;^5%mH9cW;hJ#}po%P||0a%h&`7Ag%w!==DpFO@~#|}%>27y4t#lbL7YoSy@?md3gl|1tldVWo2bm zRn=q1j;X7wYiMX_YHDg}X=!U~>*(m{>gqzFP(3|8eSLic0|P@tLn9+2V`F0z6BAQY zQ*(233kwTNOG_9GcIwor)2C0LIdjI!%IfUdv**s8v$nRjv9YnWwY9Uev$wZ*aBzUb z;Rpo6$;rvt+1bU#<-&yvuCA``?(QBQ9+xg%x_tSvmzS5fx3`avkFT#U5{dNl^Yi!j z4+scAp-^ZvIxsLWC@3g6I5;FEBs4TMEG!Iz!Cbp`Ej&CtA|e8d#YRR(Mny$MM@PrR z#KgwN-neliE-voo&71M@@d*hDiHV7~Zrw^sO1gdfc5-rZN=iyua&mHWbMx}@?%utdpPye)P;meL{ldb+2M-=ReE6`asOZt7N5#d( zB_$<~A3uKbgPfJTn%gV~0KYw0cUS3gAQCV48RaI48U0qXCQ(IeGS67F_;p*$_ z@pybgL&M9LFB=;ho0^)Mo10&~diDDC>-P5cj*gDb&d#2mo;Ppa^!E1l_4W1l_YVyX z4G#~$ef##^yLTfaBV%J@FH?-g)%cUGdnvwH#hh3 zlp-m6g@i)wQ)XI-UOc^XK*T^^J`U27|G=xyfWQ zx3;$0!5DR*!$3YKY>^xs+ybo6w!ZN&1_uX!qN$PoS#L;JUY`o|2ZH)zzwCSeD`+8B5_;WE`nSn%}fG!rg(P) z#;|St+S{{Y%oYs^)QL2F7oF77cL%FRzxi_H`&U^?^mi0Et>X0J$Y?6 z-GJ`*u|0TKhy)Irb>P6AhU_&2oq+%7ZYi=m={st{}ELH+IOZO5smLd*) zaYnO~!m@qM4_mz07YVT&tiV?+5^sG#oU&QdznVi!`}G51%}Z4ww3P>9tK`1hKh66v zL(06C<`~^If6%4d%U;_(Xhf5%gaUJf=7%?&Gz9&9#8 z_xcS~XC#Qb65?EI0$n~$>UUy=EKt>fq0aoutS$BOj6JJ(Bnzy5uAwP>!W_Mj4LUD{ zLkH}9CIDAq7fO^xQy~~;7oHAM%p8w&W6T45e=9?rw8KF{TolckQ?XZc8{wpi$u*il z*Pa+K^K&#syGH7*j~cdGKqe&FLs>3@7iEZ+yGo!s;6J>ta%vjqCvuf8u+jL|Iiga% zc>>M)kj|thZeF3IV~W!|(y-nL`IGtpi-(H+{{}533cp&i;B(y$d~ynMz(lsGoKjXs6uW@ z3Pq3l_hN-is>sPt0%D;bl0A;NUG-LfHh%c!01F{yC(S_3)Qfi z{z0~WrZTMTIddbG+tuctB*Umt5MNG{C)qp5Viil*9^0yvh=`G8xQ2%5Vh<{pYvG(2 z=N!XOVE2#RR{lI0eL;H&CO|QNP>XMg_^UiWFzL0^l!tj8DlE{jR^3~Tru*@a8tSih z6%P^QWh=uW~g{XvJ#_v z-M^zMaYPy?;{s{><30~`weAEb)wD0I_9w}U^k<~w258uA{D743y(Yf8pGTS!H;)Ps zf^RPu9&IebV&=%?jI@Rc;dDk?T`xk#gueGJ{+Xh1Dvk6$5D6!JO1S=-Y=Y?(C0jXd zwBnu45=c%5gFcL%OSqmrwo`Q`z_;3|F(sK7f#jK*I$ESrom`ig8}>@&;5U6$2_nrq zh3PO>F}W+i%#{;5%4Fztb;%_EET9YYTq+GQuSRJq)%;Vn!JO}WIQ*9iZP;w-_Ez-e zsfdOIlR$aKcT!74ej!KKhWV|Hz(jX|AVb+U=p{md@`mFVg&wuP|7Wi&emsXmen-N| z4|8(8e)il-Rv?$BT%0bBGNXH1TBt!Bslq4dWfU9%>fi4V8-HJmPop_^)#QxT57L?u z4s0qbIxJ7bTb$gKxfIme6N<^cj^*?0mSfc0bf!Zwco(*ZtDzM8MFK&4#?**?hZ zwpa`^Ujyc~|DC0XbrXD#E`7`v>#cOfb-FE}uS{h12CZ?X`w*jhIxE5Jz~3<>zs00f z(OKnNE!kRew2r#OtU<|9)22&rZ=ePCO|sT}Bv6ali!TEmI0Hpl zQoa{H!Y4~2zB@w(HuPduphcx|hLbzVPk^8qwB7MStRK!FwCjHc%vWV}`tLZp4cNCb zA8CL@d?9Vi+GS@GYG0V;VQy9`0_h3s$NH1x#c}*d3OOxHZAdrwt5R3jHOHO26NuHV z%}}T29cDvb1#TT?6GFQ;WPpwX7!D=yy<)AuMf)mHfMaMSlAEkm$QHsxzn>!&Q4lxk z_vU|Tvi}GEc>12?gjN)LgkC%imkDtPjzYb?#YsfqpBn2 z$1Scamp818H-84@CCNwBSVdChwL8}C2u-hmqcf?GovZbVPYmyKF93dZgwLgab`FBSOGvBvn)g(}vzluj=UTwsm91L%T2(ck8iJ_IVz zbbg73xlaXKdk3?=B3NhX<-J7a0(%tx5o?BQeqrJ|2#p5?C7O}J2Nr_Ay#4;H6lRax z!H!_Q^ZN8S_0KIyE3l=}c+U5`8!pcd#J5(!wVw1Ycdt_hsCji8s=@Yf)q`$s|SgFc?(GGFc~K zW`u-rg=R3!@8bJ^_kZ(y@q00!Irr?(dG0yqInRA`)!dMa{Wv=W0^u??x_k`+fl~K= zY>Xi0$v+-52!w%h)%3bP_y~nU85kHC85xgS-&cVUK#l^+V z&CSEZbNKM#BS(%LJ$jUvmzR%^kDs6a*s)_U7)(GwKu}Qd`0?XHLPEmA!XhFfqN1W= zVqzywoH%*%gpOA8k(A#T3TA#+S)ogIu|cq zymaZ3uCA`0p5Eolm-Y4a4Gatn4GoQqjEs$quUxreVq#)yYHDU?W^Qh7VPSFg>Qzfi z%WK!JSy@?Kzkc1?+WN+g8#XpJH*emwwY9x<>z19JoxQz10)cRFaBy^VynXxjojZ5# z-o5MOgwv|=H~A1?&0Ba@7_I6PtW`J?|XT9d3$^N`1ttx`uh3#`TP4n zc<>+~ARsU>FeoSpg+c`f2Zw}&gocKq(de+Su<-Ekh=_>D$jGRusOaeEn3$N@*x0zZ zxcK<^goK2L4<9~y^e8bgF)1l2IXO8cB_%aAH7zae@#Du&o;*oUPtVB6c>46|vuDpT zGc&WYvYtPGo}HbYlarI1o12%Hm!F?sP*6}VGUrElN9Eh{T~_wL>M_wUQg%PT4>K79C4Sy@?CRaISGT~kw2TU%RKS65$O z|MBC;hK7d5#>S?mCM*`)+}zyK($d=6io@aB+S=ON+dDcsK7IQ1`Sa&5U%qs9c6N1j zb$54v{ra`1r>D2Kx390SzrP=k$AA0wZD3$vaBy&FXlQtNcw}T`baa$JAbkJ+eQa#( z$B!T5`YisN4>l+&z|Ni}>P$*O?b#rrbYinzJdz(h1 z?dZODviq>Um@_Bff}jE5F~w}*#uEMJs5XJ8vH(6tPyaQ}Z)E+CNwrO${h zf;tTRU!$`yE`rq;93S3tWAsQ27GKP+&`At zC{B#X9$#MIFMrZ#bO`XXHb4|J?K!KdgrFPUxG{W69A`3Y)7L^DTkrkL_~Y(&>oHnc zel46VvG{T&SX0K6W>OoYC5k804f!NW?EJxOdWZNn0$|etdhrs zY8zK1c4aiZ=9$yH#U~byNMnwKHGYl|-k@G#1Z;_F&gS;ipECqNKrYbM8J_J03AdK8 z)zA?|hcASp{G?EFZY|W2Gc7?IOFZl2iEbO-Z=Nh7!g@ZgQ4ZspUS22&+Sssh*v^kQ z1l+|mZ(Y*C{&RlJ<>=G4WXNa|3DZ~_;bB=`V6k~Mr3*HorKTi)TGC*9sIc0#`S9oW~ho|{J1VIZ1`4He{a|FF{o^2?V&1b(3qH%ZI?D!5*R^-s0cL= z+x3lKQ{(>CnN)2>XY-+OAtsc@1*qfWYsL*kO|-R4_n28%lBdx>mEE4mdhuz1C(kth zyF8C$P25wP!x!pv-Z{**a)Ki45$hj!o8A7--aG z$}%MsFSdPhN8#5LM;K{!F^p$J_AhL+WjeRj?%@hb=mJZt+|DnD3H(FL+MJn9(PTUwJMt0Di@cE!)G) zlZ;qlOR}AJv%5|xBWO+$^t+?w)q6os zz>kl)l|nmYSnA0FGU>NR_%84vd$}NThDQK?8IGU#K{X59^lO8OC?U|h#x|WJY5|wP zGRDVZk=^)$38Y3NMRb0*s_&VOBMW(dT#qc+lg|f~bcD1|&D4?>YlDUZNuF)spo(7pc!qppsdWcFA5YmM}qnQRcWF@D!gTT|g>@yPp zGL%dOaTn(;G63b>XK8a`7_0sOOFJ*X6|!<&a*BXCJ5v>k(|D#vwKkUB{38mOyRd8P zoDXOd2a$)U{iPhDP-1CvM?wi4#e~9K;3S==E$Gn#c|e%mQ33Tpp>vXvSjyR+V1WSG zKxxihy`8znZ!mKH*TZPg+kJ5y?6?{st_3v7LayFM_l8j-gU(C>16D9i2CUV595S__ zk$i-le?)Bq%;?pG94nrjucEv#?4VXD7lNZv0oMPSl73K?a;f$(F!5ueUV&9|A@%Cm`uz z^rf0b5jOB44td-I5HUE*3BoZIO%pk#99B?bjx@Lc^BUKM_Un=LCGJ#w_}!7=xKaqx z%o0Gp)|~B%`oMry(r>T0awg!{#hakODe_uq%i_0vd_W9E+fRLZWxAgk<;k9a+*xX9 z%GWq*0IE7qjbE(rbzL~+8aam;5FZoNzXOoel>?3_;MU-w`0MH8%&nUbI!oYpSy04g zP5*)9EM0)U{A~XBz<(qGXR}Vd(MTRV>*jQDvZFa=6uZ=EJ)m_hE3ijs|ze_Bi^9sGkK$rMjYf5r4wJ(46$h8oA zkGm_19w5s>;U)bR%SgPYt1TUJ7&!9GjgxK(ml0iF_x;ojIMME<&xIyOxTyuh&s#+| zZFPa|XS-8uT98&ZWO!7e1HZ85pV(a&{VGi>M~M20mn?p7r>~(&qkNsJey41x^QbIM z7+;SY{){QOn5G(bzLG(c(9-NZVnwZo07+Nqw4-WdT)xe+wN?JH2})Hz6iVk<=4%#!mOA2YOE zI1HL#?GHE-kk1E**r|Ba+@(QGMt#WD{(zIrv|)FOa7c`Q&dapkG=M`ir2Z~$v%#D? zlzMbMTvR5>yFA-x#G1kFWez%4tb`3*aT_ zvcKjeA|uoV!bFs&nzN-Mj)rm_B8N50huuoDQw3yL=xD#}e(-4Q{bgz`^v1kBFTmi& zSFqo=7~BpQXzevH1~<-KV59Xsz%3pLQ`G}1_o|u$IT_cPx0ilV3K06Giq4ctWiqq5 z4o%ir?l{&9$C2kvMeTPlAN8qe3&d3hEN(sqNk`nOT^(lu;b&}rspW{Y{za{QfTG+?u z0I^iZY(_*9BIi>{whQ+s7F_lg0vKS7yJTyF19!gzBnQ>euD$xeAnOk;(+#)(=>!5Nz13-$(E;bYI#ppmTBJ(^y2traU z$+x8Yz#TR!eO*~&KXe2UZLqoS`REOp@IK#P14n{|`(6)VF6Yp0J0KoL_f+ui_kyU! zSRK@eT+4LWI4E?2M&v*uXTw2Qm8+m*-x+(zZj6K4jfp@6b}c6egV2=*nCNdM;S(4$sFNmLHo+K=gPl=+>Q1KpJV4_0KyUR%n=_@Thr|4t1Vzzt*v$ zy0(0$gqU+V$~m6&Ewr(lQfztR(G=;=YVw$h__Y(kQ?+0_S4cmmt)m2_`bWB*mcdfe zc53#Kye)gjxa4BcV;A>5$T^l2dWirY=>(10NM3uGnHc&BrSky;4|c?DZ6nd1$E$E8IGS&u_0(1!|MCjTu{C z2DuIgq<}OInmT=0-`NEO521bkdLAL1?RoxelL0gf1rM)ma(Id(H~0V{?OtsC?T>i6 z-7?+N9UsM$6U<}GoDOMm5ni*0WoU|8@N}#keSdj5K?gNk`_3Psxw1+qYa5;RH7-ve zg@PlLZDEr*WF>gKf7;i?JAwXlSYWPE0Mk}cyNa^U=$Rr}^rfthMMrM0Zq$jSCi$tL z^ZXGtJMDAfrZ3G{r_1fRz%f8DG%l4Nld{uZ;N)uukEblC5tzfHIv%o+3UX^dQC^0R zI>Lf?vOdQma~0ifXtfahLzaUcR)tN}6jgnh^%zJIhYzfQN#u4pM(&61S6MV^^?kwx zw8cYDWjE4&isfgdV+eJaSp%m~)F$^`{|rq|-aGrrm~NMq3PNFU`BmaLfpK|sFAeuJ ztcP`0NEMHoWHN`(OArxSUJKEpWI;=@X`2j9k`ryH@JV|REh{d@k>K=%Xbr_b+x>k!~|*sL!on>kxdG8BmFV{{}TBfiq|JMJ7#g3a%3@ z4lF1G?r9M1>wA((t?jT9V6oQliKa{c^Yvo<$%R^s#P_BJwZ$meC=;i6GiD{Uj;Ci z&R|RTojff~qZQ(b$Yf+zuzLLv%$WIpZjd5(ByQ~I|Jl(T_>R^c5$OlEm;BFgCLU}(lvC(*QpZz5s zVj_h*79GUKkGdrOK-9SBJ#2~4@HPsJmLGT=ELyp^P$3X_lavz=F4K}sDbP8&df+gd zX5j(Ag4X}aAmW(~Mm;t%LdGL5wc|YK$|DG!Y5y4P=6rlNlCH&x!ujtPN`sQAq#dcs zIS5HT{98nTaLgEJ%!3*)1fNyecThOKVsp$r^}sJ%@C3{nd=Nv!so=dfqA4ylMUa#m zt)zScVb&>*jGll$nr*+lK7@;v_o`91~+EG^7{ScF;m2e z9W_Qro#FISj$$1{a;u#$P|h+22kK!@Xl z9*7B7!E?bzjk%v#UB8sMn|+MA8rHH==l|0jkvy{=;>o9AHwDgfTel~gp~TETu>=)x zFtV#U(xSd}QVSe{>Ls?xI>T!FNUq%x-olZf%OJ9eykP+jMw$1cRnG6zn2F!O>gm%6u0evG&P1#*hg#C=hNv zsPmv;;|w3D{S=A)*`(G`N|WrCG4oXniUh_*8BMo2sXMm(%;;O!Ns!A^Rd z6}5MBwZMj=4}Ts^@E84zXnx}xe52I^{i%A(Cc}iS`)~hAe~6sBFgeSm_bd9P5ce zX3z${H{TzIkQh-?G*^okokhxspuClZ@Y+Uh{ZMlVD)a(W4E3jfEv$1cmTcn=w5I%6 zU&n2<5(1=u_%qCI;U&48*pHeRp^rzDCt*FurE|TP zR{UEltq&-wAVpy;h_x?7!mNijLwO*|zPzw>cC~3sBB~TTl<0^CZT!mw5Mf}_GirjQ z-WlZb@txKN&-FIactlg6*-zld5(BZov^{Hcs>dj0?q@&g>uQu7Bi2k}eWpC{p_F34 z6IIQEi80$#7R#a{D4{G$8c!<%H-4SLVtLslKm4)O9#xR5MN7rgn83Q=gx+qyBqf}+ zwrqrd&J#lbf|I4T#jYG*zaC24xEeh`F1upfzx<8$46S*W^y%Mj0X+@i|Dl8?^RVpZ zsf=|=c3oH8AG}VjN3pa{4vpYz%cwZ~sCV^`F6Ay$MJjWXk-qKkj=fHG!7s)74xlsm zMV8`Syh6U3{iH(>Gx^KJpze}uQ5$TlWrUERJ$%1Eb;~tehjW*+AYtu8V6GT|HM^X& zCD58Pv&0?tVsfNDPvm)}0-$1(ALf%xm&6ZH<}{yP9Cq8-RQv2~cZnRM^EIRC94u6` zG%hHDv=+1N5s{)qTGP@hNUHa1Hon~R=jr>PPPZ0hPh;A2Ys2HVTPjO4VHpq8=U4B| z{BN$`=c62hiSM7J2=WFzb4jT~+9-$HI(gBmyc;BFgBK`wWjTo#8 zo7C#AL+}^tc#XG6P6&n1i|+sf=kh$gHF#@FRL1KnXi{F|)_NfcUfW-TCAZWwfM<(G zHTW27`;^z=Glw=@c06{{v7VPD(~=6<48}W{dz!W7M$9Vx{n^;p^M2fd zP|grqNiAb<+6gAzqPYauPZCT8ZW>H=I2sFusJ&NWMuvN81=m*H^^S@QU6`=GEq5%! z8d2Z6By)E)E5LcAxi2=#g-@IItftMSjD3<8ZSKO z869qrrTeF+m_LPX$u?R^qwq@E0? zj`+Fvv5&FgZZ41CIwG?FEvEW*k}44I@=zwrK|uv!pY6=WisDK+=!3KGL$?$w#IAu? zT4Qg;{`~%UFMmbDq3LFJRmR!8i)V_67cGm1;|ev?9>=HJ?j&$&EEc?d8LNq%Ui?Vd2%&Mj@nruEDt=3=k*thJALDQWTC zSEXEC;}?ns7#{`>@D$3IIZ@Iib~9~Y;1JzA#BnJ2)Y7o+J9C79Gu?D}LL5%gyFPH1yj{YA5LTpI@ literal 0 HcmV?d00001 diff --git a/vignettes/MetaculRRMD_unnamed-chunk-31-1.png b/vignettes/MetaculRRMD_unnamed-chunk-31-1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4b42633edc558f497115273aabda0b087ce682 GIT binary patch literal 19358 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 QX&S<5#d8W-au@IZFZezQ%>V!Z literal 0 HcmV?d00001 diff --git a/vignettes/MetaculRRMD_unnamed-chunk-35-1.png b/vignettes/MetaculRRMD_unnamed-chunk-35-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ef0ea8c5246731628fc1ee670654c75e6a7194ff GIT binary patch literal 13945 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νW$G8Q}KWUPqE}qWzH@@8H@g5T$3zHN9X2nZBxOwUg+ll>k zLEs2^HzsUbf+^z@bn`f^gS1#>sFlsYceruI^@l|(V>%vt_){r08v(y;8!w&D4+fl( z{GB*t%NM5)u2U0mt}F^ZXOw@E6lSoyRVBb*-+GS{4vQ9>^OvW5P8LCqQ2jB`-u ziK9J!{o)wxrH0A=xSA5~{LM!&?mvxxJ@CP1l#hq$snYrTm$0o9%{k$%LkF3sE2gI2 ze#zRP*5lb)JPs#dTq9?{l?pR7FgjTf8+K6O(3Ca8W(4l-GKfyerDyLf`r^cMyYt+S zdKH||VV3peQ*BcmD^iv8bu`6YA0%*q@kgO>a4H&EwxVJ09@74c)P|+AY0D~IWb`vm z<1^cBjo5`bf*KI1zTOt$S@tseb@*rHU#{w&{R?3t_vo`W(L7)8vB9YVy)7`2sUg{$ zr*?lf*vyA04G>*Uyirk)g7r3OlmoqLbO!jlEJ7(^=zZQlJO5emWzLt-l35u&y|w;} zqg92G+I-C-C4}(<%v6bsA8U-AdwYQ3KSgFP{tn{8EcHWVFI+v@0R{y@Z{VXN_kV z5M)69ve{G}K$cc7Y@}dC7D>A*y~b2~YiZVvy7Y{vIobdXYyW;ttMGzj66m_YNoD}7 zZWWs#NAgkZqqILlY%fyHrlE4X=KudhbvYw>?!Nkrl4IM=_Z%FVZdWGBn_pJX;+g5X4^MjL^N zB4Ch|%{ugDmp9jRE-R(0Au`{ELa6&nF6JUZ+0PX6|v*Td97Y5boz87WoAW$@BXpzs`J2M;6{LE`x3|}6oW0> z2K5p+hc}sdkDTNSAPpKOQ{Q*mN7)Lmumzs>GEuv&U%%R~ZQwAt$^O_lv0k2T0K*Bc zgSdSbum{;_%~-40REiKD<#QlC%|xa+?OTl`l2Kye*(Q#Xd~k0jY|2GK#r|x6T0NP|wJk1EmLp!l z*knltI`~r;9{A^VL_q?dm>j%^4Juih1|hxHc?PFynZZUn!!2Z;dJbb)K=?>!O-hAp z8*=Y~s($11JwSIG9~gbZ5&nyS+*|z#GAAIbOLPdhP64yo0$=H4d$0R-&h=mSM?u7h z;%6JaIKsTMw-IQA&oPi^Eo;MP^Q8F?wLH1GP}+hs7s; z&ItwBNE%sn_^)q}kn7MYX=HdAdEm{{#lU!^*8}A6M?7hYLLqWiVdC0B9)LTBP_8)W zor)ryT00(;w^kk`*-v)U@ioX7sqh#FX@P!}^qQ?+*e+fOa&g#`KwCe{A${$vkMwqs18j2rwH~SggPBhtQ!oY@v4DN0Z8D^xQ)=J^gcYdwBE_~zb;5}ewrd(ix#M8cI@z1 z3q-3Kc^;coqE5PHu772YSkkN6p+|d|3tWfx2imr*W`jQN@phjuy4!=oo%9#={TWr< z*HW$yT7^Q$;3Rn{?x~W@?~NhGB`$JpGvL#0fpT);a8u%zi|^lzvtQS?IjrcR*NkD~ z=<0A_zAWEokzcRBu&xm0q5l0wOK=yPc8=HlBtin-)LkQ|D>s3s+&iEp@|09o8aEBw zUM+XJyRH{w#MhZkfdoT>p%e(KsDICg2@{t+6F<7pC&coG*I0$?40V~!BrHls-h(^b zw@o0S=IlG$Ko_5tS|>(jA=yG=pt?6cr6=}js|c}1_lQDTDF5&K%9Z}|q4-u2zn+(0 ztXL}=mB#LJ%kOX|Xm9jn{`rl~H#q(?u0D?Gjz$sAM0hGD|GGf9ARxs;&qA0j+*q&t z;@eThhyH5x#Ft6@Sh-;0-FdGs>>_s@{;N2xzJVHuh?iF)?4G%jq+5&}ffo=cGn(T@6pMIc|g&l9YXy*DCI΀_a()4{>vt1CznDr*eb1~rr;;p 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