Skip to content

Instantly share code, notes, and snippets.

David Robinson dgrtwo

View GitHub Profile
@dgrtwo
dgrtwo / cubic-model-animation.R
Created May 8, 2020
Showing how a 3rd-degree polynomial model would predict future deaths if a plateau continues
View cubic-model-animation.R
library(tidyverse)
library(broom)
library(scales)
theme_set(theme_light())
US <- read_csv("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us.csv") %>%
mutate(new_deaths = deaths - lag(deaths)) %>%
filter(date >= "2020-02-26")
today <- max(US$date)
@dgrtwo
dgrtwo / comparing-polynomial-models-covid.R
Created May 5, 2020
Comparing the CEA's "cubic model" to quadratic and quartic models
View comparing-polynomial-models-covid.R
library(tidyverse)
library(broom)
US <- read_csv("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us.csv") %>%
mutate(new_deaths = deaths - lag(deaths)) %>%
filter(date >= "2020-02-26")
models <- tibble(degrees = 2:4) %>%
mutate(model = map(degrees, ~ lm(log(new_deaths + 1) ~ poly(date, .), data = US)))
@dgrtwo
dgrtwo / simulate-dice
Last active Jan 5, 2020
Simulate scoring games of Dice 10,000
View simulate-dice
# 100,000 simulations
n <- 1e5
dice <- t(rmultinom(n, 5, rep(1, 6) / 6))
# First rules for 1s and 5s
ones_score <- c(0, 100, 200, 1000, 5000, 10000)[dice[, 1] + 1L]
fives_score <- c(0, 50, 100, 0, 0, 0)[dice[, 5] + 1L]
# 100 x n score
most_common <- apply(dice, 1, which.max)
View underpowered-simulation.R
# Code behind this tweet:
# https://twitter.com/drob/status/1126988304090574848
library(tidyverse)
library(broom)
t_tests <- crossing(pi0 = .75,
effect_size = .25,
trial = 1:10000,
@dgrtwo
dgrtwo / dice-rolls.R
Created Feb 25, 2019
Animation of die rolls
View dice-rolls.R
# Code behind this tweet: https://twitter.com/drob/status/1100182329350336513
library(tidyverse)
library(gganimate)
# Setup
options(gganimate.nframes = 200)
set.seed(2019)
simulation <- tibble(roll = 1:10000) %>%
mutate(result = sample(6, n(), replace = TRUE)) %>%
View by_tag_year.csv
We can't make this file beautiful and searchable because it's too large.
year,tag,number,year_total
2008,.htaccess,54,58390
2008,.net,5910,58390
2008,.net-2.0,289,58390
2008,.net-3.5,319,58390
2008,.net-4.0,6,58390
2008,.net-assembly,3,58390
2008,.net-core,1,58390
2008,2d,42,58390
View cross validation
library(modelr)
library(tidyverse)
library(broom)
mtcars %>%
crossv_kfold(k = 10) %>%
mutate(model = map(train, ~ lm(mpg ~ wt, .)),
result = map2(model, test, ~ augment(.x, newdata = .y))) %>%
unnest(result)
@dgrtwo
dgrtwo / gist:39af4512dff5b7357b534a04a971405d
Created Mar 14, 2018
Early attempt at creating materialized SQL views from dplyr
View gist:39af4512dff5b7357b534a04a971405d
separate_sql <- function(expression) {
s <- paste(deparse(expression), collapse = "\n")
s <- stringr::str_replace(s, "%>%", "%>%\n ")
s <- stringr::str_split(s, "\n")[[1]]
val <- eval(expression)
list(expression = expression,
dplyr_code = s,
sql = as.character(dbplyr:::remote_query(val)),
View file663a44ec31fa.R
library(purrr)
transition_mc <- function(steps, start, mat) {
i <- seq_len(nrow(mat))
transition <- ~ sample(i, 1, prob = (i == .) %*% mat)
accumulate(seq_len(steps), transition, .init = start)
}
View file663a4c3ed972.R
---
title: "R Notebook"
output: html_notebook
---
```{r}
library(purrr)
transition_mc <- function(steps, start, mat) {
i <- seq_len(nrow(mat))
You can’t perform that action at this time.