Chapter 33 Quiz
Multiple Choice
1. What is the "pace ratio" in voter contact analytics?
a) The number of contacts made per canvasser per hour b) The ratio of actual contacts per day to the contacts per day needed to reach the goal c) The ratio of contacted voters to the total voter universe d) The percentage of contacts that result in positive outcomes
2. The "persuadability targeting lift" measures:
a) The increase in voter persuadability scores after campaign contact b) The percentage-point difference between the share of persuadable voters among contacted voters and their share of the overall universe c) The rate at which contact converts persuadable voters to confirmed supporters d) The improvement in targeting efficiency from one week to the next
3. In the voter segment classification used in this chapter, a "True Persuadable" voter has:
a) A support score above 80 and high vote frequency b) A persuadability score above 75 regardless of support score c) A support score between 40 and 60 (the genuinely undecided range) d) A support score below 40 with high persuadability (potential to convert opposition)
4. Why does the chapter recommend pairing the cumulative contact chart with a daily contact chart?
a) The two charts use different data sources that need to be reconciled b) The cumulative chart can look like progress even when the rate of contacts is declining; the daily chart reveals the actual trajectory c) Federal law requires campaign analytics dashboards to show both views d) The daily chart is used by canvassers while the cumulative chart is used by campaign managers
5. The ODA equity-weighting parameter in the prioritization model is designed to:
a) Reduce the weight given to support score and increase the weight given to persuadability b) Adjust priority scores to explicitly account for mobilization needs in historically under-mobilized communities c) Ensure that canvassers contact equal numbers of voters in each demographic group d) Prevent the algorithm from using race/ethnicity data in contact prioritization
6. Which pandas operation is most appropriate for computing a voter's "vote frequency" from three binary vote history columns?
a) df['vote_frequency'] = df[['vote_history_2018', 'vote_history_2020', 'vote_history_2022']].max(axis=1)
b) df['vote_frequency'] = df[['vote_history_2018', 'vote_history_2020', 'vote_history_2022']].sum(axis=1)
c) df['vote_frequency'] = df[['vote_history_2018', 'vote_history_2020', 'vote_history_2022']].mean(axis=1)
d) df['vote_frequency'] = df['vote_history_2018'] * df['vote_history_2020'] * df['vote_history_2022']
7. When Adaeze Nwosu says "measurement shapes reality," she is pointing to:
a) The accuracy of support score models in predicting actual voter behavior b) The risk that measuring specific KPIs changes canvasser behavior in ways that optimize the metric without improving actual campaign performance c) The effect of poll publication on voter preferences d) The way data visualization choices affect how decision-makers interpret results
8. What is the "priority score" in the voter contact prioritization tool?
a) A score assigned by party committee staff based on known voter history b) A composite score for ranking uncontacted voters by expected value of contact, weighted by persuadability, support score targeting, vote likelihood, and county priority c) The support score assigned by the voter file vendor at the start of the campaign d) A field-entered assessment of voter receptivity from previous campaign contact
Code Analysis
9. The following code produces an unexpected result. Identify the error and explain how to fix it.
# Intent: Find voters in the "True Persuadable" segment who haven't been contacted
uncontacted_persuadable = df[
df['voter_segment'] == 'True Persuadable'
df['contacted'] == 0
]
10. What does the following code compute, and when would it be useful in a campaign dashboard?
daily_trend['rolling_7d'] = daily_trend['daily_contacts'].rolling(7, min_periods=1).mean()
Short Answer
11. Explain why the "contacts per day needed" metric changes over the course of a campaign, even if the campaign's contact goal stays fixed. How does this relate to the "pace ratio" interpretation?
12. The chapter describes three tiers of dashboard design: (1) daily executive summary, (2) weekly analytical view, and (3) on-demand prioritization tool. Why is it important to design different tiers for different audiences rather than giving everyone the same full dashboard?
13. A campaign's canvassing team has been hitting its daily contact number consistently, but the persuadability targeting lift has dropped from +8 percentage points to +2 percentage points over the past two weeks. What are three possible explanations for this decline, and what data would you need to distinguish between them?
Coding Challenge
14. Write a Python function flag_data_quality_issues(df) that examines a voter contact dataset and returns a dictionary summarizing data quality issues. The function should check for:
a) Voters contacted before the campaign start date
b) Support scores outside the range 0-100
c) Duplicate voter IDs (the same voter marked as contacted multiple times)
d) Contact outcomes that don't match the valid outcome list: ['Confirmed Support', 'Soft Support', 'Undecided', 'Soft Opposition', 'Hard Opposition', 'Not Home', 'Refused', 'Not Attempted']
e) Voters coded as contacted == 1 with no contact date
The function should return a dictionary with keys for each issue type and integer values for the count of affected records.