Categories
#rstats Data analysis

Can a Twitter bot increase voter turnout?

Summary: in 2015 I created a Twitter bot, @AnnArborVotes (code on GitHub).  (2018 Sam says: after this project ceased I gave the Twitter handle to local civics hero Mary Morgan at A2CivCity).  I searched Twitter for 52,000 unique voter names, matching names from the Ann Arbor, MI voter rolls to Twitter accounts based nearby.  The bot then tweeted messages to a randomly-selected half of those 2,091 matched individuals, encouraging them to vote in a local primary election that is ordinarily very low-turnout.

I then examined who actually voted (a matter of public record).  There was no overall difference between the treatment and control groups. I observed a promising difference in the voting rate when looking only at active Twitter users, i.e., those who had tweeted in the month before I visited their profile. These active users only comprised 7% of my matched voters, however, and the difference in this small subgroup was not statistically significant (n = 150, voting rates of 23% vs 15%, p = 0.28).

I gave a talk summarizing the experiment at Nerd Nite Ann Arbor that is accessible to laypeople (it was at a bar and meant to be entertainment):

This video is hosted by the amazing Ann Arbor District Library – here is their page with multiple formats of this video and a summary of the talk.  Here are the slides from the talk (PDF), but they’ll make more sense with the video’s voiceover.

The full write-up:

I love the R programming language (#rstats) and wanted a side project.  I’d been curious about Twitter bots.  And I’m vexed by how low voter turnout is in local elections.  Thus, this experiment.

Categories
Politics Science vs. Emotion

Expertise vs. Emotion at Ann Arbor City Council

Removed from scientific context, vaccinating your kid sounds crazy.  Let’s stick a needle in their arm and put disease and chemicals into their body.  To prevent an illness nobody you know has ever gotten.  And on top of your kid crying, and your own lack of experience with the disease, you have neighbors whispering in your ear (or posting loudly on social media) how dangerous vaccines are.

Instead of putting it to a popular vote, though, or listening to the loudest voices on your Facebook feed, you listen to your child’s pediatrician (I hope) and bodies of experts like the AMA and CDC, who unanimously cite overwhelming evidence in favor of vaccinations.

For every decision, there are gut feelings and personal opinions about the issue, and then there are the scientific arguments – what does the evidence say?  Most often, these come from experts in the field, who have devoted years to mastering the topic.

Would #a2council vaccinate?

The greatest  conflicts in Ann Arbor politics are often driven by clashes between gut feelings (either voiced by citizens or held by CMs) and expert opinions.

Categories
Other fermentables

Simple Grocery Store Cider 2014

November 2014: Bought 5 gallons of Kapnick Orchards Cider at the grocery store, pitched a packet of Vintner’s Harvest MA33  yeast.  O.G. 1.046.

Mid-2015: I added a full 10″ cinnamon stick, on recommendation from several AABG club members.  The idea is to get hints of cinnamon that trigger associations with apple flavor (think apple pie), but stay below the threshold of identifiable cinnamon.  SG 0.993 (7% abv).

January 2016: kegged and added 2.5 tsp each of 10% K-Meta solution and potassium sorbate, along with table sugar (beet) to taste.  Over the year+ in a single vessel, the cider had dropped clear.

Measuring sugar to backsweeten:

  1. Pull a full hydrometer sample, measure (0.993), taste – way too dry, no balance to acidity
  2. Stir in a little sugar, taste, repeat; when it gets in the ballpark, measure gravity (1.009) – almost there
  3. Keep going – 1.015 was sweet, but balanced.  Maybe a little too sweet while still, but carbonation should even that out.  Target 1.013.
  4. Calculate amount of sweetener needed.  I need 20 ppg increase in gravity (from .993 -> 1.013) for 5 gallons, so 20 x 5 = 100 points.  One pound of table sugar yields 46 ppg so I need 100/46 = 2.18 lbs of sugar.

For reference, apparently Woodchuck Cider has a final gravity of 1.029!

Categories
Beer Homebrew

Simple add-on grain hopper for malt mill

I saw a preview of this bucket-based grain mill hopper in Zymurgy’s gadget edition, but when I read the details it wasn’t simple enough for me.  So I made a simpler version of a plastic bucket extension for my hopper:

IMG_20151010_211607

This hopper extends the low-volume hopper that came with my Schmidling Maltmill, allowing me to mill my entire grain bill in one go.

Time: ~1 hour

Materials needed:

  1. Malt mill with hopper that you want to extend
  2. Plastic bucket.  I got a used 3 gallon food-grade bucket from a local ice cream parlor (Kilwin’s).
  3. Scrap plywood
Categories
#rstats Data analysis survivor pool

Calculating likelihood of X% of entrants advancing in an NFL Survivor Pool

or: Yes, Week 2 of the 2015 NFL season probably was the toughest week for a survivor pool, ever.

Week 2 of the 2015 NFL season was rife with upsets, with 9 of 16 underdogs winning their games.  This wreaked havoc on survivor pools (aka eliminator pools), where the object is to pick a single team to win each week.  The six most popular teams (according to Yahoo! sports) all lost:

yahoo wk 2 picks 2015

(image from Yahoo! Sports, backed up here as it looks like the URL will not be stable into next year)

About 4.6% of Yahoo! participants survived the week (I looked only at the top 11 picks due to data availability, see the GitHub file below for more details).  This week left me wondering: was this the greatest % of survivor pool entrants to lose in a single week, ever?  And what were the odds of this happening going into this week?

I wrote some quick code to run a million simulations of the 2nd week of the 2015 NFL season (available here on GitHub).

Results

Given the projected win probabilities (based on Vegas odds) and the pick distributions, only 684 of the 1,000,000 simulations yielded a win rate below the 4.6% actual figure.  Thus the likelihood that only 4.6% of entrants would make it through the week was 0.0684%, less than a tenth of one percent.  Or to put it another way, this event had a 1-in-1,462 chance of occurring.

Here are the results of the simulation:

simulation results

  1. Blue line: median expected result, 80.6% winners
  2. Yellow line: 1st percentile result, 13.8% winners (to give you a sense of how rare a result this week was)
  3. Red line: actual result, 4.6% winners

So was it the greatest week for survivor pool carnage ever?  Probably.  You might never see a week like it again in your lifetime.

P.S. This distribution is pretty cool, with the sudden drop off and gradual climb starting at x = 0.50.  This is caused by 50% of the pool picking the Saints, the most likely team to win.  I wouldn’t say this is a bimodal distribution, exactly – is there a term for this?

Categories
Brewing process Homebrew Recipe Uncategorized

Smoked Porter 2015

Over the 4th of July, I smoked about 3 lbs of Pils malt on an old potbelly stove.  It smoked with mesquite chips for a few hours in two batches, then was left to condition for ~7 weeks in an open paper grocery bag.

I first brewed a smoked porter with home-smoked malt in 2011.  I used alder chips then, in an homage to Alaskan Brewing Co.’s Smoked Porter.  It turned out well and the bottle I opened yesterday as I brewed the 2015 version has aged nicely.  The biggest flaw is that the smoke flavor is too phenolic.  I tried to avoid chlorinated water throughout the process but may not have succeeded.

I brewed this year’s smoked porter on the same potbelly stove I used to smoke the malt.  I’ve already written about the process of brewing on the potbelly stove, so I’ll stick to the recipe and batch notes here.

Categories
Beer Brewing process Homebrew

Homebrewing on a Potbelly Stove

My in-laws have an old potbelly stove sitting around.  Some research indicates it was made around 1900.  I smoked about 3 lbs of Pils malt on this stove on the 4th of July, and decided I’d see if it could crank out enough heat to brew a 5 gallon batch of beer.

The answer: almost.

pot on stove

It heated about 4.5 gallons of mash water fairly well, heating it 86.7 degrees in an hour.  The slope leveled off a little as it reached strike temperature:

potbelly_temp_ramp

This performance of 390 degree-gallons per hour (when heating water starting at room temperature) is not too much worse than this same pot when I’m heating with a 1500W, 120V electric element – that setup yields about 480 degree-gallons per hour.

Categories
Uncategorized

I have a blog

Why a blog?  I have two main purposes in mind:

  1. Opinions & ideas that are too long for my Twitter.  I’ll probably tweet links to these posts.
  2. Knowledge management: I often make things after reading on the web about how to make them.  Sometimes I think, “the internet was wrong” or “I could explain it better than that.”  Now I have a space to see whether I can make some small contributions to human knowledge that others might stumble upon and benefit from.  I benefit tremendously from internet knowledge so I ought to give back what I can.
    1. (Can I not make this sub-bullet A?  This blog is off to a poor start) I will also benefit from my own notes on past projects.  In particular, I use Brewtoad to design homebrew recipes, but lack a good system for storing notes on the process & results.  I like how the Mad Fermentationist logs his brews on a WordPress blog.

Given that this may be a jumble of posts on DIY, beer, electoral politics, data analysis, etc. I expect that very few people will read through the blog continuously or follow it.  But if a few of the right readers find each post via other means, that’ll do.  And if no one reads it, at least I have a place to take notes.