Kevin Reuning
  • CV
  • Teaching
  • Research
  • Plots on Politics
  • Workshops
    • One off
    • Quantitative Analysis and Labor
    • Wrangling and Summarizing Data in R

    • R Bootcamp
    • Country Data
    • Introduction to R: Basics
    • Introduction to R: Data Manipulation and Summary
    • Introduction to R: Plotting
    • Introduction to R: Plotting and Reports

    • SNA
    • Introduction to SNA: Concepts and Data
    • Network Influence
    • Network Visualizations
  • Resources
  • Union Elections
  • Voter Perceptions
  • Google Scholar

On this page

  • Presidential Vote Choice
  • Ideology
  • Issues
  • Edit this page
  • View source
  • Report an issue

American Preference Changes from 2016 to 2024

Author

Kevin Reuning

The ANES has recently released panel data with survey participants from the 2016, 2020, and 2024 elections. Unlike other survey data, panels (true panels at least) include surveys with the same individuals overtime. Because of this we can track how each of these individuals changed overtime. This does pose some problems. Not everyone responds to the survey each time and so missingness is an issue. Nonetheless, the below plots and allow you to see how people’s votes and opinions changed across these three elections. I’ve tried to be as transparent as possible, at the top of each chart there is a dropdown to select which sets of weights to use in the sankey. You can think of this as your baseline. If you select the weights in 2016 then you will see how the panel, starting in 2016, progressed overtime (including dropping out). If you look at the weights in 2024, then you will see how those who are still in the panel in 2024 varied over the years prior. You should be able to hover over each strand to see the estimate of the size of that group.

Below each chart I also include a table showing the percent of individuals that were consistent based on their responses in 2024. For example, of those that voted for a Democrat in the 2024 Presidential election, 70% had consistently voted for a Democrat across the last three elections, 23% had voted for a Democrat in two out of three of the elections and 7% voted for a Democrat for the first time.

Along with presidential vote choice, I calculated estimates for ideology, opinions on abortion, ending birthright citizenship, and the ease of buying guns.

If there is any general trajectory in this data it appears that the liberal position is more static than the conversation position. For example, of those in 2024 who opposed ending birthright citizenship 50% consistently did while only 37% of those who favored it consistently favored it. Among preferences towards abortion, 63% of those who said it should be a matter of choice in 2024 consistently said that while 48% who said it should never be be legal had consistently said that. The only place this isn’t true is overall ideology where 38% of those who identify as extremely conservative did so consistently compared to 35% of those who identified as extremely liberal.

Presidential Vote Choice

weights = [
  {name: "2016", value: "value_2016"}, 
  {name: "2020", value: "value_2020"}, 
  {name: "2024", value: "value_2024"}
]
viewof dropdownValue = Inputs.select(weights, {label: "Weights from:", 
  format: x => x.name, value: weights.find(w => w.name === "2024")}
)
SankeyChart({
  links: transpose(data_out_pres)
}, {
  nodeGroup: d => d.id.split("-")[0], // take first word for color
  format: (f => d => `${f(d)}`)(d3.format(".0%")),
  width,
  height: 600,
  nodeSort: sortWith(["Democrat", "Didn't Vote", "Missing", "Not Registered", "Other", "Republican"]),
  nodeGroups: ["Democrat", "Didn't Vote", "Missing", "Not Registered", "Other", "Republican"],
  colors: ["#002d9c", "#ee538b", "#b28600", "#a56eff", "#005d5d",  "#e1141e"],
  linkValue: d => d[dropdownValue.value], // Use the selected value
  linkTitle: d => `${d.id}\n${d3.format(".0%")(d.value)}`, // given d in (computed) links

})
Figure 1: Presidential Vote Choice
Table 1: Trajectory by 2024 Vote Choice
2024 Vote First Time 2 out of 3 Consistent
Democrat 7% 23% 70%
Republican 14% 22% 64%
Other 37% 51% 12%
Not Registered 21% 29% 50%
Didn't Vote 33% 46% 21%
Missing 43% 52% 6%

Ideology

viewof dropdownValueIdeo = Inputs.select(weights, {label: "Weights from:", 
format: x => x.name, value: weights.find(w => w.name === "2024")}
)
SankeyChart({
links: transpose(data_out_ideo)
}, {
nodeGroup: d => d.id.split("-")[0], // take first word for color
format: (f => d => `${f(d)}`)(d3.format(".1%")),
width,
height: 600,
nodeSort: sortWith(["Extremely Lib", "Liberal", "Slightly Lib", "Moderate", "Don't Know", "Missing", "Slightly Con", "Conservative", "Extremely Con"]),
linkValue: d => d[dropdownValueIdeo.value], // Use the selected value
linkTitle: d => `${d.id}\n${d3.format(".1%")(d.value)}`, // given d in (computed) links

})
Figure 2: Ideology
Table 2: Trajectory by 2024 Ideology
2024 Ideology First Time 2 out of 3 Consistent
Full Extremely Lib 33% 32% 35%
Liberal 27% 43% 30%
Slightly Lib 45% 46% 9%
Moderate 32% 49% 19%
Slightly Con 41% 43% 16%
Conservative 30% 37% 33%
Extremely Con 26% 35% 38%
Don't Know 37% 33% 30%
Missing 5% 95% -
Simplified Liberal 19% 27% 54%
Moderate 27% 54% 19%
Conservative 16% 29% 55%
Don't Know 34% 37% 30%
Missing 5% 95% -

Issues

Abortion

There has been some discussion about abortion during recent years. Which one of the opinions on this page best agrees with your view?

  • By law, abortion should never be permitted.
  • By law, only in case of rape, incest or woman’s life in danger.
  • By law, for reasons other than rape, incest or woman’s life in danger if need established.
  • By law, abortion as a mater of personal choice.
  • Other
viewof dropdownValueAbortion = Inputs.select(weights, {label: "Weights from:", 
format: x => x.name, value: weights.find(w => w.name === "2024")}
)
SankeyChart({
links: transpose(Abortion_out)
}, {
nodeGroup: d => d.id.split("-")[0], // take first word for color
format: (f => d => `${f(d)}`)(d3.format(".1%")),
width,
height: 600,
nodeSort: sortWith(["Never",
        "Rape/Incest/Danger",
        "Additional reasons",
        "As a matter of choice",
        "Other",
        "Don't Know/Skipped"]),
linkValue: d => d[dropdownValueAbortion.value], // Use the selected value
linkTitle: d => `${d.id}\n${d3.format(".1%")(d.value)}`, // given d in (computed) links

})
Figure 3: Abortion
Table 3: Trajectory by 2024 Position
2024 Position First Time 2 out of 3 Consistent
Never 20% 32% 48%
Rape/Incest/Danger 30% 38% 31%
Additional reasons 33% 55% 12%
As a matter of choice 13% 24% 63%
Other 26% 74% -
Don't Know/Skipped 18% 67% 15%

Ending Birthright Citizenship

Some people have proposed that the U.S. Constitution should be changed so that the children of unauthorized immigrants do not automatically get citizenship if they are born in this country. Do you favor, oppose, or neither favor nor oppose this proposal?

viewof dropdownValueBirth = Inputs.select(weights, {label: "Weights from:", 
format: x => x.name, value: weights.find(w => w.name === "2024")}
)
SankeyChart({
links: transpose(data_out_birth)
}, {
nodeGroup: d => d.id.split("-")[0], // take first word for color
format: (f => d => `${f(d)}`)(d3.format(".1%")),
width,
height: 600,
nodeSort: sortWith(["Favor", "Neither", "Don't Know/Skipped", "Oppose"]),
linkValue: d => d[dropdownValueBirth.value], // Use the selected value
linkTitle: d => `${d.id}\n${d3.format(".1%")(d.value)}`, // given d in (computed) links

})
Figure 4: End Birth Right Citizenship?
Table 4: Trajectory by 2024 Position
2024 Position First Time 2 out of 3 Consistent
Favor 27% 36% 37%
Neither 31% 43% 26%
Oppose 21% 29% 50%
Don't Know/Skipped 37% 26% 36%

Buying a Gun

Do you think the federal government should make it more difficult for people to buy a gun than it is now, make it easier for people to buy a gun, or keep these rules about the same as they are now?

Note: The 2020 and 2024 versions were asked in the post-survey, 2016 was asked in the pre-survey.

viewof dropdownValueGun = Inputs.select(weights, {label: "Weights from:", 
format: x => x.name, value: weights.find(w => w.name === "2024")}
)
SankeyChart({
links: transpose(Gun_out)
}, {
nodeGroup: d => d.id.split("-")[0], // take first word for color
format: (f => d => `${f(d)}`)(d3.format(".1%")),
width,
height: 600,
nodeSort: sortWith([ "More difficult",
        "Same",
        "Easier",
        "Don't Know/Skipped"]),
linkValue: d => d[dropdownValueGun.value], // Use the selected value
linkTitle: d => `${d.id}\n${d3.format(".1%")(d.value)}`, // given d in (computed) links

})
Figure 5: Buying a Gun?
Table 5: Trajectory by 2024 Position
2024 Position First Time 2 out of 3 Consistent
More difficult 16% 20% 65%
Same 15% 29% 56%
Easier 26% 58% 16%
Don't Know/Skipped 32% 51% 17%
import {SankeyChart, sortWith} from "@reuning/sankey-diagram-component"
  • Edit this page
  • View source
  • Report an issue