Sign in

Ryan McShane

@ryanmcshane.bsky.social
74 followers 75 following 52 posts

Statistics professor at The University of Chicago * Researching intransitivity in paired comparisons, pedagogy in sports analytics courses. * Data viz enthusiast. * #RStats * #GSG 🏀🇩🇪🇺🇸 ryanmcshane.com

PostsRepliesMedia
Ryan McShane @ryanmcshane.bsky.social · 19/07/2026
Wow. 6-4 has never happened in World Cup play! Scorigami!
010
Ryan McShane @ryanmcshane.bsky.social · 07/07/2026
Yes; I was confused the first time I heard about this! I think this is a third, looser connection. But the spheres are the most obvious connection.
041
Ryan McShane @ryanmcshane.bsky.social · 07/07/2026
1102
Ryan McShane @ryanmcshane.bsky.social · 10/06/2026
Thanks! The first link redirects to a list of platform-specific RStudio downloads. First link I shared above now has a comparable page posit.co/products/ope..., which no longer auto-identifies the RStudio download needed. Will there be such a page at some point? Asking for my future students.
posit.co
RStudio IDE
RStudio is the premier free, open-source IDE for R, with support for Python, SQL, and other languages R programmers use. Now with Posit AI.
000
Ryan McShane @ryanmcshane.bsky.social · 10/06/2026
@posit.co looks like RStudio download page is down: posit.co/download/rst... docs.posit.co/ide/user/#rs...
100
Ryan McShane @ryanmcshane.bsky.social · 22/05/2026
😂 Maybe CowCowGo would be more to your liking? - signed, frequent cowplot and DuckDuckgo user
5470
Ryan McShane @ryanmcshane.bsky.social · 08/05/2026
Jeez! Can you imagine what would have happened if you had worked there straight out of grad school? Would we even have the tidyverse?
010
Ryan McShane @ryanmcshane.bsky.social · 07/04/2026
20 minutes*! He used his two 15-20 minute games on 12/18 and 4/6 (last night). It looked like he stayed in an extra few minutes last night to get credit for a 15-20 minute game, in spite of clearly being in pain. He kept walking over to the coaches during free throws, probably to check on minutes.
020
Ryan McShane @ryanmcshane.bsky.social · 30/01/2026
I use this every quarter I teach my course, "Practical R Programming;" thanks for the refresh @emilhvitfeldt.bsky.social !
020
Ryan McShane @ryanmcshane.bsky.social · 29/01/2026
Catatouille 👨‍🍳
My cat Pam sitting on my shoulders while I cut a bell pepper. She demanded "ups" while I was cooking.
020
Ryan McShane @ryanmcshane.bsky.social · 29/01/2026
Maybe blog post #8 or 9 could be you adding a toggle between yellowed and color-corrected? 🫨 I wrote up a post a few years ago on how to extract colors from an image with k-means clustering (might be helpful) blog.ryanmcshane.com/posts/2022-1...
blog.ryanmcshane.com
Ryan McShane, Ph.D.: Extracting Colors From an Image with k-means Clustering
A short demo using The Simpsons' Couch Gag
110
Ryan McShane @ryanmcshane.bsky.social · 29/01/2026
Oh I thought I recognized this as soon as I saw the app output! This is at the Art Institute! I go there many Thursdays to work in the member's lounge.
Libby's app output (linked in her post)Original artwork by Ellsworth from 1951 after which Libby modeled her app — collage on paper. "Spectrum Colors Arranged by Chance IV"
250
Ryan McShane @ryanmcshane.bsky.social · 29/01/2026
😅 I wouldn't have asked if I didn't think you could come back with the goods
100
Ryan McShane @ryanmcshane.bsky.social · 28/01/2026
1. Image or it didn't happen! 2. Did you do it programmatically, or manually?
100
Ryan McShane @ryanmcshane.bsky.social · 24/01/2026
Don't forgot Tom Hanks got covid on the same day: doi.org/10.1016/j.so...
000
Ryan McShane @ryanmcshane.bsky.social · 22/01/2026
Self-answer to the latter question: mostly no, sometimes yes according to a quick Google images search.
010
Ryan McShane @ryanmcshane.bsky.social · 22/01/2026
Did you generate random lines, then within regions randomly allocate one of five Bauhaus colors? I've seen a few Bauhaus works in the US/UK/EU. I don't recall whether any of them had adjacent regions with the same colors (?). Not that such rules need to be followed!
330
Ryan McShane @ryanmcshane.bsky.social · 06/11/2025
`^` >> `**`
010
Ryan McShane @ryanmcshane.bsky.social · 06/11/2025
R accepts exponentiation like a**b (equivalent to a^b), possibly to be nice to SAS users? I think a**b is pretty common. stat-37815-au24.ryanmcshane.com/l03-baserfun...
stat-37815-au24.ryanmcshane.com
3  Base R Fundamentals – STAT2/37815: Practical R Programming
200
Ryan McShane @ryanmcshane.bsky.social · 03/11/2025
I love this hex sticker! (Also glad for this group and @ivelasq3.bsky.social 's scrollytelling!)
030
Reposted by Ryan McShane
Chris Newton @cd-newton.hachyderm.io.ap.brid.gy · 24/10/2025
Possibly weirded out my long-suffering colleagues with this idiosyncratic observation last week, and feel like it belongs in a meme. #RStats #Python #RIPDavidLynch
David Lynch (RIP) meme variation where in a conversation with fellow filmmaker Jason Barlow, David Lynch said, "Python feels like soldering; R feels like painting." When Barlow asks him to "Elaborate on that," Lynch smiles and says, "No."
512135
Ryan McShane @ryanmcshane.bsky.social · 16/10/2025
Cool! Can't wait! FWIW, I think I ran into the same issue Davis ran into in the issue you linked: github.com/quarto-dev/q...
github.com
Reformating R cell in VSCODE with air does not correctly close chunk · Issue #745 · quarto-dev/quarto
Originally posted at posit-dev/air#374 (comment) But it seems Quarto: Format Cell is a feature from Quarto extension. Not sure where to post this finding, if this is Quarto VSCODE extension that in...
010
Ryan McShane @ryanmcshane.bsky.social · 16/10/2025
I would share for testing but all of my source repos are on private! ~~Github Copilot~~ Is the goal to run this before using Air on QMDs?
100
Ryan McShane @ryanmcshane.bsky.social · 13/10/2025
Nabbed it! (Thanks; also enjoyed the read) I actually prefer the range bar to the box plot and have been scheming to write an M.E. Spear {ggplot2} extension since this exchange (I just haven't had the time), which probably benefited from your linked 2016 blog post: github.com/tidyverse/gg...
github.com
`geom_boxplot` Whiskers never appear when IQR = 0 (`upper - lower = 0`) · Issue #5511 · tidyverse/ggplot2
I found a problem with ... geom_boxplot I expected ... Whiskers to appear. There's no convenient way to get whiskers to appear when IQR = 0 (upper - lower = 0) (that I am aware of*). Setting coef =...
010
Ryan McShane @ryanmcshane.bsky.social · 11/10/2025
Ahhh! I've been looking for something like this for my blog! (Wait... it's in Distill... is Distill still .Rmd-only?)
000
Ryan McShane @ryanmcshane.bsky.social · 05/10/2025
Yeah, I got a swag bag from #PositConf2025 and the Posit-branded S-Gel pen is in heavy rotation at the moment. I have dozens of other S-Gel pens, but this one has a special place in my heart. Will disassemble others for a refill. I still use a MIT Sloan Sports Analytics Conf water bottle from 2017!
110
Ryan McShane @ryanmcshane.bsky.social · 24/09/2025
I wrote a wrapper around {knitr} kable and {kableExtra} kable_styling that I put at the top of every HW assignment I give to students (output is always PDF). I also have it in all of my Beamer slides 😬 It makes kable tables nice by default. You can still call, e.g. knitr::kable, too!
120
Ryan McShane @ryanmcshane.bsky.social · 24/09/2025
abba, abc, xyz, xx, yy, and temp are my most commonly used placeholders/temporary names Are there even rules against this, though? "Thou shalt not have draft code!"?
110
Ryan McShane @ryanmcshane.bsky.social · 24/09/2025
I came here to make this comment. Beat me to it! = forever
030
Ryan McShane @ryanmcshane.bsky.social · 21/09/2025
CHI - United Center is ~2 mi away MIL - 1.5 hr drive MIN - staying in IA with s/o's bro (7hr drive) DEN - staying in CO with s/o's other bro (flight) CLE - 5.5 hr drive (hotel req) IND - 3 hr drive (All on days that work nicely with academic calendar)
010
Ryan McShane @ryanmcshane.bsky.social · 21/09/2025
It's rough being away from home and a Spurs fan! NBA Team Pass has been helpful for the past decade, and I've been catching road games for the past couple of years, too! (This season: CHI, MIL, MIN, DEN, CLE, IND) #gsg
100
Ryan McShane @ryanmcshane.bsky.social · 20/09/2025
I might need to do this to keep up with my collection. I have space for maybe two more, but I could fit even more if I moved some around; I'm scared to death of doing that! I know I've seen guides around the internet on how to convert these hex stickers to magnets, but I've lost track of them 🙈
Laptop cover featuring 15 hex stickers and three Spurs basketball stickers
210
Ryan McShane @ryanmcshane.bsky.social · 20/09/2025
Did my neighbor and I immediately check to see if our coins stuck together like magnets? Yes. But also, the backside is a relief rendering of the {tidyverse} hex logo, so it feels trying to put a magnet on would undo one of the sides 🙃🫠
The backside of the coin from another post that features the front side of the tidydevday 2025 coin.
000
Ryan McShane @ryanmcshane.bsky.social · 20/09/2025
The first PR in {forcats} github.com/tidyverse/forcats/pull/384
github.com
Base R pipe AND lambda notation. Fixes #381 by math-mcshane · Pull Request #384 · tidyverse/forcats
Searched all *.R and .Rmd files for examples using magrittr pipe, %>%. No examples needed, e.g., y |> (\(x) f(a = x, b = x))() nor y |> f(second_arg = _) etc. Finally, issue mentions tha...
000
Ryan McShane @ryanmcshane.bsky.social · 20/09/2025
I also fixed the 2nd PR this morning. Both of my PRs were about transitioning from the {magrittr} pipe to the Base R pipe — one to clean up {forcats} examples/vignette, and one to deprecate a {usethis} function that makes it easy to add %>% to a package. github.com/r-lib/usethis/pull/2183
github.com
Deprecate `use_pipe()`. Fixes #2124 by math-mcshane · Pull Request #2183 · r-lib/usethis
Completed: Added a short deprecation message when using use_pipe(), Added a longer bit of advice in the package documentation for common substitutions, including the 2023 blog post on the base pip...
300
Ryan McShane @ryanmcshane.bsky.social · 20/09/2025
A couple and the coin!
Three tidyverse/r-lib stickers and a commemorative coin for participating in tidy dev day 2025
200
Ryan McShane @ryanmcshane.bsky.social · 19/09/2025
Just finished my first #rstats #TidyDevDay! It might have been a net negative on open issues, because I: * opened an issue each in {pak}, {roxygen2}, and {gitcreds} * submitted a PR to {forcats} * submitted a PR to {usethis} (needs corrected test) But at least I got this selfie with @hadley.nz 🫠😆
Hadley Wickham, me, and all of the post-it notes of completed PRs.
1230
Ryan McShane @ryanmcshane.bsky.social · 19/09/2025
In the "super rare" section at the bottom next to flair!
010
Ryan McShane @ryanmcshane.bsky.social · 19/09/2025
OK #PositConf2025 -- I acquired most of the stickers I heard were available; here's my final score! (Thanks for the assists @ivelasq3.bsky.social ({dtplyr}!!!) @kellybodwin.com and @emilhvitfeldt.bsky.social ). I'll be re-distributing many of these to my students as leaderboard prizes 👩‍🎓👨‍🎓 #rstats
Sticker haul from posit::conf(2025) (and a couple from USCOTS 2025)
2162
Ryan McShane @ryanmcshane.bsky.social · 18/09/2025
Why not both? I use Quarto *and* modify the theme with a .sty file (for mathy courses with less code where Beamer makes a little more sense). And my regular reveal.js slides attempt to mimic that Beamer style with css/scss 😬
120
Ryan McShane @ryanmcshane.bsky.social · 12/09/2025
Oh. My.
020
Ryan McShane @ryanmcshane.bsky.social · 12/09/2025
@grrrck.xyz I finally implemented {ggcheck} in my early {ggplot2} assignment autograders (in past 2 weeks, even!) Do you/a colleague know how this will impact {ggcheck}? Seems like there's some backwards compatibility currently built in, but Teun noted in post that will eventually be phased out.
000
Ryan McShane @ryanmcshane.bsky.social · 12/09/2025
Woah! It seems that this release unraveled some of the more perplexing mysteries in {ggplot2}. I'm teaching my "Practical R Programming" course again this Fall (finishing a September term iteration tomorrow)... I can't wait to write up an updated set of notes!
110
Ryan McShane @ryanmcshane.bsky.social · 30/08/2025
Interview trip to Amherst College (2019): I checked out a record store in Northampton. I asked the shopkeeper why they had so many KSE posters in the bathroom and he reported that they were from around there. Impressed me more than Frost, Webster['s], and Dickinson all being from there 😅
010
Ryan McShane @ryanmcshane.bsky.social · 25/08/2025
I'm talking about reproducibility in class today, and was inspired to make this last night after reviewing some of @brodriguesco.bsky.social 's book, raps-with-r.dev (I'm operating on about 3 or 4 layers of reproducibility)
Four panel meme which is an exploited version of a classic meme. This one says,
1. How many layers of reproducibility are you on
2. Like, maybe 5, or 6 right now, my dude
3. You are like a little baby. // watch this
4. (Bruno Rodrigues' reproducibility iceberg meme saying "NIX"

The original iceberg meme is from his book, Building Reproducible Analytical Pipelines (2023). Since then, Bruno has recommended Nix. 

I haven't started working at that level of reproducibility, so I couldn't compare old vs new, but I know there's some overlap.
011
Ryan McShane @ryanmcshane.bsky.social · 22/08/2025
Fun: I'm currently listening to Julia on Libby. (Feminist retelling of 1984 from Julia's perspective) @libbyheeren.bsky.social
Screenshot of the audiobook of "Julia" I am currently listening to on the library audiobook app called "Libby"
130
Ryan McShane @ryanmcshane.bsky.social · 22/08/2025
My favorite part is the default LaTeX font making it into a ggplot. Who needs tikz when you can use ggdiagram? If it can output to .svg well, you even get vectorized graphics.
020
Ryan McShane @ryanmcshane.bsky.social · 15/08/2025
I do like that you're using the "old ways" instead of AI. FWIW, I don't know what the original image was or what it was supposed to represent. A wave? A sea snail coming out of a conch shell? IDK.
000
Ryan McShane @ryanmcshane.bsky.social · 12/08/2025
No argument here (except my examples are apolitical) Firing one of your leading economists/statisticians because they gave the "wrong" numbers is something I thought I'd never see in the US. On a former Amherst colleague of mine (worse: his work was criminalized): www.amstat.org/news-listing...
amstat.org
News Listing
The American Statistical Association is the world’s largest community of statisticians, the “Big Tent for Statistics.
010
Ryan McShane @ryanmcshane.bsky.social · 12/08/2025
I also try to keep things nonpartisan and talk about the values I think are objectively important in Statistics. If you're looking, here's at least one example of the left misusing statistics. See ALT text! Biden ex.: wanted to misrepresent truth. Trump 2025: wants to change Truth. (not the same)
Bottom chart/tweet is from Biden touting an "improvement" in the deficit, by only showing two years, the first being the first year of COVID. Worse is the choice of y-axis. 

Top chart shows more accurate representation of the deficit over 21 years — the 2021 deficit was still orders of magnitude worse than all pre-COVID deficits.

Context, of course, is important: COVID was unprecedented in living memory and had a massive impact on the economy and the government's response to it.

In short, this is a misrepresentation of the truth by shifting the goalposts within the plot.

It also removes nuance from the conversation, and that strategy of denying the truth of a changing (worsened) economy was ultimately one of the most major contributors to the Biden/Harris loss in 2024 (Trump was "for" the economy, and some voters accepted that claim).

Trump, of course, has done nothing to help the economy, and has actively worked to make matters worse (tariffs, attempts to destabilize trust in institutions with DOGE and firing of BLS chief, etc)

(I still plan on being nonpartisan in class, but am interested in how you would confront these issues in the classroom)
100