Sign in

Chris Kenny, PhD

@chriskenny.bsky.social
809 followers 353 following 257 posts

Postdoc, Princeton DDSS. PhD '25 Government @harvard.edu. Studies redistricting with #rstats. christophertkenny.com

PostsRepliesMedia
Reposted by Chris Kenny, PhD
Christine Zhang @christinezhang.bsky.social · 16/09/2026
sad to not be covering this momentous #fed day as I’m at @posit.co #positconf, but Very glad to see the Fed balance sheet visualized in Hamid Shafiezadeh’s excellent presentation at the #rstats R nerds session 🤓, “When English Is Second, R Comes First”
1142
Reposted by Chris Kenny, PhD
Gabor Csardi @gaborcsardi.org · 14/09/2026
New beta of #Rstats rig: LOTS of EXCITING stuff: - new: web site: rig.r-lib.org - new: user-mode R installation: rig.r-lib.org/admin-vs-use... - new: manage R packages (CRAN + git): rig.r-lib.org/pkg-guide.html - new: manage R projects and virtual environments: rig.r-lib.org/proj-guide.h...
rig.r-lib.org
rig – the R Installation Manager – rig
34919
Chris Kenny, PhD @chriskenny.bsky.social · 14/09/2026
Headed to posit::conf(2026)! Feel free to send me a message if you want to chat #rstats and polisci/social science!
040
Reposted by Chris Kenny, PhD
CAC @myconstitution.bsky.social · 02/09/2026
CAC, along with Stafford Rosenbaum, is proud to represent Kosuke Imai, @chriskenny.bsky.social, @philjones.bsky.social, and John Griffin.
021
Reposted by Chris Kenny, PhD
CAC @myconstitution.bsky.social · 02/09/2026
Anti-competitive gerrymandering strikes at the heart of our democracy. Read our brief in the Wisconsin Supreme Court: www.theusconstitution.org/litigation/w...
theusconstitution.org
Wisconsin Business Leaders for Democracy v. Wisconsin State Legislature | Constitutional Accountability Center
112
Reposted by Chris Kenny, PhD
Cory McCartan @corymccartan.com · 07/08/2026
Out yesterday at Nature Human Behaviour is my paper with @chriskenny.bsky.social on a unified way to measure individual & group harms in redistricting! Due to extortionate APC fees (~$13k) we did not publish open access, but you can read for free at rdcu.be/fyd95 !
rdcu.be
Individual and differential harm in redistricting
Nature Human Behaviour - McCartan and Kenny develop a framework for quantifying the individual-level impacts of redistricting in the USA, showing its applicability for identifying partisan...
1101
Reposted by Chris Kenny, PhD
Cambridge University Press Political Science & IR @cambup-polsci.cambridge.org · 30/07/2026
#OpenAccess from @apsrjournal.bsky.social - Redistricting Reforms Reduce Gerrymandering by Constraining Partisan Actors - cup.org/4pNwXA7 - @corymccartan.com, @chriskenny.bsky.social, @simko.bsky.social, EMMA EBOWE, MICHAEL Y. ZHAO & KOSUKE IMAI #FirstView
Banner with the hashtag #OpenAccess on a green background and the text "American Political Science Review" on a blue background below.
054
Chris Kenny, PhD @chriskenny.bsky.social · 21/07/2026
Thrilled to share that I received POLMETH's Statistical Software Award for 2026 for the #rstats package geomander. It's a performant toolkit for working with spatial data, especially election and demographic data. Learn more about the package at christophertkenny.com/geomander/
christophertkenny.com
Geographic Tools for Studying Gerrymandering
A compilation of tools to complete common tasks for studying gerrymandering. This focuses on the geographic tool side of common problems, such as linking different levels of spatial units or estimatin...
813535
Chris Kenny, PhD @chriskenny.bsky.social · 31/05/2026
3 new projects: 1/3 an Algorithmic Redistricting Atlas. Explore congressional redistricting across enacted, simulated, and optimized maps. It has data for the last 5 presidential elections, and you can swing the national baseline.
184
Chris Kenny, PhD @chriskenny.bsky.social · 29/05/2026
Is air formatting broken for tribbles at the moment? It seems to be inserting spaces inconsistently, almost at-random
A screenshot from GitHub desktop showing a tribble pre and post running air.
110
Chris Kenny, PhD @chriskenny.bsky.social · 21/05/2026
If you do record linkage in #rstats, I'd love your feedback on irelink: Fast Probabilistic Record Linkage. It is a port of Python's splink package, rewritten with a clean, pipeable R interface. All of the magic happens in a database backend (default is DuckDB) so it's incredibly fast.
Find duplicate records within a single dataset. The bundled fake_20 dataset provides a small example for experimentation. irelink pushes data into a SQL database for efficient pair generation, so you need a DBI connection. Here we use an in-memory DuckDB instance.An il_spec describes the linkage model: which fields to compare, how to compare them, and which blocking rules to apply. Blocking rules restrict which record pairs are generated. Only pairs that share a surname or first name are scored, keeping computation manageable. il_estimate_u() estimates parameters for non-matching pairs via random sampling, and il_estimate_em() refines the match-weight parameters using Expectation-Maximization.
spec <- il_spec() |>
  il_compare(first_name, cl_jaro_winkler(0.9, 0.7)) |>
  il_compare(surname, cl_jaro_winkler(0.9, 0.7)) |>
  il_compare(dob, cl_exact()) |>
  il_block_on(surname) |>
  il_block_on(first_name)

model <- il_model(df, spec = spec, con = con)
model <- il_estimate_u(model)
model <- il_estimate_em(model, block_on(surname))
predict() scores all candidate pairs and returns those above the match-probability threshold. The returned match_weight is the evidence-only log2 Bayes factor; total_match_weight adds the prior odds used to compute match_probability. il_cluster() groups the matched pairs into deduplicated entities.
2174
Reposted by Chris Kenny, PhD
Cory McCartan @corymccartan.com · 19/05/2026
This is also not quite true. Empirically, states with independent commissions or nonpartisan drawers produce maps that are at or near the median simulation on partisan + racial demographics. Because of that, it's reasonable to treat the median as a forecast for a drawer following only certain rules
011
Reposted by Chris Kenny, PhD
Cory McCartan @corymccartan.com · 19/05/2026
This is not accurate! Just like polling, we can randomly sample maps in a representative way, and understand typical maps without looking at every one. We have mathematical proofs that these algorithms produce representative samples if run long enough.
161
Reposted by Chris Kenny, PhD
Cory McCartan @corymccartan.com · 19/05/2026
Unfortunately some inaccurate info in this thread. The point of the NYT sims was to see what typical maps drawn without the VRA would look like. But the maps Stephen draws incorporate VRA compliance. Also wrong info on the algorithms which I will say more about separately
221
Chris Kenny, PhD @chriskenny.bsky.social · 17/05/2026
One of the joys of open source: Seeing the NYT use your #rstats packages www.nytimes.com/2026/05/17/u...
nytimes.com
Why Neutral Maps Could Empower Black Voters as Much as the Voting Rights Act
0332
Reposted by Chris Kenny, PhD
Mickaël CANOUIL, Ph.D. @mickael.canouil.fr · 15/05/2026
Quarto Typst Render 0.13 ships 'typst_define()' for R and Python. Push polars DataFrames, lists, scalars from a knitr or jupyter session into every '{typst}' cell, accessible as '#typst_define.<name>'. github.com/mcanouil/quarto-typst-render #Quarto #Typst #rstats #python #dataviz
061
Chris Kenny, PhD @chriskenny.bsky.social · 14/05/2026
Introducing dais: a Rust-based PDF presenter tool. Present PDF slides (eg, Beamer) in a PowerPoint-like interface. Full drawing control, navigation tools, live text boxes, and more: christophertkenny.com/posts/2026-0...
christophertkenny.com
dais: A better way to present PDF slides – Christopher T. Kenny
Introducing a new Rust-powered PDF presenter CLI with features including slide groups, drawing, blackouts, a whiteboard, zooming, and live text boxes with math support.
191
Chris Kenny, PhD @chriskenny.bsky.social · 13/05/2026
Now with a short blog post on the Princeton DDSS engineering website: princeton-ddss.github.io/notes/cran-g... This increase is driven by solo devs with prior #rstats packages on CRAN!
princeton-ddss.github.io
090
Chris Kenny, PhD @chriskenny.bsky.social · 08/05/2026
Submission to CRAN #rstats through May 7th. Looks like the LLMs are gaining speed
051
Chris Kenny, PhD @chriskenny.bsky.social · 29/04/2026
Given the Callais decision, resharing our (w @corymccartan.com) "Individual and Differential Harm in Redistricting" piece which tries to tackle estimating group harm, including separating partisan and racial effects of maps... osf.io/preprints/so... (conditionally accepted at Nature Human Behavior)
osf.io
OSF
041
Chris Kenny, PhD @chriskenny.bsky.social · 21/04/2026
The Positron release from last week is *substantially* faster than the March version on startup. Highly recommend updating!
260
Chris Kenny, PhD @chriskenny.bsky.social · 11/04/2026
I agree, Claude. It is weird that case_match() was deprecated in dplyr 1.2.0.
060
Chris Kenny, PhD @chriskenny.bsky.social · 08/04/2026
A proof-of-concept: CI for Quarto extensions! Automatically install and run your templates weekly, so you know when #quartopub updates might break something. Renders results to a Quarto site, so you can preview outputs: christophertkenny.com/template-gal... Source: github.com/christopherk...
christophertkenny.com
Quarto Template Gallery
270
Reposted by Chris Kenny, PhD
Carlos Scheidegger @cscheid.net · 06/04/2026
And another Quarto announcement; I've alluded to it before, but we're making it "official". We've started work on Quarto 2. The blog post has an overview: quarto.org/docs/blog/po... We'll share more in future blog posts, but here's what you can expect from the Quarto 2 dev effort: (1/)
quarto.org
What’s next: Quarto 2 – Quarto
We’ve started working on quarto-dev/q2, a full rewrite of Quarto in Rust.
1019254
Chris Kenny, PhD @chriskenny.bsky.social · 04/04/2026
"It'll be a quick PR to fix a small feature gap" ... "might as well do it correctly" ...
2111
Chris Kenny, PhD @chriskenny.bsky.social · 27/03/2026
Updated Positron + Quarto + Quarto VSCode extension at the same time and the preview doesn't work anymore because it appends --output-directory, which is invalid in most cases... Codex followed the ctrl+shift+k -> found the issue -> fixed the extension's typescript so it works! Pretty impressive
030
Reposted by Chris Kenny, PhD
Etienne Bacher @etiennebacher.bsky.social · 24/03/2026
#rstats I'm glad to announce Jarl 0.5.0! Jarl is a very fast R linter, written in Rust. This release brings many improvements and fixes. See the blog post: www.etiennebacher.com/posts/2026-0... And the full changelog: jarl.etiennebacher.com/changelog 🧵 to highlight some features below (1/4)
etiennebacher.com
Jarl 0.5.0
15812
Chris Kenny, PhD @chriskenny.bsky.social · 23/03/2026
And very interesting to see the growth of the tidyverse, Rcpp, and ropensci in the last decade by maintainer/author Hard to think of #rstats without the tidyverse Note: Author parsing is a little difficult and there may be some undercounts! Lines end at last new package author/maintainer role.
Plot of packages maintained by package author and year. Names are highlighted for most active maintainers in 2008 and again in 2026.Plot of packages authored by package author and year. Names are highlighted for most active maintainers in 2008 and again in 2026.
051
Chris Kenny, PhD @chriskenny.bsky.social · 23/03/2026
CRAN is on track for an all time year in terms of #rstats package submissions:
Histogram of new package submissions, showing a steady increase from 1997 to 2017, with flattening out except for peaks in Covid's 2020-2021 and a big jump in 2026Histogram of all package submissions to CRAN, showing a steady increase from 1997 to 2024, with 2020 and 2021 having outlier big years, and 2025 showing a slowdown. 2026 is another big jump.
050
Reposted by Chris Kenny, PhD
James Balamuta @coatless.bsky.social · 23/03/2026
29 years of #rstats community knowledge was sitting in hard-to-search pipermail archives. So I built a more modern home for it. Introducing the R Mailing List Archives: 631,000+ messages from 32 lists, fully searchable and available as open data. r-mailing-lists.thecoatlessprofessor.com
Homepage of the R Mailing List Archives showing a search bar, three popular lists (R-help with 398,500 messages, R-devel with 63,425, and R-package-devel with 12,125), and a full directory of core lists and special interest groups.
1022255
Chris Kenny, PhD @chriskenny.bsky.social · 20/03/2026
Doing a lot of testing of AI agents with my team these days. Pulled together a new package, wf, which helps install and manage agent skills from within #rstats (A great time to be at Princeton DDSS; our team has an intro to Claude workshop today and an intro to Posit Assistant workshop next week!)
3123
Chris Kenny, PhD @chriskenny.bsky.social · 17/03/2026
Doing some testing with codex in #rstats. It seems quite a bit behind Claude Code... Does anyone know if there is a clean way to give codex access to `.libPaths()` (ie, C:/Users/chris/AppData/Local/R/win-library/4.5 AND C:/Program Files/R/R-4.5.2/library) without giving it full powershell access?
030
Reposted by Chris Kenny, PhD
Daniel Lakens @lakens.bsky.social · 13/03/2026
I have been wanting a solution like this for years. Now with Claude Code it is surprisingly easy to build it. Added WebR to run R code, Zotero plugin, a Diff viewer (can export all changes between submission and resubmission), basically ready to be used in our lab!
13911
Reposted by Chris Kenny, PhD
Andrew Heiss @andrew.heiss.phd · 09/03/2026
If you use #QuartoPub for any PDF documents for teaching and you need to meet impending PDF accessibility rules, upgrade to v1.9, add format: typst: pdf-standard: ua-1 to the YAML front matter, and it'll work!
Accessibility score for: evalsp26_01-exam_answers
100% Accessibility score: 100 percent
arrow_drop_up
Perfect!

This PDF has a perfect accessibility score, although further improvements may still be possible. Keep up the good work!
512131
Chris Kenny, PhD @chriskenny.bsky.social · 08/03/2026
Here's a quick guide to setting up an R LSP for Claude Code in #rstats: christophertkenny.com/posts/2026-0... Note that it uses the `languageserver` package at the moment, since I don't believe ark is exposed for a standalone mode yet.
christophertkenny.com
Using an R language server with Claude Code – Christopher T. Kenny
Giving Claude access to an R LSP to improve its interaction with your codebase.
1152
Reposted by Chris Kenny, PhD
Sharon Machlis @smachlis.bsky.social · 06/03/2026
News for #RStats folks who use RStudio and are interested in AI, via @posit.co: "AI in RStudio is here. We’ve embedded a specialized agent, Posit Assistant, directly into RStudio, transforming the IDE into a powerful, context-aware collaborator for data analysis." It's a $20/mo subscription.
posit.co
Introducing AI in RStudio
Today we’re introducing AI in RStudio. We’ve embedded a specialized agent directly into RStudio so it can read your live session context and provide more accurate assistance for data science and analy...
042
Chris Kenny, PhD @chriskenny.bsky.social · 04/03/2026
Over the weekend, I started collecting/organizing a list of cool #rstats skills for LLMs at github.com/christopherk.... Please open an issue or PR in any awesome additions you see! Includes a section for helpful posts like @ivelasq3.bsky.social's⬇️
github.com
GitHub - christopherkenny/awesome-rstats-skills: Awesome list of rstats skills for AI workflows
Awesome list of rstats skills for AI workflows. Contribute to christopherkenny/awesome-rstats-skills development by creating an account on GitHub.
23711
Chris Kenny, PhD @chriskenny.bsky.social · 04/03/2026
One weird pattern from playing with Claude Code and GitHub Copilot CLI: Claude Code loves to use bash and python, even when working on R code (and then gets confused since there is no 🐍installed) Copilot, with the same models, seems to naturally know to use R and powershell
031
Reposted by Chris Kenny, PhD
PlanScore @planscore.org · 02/03/2026
Getting ready for the 2026 mid-terms, every PlanScore analysis page moving forward will now feature a new scenario adjustment tool to make it easy to change, view, and share potential outcomes that may differ from 2024 medium.com/planscore/pl... Try with this NC map: planscore.org/plan.html?20...
medium.com
PlanScore’s New Midterm-Ready Vote Predictions
This week, the 2026 mid-term election season is kicking off in earnest with U.S. House primaries in Arkansas, Texas, and North Carolina…
0127
Chris Kenny, PhD @chriskenny.bsky.social · 25/02/2026
Redistricting Reforms Reduce Gerrymandering by Constraining Partisan Actors is now forthcoming in the APSR! We use a game theoretic treatment and continuous DiD(iD) to show when redistricting reforms work with @corymccartan.com, @simko.bsky.social, Emma Ebowe, Michael Zhao, and Kosuke Imai
3198
Chris Kenny, PhD @chriskenny.bsky.social · 07/01/2026
My 2025 #rstats wrapped in honor of CRAN reopening for 2026: christophertkenny.com/posts/2026-0... Fun fact: I made 43 CRAN uploads in 2025 and 41 of them were successful!
christophertkenny.com
Packages 2025 Wrapped – Christopher T. Kenny
A look at my R package updates from 2025
060
Chris Kenny, PhD @chriskenny.bsky.social · 11/12/2025
Throwback to my favorite #rstats Ripley crashout where he removed a package because a maintainer called him Brian
271
Chris Kenny, PhD @chriskenny.bsky.social · 11/12/2025
Nothing like starting the day responding to a Brian Ripley hissy fit... He removes an #rstats package before the scheduled date, gets a bounceback from a *downstream* package, and archives all of the packages... CRAN volunteers time is the most valuable resource, yet Ripley just loves wasting it
130
Chris Kenny, PhD @chriskenny.bsky.social · 10/12/2025
Glad we have LLMs in everything so that GitHub tries to create commit messages like this... Just makes more work by having to delete the message to write in a correct one instead of just writing the correct one in the first place
251
Reposted by Chris Kenny, PhD
Nick Tierney @njtierney.bsky.social · 10/12/2025
Is there an #rstats best practices for including a shiny app in an R package? I see mastering-shiny.org/scaling-pack... by @hadley.nz and github.com/daattali/ddpcr by Dean Attali (couldn't find his handle!) - just curious on understanding best practices, bunding data, app, and the www folder etc.
mastering-shiny.org
Chapter 20 Packages | Mastering Shiny
If you are creating a large or long-term Shiny app, I highly recommend that you organise your app in the same way as an R package. This means that you: Put all R code in the R/ directory. Write a...
5113
Chris Kenny, PhD @chriskenny.bsky.social · 18/11/2025
@corymccartan.com and I have been playing with @paleolimbot.bsky.social's #rstats `libgeos` package. It's pretty awesome. Handles the hard parts so that you can connect Rcpp to GEOS with a few lines of code. Got some existing, optimized `geos` code to ~3x faster! paleolimbot.github.io/libgeos/
paleolimbot.github.io
Open Source Geometry Engine (GEOS) C API
Provides the Open Source Geometry Engine (GEOS) as a C API that can be used to write high-performance C and C++ geometry operations using R as an interface. Headers are provided to make linking ...
092
Chris Kenny, PhD @chriskenny.bsky.social · 07/11/2025
NYC 2025 Mayoral results as a dot density plot using the `dots` #rstats package (cran.r-project.org/web/packages...)
A dot density map of NYC where each point represents 50 voters. Lines show NYC neighborhoods. Density is highest in Manhattan with a lot of dots for Mamdani. Areas of Staten Island and Brooklyn are dense and yellow for Cuomo.
44411
Reposted by Chris Kenny, PhD
Hadley Wickham @hadley.nz · 06/11/2025
Do you teach #rstats? Do your students complain about how lame and old-fashioned dplyr is? Don't worry: I have the solution for you: github.com/hadley/genzp.... genzplyr is dplyr, but bussin fr fr no cap.
github.com
GitHub - hadley/genzplyr: dplyr but make it bussin fr fr no cap
dplyr but make it bussin fr fr no cap. Contribute to hadley/genzplyr development by creating an account on GitHub.
42460166
Chris Kenny, PhD @chriskenny.bsky.social · 06/11/2025
Support for Prop 50 in California is highly correlated with support for Harris in 2024 and even runs slightly ahead of her A sad day for democracy to have the future of competitive elections literally on the ballot and yet be so utterly defeated. Stands at 63.9% voting yes.
020
Reposted by Chris Kenny, PhD
Lucia Walinchus @walinchus.bsky.social · 05/11/2025
There are a lot of great posts out there that aren't very highly ranked. Don't rely on bluesky to find you great content; you can find it on your own! Here's how: #Rstats via @northeasternu.bsky.social's Storybench www.storybench.org/how-to-analy...
storybench.org
How to Analyze bluesky Posts and Trends with R - Storybench
If all you're doing on bluesky is scrolling, liking and posting, then you're riding a bike with training wheels. Here are simple tools using its open-source skeleton.
21366