Skip to content

Instantly share code, notes, and snippets.

View adamkucharski's full-sized avatar

Adam Kucharski adamkucharski

View GitHub Profile
@adamkucharski
adamkucharski / data.csv
Created February 16, 2026 12:53
Synthetic data for Substack post 'The era of the statisticAIn?'
age sex location occupation education daily_step_count weekly_screen_time_hours monthly_leisure_activities_count weekly_internet_usage_hours monthly_public_transport_trips digital_engagement_score
39 Male Urban Office College 13971 5 1 26 10 73
75 Female Coastal Office No formal 6574 32 4 17 5 100
47 Female Suburban Manual Secondary 2520 39 1 32 3 65
82 Male Suburban Office No formal 11092 24 4 16 16 58
86 Female Suburban Manual Secondary 3742 10 7 7 1 85
21 Male Rural Unemployed Secondary 7493 13 13 17 7 77
56 Male Urban Office Secondary 8407 12 10 19 7 45
82 Male Urban Service Postgraduate 7629 10 9 21 32 50
58 Female Urban Unemployed Undergraduate 8989 33 20 59 12 40
@adamkucharski
adamkucharski / odin_waning.R
Created July 31, 2025 07:33
odin model with waning immunity
# GPT prompt: Edit this odin code to add waning immunity from R to S.
# Explain your edits in the code comments, and make sure parameters and variables are consistent.
# Load packages
library(epidemics)
library(socialmixr)
library(odin)
library(data.table)
library(ggplot2)
@adamkucharski
adamkucharski / diamond_princess.csv
Created April 8, 2025 09:16
Diamond princess data
date cases deaths
2020-02-05 10 0
2020-02-06 10 0
2020-02-07 41 0
2020-02-08 3 0
2020-02-09 6 0
2020-02-10 65 0
2020-02-11 0 0
2020-02-12 39 0
2020-02-13 44 0
@adamkucharski
adamkucharski / cfr_estimate.R
Created April 8, 2025 09:15
CFR estimation with diamond_princess data
# Correcting for real-time CFR bias -------------------------------------------------
# This script builds on the theory outlined in this vignette:
# https://epiverse-trace.github.io/cfr/articles/estimate_from_individual_data.html
# Load packages
library(cfr)
library(dplyr)
library(ggplot2)
library(gridExtra)
@adamkucharski
adamkucharski / cfr_calc
Last active March 18, 2025 17:27
CFR plot based on aggregate data
# Define delay params
param_1 <- log(5)
param_2 <- 1
# Onsets at time 0
initial_onsets <- 100
# CFR
cfr <- 0.5
@adamkucharski
adamkucharski / exposure_probability.R
Created February 19, 2025 09:48
Exposure in finalsize population
# Define R0
r_number <- 1.4
# Final size model
attack_rate <- finalsize::final_size(r_number)$n_infected
print(attack_rate)
# Calculate total exposures over the whole epidemic
# (note: later in epidemic, now-immune people will be re-exposed)
# Define parameters
xx <- 1e3 # Number of values to simulate from positive and negative distribution
xx_pos <- xx; xx_neg <- xx
set.seed(1)
# Set up plot
par(mfcol=c(2,2),mgp=c(2,0.7,0),mar = c(3,3,1,3))
for(kk in 1:2){
@adamkucharski
adamkucharski / serology_roc.R
Created February 29, 2024 09:10
Ratio vs subtraction method for seropositivity
# Define parameters
bkg_val <- 15 # background value
xx <- 1e3 # Number of values to simulate from positive and negative distribution
xx_pos <- xx; xx_neg <- xx
set.seed(1)
# Set up plot
par(mfcol=c(2,2),mgp=c(2,0.7,0),mar = c(3,3,1,3))
@adamkucharski
adamkucharski / vaccination_antigenic_mismatch.R
Created February 8, 2024 13:32
VE calculation when vaccine is antigenically different to circulating infection
# Analysis of VE during epidemic when vaccine protection < infection protection -------------------------------------------------------------
# Adam Kucharski (2024)
# Define assumptions about exposure over time in epidemic -----------------
xx <- seq(0,6,1/30) # time points for model
peak_time <- 3 # peak in months post-vaccine campaign
peak_width <- 0.8 # variance in epidemic width (i.e. sd of distribution)
exposure_prop <- 0.6 # proportion of population exposure during wave
Banishment Traitors Correct Total
Nicky 3 0 19
Imran 3 0 17
Ivan 3 0 16
Tom 3 0 14
Alyssa 2 1 14
Rayan 2 0 13
Theo 2 0 10
Amanda 2 1 8
Maddy 3 0 6