SingingPub

Friday, 9 February 2024

Spreadsheet EPH

Read on blog or Reader
Site logo image camestrosfelapton posted: " I said that I made an Excel version of EPH awhile back. I couldn't find it again now, so I have made a Google Sheets version https://docs.google.com/spreadsheets/d/14gbLVIROrG-Ogmgex0cE6w8VVd9eYziu1cyufm-d4Go/edit?usp=sharing Now, I haven't tested thi" Camestros Felapton Read on blog or Reader

Spreadsheet EPH

camestrosfelapton

February 10

I said that I made an Excel version of EPH awhile back. I couldn't find it again now, so I have made a Google Sheets version https://docs.google.com/spreadsheets/d/14gbLVIROrG-Ogmgex0cE6w8VVd9eYziu1cyufm-d4Go/edit?usp=sharing

Now, I haven't tested this so it may have bugs/errors or confused logic in it. I also haven't implemented the ✕60 so that it uses integer points instead of decimals (that wouldn't be hard to do but as this is more for demonstration than actual production use, I left it out).

The sheet is semi-manual. For a new set of ballots you'd need to copy formulas down extra rows if there are more voters and more works. You would also need to copy paste the columns that calculate each round in three sheets depending on the number of works nominated. Note that it is the NUMBER OF WORKS not the number of voters that determines how many rounds there are.

I *think* I've set it up to do ties correctly but I'd need to test that. If you spot errors, let me know. Like everything here, this is early draft, unchecked work.

How does it work

This is a spreadsheet that constantly keeps avoiding self-referenced formulas. It does this by having three separate sheets.

  • Ballots has the data as a list of voters and what they voted for. Each row is a combination of voter and a work. The sheet doesn't care how the data is sorted. Each round the sheet calculates the indvidual points for that specific voter and work, so long as the work is still in play.
  • Rounds is the main sheet. This sheet is closest in form to what you see in the nomination stats. It shows all the works, one row per work. Each round it tabulates values for those works still in play.
  • Elimination is where the works fight it out in the Thunderdome of EPH. It determines which works go into the next round.

Data about raw votes and points goes forward through the sheets Ballots>Rounds>Elimination and then eligibility* for the next round travels back down Elimination>Rounds>Ballots. Rinse and repeat until you are down to set of finalists.

*[not a great name in this context but here I mean "in play" not eligibility in the broad sense]

But how does it actually work?

There are a few spreadsheet tricks.

  • Match and Index: If your spreadsheets skills have advanced a bit further than just tabulating numbers, you probably have met VLOOKUP before. Match and Index are a similar idea but have a bit more flexibility. Match finds the row number where a specific set of data appears in another column. In this spreadsheet I can use Match to find where a work in Ballots appears in Rounds. I can then use Index to find data in other columns from the same row. Why bother? I wouldn't recommend resorting all the data but the idea is to make the sheet care less about how the raw data is sorted. If I've done it right, you should be able to resort columns without breaking things.
  • CountIf: A cyberpunk handle or a weird Q-Like Star Trek villain? CountIf counts things but only those things that meet some criteria. The sheet uses this to count only works that are still in play for a given round. The trick is that each round the work gets renamed, e.g. if Aeons is still in play but Zombie has been eliminated then Aeons shows as Y-Aeons and Zombie shows as N-Zombie. When the formula goes to count how many votes there are for Y-Zombie it comes back with 0.
  • SumIf: Just like CountIf but with a less cool name. SumIf adds stuff up in the same way CountIf counts stuff.
  • Rank: Ranks numbers. The trick is that works not in play get a blank cells when it comes to points so they don't get included in the ranking.

The elimination round ignores all the works except those ranked 1 or 2. I'm pretty sure that this gives me a way of dealing with ties for free. If two or more works are equal rank 1 then no work is ranked 2, so the ranks 1s have to fight it out. The elimination round checks which of the shown works has the smallest raw vote and flags it as eliminated. Then the eligibility/in-play status is updated for all works and then that ripples back to the other sheets.

But would it actually work?

I think so. For a busy category like Short Story with lots of works nominated, you'd need to copy and paste a lot more rounds and that would take a while. I don't know the limits of Google Sheets but modern Excel can handle quite large data sets. The raw ballots have to be in a particular format and obviously, the data needs to be clean with consistent names for all works. I've no idea what the data coming out of the nomination website would look like but I think the structure I used is the most obvious basic state you'd want (i.e. "long" format with one row being a voter-nominee combo rather than "wide" format with one row being a voter and five columns for their choices).

The poor Hugo admin would need to copy the last 10 rounds and tidy them up but to be honest it wouldn't be impossible to make a "last 10 rounds" sheet that had that set up already (I'd need to think it through though).

Should a Hugo Committee use Google Sheets to tabulate the nominations? No. That's an obviously bad idea. The formulas in each round are functionally the same in the spreadsheet but not literally the same, so there is way, way, way more scope for one column to have an error in it. A proper EPH program will just use exactly the same set of formulas every round, which makes checking and debugging a lot better.

What this spreadsheet version does do is SHOW every round dynamically. I think it also shows that EPH is relatively simple. It mainly is about tabulating some points in the same way every round but with one thing removed each round. There is not complex process of reallocating points or tracking who gets what. EPH only cares about the current moment.

Comment
Like
Tip icon image You can also reply to this email to leave a comment.

Camestros Felapton © 2024. Manage your email settings or unsubscribe.

WordPress.com and Jetpack Logos

Get the Jetpack app

Subscribe, bookmark, and get real-time notifications - all from one app!

Download Jetpack on Google Play Download Jetpack from the App Store
WordPress.com Logo and Wordmark title=

Automattic, Inc. - 60 29th St. #343, San Francisco, CA 94110  

at February 09, 2024
Email ThisBlogThis!Share to XShare to FacebookShare to Pinterest

No comments:

Post a Comment

Newer Post Older Post Home
Subscribe to: Post Comments (Atom)

Two for One: True Biblical Love Fresh Manna by Pastor Tim Burt

Fresh Manna with Pastor Tim Burt  ...

  • You're on the list!
    Hello, ͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­͏     ­...
  • Listening
    ...
  • index left
    Read on blog or  Reader ...

Search This Blog

  • Home

About Me

SingingPub
View my complete profile

Report Abuse

Blog Archive

  • July 2026 (6)
  • June 2026 (27)
  • May 2026 (28)
  • April 2026 (26)
  • March 2026 (25)
  • February 2026 (24)
  • January 2026 (25)
  • December 2025 (24)
  • November 2025 (25)
  • October 2025 (27)
  • September 2025 (18)
  • August 2025 (31)
  • July 2025 (29)
  • June 2025 (32)
  • May 2025 (16)
  • April 2025 (18)
  • March 2025 (21)
  • February 2025 (22)
  • January 2025 (16)
  • December 2024 (22)
  • November 2024 (8)
  • October 2024 (11)
  • September 2024 (11)
  • August 2024 (2722)
  • July 2024 (3200)
  • June 2024 (3080)
  • May 2024 (3199)
  • April 2024 (3101)
  • March 2024 (3214)
  • February 2024 (3014)
  • January 2024 (3244)
  • December 2023 (3192)
  • November 2023 (2685)
  • October 2023 (2042)
  • September 2023 (1758)
  • August 2023 (1539)
  • July 2023 (1533)
  • June 2023 (1380)
  • May 2023 (1397)
  • April 2023 (1335)
  • March 2023 (1392)
  • February 2023 (1320)
  • January 2023 (1600)
  • December 2022 (1555)
  • November 2022 (1389)
  • October 2022 (1230)
  • September 2022 (1023)
  • August 2022 (1109)
  • July 2022 (1122)
  • June 2022 (1141)
  • May 2022 (1120)
  • April 2022 (1178)
  • March 2022 (1085)
  • February 2022 (763)
  • January 2022 (924)
  • December 2021 (1347)
  • November 2021 (2424)
Powered by Blogger.