<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Ruwan C. Karunanayaka</title>
<link>https://rckaruna.ca/blog.html</link>
<atom:link href="https://rckaruna.ca/blog.xml" rel="self" type="application/rss+xml"/>
<description>Notes on statistical methodology — how to design studies, measure reliably, and trust the numbers.</description>
<generator>quarto-1.8.27</generator>
<lastBuildDate>Wed, 22 Jul 2026 07:00:00 GMT</lastBuildDate>
<item>
  <title>Your leaderboard gap is probably noise</title>
  <dc:creator>Ruwan C. Karunanayaka</dc:creator>
  <link>https://rckaruna.ca/posts/leaderboard-noise/</link>
  <description><![CDATA[ 




<p>Somewhere right now, a team is choosing which AI model to build on because it sits one place higher on a leaderboard. The gap might be two points of win rate, or a handful of Elo. Here’s the uncomfortable question a statistician has to ask: is that gap a fact about the models, or a fact about the sample?</p>
<section id="a-two-minute-calculation" class="level2">
<h2 class="anchored" data-anchor-id="a-two-minute-calculation">A two-minute calculation</h2>
<p>Suppose model A beats model B in 62% of head-to-head comparisons, and model B wins 60% of its own matchups, each measured over 500 votes. Two points apart — feels decisive on a ranking table.</p>
<p>The standard error of a proportion around 0.6 on 500 votes is <img src="https://latex.codecogs.com/png.latex?%5Csqrt%7B0.6%20%5Ctimes%200.4%20/%20500%7D%20%5Capprox%200.022"> — about 2.2 percentage points <em>per model</em>. The uncertainty on the <em>difference</em> between them is larger still, roughly <img src="https://latex.codecogs.com/png.latex?%5Csqrt%7B2%7D%20%5Ctimes%202.2%20%5Capprox%203.1"> points. A 2-point observed gap against ~3 points of noise, before any multiple-comparison correction, isn’t evidence of a real difference. It’s a tie wearing a trophy.</p>
<p>This isn’t a contrived example. Public arena leaderboards now publish confidence intervals precisely because the intervals at the top routinely overlap — the rank order among the leading models is partly an artifact of sampling. And the problem compounds: with ten models, there are forty-five pairwise comparisons, so a few “significant-looking” gaps will appear by chance even if nothing real separates anyone.</p>
</section>
<section id="the-deeper-problem-rankings-are-measurements" class="level2">
<h2 class="anchored" data-anchor-id="the-deeper-problem-rankings-are-measurements">The deeper problem: rankings are measurements</h2>
<p>A leaderboard is a measurement instrument, and instruments have reliability. The question that matters isn’t only “is this gap significant today?” but “if we collected the same number of votes again, would the ranking come back the same?” Those are different questions. A gap can clear a significance test while the <em>ranking</em> built from many such gaps remains unstable — flip a few hundred votes and third place becomes sixth.</p>
<p>Measurement theory has a name for this and a toolbox for it: you decompose the variation in observed scores into the part that reflects real differences between the things being ranked and the part that’s occasion-to-occasion noise, then compute how many observations you’d need before the ranking is dependable at the level you care about. The recurring finding, in domain after domain, is that the number is larger than people expect — often much larger than the data anyone has.</p>
</section>
<section id="how-to-read-a-leaderboard-without-fooling-yourself" class="level2">
<h2 class="anchored" data-anchor-id="how-to-read-a-leaderboard-without-fooling-yourself">How to read a leaderboard without fooling yourself</h2>
<p>Ask for the interval, not the point: if the intervals of two entries overlap, treat them as tied, whatever the rank order says. Ask for the <em>n</em> behind each comparison — a rating built on 80 matchups and one built on 8,000 do not deserve the same trust. Be most suspicious exactly where the stakes feel highest, at the top, where entries are closest and gaps are smallest relative to noise. And if a decision genuinely hangs on the comparison — which model to license, which system to ship — run your own evaluation on your own task distribution, sized in advance so the answer will be reliable. That last step is a sample-size calculation, and it’s cheaper than choosing the wrong model.</p>
<p>None of this is exotic statistics. It’s the same discipline clinical trials have used for decades, pointed at a new kind of scoreboard. The scoreboards are new; the arithmetic isn’t.</p>
<p><em>I consult on exactly these questions — evaluation design, the reliability of ranking and judging pipelines, and how much data a trustworthy verdict needs. If your team is making decisions off a leaderboard, <a href="../../consulting.html">let’s talk</a>.</em></p>


</section>

 ]]></description>
  <category>AI</category>
  <category>methodology</category>
  <category>measurement</category>
  <guid>https://rckaruna.ca/posts/leaderboard-noise/</guid>
  <pubDate>Wed, 22 Jul 2026 07:00:00 GMT</pubDate>
</item>
<item>
  <title>Building this site: Quarto, GitHub Pages, and a win-probability worm</title>
  <dc:creator>Ruwan C. Karunanayaka</dc:creator>
  <link>https://rckaruna.ca/posts/welcome/</link>
  <description><![CDATA[ 




<p>I wanted a single place to publish my work: my consulting practice, the interactive tools I build, and writeups of the research behind them. A few constraints made the choice easy.</p>
<p>Everything I do already lives in R and LaTeX. I’m deepening Git this sabbatical, so a plain-text site under version control is a feature, not a chore. And I didn’t want a monthly bill for a CMS I’d have to wrestle. <strong>Quarto on GitHub Pages</strong> ticks all three: posts are <code>.qmd</code> files, the whole site is a git repository I own, and hosting is free.</p>
<section id="the-worm" class="level2">
<h2 class="anchored" data-anchor-id="the-worm">The worm</h2>
<p>The graphic on the projects page is a <em>win-probability worm</em> — the line that swings across the 50% mark as a chase unfolds. On the site it’s a lightweight SVG widget: between matches it replays recent internationals from precomputed model output, and during a live game it updates as the match unfolds.</p>
</section>
<section id="whats-next" class="level2">
<h2 class="anchored" data-anchor-id="whats-next">What’s next</h2>
<p>More tools are on the way — tennis and soccer forecasters are in final development — along with methodology posts on how to design studies and trust measurements.</p>
<p>More soon.</p>


</section>

 ]]></description>
  <category>meta</category>
  <category>R</category>
  <category>cricket</category>
  <guid>https://rckaruna.ca/posts/welcome/</guid>
  <pubDate>Sat, 13 Jun 2026 07:00:00 GMT</pubDate>
</item>
<item>
  <title>How many observations before a statistic means anything?</title>
  <dc:creator>Ruwan C. Karunanayaka</dc:creator>
  <link>https://rckaruna.ca/posts/handball-dependability/</link>
  <description><![CDATA[ 




<p>Coaches, analysts, and managers rank people on performance indicators — shooting percentage, conversion rate, error rate — often after only a handful of observations. The uncomfortable question is whether those numbers reflect the <em>person</em> or just the occasion.</p>
<section id="the-framing" class="level2">
<h2 class="anchored" data-anchor-id="the-framing">The framing</h2>
<p>This is a measurement problem, and generalizability theory is built for it. A <strong>G-study</strong> decomposes the variance in an indicator into the part attributable to the thing you care about (the signal) and the parts attributable to occasion-to-occasion fluctuation and residual noise. A <strong>decision study</strong> then answers the practical question directly: how many observations do you need before the indicator dependably separates one performer from another?</p>
<p>The answers are frequently sobering. Across the sports settings I’ve studied, indicators differ sharply in how quickly they stabilize — some are trustworthy within a handful of games, while others need more observations than a season typically provides before the ranking they imply means anything.</p>
</section>
<section id="why-it-matters" class="level2">
<h2 class="anchored" data-anchor-id="why-it-matters">Why it matters</h2>
<p>If a metric needs fifteen matches to be reliable and you’re acting on three, you’re ranking noise. The value of the decision-study table is that it tells you, per indicator, where that line sits — so you know which numbers to trust early and which to wait on. The same logic applies far beyond sport: clinical measures, quality-control metrics, student assessment.</p>
<p>The <a href="https://github.com/rckaruna/dgt"><code>dgt</code> R package</a> implements these calculations.</p>


</section>

 ]]></description>
  <category>G-theory</category>
  <category>methodology</category>
  <category>sports</category>
  <guid>https://rckaruna.ca/posts/handball-dependability/</guid>
  <pubDate>Mon, 08 Jun 2026 07:00:00 GMT</pubDate>
</item>
</channel>
</rss>
