Skip to content

Instantly share code, notes, and snippets.

View elliottmorris's full-sized avatar

G. Elliott Morris elliottmorris

View GitHub Profile
@elliottmorris
elliottmorris / war_and_ideo.csv
Created August 12, 2025 14:25
2024 Strength In Numbers WAR estimates with Bonica's CFscore
party cycle state_name district representative WAR ideo
dem 2024 Alabama 2 Shomari Figures -0.0142956 -2.40172899842457
dem 2024 Alabama 7 Terri A. Sewell -0.013435550000000001 -2.07122942055397
dem 2024 Arizona 3 Yassamin Ansari -0.0015478900000000001 -1.9319779182875
dem 2024 Arizona 4 Greg Stanton -0.008184455 -2.18490810244875
dem 2024 Arizona 7 Raúl Grijalva -0.018168 -3.33143206893384
dem 2024 California 2 Jared Huffman 0.00308888 -3.35023512544864
dem 2024 California 4 Mike Thompson 0.018705350000000003 -2.10464881402841
dem 2024 California 6 Ami Bera -0.013199550000000001 -2.40293561432867
dem 2024 California 7 Doris Matsui 0.0075622499999999995 -2.67086471545931
@elliottmorris
elliottmorris / main_2024_trump_musk.R
Created July 10, 2025 05:22
Figuring out who would vote for Musk using ANES data
library(tidyverse)
library(survey)
# mutate weight variable
dat = read_csv('anes_timeseries_2024_csv_20250430.csv') %>%
filter(V241012 == 1) %>%# RVs
mutate(weight = case_when(!is.na(V240103b) ~ V240103b,
!is.na(V240104b) ~ V240104b,
!is.na(V240104b) ~ V240104b,
!is.na(V240103a) ~ V240103a,
@elliottmorris
elliottmorris / cpi_adj_outlays.R
Created April 11, 2025 13:18
script to look at federal spending by year
library(tidyverse)
library(zoo)
dat = read_csv('~/Desktop/selected_outlays_2025-04-10.csv') %>%
select(date, spend = `Cumulative year-to-date`)
dat = tibble(
date = ymd(as_date(min(dat$date):max(dat$date)))
) %>%
@elliottmorris
elliottmorris / gist:94ac7a4dc7b96aa13294aa18794c5803
Created April 3, 2025 14:04
trump issue approval march 2025
library(tidyverse)
library(janitor)
dat = read_csv('~/Downloads/Trump issue approval march - Sheet1.csv')
dat = clean_names(dat)
dat %>% group_by(category) %>%
summarise_at(c('approve', 'disapprove', 'net'), mean) %>%
mutate_if(is.numeric,round_half_up,1) %>%
@elliottmorris
elliottmorris / ElectionResults.xlsx
Created April 2, 2025 02:38
Wisconsin Supreme Court Election live modeling, Apr 1 2025
download excel file from: https://elections.countyofdane.com/Precincts-Result/179/0005
@elliottmorris
elliottmorris / bayes update young voters.R
Created November 27, 2023 22:50
for twitter. showing how to combine a prior (past election results) and data (polls) for certain poll subgroups
library(tidyverse)
bayes_update_normal = function(
data_mu,
data_se,
prior_mu = 0,
prior_se = 3){
if(all(data_mu == 0)){
return(c(0,0))
@elliottmorris
elliottmorris / Untitled spreadsheet - Sheet1.csv
Created October 17, 2023 15:51
chart for Matt and Derek
country inflation (YoY Sept 2023) Leader approval Disapproval Net
Austria 7.37 23 73 -50
Belgium 2.39 38 46 -8
Brazil 5.19 51 45 6
Canada 4 33 59 -26
France 4.86 23 72 -49
Germany 4.53 25 68 -43
Ireland 6.41 39 52 -13
Italy 5.44 44 51 -7
Japan 3.2 23 63 -40
@elliottmorris
elliottmorris / ca_polls - Sheet1.csv
Last active September 18, 2021 03:03
California 2021 recall polling model
end_date pollster n population pid_weighted keep remove
2021-09-13 survey monkey 3985 LV 1 0.55 0.41
2021-09-13 trafalgar 1082 LV 0 0.53 0.45
2021-09-11 emerson 1000 LV 1 0.6 0.4
2021-09-10 data for progress 2464 LV 1 0.57 0.43
2021-09-08 surveyusa 930 LV 0 0.54 0.41
2021-09-07 suffolk 500 LV 0 0.58 0.41
2021-09-06 uc berkeley 6550 LV 0 0.6 0.39
2021-09-04 trafalgar 1079 LV 0 0.53 0.43
2021-09-01 yougov 1955 LV 1 0.56 0.44
@elliottmorris
elliottmorris / election_night_live_model.R
Last active January 29, 2024 18:56
A live election-night prediction model using The Economist's pre-election forecast
#' Description
#' This file runs a live election-night forecast based on The Economist's pre-election forecasting model
#' available at projects.economist.com/us-2020-forecast/president.
#' It is resampling model based on https://pkremp.github.io/update_prob.html.
#' This script does not input any real election results! You will have to enter your picks/constraints manually (scroll to the bottom of the script).
#'
#' Licence
#' This software is published by *[The Economist](https://www.economist.com)* under the [MIT licence](https://opensource.org/licenses/MIT). The data generated by *The Economist* are available under the [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0/).
#' The licences include only the data and the software authored by *The Economist*, and do not cover any *Economist* content or third-party data or content made available using the software. More information about licensing, syndication and the copyright of *Economist* content can be fou
@elliottmorris
elliottmorris / poll_change_trend.gg
Last active October 29, 2020 02:36
Charts the poll-level trend in 2020 polls
library(tidyverse)
library(lubridate)
library(pbapply)
url<- 'https://docs.google.com/spreadsheets/d/e/2PACX-1vQ56fySJKLL18Lipu1_i3ID9JE06voJEz2EXm6JW4Vh11zmndyTwejMavuNntzIWLY0RyhA1UsVEen0/pub?gid=0&single=true&output=csv'
all_polls <- read_csv(url)
# remove any polls if biden or trump blank
all_polls <- all_polls %>% filter(!is.na(biden),!is.na(trump))#, include == "TRUE")