Skip to content

Instantly share code, notes, and snippets.

@ryanburge
Created May 20, 2025 22:39
Show Gist options
  • Select an option

  • Save ryanburge/2ba3a995578813fce4ce5c570cc13546 to your computer and use it in GitHub Desktop.

Select an option

Save ryanburge/2ba3a995578813fce4ce5c570cc13546 to your computer and use it in GitHub Desktop.
library(rio)
library(janitor)
pew <- import("E://data/atp99.sav") %>% clean_names()
aaa1 <- pew %>%
mutate(gene = genev2_w99) %>%
mutate(gene = frcode(gene == 1 ~ "Good Idea",
gene == 3 ~ "Not Sure",
gene == 2 ~ "Bad Idea")) %>%
ct(gene, wt = weight_w99, show_na = FALSE) %>%
mutate(rel = "Entire Sample")
aaa2 <- pew %>%
mutate(rel = f_religcat1) %>%
mutate(rel = frcode(rel == 1 & f_born == 1 ~ "Evangelical Prot.",
rel == 1 & f_born == 2 ~ "Non-Evangelical",
rel == 2 ~ "Catholic",
rel == 3 ~ "Unaffiliated",
rel == 4 ~ "All Others")) %>%
mutate(gene = genev2_w99) %>%
mutate(gene = frcode(gene == 1 ~ "Good Idea",
gene == 3 ~ "Not Sure",
gene == 2 ~ "Bad Idea")) %>%
group_by(rel) %>%
ct(gene, wt = weight_w99, show_na = FALSE)
both <- bind_rows(aaa1, aaa2) %>%
filter(rel != 'NA') %>%
mutate(
rel = factor(rel, levels = c("Entire Sample", "Evangelical Prot.", "Non-Evangelical", "Catholic", "Unaffiliated", "All Others"))
)
both %>%
mutate(lab = round(pct, 2)) %>%
ggplot(., aes(x = 1, y = pct, fill = fct_rev(gene))) +
geom_col(color = "black") +
coord_flip() +
facet_wrap(~ rel, ncol =1, strip.position = "left") +
theme_rb() +
scale_fill_manual(values = c("Good Idea" = "#1b9e77", "Not Sure" = "#d95f02", "Bad Idea" = "#7570b3")) +
theme(legend.position = "bottom") +
scale_y_continuous(labels = percent) +
theme(strip.text.y.left = element_text(angle=0)) +
guides(fill = guide_legend(reverse=T, nrow = 1)) +
theme(axis.title.y=element_blank(), axis.text.y=element_blank(), axis.ticks.y=element_blank()) +
theme(panel.grid.minor.y=element_blank(), panel.grid.major.y=element_blank()) +
geom_text(aes(label = ifelse(pct >.05, paste0(lab*100, '%'), '')), position = position_stack(vjust = 0.5), size = 8, family = "font", color = "black") +
# geom_text(aes(label = ifelse(age2 == "18-35", paste0(lab*100, '%'), '')), position = position_stack(vjust = 0.5), size = 4, family = "font", color = "white") +
# geom_text(aes(label = ifelse(age2 == "36-44", paste0(lab*100, '%'), '')), position = position_stack(vjust = 0.5), size = 4, family = "font", color = "white") +
theme(plot.title = element_text(size = 16)) +
theme(strip.text.y.left = element_text(angle = 0, hjust = 1)) +
theme(legend.text = element_text(size = 18)) +
labs(x = "", y = "", title = "Do you think the widespread use of gene editing to greatly reduce a baby's risk\nof developing serious diseases or health conditions over their lifetime would be a...",
caption = "@ryanburge + @religiondata\nData: Pew American Trends Panel 99, November 2021")
save("gene_edit_all.png", wd = 9, ht = 4.5)
aaa1 <- pew %>%
mutate(gene = genev3_w99) %>%
mutate(gene = frcode(gene == 1 ~ "Yes, Definitely",
gene == 2 ~ "Yes, Probably",
gene == 3 ~ "No, Probably Not",
gene == 4 ~ "No, Definitely Not")) %>%
ct(gene, wt = weight_w99, show_na = FALSE) %>%
mutate(rel = "Entire Sample")
aaa2 <- pew %>%
mutate(rel = f_religcat1) %>%
mutate(rel = frcode(rel == 1 & f_born == 1 ~ "Evangelical Prot.",
rel == 1 & f_born == 2 ~ "Non-Evangelical",
rel == 2 ~ "Catholic",
rel == 3 ~ "Unaffiliated",
rel == 4 ~ "All Others")) %>%
mutate(gene = genev3_w99) %>%
mutate(gene = frcode(gene == 1 ~ "Yes, Definitely",
gene == 2 ~ "Yes, Probably",
gene == 3 ~ "No, Probably Not",
gene == 4 ~ "No, Definitely Not")) %>%
group_by(rel) %>%
ct(gene, wt = weight_w99, show_na = FALSE)
both <- bind_rows(aaa1, aaa2) %>%
filter(rel != 'NA') %>%
mutate(
rel = factor(rel, levels = c("Entire Sample", "Evangelical Prot.", "Non-Evangelical", "Catholic", "Unaffiliated", "All Others"))
)
both %>%
mutate(lab = round(pct, 2)) %>%
ggplot(., aes(x = 1, y = pct, fill = fct_rev(gene))) +
geom_col(color = "black") +
coord_flip() +
facet_wrap(~ rel, ncol =1, strip.position = "left") +
theme_rb() +
scale_fill_manual(values = c(
"Yes, Definitely" = "#1b9e77", # Teal green
"Yes, Probably" = "#66c2a5", # Light teal
"No, Probably Not" = "#fc8d62", # Orange
"No, Definitely Not" = "#d53e4f" # Red
)) +
theme(legend.position = "bottom") +
scale_y_continuous(labels = percent) +
theme(strip.text.y.left = element_text(angle=0)) +
guides(fill = guide_legend(reverse=T, nrow = 1)) +
theme(axis.title.y=element_blank(), axis.text.y=element_blank(), axis.ticks.y=element_blank()) +
theme(panel.grid.minor.y=element_blank(), panel.grid.major.y=element_blank()) +
geom_text(aes(label = ifelse(pct >.05, paste0(lab*100, '%'), '')), position = position_stack(vjust = 0.5), size = 8, family = "font", color = "black") +
# geom_text(aes(label = ifelse(age2 == "18-35", paste0(lab*100, '%'), '')), position = position_stack(vjust = 0.5), size = 4, family = "font", color = "white") +
# geom_text(aes(label = ifelse(age2 == "36-44", paste0(lab*100, '%'), '')), position = position_stack(vjust = 0.5), size = 4, family = "font", color = "white") +
theme(plot.title = element_text(size = 16)) +
theme(strip.text.y.left = element_text(angle = 0, hjust = 1)) +
theme(legend.text = element_text(size = 16)) +
labs(x = "", y = "", title = "If gene editing to greatly reduce a baby's risk of developing serious diseases or health\nconditions over their lifetime were available, is this something you would want?",
caption = "@ryanburge + @religiondata\nData: Pew American Trends Panel 99, November 2021")
save("gene_edit_all_your_baby.png", wd = 9, ht = 4.5)
aaa1 <- pew %>%
mutate(better = genev4_b_w99) %>%
mutate(better = case_when(better == 1 | better == 2 ~ 1,
better == 3 | better == 4 ~ 0)) %>%
mutate(rel = f_religcat1) %>%
mutate(rel = frcode(rel == 1 & f_born == 1 ~ "Evangelical Prot.",
rel == 1 & f_born == 2 ~ "Non-Evangelical",
rel == 2 ~ "Catholic",
rel == 3 ~ "Unaffiliated",
rel == 4 ~ "All Others")) %>%
group_by(rel) %>%
mean_ci(better, wt = weight_w99, ci = .84) %>%
mutate(type = "Gene Editing Would Help People Live Longer and Better Lives")
aaa2 <- pew %>%
mutate(better = genev4_c_w99) %>%
mutate(better = case_when(better == 1 | better == 2 ~ 1,
better == 3 | better == 4 ~ 0)) %>%
mutate(rel = f_religcat1) %>%
mutate(rel = frcode(rel == 1 & f_born == 1 ~ "Evangelical Prot.",
rel == 1 & f_born == 2 ~ "Non-Evangelical",
rel == 2 ~ "Catholic",
rel == 3 ~ "Unaffiliated",
rel == 4 ~ "All Others")) %>%
group_by(rel) %>%
mean_ci(better, wt = weight_w99, ci = .84) %>%
mutate(type = "Gene Editing Would Lead to Medical Advances for Society")
aaa3 <- pew %>%
mutate(better = genev4_d_w99) %>%
mutate(better = case_when(better == 1 | better == 2 ~ 1,
better == 3 | better == 4 ~ 0)) %>%
mutate(rel = f_religcat1) %>%
mutate(rel = frcode(rel == 1 & f_born == 1 ~ "Evangelical Prot.",
rel == 1 & f_born == 2 ~ "Non-Evangelical",
rel == 2 ~ "Catholic",
rel == 3 ~ "Unaffiliated",
rel == 4 ~ "All Others")) %>%
group_by(rel) %>%
mean_ci(better, wt = weight_w99, ci = .84) %>%
mutate(type = "Gene Editing Would Would Go Too Far in Eliminating Natural Differences")
all <- bind_rows(aaa1, aaa2, aaa3) %>% filter(rel != "NA")
all %>%
ggplot(., aes(x = fct_rev(rel), y = mean, fill = rel)) +
geom_col(color = "black") +
theme_rb() +
coord_flip() +
error_bar() +
y_pct() +
scale_fill_manual(values = c(
"Evangelical Prot." = "#1b9e77", # Teal
"Non-Evangelical" = "#7570b3", # Purple
"Catholic" = "#d95f02", # Orange
"Unaffiliated" = "#e7298a", # Pink
"All Others" = "#66a61e" # Green
)) +
lab_bar(above = FALSE, type = mean, pos = .035, sz = 7) +
facet_wrap(~ type, ncol = 1) +
labs(x = "", y = "", title = "What Are Some Possible Implications of Gene Editing?",
caption = "@ryanburge + @religiondata\nData: Pew American Trends Panel 99, November 2021")
save("gene_editing_implications.png", ht = 8, wd = 8)
library(dplyr)
library(broom)
library(jtools) # for plot_coefs
library(ggplot2)
pew_clean <- pew %>%
mutate(
gene = case_when(genev3_w99 == 4 ~ 1,
genev3_w99 %in% 1:3 ~ 0),
rel = frcode(
f_religcat1 == 1 & f_born == 1 ~ "Evangelical Prot.",
f_religcat1 == 1 & f_born == 2 ~ "Non-Evangelical",
f_religcat1 == 2 ~ "Catholic"
),
attend = 7 - f_attend,
republican = if_else(i_partyid == 1, 1, 0),
white = if_else(i_race == 1, 1, 0),
male = if_else(i_gender == 1, 1, 0),
age = f_agecat,
educ = f_educcat2
) %>%
filter(!is.na(rel), !is.na(gene), !is.na(attend), !is.na(republican),
!is.na(white), !is.na(male), !is.na(age), !is.na(educ))
mod_evangelical <- glm(gene ~ attend + republican + white + male + age + educ,
data = filter(pew_clean, rel == "Evangelical Prot."),
family = binomial)
mod_nonevan <- glm(gene ~ attend + republican + white + male + age + educ,
data = filter(pew_clean, rel == "Non-Evangelical"),
family = binomial)
mod_catholic <- glm(gene ~ attend + republican + white + male + age + educ,
data = filter(pew_clean, rel == "Catholic"),
family = binomial)
coef_names <- c("White" = "white",
"Education" = "educ",
"Age" = "age",
"Male" = "male",
"Republican" = "republican",
"No Religion" = "none",
"Attendance" = "attend")
library(jtools)
plot_coefs(mod_evangelical, mod_nonevan, mod_catholic,
model.names = c("Evangelical", "Non-Evangelical", "Catholic"),
include = ".*", # show all terms
scale = TRUE,
coefs = coef_names) +
labs(title = "Predicting What Factors Lead to a Complete Refusal to Gene Editing for Serious Disease",
x = "Log-Odds (Standardized)",
y = NULL) +
theme_rb() +
add_text(x = .5, y = 4.5, word = "Definitely Wouldn't Gene Edit", sz = 7) +
theme(legend.position = c(0.25, 0.85), # top right corner, inside plot
legend.justification = c("right", "top"),
legend.background = element_rect(fill = "white", color = "black"))
save("regression_gene_editing.png")
gg <- pew %>%
mutate(rel = f_religcat1) %>%
mutate(rel = frcode(rel == 1 & f_born == 1 ~ "Evangelical Prot.",
rel == 1 & f_born == 2 ~ "Non-Evangelical",
rel == 2 ~ "Catholic",
rel == 3 ~ "Unaffiliated",
rel == 4 ~ "All Others")) %>%
mutate(age = frcode(f_agecat == 1 ~ "18-29",
f_agecat == 2 ~ "30-49",
f_agecat == 3 ~ "50-64",
f_agecat == 4 ~ "65+")) %>%
mutate(gene = case_when(genev3_w99 == 4 ~ 1,
genev3_w99 %in% 1:3 ~ 0)) %>%
group_by(rel, age) %>%
mean_ci(gene, wt = weight_w99, ci = .84) %>% filter(age != "NA") %>% filter(rel != "NA")
gg %>%
ggplot(., aes(x = age, y = mean, fill = rel)) +
geom_col(color = "black") +
facet_wrap(~ rel) +
scale_fill_manual(values = c(
"Evangelical Prot." = "#1b9e77", # Teal
"Non-Evangelical" = "#7570b3", # Purple
"Catholic" = "#d95f02", # Orange
"Unaffiliated" = "#e7298a", # Pink
"All Others" = "#66a61e" # Green
)) +
theme_rb() +
error_bar() +
y_pct() +
lab_bar_white(above = FALSE, type = mean, pos = .03, sz = 6) +
labs(x = "Age of Respondent", y = "", title = "Share Who Would Definitely Not Use Gene Editing to Reduce Risk\nof Baby Developing a Serious Disease",
caption = "@ryanburge + @religiondata\nData: Pew American Trends Panel 99, November 2021")
save("age_gene_editing.png", ht = 8, wd = 7)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment