Goal

The objective of this memo is to present some analysis to determine whether controlling for pre-survey outcomes increases precision of treatment effects (TE) estimates of the IAM experiment (see Wiki; paper).

Takeaways

Main takeaways

  1. Wide vs. Panel

Misinformation and Non-misinformation sharing rates:

  1. Treatment effects estimates from Logit vs. Linear models


Secondary takeaways

Linear model:

Logistic model:


Other takeaways

Experimental Design

The goal of this experiment is to study the effect of different text message courses on misinformation sharing and discernment. The figure below diagrams the experimental design. We recruited participants through Facebook ads to complete a five-day text message course, plus a pre- and post-survey, for a mobile airtime payment. Participants who clicked an ad were directed to the pre-survey on Qualtrics, where they were first randomized on whether they would see an accuracy nudge in the pre- and post-survey. Conditional on completing the pre-survey, participants were randomized into one of the text message course interventions and enrolled in the course. Participants in all course interventions, except the No-course baseline, received one text message a day for five days starting on the day they completed the pre-survey. Participants in the No-course baseline received the Combo course after the post-survey to ensure we fulfilled our recruitment promise of a text message course. On the last day of the course, participants received a link to complete the post-survey on Qualtrics. Participants who completed the post-survey were paid KSH 500 (about $4 in U.S. dollars) in mobile airtime. Seven to eleven weeks later, participants who completed the post-survey were randomized on whether they would see a prime in the text message recruiting them to a follow-up survey. Participants who completed the follow-up survey were paid KSH 350 (about $3 in U.S. dollars).

knitr::include_graphics("figures/Experimental Design.png")
Experimental Design

Experimental Design


The pre- and post-surveys each contained 10 posts:

These posts were created by taking 15 facts/domains, then creating a non-misinfo version and 3 misinfo versions (emotions, reasoning, combo), for a total of 60 posts (plus 2 attention check posts). Participants saw each of the 15 facts at least once.

Whichever 3 facts/domains participants saw in the form of non-misinfo in the pre-survey, they saw in the form of misinfo in the post-survey, so these 3 facts/domains were repeated. Which facts/domains were repeated vary by participant.

For each posts, participants were asked 2 questions:

Data

In this script, we use one datasets.

intermediate_data_long_treatments.csv: all data at the user–post level. Includes treatment conditions, covariates, and individual-aggregated outcomes. Sample of 8,684 participants who completed the pre- and post-surveys.

For more information about how these datasets are generated and a data dictionary, see memo.

Sample

This script primarily uses the sample of 8,684 participants who completed the post-survey.

For analyses involving the outcome referred to as the “Primary Misinfo Sharing Rate,” we drop participants who did not share any non-misinfo posts in the pre-survey, leaving a sample of 7,688 participants who completed the post-survey and intended to share at least 1 non-misinfo post in the pre-survey.

Outcomes and Covariates

All Outcomes

Research Question: Do the treatment interventions… Outcome Measures Estimands Notes
Sharing Outcomes
change misinfo sharing? primary misinfo sharing rate See equation below. Defined only in post.
count of misinfo posts shared \(Y^M\) \(\frac{E[Y^{M, post}(1)]}{6} - \frac{E[Y^{M, post}(0)]}{6}\), \((\frac{E[Y^{M, post}(1)]}{6} - \frac{E[Y^{M, pre}(1)]}{6}) - (\frac{E[Y^{M, post}(0)]}{6} - \frac{E[Y^{M, pre}(0)]}{6})\) post and post-pre misinfo sharing rate
change non-misinfo sharing? count of non-misinfo posts shared \(Y^N\) \(\frac{E[Y^{N, post}(1)]}{3} - \frac{E[Y^{N, post}(0)]}{3}\), \((\frac{E[Y^{N, post}(1)]}{6} - \frac{E[Y^{N, pre}(1)]}{6}) - (\frac{E[Y^{N, post}(0)]}{6} - \frac{E[Y^{N, pre}(0)]}{6})\) post and post-pre non-misinfo sharing rate
change sharing discernment? count of misinfo posts shared \(Y^M\), count of non-misinfo posts shared \(Y^N\) \((\frac{E[Y^{N, post}(1)]}{3} - \frac{E[Y^{M, post}(1)]}{6} ) - (\frac{E[Y^{N, post}(0)]}{3} - \frac{E[Y^{M, post}(0)]}{6})\) post sharing discernment
Accuracy Outcomes
change accuracy scoring of misinfo posts? total score on misinfo posts \(A^{M_1}\) \(\frac{E[A^{M_1, post}(1)]}{6} - \frac{E[A^{M_1, post}(0)]}{6}\), \((\frac{E[A^{M_1, post}(1)]}{6} - \frac{E[A^{M_1, pre}(1)]}{6}) - (\frac{E[A^{M_1, post}(0)]}{6} - \frac{E[A^{M_1, pre}(0)]}{6})\) post and post-pre misinfo accuracy score
count of misinfo posts with accuracy score > 0 \(A^{M_2}\) \(\frac{E[A^{M_2, post}(1)]}{6} - \frac{E[A^{M_2, post}(0)]}{6}\), \((\frac{E[A^{M_2, post}(1)]}{6} - \frac{E[A^{M_2, pre}(1)]}{6}) - (\frac{E[A^{M_2, post}(0)]}{6} - \frac{E[A^{M_2, pre}(0)]}{6})\) post and post-pre misinfo binarized accuracy score
change accuracy scoring of non-misinfo posts? total score on non-misinfo posts \(A^{N_1}\) \(\frac{E[A^{N_1, post}(1)]}{3} - \frac{E[A^{N_1, post}(0)]}{3}\), \((\frac{E[A^{N_1, post}(1)]}{6} - \frac{E[A^{N_1, pre}(1)]}{6}) - (\frac{E[A^{N_1, post}(0)]}{6} - \frac{E[A^{N_1, pre}(0)]}{6})\) post and post-pre non-misinfo accuracy score
count of non-misinfo posts with accuracy score > 0 \(A^{N_2}\) \(\frac{E[A^{N_2, post}(1)]}{3} - \frac{E[A^{N_2, post}(0)]}{3}\), \((\frac{E[A^{N_2, post}(1)]}{6} - \frac{E[A^{N_2, pre}(1)]}{6}) - (\frac{E[A^{N_2, post}(0)]}{6} - \frac{E[A^{N_2, pre}(0)]}{6})\) post and post-pre non-misinfo binarized accuracy score
change accuracy discernment? total score on misinfo posts \(A^M\), total score on non-misinfo posts \(A^N\) \((\frac{E[A^{N, post}(1)]}{3} - \frac{E[A^{M, post}(1)]}{6} ) - (\frac{E[A^{N, post}(0)]}{3} - \frac{E[A^{M, post}(0)]}{6})\) post accuracy discernment

\[\textit{Misinfo Sharing rate}_i = \frac{\sum^3_{j=1}[S^{M,post}_i(j)|S^{N,pre}_i(j) = 1]}{\sum^{3}_{j=1}S^{N,pre}_i(j)}\]

All Covariates

Demographics

covariates_binary_fancy = c("Man",
                            "High school or less",
                            "Some college",
                            "Bachelor\'s degree",
                            "Graduate degree",
                            "Married",
                            "Unemployed",
                            "Employed",
                            "Student",
                            "Mostly urban","Suburban","Mostly rural",
                            "Christian",
                            "Attends religious services",
                            "Uses social media",
                            "Social media share 0-20%","Social media share 20-40%",
                            "Social media share 40-60%","Social media share 60-80%",
                            "Social media share 80-100%","Passed att. check Pre")

covariates_continuous_fancy = c("Age","Hours per day spent in social media")

covariates_all_fancy = c("Age",covariates_binary_fancy[!endsWith(covariates_binary_fancy,"%")],"Hours per day spent in social media",covariates_binary_fancy[endsWith(covariates_binary_fancy,"%")])
#,"Any post sharing rate at pre-treatment","Misinformation sharing rate at pre-treatment","Non-Misinformation sharing rate at pre-treatment")


covariates_description = matrix(NA,23,2)
covariates_description[,1] = covariates_all_fancy
covariates_description[,1][19:23] = c("Social media share 0-20%","Social media share 20-40%","Social media share 40-60%","Social media share 60-80%","Social media share 80-100%")
covariates_description[,2] = c("Integer denoting age of participants",
                               "Complement to 'woman' and 'other'",
                               "including 'Less than a high school diploma' and 'High school degree or equivalent' (reference)","including 'Some college, no degree' and 'Associate degree'","Bachelor’s degree","including 'Master’s degree' and 'Doctorate or professional degree'",
                               "Complement to 'Single,' 'Widowed,' 'Divorced,' and 'Separated'",
                               "including 'Employed full time,' 'Employed part time,' and 'Self-employed'","including 'Unemployed and currently looking for work,' 'Unemployed not currently looking for work,' 'Retired,' 'Homemaker,' and 'Unable to work'","Student (reference)",
                               "Live in mostly urban area","Live in suburban area","Live in mostly rural area (reference)",
                               "Complement to 'None,' 'Hinduism,' 'Muslim,' 'Traditionalist,' and 'Other'","Frequency of attending religious services including 'Less than once a month,' 'One to three times per month,' 'Once a week,' 'More than once a week but less than daily,' and 'Daily'; Complement to 'Never' (reference)","1 if 'Yes' and 0 if 'No' (reference)",
                               "1 if the user passed the attention check and 0 otherwise",
                               "Integer denoting how many hours are spent on average each day on social media",
                               "Proportion of the content the participant sees on social media that they choose to share is between 0 and 20% (reference)","Proportion of the content the participant sees on social media that they choose to share is between 20 and 40%","Proportion of the content the participant sees on social media that they choose to share is between 40 and 60%","Proportion of the content the participant sees on social media that they choose to share is between 60 and 80%","Proportion of the content the participant sees on social media that they choose to share is between 80 and 100%")
                               
#,"Proportion of all posts shared at the pre-treatment survey","Proportion of misinfo posts shared at the pre-treatment survey","Proportion of non-misinfo posts shared at the pre-treatment survey")

knitr::kable(covariates_description, col.names = c("Covariate", "Description"),
             caption = "Demographics Definitions")
Demographics Definitions
Covariate Description
Age Integer denoting age of participants
Man Complement to ‘woman’ and ‘other’
High school or less including ‘Less than a high school diploma’ and ‘High school degree or equivalent’ (reference)
Some college including ‘Some college, no degree’ and ‘Associate degree’
Bachelor’s degree Bachelor’s degree
Graduate degree including ‘Master’s degree’ and ‘Doctorate or professional degree’
Married Complement to ‘Single,’ ‘Widowed,’ ‘Divorced,’ and ‘Separated’
Unemployed including ‘Employed full time,’ ‘Employed part time,’ and ‘Self-employed’
Employed including ‘Unemployed and currently looking for work,’ ‘Unemployed not currently looking for work,’ ‘Retired,’ ‘Homemaker,’ and ‘Unable to work’
Student Student (reference)
Mostly urban Live in mostly urban area
Suburban Live in suburban area
Mostly rural Live in mostly rural area (reference)
Christian Complement to ‘None,’ ‘Hinduism,’ ‘Muslim,’ ‘Traditionalist,’ and ‘Other’
Attends religious services Frequency of attending religious services including ‘Less than once a month,’ ‘One to three times per month,’ ‘Once a week,’ ‘More than once a week but less than daily,’ and ‘Daily’; Complement to ‘Never’ (reference)
Uses social media 1 if ‘Yes’ and 0 if ‘No’ (reference)
Passed att. check Pre 1 if the user passed the attention check and 0 otherwise
Hours per day spent in social media Integer denoting how many hours are spent on average each day on social media
Social media share 0-20% Proportion of the content the participant sees on social media that they choose to share is between 0 and 20% (reference)
Social media share 20-40% Proportion of the content the participant sees on social media that they choose to share is between 20 and 40%
Social media share 40-60% Proportion of the content the participant sees on social media that they choose to share is between 40 and 60%
Social media share 60-80% Proportion of the content the participant sees on social media that they choose to share is between 60 and 80%
Social media share 80-100% Proportion of the content the participant sees on social media that they choose to share is between 80 and 100%

Pre-treatment variables

Description Variable Construction
Pre misinfo sharing rate \(\frac{E[Y^{M, pre}]}{6}\)
Pre non-misinfo sharing rate \(\frac{E[Y^{N, pre}]}{3}\)
Pre sharing discernment \(\frac{E[Y^{N, pre}(1)]}{3} - \frac{E[Y^{M, pre}(1)]}{6}\)
Pre misinfo accuracy score \(\frac{E[A^{M, pre}]}{6}\)
Pre non-misinfo accuracy score \(\frac{E[A^{N, pre}]}{3}\)
Pre accuracy discernment \(\frac{E[A^{N, pre}(1)]}{3} - \frac{E[A^{M, pre}(1)]}{6}\)
Pre attention check passing \(\mathbb{I}[\text{passed attention check}]\)


Setup

Load data

rm(list = ls())

if (file.exists("/home/users/jreg")) {
  long <- read.csv("../panel/intermediate_data_long_treatments.csv") %>% filter(pre_post != "followup")
} else {
  long <- read.csv("../../main_analysis/intermediate_outcomes/intermediate_data_long_treatments.csv") %>% filter(pre_post != "followup")}

# report data as panel
panel <- pdata.frame(long, index = c('user'))
# Define post
panel <- panel %>% mutate(post = ifelse(pre_post == "post",1, ifelse(pre_post == "pre",0,NA)))
panel$treatment <- factor(panel$treatment, levels = c('Facts Baseline','No-course Baseline','Emotions','Reasoning','Combo'))
# Add post-id
panel <- panel %>% mutate(post_id = as.integer(factor(interaction(fact, type))))

rm(long)

Standard errors

robust_se <- function(model) {
  sqrt(diag(vcovHC(model, type = "HC1")))
}
cluster_se <- function(model, cluster_var) {
  cluster_var <- as.factor(cluster_var)
  vcov_cluster <- vcovHC(model, type = "HC1", cluster = cluster_var)
  se_cluster <- sqrt(diag(vcov_cluster))
  return(se_cluster)
}
se_cont <- function(x, na.rm=FALSE) {
  if (na.rm) x <- na.omit(x)
  sqrt(var(x)/length(x))
  }

Remove intercept

remove_intercept <- function(model) {
  coef <- coef(model)
  se <- sqrt(diag(vcov(model)))
  names(coef) <- names(se) <- setdiff(names(coef), "(Intercept)")
  texreg::createTexreg(coef = coef, se = se, gof = numeric(), gof.names = NULL, gof.decimal = NULL)
}

t-stat extraction function

extract_tstats <- function(model_list) {
  tstats_list <- lapply(model_list, function(model) {
    summary_model <- summary(model)
    tstats <- summary_model$coefficients[, "t value"]
    return(tstats)
  })
  return(tstats_list)
}

Multicolumn header function

create_multicolumn_headers <- function(headers,ncols) {
  modified_headers <- c("<td colspan='1' style='text-align:center;'></td>") # first column, which is not multicolumn
  # Loop through each header and modify it for multicolumn
  for (header in headers) {
    modified_header <- sprintf(paste0("<td colspan='",ncols,"' style='text-align:center;'>%s</td>"), header)
    modified_headers <- c(modified_headers, modified_header)
  }
  # Add an empty header for the last column if needed
  if (length(headers) * 2 + 1 < length(modified_headers)) {
    modified_headers <- c(modified_headers, "<td colspan='1' style='text-align:center;'></td>")
  }
  modified_headers <- paste0("<tr>",paste(modified_headers, collapse = ""),"</tr>")
  return(modified_headers)
}

create_multicolumn_headers <- function(headers, ncols) {
  modified_headers <- c()  # Initialize an empty vector to store headers
  # Loop through each header and modify it for multicolumn
  for (header in headers) {
    modified_header <- sprintf("<td colspan='%d' style='text-align:center;'>%s</td>", ncols, header)
    modified_headers <- c(modified_headers, modified_header)
  }
  return(modified_headers)
}

Define set of covariates

# Define covariates
# sharing at pre
panel$share_pre_cov <- panel$share_pre
panel$misinfo_pre_cov <- panel$misinfo_pre
panel$base_rate_pre_cov <- panel$base_rate_pre

# tactics 
# Base posts already included (base_rate_pre)
combo_pre <- aggregate(share ~ user, data = panel %>% filter(pre_post == "pre" & type == "Combo posts"), mean)
panel <- panel %>% left_join(combo_pre %>% rename(combo_pre = share), 
                             by = "user", suffix = c("",""))

emotions_pre <- aggregate(share ~ user, data = panel %>% filter(pre_post == "pre" & type == "Emotions posts"), mean)
panel <- panel %>% left_join(emotions_pre %>% rename(emotions_pre = share), 
                             by = "user", suffix = c("",""))

reasoning_pre <- aggregate(share ~ user, data = panel %>% filter(pre_post == "pre" & type == "Reasoning posts"), mean)
panel <- panel %>% left_join(reasoning_pre %>% rename(reasoning_pre = share), 
                             by = "user", suffix = c("",""))


# covariates
covariates <- c("age","gender_Man", "education_High_school_or_less",
                "education_Some_college","education_Bachelor_degree","education_Graduate_degree",
                "marital_Married_or_in_a_domestic_partnership",
                "employment_Unemployed","employment_Employed","employment_Student",
                "location_Mostly_urban","location_Suburban","location_Mostly_rural",
                "religion_Christian","religiosity_Attends",
                "social_media_bin_Yes","social_media_hours",
                "social_media_share_80_100",
                "social_media_share_60_80",
                "social_media_share_40_60",
                "social_media_share_20_40",
                "social_media_share_0_20",
                "att_check_pre")

covariates_sharing <- c("misinfo_pre","base_rate_pre")
covariates_tactic <- c('emotions_pre','reasoning_pre','combo_pre')

# demean
panel <- panel %>%
    mutate(across(.cols = all_of(covariates),
                .fns = ~ scale(., center = TRUE, scale = TRUE),
                .names = "{.col}_cov"))

panel <- panel %>%
  mutate(across(.cols = all_of(covariates_sharing),
                .fns = ~ scale(., center = TRUE, scale = TRUE),
                .names = "{.col}_cov"))

panel <- panel %>%
  mutate(across(.cols = all_of(covariates_tactic),
                .fns = ~ scale(., center = TRUE, scale = TRUE),
                .names = "{.col}_cov"))


# list of covariates
covariates_demeaned <- c("age_cov","gender_Man_cov",
                         #"education_High_school_or_less",
                         "education_Some_college_cov",
                         "education_Bachelor_degree_cov","education_Graduate_degree_cov",
                         "marital_Married_or_in_a_domestic_partnership_cov",
                         "employment_Unemployed_cov","employment_Employed_cov",
                         #"employment_Student",
                         "location_Mostly_urban_cov","location_Suburban_cov",
                         #"location_Mostly_rural",
                         "religion_Christian_cov","religiosity_Attends_cov",
                         "social_media_bin_Yes_cov","social_media_hours_cov",
                         "social_media_share_80_100_cov","social_media_share_60_80_cov",
                         "social_media_share_40_60_cov","social_media_share_20_40_cov",
                         #"social_media_share_0_20",
                         "att_check_pre_cov")

sharing_demeaned <- c("misinfo_pre_cov","base_rate_pre_cov")
tactic_demeaned <- c('emotions_pre_cov','reasoning_pre_cov','combo_pre_cov')

# demographics
demographics_demeaned_treatment <- paste0(covariates_demeaned,'*treatment',collapse = "+")
# pre non-misinfo and pre-misinfo sharing
sharing_demeaned_treatment <- paste0(sharing_demeaned,'*treatment',collapse = "+")
# pre non-misinfo, pre-misinfo sharing and tactic sharing rates
sharing_tactic_demeaned_treatment <- paste0(c(sharing_demeaned,tactic_demeaned),'*treatment',collapse = "+")
# demographics and pre-non-misinfo and pre-misinfo sharing
demographics_sharing_demeaned_treatment <- paste0(c(covariates_demeaned,sharing_demeaned),'*treatment',collapse = "+")
# all
all_covariates_demeaned_treatment <- paste0(c(covariates_demeaned,sharing_demeaned,tactic_demeaned),'*treatment',collapse = "+")

Variable labels

generate_variable_mapping <- function(treatments, post_domains, tactics, covariates) {
  mapping <- list()

  # Basic variables
  basic_vars <- c("post_is_misinfo" = "1[Misinfo]",
                  "post" = "1[Post-treatment]",
                  "post:post_is_misinfo" = "1[Post-treatment] x 1[Misinfo]",
                  "(Intercept)" = "Facts Baseline") # intercept only used as Facts Baseline
  
  # Covariates
  cov_vars <- c("age" = "Age", 
    "gender_Man" = "Man",
    "education_High_school_or_less" = "High school or less",
    "education_Some_college" = "Some college",
    "education_Bachelor_degree" = "Bachelor\'s degree",
    "education_Graduate_degree" = "Graduate degree",
    "marital_Married_or_in_a_domestic_partnership" = "Married",
    "employment_Unemployed" = "Unemployed",
    "employment_Employed" = "Employed",
    "employment_Student" = "Student",
    "location_Mostly_urban" = "Mostly urban",
    "location_Suburban" = "Suburban",
    "location_Mostly_rural" = "Mostly rural",
    "religion_Christian" = "Christian",
    "religiosity_Attends" = "Attends religious services",
    "social_media_bin_Yes" = "Uses social media",
    "social_media_share_0_20" = "Social Media Share: 0-20%",
    "social_media_share_20_40" = "Social Media Share: 20-40%",
    "social_media_share_40_60" = "Social Media Share: 40-60%",
    "social_media_share_60_80" = "Social Media Share: 60-80%",
    "social_media_share_80_100" = "Social Media Share: 80-100%",
    "social_media_hours" = "Hours spent on Social Media",
    "misinfo_pre_cov" = "Avg. Sharing of Misinfo posts at pre-treatment", 
    "base_rate_pre_cov" = "Avg. Sharing of Non-misinfo posts at pre-treatment",
    "att_check_pre" = "Passed attention check at pre-treatment",
    "emotions_pre" = "Emotions posts",
    "reasoning_pre" = "Reasoning posts",
    "combo_pre" = "Combo posts",
    
    "age_cov" = "Age",
    "gender_Man_cov" = "Man",
    "education_High_school_or_less_cov" = "High school or less",
    "education_Some_college_cov" = "Some college",
    "education_Bachelor_degree_cov" = "Bachelor\'s degree",
    "education_Graduate_degree_cov" = "Graduate degree",
    "marital_Married_or_in_a_domestic_partnership_cov" = "Married",
    "employment_Unemployed_cov" = "Unemployed",
    "employment_Employed_cov" = "Employed",
    "employment_Student_cov" = "Student",
    "location_Mostly_urban_cov" = "Mostly urban",
    "location_Suburban_cov" = "Suburban",
    "location_Mostly_rural_cov" = "Mostly rural",
    "religion_Christian_cov" = "Christian",
    "religiosity_Attends_cov" = "Attends religious services",
    "social_media_bin_Yes_cov" = "Uses social media",
    "social_media_share_0_20_cov" = "Social Media Share: 0-20%",
    "social_media_share_20_40_cov" = "Social Media Share: 20-40%",
    "social_media_share_40_60_cov" = "Social Media Share: 40-60%",
    "social_media_share_60_80_cov" = "Social Media Share: 60-80%",
    "social_media_share_80_100_cov" = "Social Media Share: 80-100%",
    "social_media_hours_cov" = "Hours spent on Social Media",
    "misinfo_pre_cov" = "Avg. Sharing of Misinfo posts at pre-treatment",
    "base_rate_pre_cov" = "Avg. Sharing of Non-misinfo posts at pre-treatment",
    "att_check_pre_cov" = "Passed attention check at pre-treatment",
    "emotions_pre_cov" = "Emotions posts",
    "reasoning_pre_cov" = "Reasoning posts",
    "combo_pre_cov" = "Combo posts")
  
  # post characteristics
  posts_vars <- c(
    "picture" = "1[Post has a picture]",
    "exclamation" = "1[Post includes exclamation(s) mark]",
    "hashtag" = "1[Post includes hashtag(s)]",
    "url" = "1[Post includes url(s)]",
    "tags" = "1[Post includes tag(s)]",
    "caps" = "1[Post includes word(s) in capital letters]",
    "emojis" = "1[Post includes emoji(s)]",
    "oneself" = "1[Post is written in first person]",
    "insult" = "1[Post includes an insult]",
    "references" = "1[Post makes a reference to an external source/data]",
    "statistic" = "1[Post references a statistic]",
    "gender_man" = "1[Post author is a man]",
    "avatar_human" = "1[Post author's avatar is a human]",
    "num_exclamation" = "Number of exclamation marks",
    "num_hashtag" = "Number of hashtags",
    "num_emojis" = "Number of emojis",
    "length_words" = "Number of words in post",
    "length_characters" = "Number of characters in post"
  )
  
  # Manipulation tactics:
  manipulation_vars = c("factor(type)Combo posts" = "1[Combo manipulation tactic]",
                        "factor(type)Emotions posts" = "1[Emotions manipulation tactic]",
                        "factor(type)Reasoning posts" = "1[Reasoning manipulation tactic]",
                        "factor(type)Base posts" = "1[Non-misinfo tactic]")

  # Treatment variables
  for (treatment in treatments) {
    mapping[paste0("treatment", treatment)] <- treatment
    mapping[paste0("factor(treatment)", treatment)] <- treatment
    
    mapping[paste0("treatment", treatment, ":post")] <- paste(treatment, "x 1[Post-treatment]")
    mapping[paste0("factor(treatment)", treatment, ":post")] <- paste(treatment, "x 1[Post-treatment]")
    
    mapping[paste0("treatment", treatment,":post_is_misinfo")] <- paste(treatment, "x 1[Misinfo]")
    mapping[paste0("post_is_misinfo:treatment", treatment)] <- paste(treatment, "x 1[Misinfo]")
    
    mapping[paste0("post_is_misinfo:treatment", treatment, ":post")] <- paste(treatment, "x 1[Misinfo] x 1[Post-treatment]")
    
    mapping[paste0("treatment", treatment, ":post:post_is_misinfo")] <- paste(treatment, "x 1[Post-treatment] x 1[Misinfo]")
  }

  # Post domain variables
  for (i in 1:length(post_domains)) {
    domain <- post_domains[i]
    mapping[paste0("factor(fact)", i)] <- paste("Post domain", i)
    
    mapping[paste0("factor(fact)", i, ":post")] <- paste("Post domain", i, "x 1[Post-treatment]")
    mapping[paste0("post:factor(fact)", i)] <- paste("Post domain", i, "x 1[Post-treatment]")
    
    mapping[paste0("post_is_misinfo:factor(fact)", i)] <- paste("Post domain", i, "x 1[Misinfo]")
    
    mapping[paste0("factor(fact)", i, ":factor(post)1")] <- paste("Post domain", i, "x 1[Post-treatment]")

    mapping[paste0("post:post_is_misinfo:factor(fact)", i)] <- paste("Post domain", i, "x 1[Post-treatment] x 1[Misinfo]")
    
    
    # Interaction with treatments
    for (treatment in treatments) {
      mapping[paste0("factor(fact)", i, ":treatment", treatment)] <- paste("Post domain", i, "x", treatment)
      mapping[paste0("treatment", treatment, ":factor(fact)", i)] <- paste("Post domain", i, "x", treatment)
      mapping[paste0("factor(fact)", i, ":factor(treatment)", treatment)] <- paste("Post domain", i, "x", treatment)
      
      mapping[paste0("factor(fact)", i, ":treatment", treatment, ":post")] <- paste("Post domain", i, "x", treatment, "x 1[Post-treatment]")
      mapping[paste0("factor(fact)", i, ":factor(treatment)", treatment, ":factor(post)1")] <- paste("Post domain", i, "x", treatment, "x 1[Post-treatment]")
      mapping[paste0("treatment", treatment, ":post:factor(fact)", i)] <- paste("Post domain", i, "x", treatment, "x 1[Post-treatment]")
      
      mapping[paste0("treatment", treatment, ":post_is_misinfo:factor(fact)", i)] <- paste("Post domain", i, "x", treatment, "x 1[Misinfo]")
      
      mapping[paste0("treatment", treatment, ":post:post_is_misinfo:factor(fact)", i)] <- paste("Post domain", i, "x", treatment, "x 1[Post-treatment] x 1[Misinfo]")
    }
  
    
    for (tactic in tactics) {
      
      mapping[paste0("factor(fact)", i, ":factor(type)", tactic)] <- paste("Post domain", i, "x", manipulation_vars[tactic])
      mapping[paste0("factor(fact)", i, ":factor(type)", tactic)] <- paste("Post domain", i, "x", manipulation_vars[paste0("factor(type)",tactic)])
    }
    
  }
  
  
  # Post ID
  for (i in 1:length(post_ids)) {
    mapping[paste0("factor\\\\(post\\\\_id\\\\)", i)] <- paste("Post", i,"indicator") # not working
  }
  post_id_vars <- c(
    "factor(post_id)1" = "Post 1 indicator",
    "factor(post_id)2" = "Post 2 indicator",
    "factor(post_id)3" = "Post 3 indicator",
    "factor(post_id)4" = "Post 4 indicator",
    "factor(post_id)5" = "Post 5 indicator",
    "factor(post_id)6" = "Post 6 indicator",
    "factor(post_id)7" = "Post 7 indicator",
    "factor(post_id)8" = "Post 8 indicator",
    "factor(post_id)9" = "Post 9 indicator",
    "factor(post_id)10" = "Post 10 indicator",

    "factor(post_id)11" = "Post 11 indicator",
    "factor(post_id)12" = "Post 12 indicator",
    "factor(post_id)13" = "Post 13 indicator",
    "factor(post_id)14" = "Post 14 indicator",
    "factor(post_id)15" = "Post 15 indicator",
    "factor(post_id)16" = "Post 16 indicator",
    "factor(post_id)17" = "Post 17 indicator",
    "factor(post_id)18" = "Post 18 indicator",
    "factor(post_id)19" = "Post 19 indicator",
    "factor(post_id)20" = "Post 20 indicator",

    "factor(post_id)21" = "Post 21 indicator",
    "factor(post_id)22" = "Post 22 indicator",
    "factor(post_id)23" = "Post 23 indicator",
    "factor(post_id)24" = "Post 24 indicator",
    "factor(post_id)25" = "Post 25 indicator",
    "factor(post_id)26" = "Post 26 indicator",
    "factor(post_id)27" = "Post 27 indicator",
    "factor(post_id)28" = "Post 28 indicator",
    "factor(post_id)29" = "Post 29 indicator",
    "factor(post_id)30" = "Post 30 indicator",

    "factor(post_id)31" = "Post 31 indicator",
    "factor(post_id)32" = "Post 32 indicator",
    "factor(post_id)33" = "Post 33 indicator",
    "factor(post_id)34" = "Post 34 indicator",
    "factor(post_id)35" = "Post 35 indicator",
    "factor(post_id)36" = "Post 36 indicator",
    "factor(post_id)37" = "Post 37 indicator",
    "factor(post_id)38" = "Post 38 indicator",
    "factor(post_id)39" = "Post 39 indicator",
    "factor(post_id)40" = "Post 40 indicator",

    "factor(post_id)41" = "Post 41 indicator",
    "factor(post_id)42" = "Post 42 indicator",
    "factor(post_id)43" = "Post 43 indicator",
    "factor(post_id)44" = "Post 44 indicator",
    "factor(post_id)45" = "Post 45 indicator",
    "factor(post_id)46" = "Post 46 indicator",
    "factor(post_id)47" = "Post 47 indicator",
    "factor(post_id)48" = "Post 48 indicator",
    "factor(post_id)49" = "Post 49 indicator",
    "factor(post_id)50" = "Post 50 indicator",

    "factor(post_id)51" = "Post 51 indicator",
    "factor(post_id)52" = "Post 52 indicator",
    "factor(post_id)53" = "Post 53 indicator",
    "factor(post_id)54" = "Post 54 indicator",
    "factor(post_id)55" = "Post 55 indicator",
    "factor(post_id)56" = "Post 56 indicator",
    "factor(post_id)57" = "Post 57 indicator",
    "factor(post_id)58" = "Post 58 indicator",
    "factor(post_id)59" = "Post 59 indicator",
    "factor(post_id)60" = "Post 60 indicator"
  )
  
  # Covariate variables
  for (covariate in covariates) {
    mapping[paste0("post:", covariate)] <- paste("Post-treatment x", cov_vars[covariate])
    mapping[paste0("post_is_misinfo:", covariate)] <- paste("1[Misinfo] x", cov_vars[covariate])
    mapping[paste0("post:post_is_misinfo:", covariate)] <- paste("Post-treatment x 1[Misinfo] x", cov_vars[covariate])
    
    # Interaction with treatments
    for (treatment in treatments) {
      mapping[paste0("treatment", treatment, ":", covariate)] <- paste(treatment, "x", cov_vars[covariate])
      mapping[paste0("factor(treatment)", treatment, ":", covariate)] <- paste(treatment, "x", cov_vars[covariate])
      mapping[paste0("treatment", treatment, ":post:", covariate)] <- paste(treatment, "x 1[Post] x", cov_vars[covariate])
      mapping[paste0("treatment", treatment, ":post_is_misinfo:", covariate)] <- paste(treatment, "x 1[Misinfo] x", cov_vars[covariate])
      mapping[paste0("treatment", treatment, ":post:post_is_misinfo:", covariate)] <- paste(treatment, "x 1[Post] x 1[Misinfo] x", cov_vars[covariate])
    }
    
    # Interaction with domains
    for (i in 1:length(post_domains)) {
    mapping[paste0("factor(fact)",i,":",covariate)] <- paste("Post domain",i,"x", cov_vars[covariate])  
    mapping[paste0(covariate,":factor(fact)",i)] <- paste("Post domain",i,"x", cov_vars[covariate])  
    }
    
    # Interaction with post
    for (i in 1:length(post_domains)) {
    mapping[paste0("factor(fact)",i,":",covariate)] <- paste("Post domain",i,"x", cov_vars[covariate])  
    mapping[paste0(covariate,":factor(fact)",i)] <- paste("Post domain",i,"x", cov_vars[covariate])  
    }
    
    # Interaction with misinfo
  
  }
  
  # Post attributes
  for (attribute in posts_vars) {
    
    
    
    # Interaction with treatments
    for (treatment in treatments) {
      mapping[paste0("treatment", treatment, ":", attribute)] <- paste(treatment, "x", posts_vars[attribute])
      mapping[paste0("treatment", treatment, ":post:", attribute)] <- paste(treatment, "x 1[Post-treatment] x ", posts_vars[attribute])
      mapping[paste0("treatment", treatment, ":post_is_misinfo:", attribute)] <- paste(treatment, "x 1[Misinfo] x ", posts_vars[attribute])
      mapping[paste0("treatment", treatment, ":post:post_is_misinfo:", attribute)] <- paste(treatment, "x 1[Post-treatment] x 1[Misinfo] x ", posts_vars[attribute])
    }
    
    
    for (i in 1:length(post_domains)) {
      mapping[paste0(attribute,":factor(fact)", i)] <- paste("Post domain", i,posts_vars[attribute])
      mapping[paste0("factor(fact)", i,attribute)] <- paste("Post domain", i,posts_vars[attribute])
      
      mapping[paste0("post:",attribute,":","factor(fact)", i)] <- paste("Post domain", i,"x 1[Post-treatment] x",posts_vars[attribute])
      mapping[paste0("post:factor(fact)",i,":",attribute)] <- paste("Post domain", i,"x 1[Post-treatment] x",posts_vars[attribute])
      
      mapping[paste0("post_is_misinfo:factor(fact)",i,":",attribute)] <- paste("Post domain", i,"x 1[Misinfo] x",posts_vars[attribute])
      
      
      for (treatment in treatments) {
        mapping[paste0("treatment", treatment, ":", attribute,":factor(fact)",i)] <- paste("Post domain", i,"x",treatment,"x",posts_vars[attribute])
        mapping[paste0("treatment", treatment, ":factor(fact)",i,":",attribute)] <- paste("Post domain", i,"x",treatment,"x",posts_vars[attribute])
        
        mapping[paste0("treatment", treatment, ":post:",attribute,":factor(fact)",i)] <- paste("Post domain", i,"x",treatment,"x 1[Post-treatment]",posts_vars[attribute])
        
        mapping[paste0("treatment", treatment, ":post:factor(fact)",i,":",attribute)] <- paste("Post domain", i,"x",treatment,"x 1[Post-treatment]",posts_vars[attribute])
        
        mapping[paste0("treatment", treatment, ":post_is_misinfo:factor(fact)",i,":",attribute)] <- paste("Post domain", i,"x",treatment,"x 1[Misinfo]",posts_vars[attribute])
      }
    }
    
    mapping[paste0("post:", attribute)] <- paste("Post-treatment x", posts_vars[attribute])
    mapping[paste0("post_is_misinfo:", attribute)] <- paste("1[Misinfo] x", posts_vars[attribute])
  }
  
    # random cases not working
    rndm_vars <- c(
      "religiosity_Attends:factor(fact)3" = "Post domain 3 x Religiosity: Attends",
      "religiosity_Attends:factor(fact)4" = "Post domain 4 x Religiosity: Attends",
      "religiosity_Attends:factor(fact)5" = "Post domain 5 x Religiosity: Attends",
      "religiosity_Attends:factor(fact)6" = "Post domain 6 x Religiosity: Attends",
      
      "social_media_share_40_60:factor(fact)10" = "Post domain 10 x Social Media Share: 40-60%",
      "social_media_share_40_60:factor(fact)11" = "Post domain 11 x Social Media Share: 40-60%",
      "social_media_share_40_60:factor(fact)12" = "Post domain 12 x Social Media Share: 40-60%",
      "social_media_share_40_60:factor(fact)13" = "Post domain 13 x Social Media Share: 40-60%",
      
      "factor(post_id)19" = "Post 19 indicator",
      "factor(post_id)20" = "Post 20 indicator",
      "factor(post_id)21" = "Post 21 indicator"
    )

  return(c(mapping,basic_vars,cov_vars,manipulation_vars,post_id_vars,rndm_vars,posts_vars))
}

treatments <- c("No-course Baseline", "Reasoning", "Emotions", "Combo")
tactics <- c("Emotions posts","Combo posts","Reasoning posts","Base posts")
post_domains <- as.numeric(unique(panel$fact))
post_ids <- as.numeric(unique(panel$post_id))
covariates <- c("age_cov", "gender_Man_cov", 
                "education_Some_college_cov", "education_Bachelor_degree_cov", 
                "education_Graduate_degree_cov", "marital_Married_or_in_a_domestic_partnership_cov", 
                "employment_Unemployed_cov", "employment_Employed_cov", "location_Mostly_urban_cov", 
                "location_Suburban_cov", "religion_Christian_cov", "religiosity_Attends_cov", 
                "social_media_bin_Yes_cov", "social_media_hours_cov", "social_media_share_80_100_cov",
                "social_media_share_60_80_cov", "social_media_share_40_60_cov",
                "social_media_share_20_40_cov",
                "misinfo_pre_cov", "base_rate_pre_cov","att_check_pre_cov",
                "emotions_pre_cov","reasoning_pre_cov","combo_pre_cov")

variable_mapping <- generate_variable_mapping(treatments, post_domains, tactics, covariates)
variable_mapping_long <- as.character(variable_mapping)
names(variable_mapping_long) <- names(variable_mapping)
# function to subset model for short tables
subset_model <- function(model, coeffs) {
  new_model <- model
  new_model$coefficients <- na.omit(model$coefficients[names(model$coefficients) %in% coeffs])
  if (length(new_model$coefficients) == 0) {
    new_model$coefficients <- na.omit(model$coefficients[names(model$coefficients[,1]) %in% coeffs])
  }
  # Std. errors
  if (length(new_model$se) > 0) {
  new_model$se <- model$se[names(model$coefficients) %in% coeffs]
  if (length(new_model$se) == 0) {
    new_model$se <- na.omit(model$se[names(model$coefficients[,1]) %in% coeffs])
  }
  }
  return(new_model)
}



Balance tests

The following figures present balance in exposure to each post domain and post ID by treatment arm.

Clicking on the button below “User covariates” displays a section showing figures for balance by user characteristics.

# Plots standardized differences by treatment #
match_plot_cont <- function(data,title,legend_title){
  
    num_grouping <- length(unique(data$grouping)) + 1
    data$grouping <- factor(as.numeric(data$grouping), levels = (1:num_grouping))
    
    colors <- c(RColorBrewer::brewer.pal(12, "Set3"),
            RColorBrewer::brewer.pal(8, "Set2"), 
            RColorBrewer::brewer.pal(9, "Set1"))
    colors <- rep(colors,10) # 290 colors
    color_values <- setNames(colors, 1:length(colors))
    
    shapes <- rep(21:25, length.out = num_grouping)
    shape_values <- setNames(shapes, 1:length(shapes))

    pic <- ggplot(data = data, aes(x = diff, y = factor(covariates, levels = unique(covariates)), group = grouping)) + 
        theme_bw()+
        theme(axis.line.y = element_line(colour="black"),axis.line.x = element_line(colour="black"),
              panel.border = element_blank(),
              panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        legend.title = element_text(face='bold', size=35, hjust=0.5, vjust=0.5),
        legend.position = c(0.95,0.50),legend.justification = c("right", "bottom"),
        legend.key = element_rect(colour = "transparent"),
        legend.box.just = "right", legend.text = element_text(size=30), legend.margin = margin(0, 6, 6, 6),
        legend.box.background = element_rect( fill="transparent", size=1),legend.background = element_blank()) +
        geom_vline(aes(xintercept=-0.1),color="black", linetype="longdash", size=0.75) +
        geom_vline(aes(xintercept=0.1),color="black", linetype="longdash", size=0.75) +
        geom_vline(aes(xintercept=0.25),color="black", linetype="dashed", size=0.5) +
        geom_vline(aes(xintercept=0), color="black", linetype="solid", size=0.5) +
        geom_vline(aes(xintercept=-0.25),color="black", linetype="dashed", size=0.5) +
        geom_vline(aes(xintercept=-0.5),color="black", linetype="dotted", size=0.5) +
        geom_vline(aes(xintercept=0.5),color="black", linetype="dotted", size=0.5) +
        geom_point(aes(color = grouping, fill = grouping, shape = grouping), size = 8) +
      
        scale_x_continuous(breaks = c(-0.5, -0.25, -0.10, 0, 0.10, 0.25, 0.5), 
                           labels = c('-0.50', '-0.25', '-0.10', '0', '0.10', '0.25', '0.50')) +

    
        scale_color_manual(name = paste0("vs Post ",legend_title), values = color_values) +
        scale_fill_manual(name = paste0("vs Post ",legend_title), values = color_values) +
        scale_shape_manual(name = paste0("vs Post ",legend_title), values = shape_values) +
    
      
        labs(y="Variable",x="\nStandardized Difference")+
        theme(axis.text.x = element_text(color = "black", size = 30, angle = 0, hjust = .5, vjust = 0, face = "plain"),
        axis.text.y = element_text(color = "black", size = 30, angle = 0, hjust = 1, vjust = .5, face = "plain",
                                   margin=unit(rep(0.5,4),"cm")),
        axis.title.x = element_text(color = "black", size = 35, angle = 0, hjust = .5, vjust = 0, face = "bold"),
        axis.title.y = element_text(color = "black", size = 35, angle = 90, hjust = .5, vjust = .5, face = "bold"),
        axis.ticks.length.y = unit(-0.25,"cm"), axis.ticks.x=element_blank()) +
        ggtitle(title) +
        theme(plot.title = element_text(face='bold', size=30, hjust=0.5, vjust=0.5)) +
    
        facet_grid(rows = vars(cov_group),
             scales = "free_y", # Let the x axis vary across facets.
             space = "free_y",  # Let the width of facets vary and force all bars to have the same width.
             switch = "y")+
        theme(strip.placement = "outside",    # Place facet labels outside x axis labels.
         strip.background = element_blank(),  # Make facet label background white.
         strip.text.y.left = element_text(size = 30,face = "bold",angle = 0, hjust=0.5),
         axis.title = element_blank(),
              panel.border = element_rect(color = "grey70", fill = NA, size = 2))

pic
}

Post domain

Treatment arms

Balance in exposure to each post domain by treatment arm.

# define binary indicators for facts
panel$fact <- as.factor(factor(panel$fact, levels = (1:length(unique(panel$fact)))))
dummy_vars_domains <- model.matrix(~ fact - 1, data = panel)
data_domains <- as.data.frame(dummy_vars_domains)
data_covs <- cbind(data_covs, data_domains)

# define all_domains for test
all_domains <- c(paste0("fact",(1:length(unique(panel$fact)))))
all_domains_fancy <- c(paste0("Post domain ",(1:length(unique(panel$fact)))))
cov_group <- c("")
knitr::include_graphics("balance_treat_domains.png")


Post ID

Treatment arms

Balance in exposure to each post by treatment arm.

# define binary indicators for facts
panel$post_id <- as.factor(factor(panel$post_id, levels = (1:length(unique(panel$post_id)))))
dummy_vars_post_id <- model.matrix(~ post_id - 1, data = panel)
data_post_id <- as.data.frame(dummy_vars_post_id)
data_covs <- cbind(data_covs, data_post_id)

# define all_post_id for test
all_post_id <- c(paste0("post_id",(1:length(unique(panel$post_id)))))
cov_group <- rep(unique(panel$type),length(unique(data_covs$fact)))
cov_group <- gsub("Base","Non-misinfo",cov_group)
all_post_id_fancy <- rep(unique(panel$type), each = length(unique(data_covs$fact)))
knitr::include_graphics("balance_treat_post_id.png")



Variance decomposition

Within and between participant standard deviation and variance of variable \(\textit{share}_{ipt}\).


Within: standard deviation and variance of \(x_{ip} - \bar{x_i} + \bar{\bar{x}}\)

Between: standard deviation and variance of: \(\bar{x_i}\)

Where \(i\) is the participant, \(p\) is a post, \(\bar{x_i}\) is the between-participant mean, and \(\bar{\bar{x}}\) is the global mean.


Although we present all treatments, the focus should be on No-course Baseline since estimates for users in such treatment arm are not conflated with treatment effects.


Observations:

# data <- filtered_data
# treatment <- t
# period <- p
# share_type <- s

# Function to create a variance summary table
variance_summary_table <- function(data, treatment, period, share_type) {


  # Filter data based on the period and share type
  if (period != "pre and post") {
    data <- data %>% filter(pre_post == period)
  }
  
  if (share_type == "misinfo share") {
    data <- data %>% filter(post_is_misinfo == 1)
  } else if (share_type == "non-misinfo share") {
    data <- data %>% filter(post_is_misinfo == 0)
  }
  
  # Define data as panel
  data <- pdata.frame(data, index = c('user'))
  
  within_sd <- formatC(xtsum::within_sd(data, 'share', 'user'), format = "f", digits = 4)
  within_variance <- formatC(xtsum::within_sd(data, 'share', 'user')^2, format = "f", digits = 4)
  between_sd <- formatC(xtsum::between_sd(data, 'share', 'user'), format = "f", digits = 4)
  between_variance <- formatC(xtsum::between_sd(data, 'share', 'user')^2, format = "f", digits = 4)
  
  summary_table <- data.frame(
    Outcome = share_type,
    Treatment = treatment,
    Period = period,
    Within_user_Standard_Deviation = within_sd,
    Within_user_Variance = within_variance,
    Between_user_Standard_Deviation = between_sd,
    Between_user_Variance = between_variance
  )
  
  return(summary_table)
}

# Initialize an empty list to store the variance summary tables
variance_summary_tables <- list()

treatments <- c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo", "All")
periods <- c("pre", "post", "pre and post")
share_types <- c("share", "misinfo share", "non-misinfo share")

# Loop over each combination of treatment, period, and share type
for (t in treatments) {
  
  # Empty dataframe to store all combinations for the current treatment
  all_combinations <- NULL
  
  for (p in periods) {
    for (s in share_types) {
      if (t != "All") {
        # Filter the data for the current treatment
        filtered_data <- panel %>% filter(treatment == t)
      } else {
        filtered_data <- panel
      }
      
      # Create a variance summary table for the current combination
      variance_summary <- variance_summary_table(filtered_data, t, p, s)
      
      # Store the variance summary table in all_combinations dataframe
      all_combinations <- rbind(all_combinations, variance_summary)
    }
  }
# Store the all_combinations dataframe in the list with treatment name as key
  variance_summary_tables[[t]] <- all_combinations
}

# Initialize an empty list to store tab panels
variance_tab_panels <- list()

# Loop through each key in variance_summary_tables
for (treatment in names(variance_summary_tables)) {
    tab_name <- paste0(treatment)
    tab_content <- DT::datatable(variance_summary_tables[[treatment]], options = list(pageLength = 9), 
                                 rownames = FALSE, colnames = c("Outcome","Treatment","Period",
                                                                "Within-user Std. Dev.", "Within-user Variance",
                                                                "Between-user Std. Dev.", "Between-user Variance"))
    variance_tab_panels[[length(variance_tab_panels) + 1]] <- tabPanel(tab_name, tab_content)
}
# Create the tabset with the variance tab panels
variance_tabset <- tabsetPanel(!!!variance_tab_panels)


# Render the tabset
htmltools::tagList(variance_tabset)

Click here to see variance decomposition by tactic


Observations:

  • Within tactic, the within-user variance becomes lower than the between-user variance.
# Function to create a variance summary table
variance_summary_table <- function(data, treatment, period, share_type) {


  # Filter data based on the period
  if (period != "pre and post") {
    data <- data %>% filter(pre_post == period)
  }
  
  # Filter data based on the type
  if (share_type == "non-misinfo share") {
    data <- data %>% filter(post_is_misinfo == 0)
  } else if (share_type == "misinfo share") {
    data <- data %>% filter(post_is_misinfo == 1)
  } else if (share_type == "Emotions posts") {
    data <- data %>% filter(type == "Emotions posts")
  } else if (share_type == "Reasoning posts") {
    data <- data %>% filter(type == "Reasoning posts")
  } else if (share_type == "Combo posts") {
    data <- data %>% filter(type == "Combo posts")
  }
  
  # Define data as panel
  data <- pdata.frame(data, index = c('user'))
  
  within_sd <- formatC(xtsum::within_sd(data, 'share', 'user'), format = "f", digits = 4)
  within_variance <- formatC(xtsum::within_sd(data, 'share', 'user')^2, format = "f", digits = 4)
  between_sd <- formatC(xtsum::between_sd(data, 'share', 'user'), format = "f", digits = 4)
  between_variance <- formatC(xtsum::between_sd(data, 'share', 'user')^2, format = "f", digits = 4)
  
  summary_table <- data.frame(
    Outcome = share_type,
    Treatment = treatment,
    Period = period,
    Within_user_Standard_Deviation = within_sd,
    Within_user_Variance = within_variance,
    Between_user_Standard_Deviation = between_sd,
    Between_user_Variance = between_variance
  )
  
  return(summary_table)
}

# Initialize an empty list to store the variance summary tables
variance_summary_tables <- list()

treatments <- c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo", "All")
periods <- c("pre", "post", "pre and post")
share_types <- c("share", "misinfo share", "non-misinfo share", "Emotions posts", "Reasoning posts", "Combo posts")
facts <- seq(1:15)

# Loop over each combination of treatment, period, and share type
for (t in treatments) {
  
  # Empty dataframe to store all combinations for the current treatment
  all_combinations <- NULL
  
  for (p in periods) {
      for (s in share_types) {
        
        if (t != "All") {
          # Filter the data for the current treatment
          filtered_data <- panel %>% filter(treatment == t)
        } else {
          filtered_data <- panel
        }
        
        # Create a variance summary table for the current combination
        variance_summary <- variance_summary_table(filtered_data, t, p, s)
        
        # Store the variance summary table in all_combinations dataframe
        all_combinations <- rbind(all_combinations, variance_summary)
      }
    }
# Store the all_combinations dataframe in the list with treatment name as key
  variance_summary_tables[[t]] <- all_combinations
}

# Initialize an empty list to store tab panels
variance_tab_panels <- list()

# Loop through each key in variance_summary_tables
for (treatment in names(variance_summary_tables)) {
    tab_name <- paste0(treatment)
    tab_content <- DT::datatable(variance_summary_tables[[treatment]], options = list(pageLength = 90), 
                                 rownames = FALSE, colnames = c("Outcome","Treatment","Period",
                                                                "Within-user Std. Dev.", "Within-user Variance",
                                                                "Between-user Std. Dev.", "Between-user Variance"))
    variance_tab_panels[[length(variance_tab_panels) + 1]] <- tabPanel(tab_name, tab_content)
}
# Create the tabset with the variance tab panels
variance_tabset <- tabsetPanel(!!!variance_tab_panels)


# Render the tabset
htmltools::tagList(variance_tabset)

Click here to see variance decomposition by post domain


The within-user standard deviation and variance is not shown since:

  1. Participants are only expose to one post of each domain in the pre-treatment period.
  2. The tactic is different for those domains to which participants are exposed twice (once as a misinfo and once as a non-misinfo).


# Function to create a variance summary table
variance_summary_table <- function(data, treatment, period, share_type, facts) {


  # Filter data based on the period
  if (period != "pre and post") {
    data <- data %>% filter(pre_post == period)
  }
  
  # Filter data based on the type
  if (share_type == "non-misinfo share") {
    data <- data %>% filter(post_is_misinfo == 0)
  } else if (share_type == "misinfo share") {
    data <- data %>% filter(post_is_misinfo == 1)
  } else if (share_type == "Emotions posts") {
    data <- data %>% filter(type == "Emotions posts")
  } else if (share_type == "Reasoning posts") {
    data <- data %>% filter(type == "Reasoning posts")
  } else if (share_type == "Combo posts") {
    data <- data %>% filter(type == "Combo posts")
  }
  
  # Filter database on the domain
  data <- data %>% filter(fact == facts)
  
  
  # Define data as panel
  data <- pdata.frame(data, index = c('user'))
  
  within_sd <- formatC(xtsum::within_sd(data, 'share', 'user'), format = "f", digits = 4)
  within_variance <- formatC(xtsum::within_sd(data, 'share', 'user')^2, format = "f", digits = 4)
  between_sd <- formatC(xtsum::between_sd(data, 'share', 'user'), format = "f", digits = 4)
  between_variance <- formatC(xtsum::between_sd(data, 'share', 'user')^2, format = "f", digits = 4)
  
  summary_table <- data.frame(
    Outcome = share_type,
    Treatment = treatment,
    Period = period,
    Fact = facts,
    #Within_user_Standard_Deviation = within_sd,
    #Within_user_Variance = within_variance,
    Between_user_Standard_Deviation = between_sd,
    Between_user_Variance = between_variance
  )
  
  return(summary_table)
}

# Initialize an empty list to store the variance summary tables
variance_summary_tables <- list()

treatments <- c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo", "All")
periods <- c("pre and post")
share_types <- c("share")
facts <- seq(1:15)

# Loop over each combination of treatment, period, and share type
for (t in treatments) {
  
  # Empty dataframe to store all combinations for the current treatment
  all_combinations <- NULL
  
  for (p in periods) {
    for (f in facts) {
      for (s in share_types) {
        
        if (t != "All") {
          # Filter the data for the current treatment
          filtered_data <- panel %>% filter(treatment == t)
        } else {
          filtered_data <- panel
        }
        
        # Create a variance summary table for the current combination
        variance_summary <- variance_summary_table(filtered_data, t, p, s, f)
        
        # Store the variance summary table in all_combinations dataframe
        all_combinations <- rbind(all_combinations, variance_summary)
      }
    }
  }
# Store the all_combinations dataframe in the list with treatment name as key
  variance_summary_tables[[t]] <- all_combinations
}

# Initialize an empty list to store tab panels
variance_tab_panels <- list()

# Loop through each key in variance_summary_tables
for (treatment in names(variance_summary_tables)) {
    tab_name <- paste0(treatment)
    tab_content <- DT::datatable(variance_summary_tables[[treatment]], options = list(pageLength = 15), 
                                 rownames = FALSE, colnames = c("Outcome","Treatment","Period","Post domain",
                                                                #"Within-user Std. Dev.", "Within-user Variance",
                                                                "Between-user Std. Dev.", "Between-user Variance"))
    variance_tab_panels[[length(variance_tab_panels) + 1]] <- tabPanel(tab_name, tab_content)
}
# Create the tabset with the variance tab panels
variance_tabset <- tabsetPanel(!!!variance_tab_panels)


# Render the tabset
htmltools::tagList(variance_tabset)

Click here to see variance decomposition by post domain and tactic


The within-user standard deviation and variance is not shown since:

  1. Participants are only expose to one post of each domain in the pre-treatment period.
  2. The tactic is different for those domains to which participants are exposed twice (once as a misinfo and once as a non-misinfo).
# Function to create a variance summary table
variance_summary_table <- function(data, treatment, period, share_type, facts) {


  # Filter data based on the period
  if (period != "pre and post") {
    data <- data %>% filter(pre_post == period)
  }
  
  # Filter data based on the type
  if (share_type == "non-misinfo share") {
    data <- data %>% filter(post_is_misinfo == 0)
  } else if (share_type == "misinfo share") {
    data <- data %>% filter(post_is_misinfo == 1)
  } else if (share_type == "Emotions posts") {
    data <- data %>% filter(type == "Emotions posts")
  } else if (share_type == "Reasoning posts") {
    data <- data %>% filter(type == "Reasoning posts")
  } else if (share_type == "Combo posts") {
    data <- data %>% filter(type == "Combo posts")
  }
  
  # Filter database on the domain
  data <- data %>% filter(fact == facts)
  
  
  # Define data as panel
  data <- pdata.frame(data, index = c('user'))
  
  within_sd <- formatC(xtsum::within_sd(data, 'share', 'user'), format = "f", digits = 4)
  within_variance <- formatC(xtsum::within_sd(data, 'share', 'user')^2, format = "f", digits = 4)
  between_sd <- formatC(xtsum::between_sd(data, 'share', 'user'), format = "f", digits = 4)
  between_variance <- formatC(xtsum::between_sd(data, 'share', 'user')^2, format = "f", digits = 4)
  
  summary_table <- data.frame(
    Outcome = share_type,
    Treatment = treatment,
    Period = period,
    Fact = facts,
    #Within_user_Standard_Deviation = within_sd,
    #Within_user_Variance = within_variance,
    Between_user_Standard_Deviation = between_sd,
    Between_user_Variance = between_variance
  )
  
  return(summary_table)
}

# Initialize an empty list to store the variance summary tables
variance_summary_tables <- list()

treatments <- c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo", "All")
periods <- c("pre", "post", "pre and post")
share_types <- c("share", "misinfo share", "non-misinfo share", "Emotions posts", "Reasoning posts", "Combo posts")
facts <- seq(1:15)

# Loop over each combination of treatment, period, and share type
for (t in treatments) {
  
  # Empty dataframe to store all combinations for the current treatment
  all_combinations <- NULL
 
  for (f in facts) { 
    for (p in periods) {
      for (s in share_types) {
        
        if (t != "All") {
          # Filter the data for the current treatment
          filtered_data <- panel %>% filter(treatment == t)
        } else {
          filtered_data <- panel
        }
        
        # Create a variance summary table for the current combination
        variance_summary <- variance_summary_table(filtered_data, t, p, s, f)
        
        # Store the variance summary table in all_combinations dataframe
        all_combinations <- rbind(all_combinations, variance_summary)
      }
    }
  }
# Store the all_combinations dataframe in the list with treatment name as key
  variance_summary_tables[[t]] <- all_combinations
}

# Initialize an empty list to store tab panels
variance_tab_panels <- list()

# Loop through each key in variance_summary_tables
for (treatment in names(variance_summary_tables)) {
    tab_name <- paste0(treatment)
    tab_content <- DT::datatable(variance_summary_tables[[treatment]], options = list(pageLength = 18), 
                                 rownames = FALSE, colnames = c("Outcome","Treatment","Period","Post domain",
                                                                #"Within-user Std. Dev.", "Within-user Variance",
                                                                "Between-user Std. Dev.", "Between-user Variance"))
    variance_tab_panels[[length(variance_tab_panels) + 1]] <- tabPanel(tab_name, tab_content)
}
# Create the tabset with the variance tab panels
variance_tabset <- tabsetPanel(!!!variance_tab_panels)


# Render the tabset
htmltools::tagList(variance_tabset)



Variance-covariance

We present a variance-covariance matrix for user’s mean share by:


Pre vs. Post

# Add variance-covariance matrix 

type_post <- c("post_is_misinfo == 1", "post_is_misinfo == 0", "type == 'Emotions posts'", "type == 'Reasoning posts'", "type == 'Combo posts'")

vcov_df_list <- list()

for (t in c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo", "All")) {
  
if (t == "All") {
  treat <- c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo")
} else {
  treat <- t
}
  
# User mean share by pre vs. post
vcov <- panel %>%
  filter(treatment %in% treat) %>%
  filter(pre_post %in% c("pre","post")) %>%
  group_by(user, pre_post) %>%
  select(-post) %>%
  summarise(share = mean(share, na.rm = TRUE)) %>%
  pivot_wider(names_from = pre_post, values_from = share) %>%
  select(pre, post)

# generate dataframe and then print
vcov_df <- data.frame(type = "All", element_1 = "pre", element_2 = "post", 
                      var1 = var(vcov$pre), 
                      var2 = var(vcov$post), 
                      cov = cov(vcov$pre, vcov$post)) %>%
  mutate(across(c(var1, var2, cov), ~ round(., 5))) %>%
  mutate(treatment = t)

for (tp in type_post) {
  
  # User mean share by pre vs. post
  vcov <- panel %>%
    filter(treatment %in% treat) %>%
    filter(pre_post %in% c("pre","post")) %>%
    filter(!!rlang::parse_expr(tp)) %>%
    group_by(user, pre_post) %>%
    select(-post) %>%
    summarise(share = mean(share, na.rm = TRUE)) %>%
    pivot_wider(names_from = pre_post, values_from = share) %>%
    select(pre, post)
  
  # append to vcov_df
  vcov_df <- rbind(vcov_df, data.frame(type = tp, element_1 = "pre", element_2 = "post", 
                                       var1 = var(vcov$pre), 
                                       var2 = var(vcov$post), 
                                       cov = cov(vcov$pre, vcov$post)) %>%
    mutate(across(c(var1, var2, cov), ~ round(., 5))) %>%
    mutate(treatment = t))
  
}

# replace vcov_df$type with actual types
vcov_df$type <- c("All", "Misinfo", "Non-misinfo", "Emotions", "Reasoning", "Combo")

# append to list
vcov_df_list[[t]] <- vcov_df
}


# Print
# knitr::kable(vcov_df, format = "markdown", col.names = c("Type of post", "Element 1", "Element 2", 
#                                                          "Element 1 Variance", "Element 2 Variance", 
#                                                          "Covariance (Element 1, Element 2)"))

# Generate a tabset to print results
variance_tab_panels <- list()

for (t in c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo", "All")) {
    tab_name <- paste0(t)
    tab_content <- DT::datatable(vcov_df_list[[t]] %>% select(-treatment), options = list(pageLength = 6), 
                                 rownames = FALSE, colnames = c("Type of post", "Element 1", "Element 2", 
                                                                "Element 1 Variance", "Element 2 Variance", 
                                                                "Covariance (Element 1, Element 2)"))
    variance_tab_panels[[length(variance_tab_panels) + 1]] <- tabPanel(tab_name, tab_content)
}

variance_tabset <- tabsetPanel(!!!variance_tab_panels)

htmltools::tagList(variance_tabset)

Post Tactics

vcov_df_list <- list()

for (t in c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo", "All")) {
  
if (t == "All") {
  treat <- c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo")
} else {
  treat <- t
}
  
# Post type
vcov <- panel %>%
  filter(treatment %in% treat) %>%
  filter(type %in% unique(panel$type)) %>%
  group_by(user, type) %>%
  summarise(share = mean(share, na.rm = TRUE)) %>%
  pivot_wider(names_from = type, values_from = share) %>%
  select(`Base posts`,`Combo posts`,`Emotions posts`,`Reasoning posts`)

# append to vcov_df 
vcov_df <- data.frame(type = c("Emotions vs. Non-misinfo", "Emotions vs. Reasoning", "Emotions vs. Combo", 
                                     "Non-misinfo vs. Reasoning", "Non-misinfo vs. Combo", "Reasoning vs. Combo"),
                                     element_1 = c("Emotions", "Emotions", "Emotions", "Non-misinfo", "Non-misinfo", "Reasoning"),
                                     element_2 = c("Non-misinfo", "Reasoning", "Combo", "Reasoning", "Combo", "Combo"),
                                     var_1 = c(var(vcov$`Emotions posts`),var(vcov$`Emotions posts`),var(vcov$`Emotions posts`), 
                                             var(vcov$`Base posts`), var(vcov$`Base posts`), var(vcov$`Reasoning posts`)),
                                     var_2 = c(var(vcov$`Base posts`),var(vcov$`Reasoning posts`),var(vcov$`Combo posts`),
                                               var(vcov$`Reasoning posts`),var(vcov$`Combo posts`),var(vcov$`Combo posts`)),
                                     cov = c(cor(vcov$`Emotions posts`,vcov$`Base posts`), 
                                             cor(vcov$`Emotions posts`,vcov$`Reasoning posts`), 
                                             cor(vcov$`Emotions posts`,vcov$`Combo posts`),
                                             cor(vcov$`Base posts`,vcov$`Reasoning posts`),
                                             cor(vcov$`Base posts`,vcov$`Combo posts`),
                                             cor(vcov$`Reasoning posts`,vcov$`Combo posts`))) %>%
  mutate(across(c(var_1,var_2, cov), ~ round(., 5))) %>%
  mutate(treatment = t)

# append to list
vcov_df_list[[t]] <- vcov_df

}

# # print variance-covariance matrix
# knitr::kable(vcov_df, format = "markdown", col.names = c("Elements", "Element 1", "Element 2", 
#                                                          "Element 1 Variance", "Element 2 Variance", 
#                                                          "Covariance (Element 1, Element 2)"))

# Generate a tabset to print results
variance_tab_panels <- list()

for (t in c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo", "All")) {
    tab_name <- paste0(t)
    tab_content <- DT::datatable(vcov_df_list[[t]] %>% select(-treatment), options = list(pageLength = 6), 
                                 rownames = FALSE, colnames = c("Elements", "Element 1", "Element 2", 
                                                                "Element 1 Variance", "Element 2 Variance", 
                                                                "Covariance (Element 1, Element 2)"))
    variance_tab_panels[[length(variance_tab_panels) + 1]] <- tabPanel(tab_name, tab_content)
}

variance_tabset <- tabsetPanel(!!!variance_tab_panels)

htmltools::tagList(variance_tabset)


Post Domain

vcov_df_list <- list()

for (t in c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo", "All")) {
  
if (t == "All") {
  treat <- c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo")
} else {
  treat <- t
}
  
# Post domain
vcov <- panel %>%
  filter(treatment %in% treat) %>%
  filter(fact %in% unique(panel$fact)) %>%
  group_by(user, fact) %>%
  summarise(share = mean(share, na.rm = TRUE)) %>%
  pivot_wider(names_from = fact, values_from = share) %>%
  select(1:16)

# append to vcov_df
vcov_df <- data.frame(type = c("Domain 1 vs. Domain 2", "Domain 1 vs. Domain 3", "Domain 1 vs. Domain 4", 
                                     "Domain 1 vs. Domain 5", "Domain 1 vs. Domain 6", "Domain 1 vs. Domain 7",
                                     "Domain 1 vs. Domain 8", "Domain 1 vs. Domain 9", "Domain 1 vs. Domain 10",
                                     "Domain 1 vs. Domain 11", "Domain 1 vs. Domain 12", "Domain 1 vs. Domain 13",
                                     "Domain 1 vs. Domain 14", "Domain 1 vs. Domain 15",
                                     "Domain 2 vs. Domain 3", "Domain 2 vs. Domain 4", "Domain 2 vs. Domain 5",
                                     "Domain 2 vs. Domain 6", "Domain 2 vs. Domain 7", "Domain 2 vs. Domain 8",
                                     "Domain 2 vs. Domain 9", "Domain 2 vs. Domain 10", "Domain 2 vs. Domain 11",
                                     "Domain 2 vs. Domain 12", "Domain 2 vs. Domain 13", "Domain 2 vs. Domain 14",
                                     "Domain 2 vs. Domain 15",
                                     "Domain 3 vs. Domain 4", "Domain 3 vs. Domain 5", "Domain 3 vs. Domain 6",
                                     "Domain 3 vs. Domain 7", "Domain 3 vs. Domain 8", "Domain 3 vs. Domain 9",
                                     "Domain 3 vs. Domain 10", "Domain 3 vs. Domain 11", "Domain 3 vs. Domain 12",
                                     "Domain 3 vs. Domain 13", "Domain 3 vs. Domain 14", "Domain 3 vs. Domain 15",
                                     "Domain 4 vs. Domain 5", "Domain 4 vs. Domain 6", "Domain 4 vs. Domain 7",
                                     "Domain 4 vs. Domain 8", "Domain 4 vs. Domain 9", "Domain 4 vs. Domain 10",
                                     "Domain 4 vs. Domain 11", "Domain 4 vs. Domain 12", "Domain 4 vs. Domain 13",
                                     "Domain 4 vs. Domain 14", "Domain 4 vs. Domain 15",
                                     "Domain 5 vs. Domain 6", "Domain 5 vs. Domain 7", "Domain 5 vs. Domain 8",
                                     "Domain 5 vs. Domain 9", "Domain 5 vs. Domain 10", "Domain 5 vs. Domain 11",
                                     "Domain 5 vs. Domain 12", "Domain 5 vs. Domain 13", "Domain 5 vs. Domain 14",
                                     "Domain 5 vs. Domain 15",
                                     "Domain 6 vs. Domain 7", "Domain 6 vs. Domain 8", "Domain 6 vs. Domain 9",
                                     "Domain 6 vs. Domain 10", "Domain 6 vs. Domain 11", "Domain 6 vs. Domain 12",
                                     "Domain 6 vs. Domain 13", "Domain 6 vs. Domain 14", "Domain 6 vs. Domain 15",
                                     "Domain 7 vs. Domain 8", "Domain 7 vs. Domain 9", "Domain 7 vs. Domain 10",
                                     "Domain 7 vs. Domain 11", "Domain 7 vs. Domain 12", "Domain 7 vs. Domain 13",
                                     "Domain 7 vs. Domain 14", "Domain 7 vs. Domain 15",
                                     "Domain 8 vs. Domain 9", "Domain 8 vs. Domain 10", "Domain 8 vs. Domain 11",
                                     "Domain 8 vs. Domain 12", "Domain 8 vs. Domain 13", "Domain 8 vs. Domain 14",
                                     "Domain 8 vs. Domain 15",
                                     "Domain 9 vs. Domain 10", "Domain 9 vs. Domain 11", "Domain 9 vs. Domain 12",
                                     "Domain 9 vs. Domain 13", "Domain 9 vs. Domain 14", "Domain 9 vs. Domain 15",
                                     "Domain 10 vs. Domain 11", "Domain 10 vs. Domain 12", "Domain 10 vs. Domain 13",
                                     "Domain 10 vs. Domain 14", "Domain 10 vs. Domain 15",
                                     "Domain 11 vs. Domain 12", "Domain 11 vs. Domain 13", "Domain 11 vs. Domain 14",
                                     "Domain 11 vs. Domain 15",
                                     "Domain 12 vs. Domain 13", "Domain 12 vs. Domain 14", "Domain 12 vs. Domain 15",
                                     "Domain 13 vs. Domain 14", "Domain 13 vs. Domain 15",
                                     "Domain 14 vs. Domain 15"),
                        element_1 = c(rep("Domain 1",14), rep("Domain 2",13), rep("Domain 3", 12),
                                      rep("Domain 4",11), rep("Domain 5",10), rep("Domain 6",9),
                                      rep("Domain 7",8), rep("Domain 8",7), rep("Domain 9",6),
                                      rep("Domain 10",5), rep("Domain 11",4), rep("Domain 12",3),
                                      rep("Domain 13",2), rep("Domain 14",1)),
                        element_2 = c("Domain 2","Domain 3","Domain 4", "Domain 5", 
                                      "Domain 6", "Domain 7", "Domain 8", "Domain 9", "Domain 10",
                                      "Domain 11", "Domain 12", "Domain 13", "Domain 14", "Domain 15",
                                      "Domain 3","Domain 4", "Domain 5", "Domain 6", "Domain 7",
                                      "Domain 8", "Domain 9", "Domain 10", "Domain 11", "Domain 12",
                                      "Domain 13", "Domain 14", "Domain 15",
                                      "Domain 4", "Domain 5", "Domain 6", "Domain 7", "Domain 8",
                                      "Domain 9", "Domain 10", "Domain 11", "Domain 12", "Domain 13",
                                      "Domain 14", "Domain 15",
                                      "Domain 5", "Domain 6", "Domain 7", "Domain 8", "Domain 9",
                                      "Domain 10", "Domain 11", "Domain 12", "Domain 13", "Domain 14",
                                      "Domain 15",
                                      "Domain 6", "Domain 7", "Domain 8", "Domain 9", "Domain 10",
                                      "Domain 11", "Domain 12", "Domain 13", "Domain 14", "Domain 15",
                                      "Domain 7", "Domain 8", "Domain 9", "Domain 10", "Domain 11",
                                      "Domain 12", "Domain 13", "Domain 14", "Domain 15",
                                      "Domain 8", "Domain 9", "Domain 10", "Domain 11", "Domain 12",
                                      "Domain 13", "Domain 14", "Domain 15",
                                      "Domain 9", "Domain 10", "Domain 11", "Domain 12", "Domain 13",
                                      "Domain 14", "Domain 15",
                                      "Domain 10", "Domain 11", "Domain 12", "Domain 13", "Domain 14",
                                      "Domain 15",
                                      "Domain 11", "Domain 12", "Domain 13", "Domain 14", "Domain 15",
                                      "Domain 12", "Domain 13", "Domain 14", "Domain 15",
                                      "Domain 13", "Domain 14", "Domain 15",
                                      "Domain 14", "Domain 15",
                                      "Domain 15"),
                        var_1 = c(var(vcov$`1`),var(vcov$`1`),var(vcov$`1`),var(vcov$`1`),var(vcov$`1`),
                                  var(vcov$`1`),var(vcov$`1`),var(vcov$`1`),var(vcov$`1`),var(vcov$`1`),
                                  var(vcov$`1`),var(vcov$`1`),var(vcov$`1`),var(vcov$`1`),
                                  var(vcov$`2`),var(vcov$`2`),var(vcov$`2`),var(vcov$`2`),var(vcov$`2`),
                                  var(vcov$`2`),var(vcov$`2`),var(vcov$`2`),var(vcov$`2`),var(vcov$`2`),
                                  var(vcov$`2`),var(vcov$`2`),var(vcov$`2`),
                                  var(vcov$`3`),var(vcov$`3`),var(vcov$`3`),var(vcov$`3`),var(vcov$`3`),
                                  var(vcov$`3`),var(vcov$`3`),var(vcov$`3`),var(vcov$`3`),var(vcov$`3`),
                                  var(vcov$`3`),var(vcov$`3`),
                                  var(vcov$`4`),var(vcov$`4`),var(vcov$`4`),var(vcov$`4`),var(vcov$`4`),
                                  var(vcov$`4`),var(vcov$`4`),var(vcov$`4`),var(vcov$`4`),var(vcov$`4`),
                                  var(vcov$`4`),
                                  var(vcov$`5`),var(vcov$`5`),var(vcov$`5`),var(vcov$`5`),var(vcov$`5`),
                                  var(vcov$`5`),var(vcov$`5`),var(vcov$`5`),var(vcov$`5`),var(vcov$`5`),
                                  var(vcov$`6`),var(vcov$`6`),var(vcov$`6`),var(vcov$`6`),var(vcov$`6`),
                                  var(vcov$`6`),var(vcov$`6`),var(vcov$`6`),var(vcov$`6`),
                                  var(vcov$`7`),var(vcov$`7`),var(vcov$`7`),var(vcov$`7`),var(vcov$`7`),
                                  var(vcov$`7`),var(vcov$`7`),var(vcov$`7`),
                                  var(vcov$`8`),var(vcov$`8`),var(vcov$`8`),var(vcov$`8`),var(vcov$`8`),
                                  var(vcov$`8`),var(vcov$`8`),
                                  var(vcov$`9`),var(vcov$`9`),var(vcov$`9`),var(vcov$`9`),var(vcov$`9`),
                                  var(vcov$`9`),
                                  var(vcov$`10`),var(vcov$`10`),var(vcov$`10`),var(vcov$`10`),var(vcov$`10`),
                                  var(vcov$`11`),var(vcov$`11`),var(vcov$`11`),var(vcov$`11`),
                                  var(vcov$`12`),var(vcov$`12`),var(vcov$`12`),
                                  var(vcov$`13`),var(vcov$`13`),
                                  var(vcov$`14`)),
                        var_2 = c(var(vcov$`2`),var(vcov$`3`),var(vcov$`4`),var(vcov$`5`),
                                  var(vcov$`6`),var(vcov$`7`),var(vcov$`8`),var(vcov$`9`),var(vcov$`10`),
                                  var(vcov$`11`),var(vcov$`12`),var(vcov$`13`),var(vcov$`14`),var(vcov$`15`),
                                  
                                  var(vcov$`3`),var(vcov$`4`),var(vcov$`5`),var(vcov$`6`),var(vcov$`7`),
                                  var(vcov$`8`),var(vcov$`9`),var(vcov$`10`),var(vcov$`11`),var(vcov$`12`),
                                  var(vcov$`13`),var(vcov$`14`),var(vcov$`15`),
                                  
                                  var(vcov$`4`),var(vcov$`5`),var(vcov$`6`),var(vcov$`7`),var(vcov$`8`),var(vcov$`9`),var(vcov$`10`),
                                  var(vcov$`11`),var(vcov$`12`),var(vcov$`13`),var(vcov$`14`),var(vcov$`15`),
                                  
                                  var(vcov$`5`),var(vcov$`6`),var(vcov$`7`),var(vcov$`8`),var(vcov$`9`),
                                  var(vcov$`10`),var(vcov$`11`),var(vcov$`12`),var(vcov$`13`),var(vcov$`14`),
                                  var(vcov$`15`),
                                  
                                  var(vcov$`6`),var(vcov$`7`),var(vcov$`8`),var(vcov$`9`),
                                  var(vcov$`10`),var(vcov$`11`),var(vcov$`12`),var(vcov$`13`),var(vcov$`14`),
                                  var(vcov$`15`),
                                  
                                  var(vcov$`7`),var(vcov$`8`),var(vcov$`9`),var(vcov$`10`),
                                  var(vcov$`11`),var(vcov$`12`),var(vcov$`13`),var(vcov$`14`),var(vcov$`15`),
                                  
                                  var(vcov$`8`),var(vcov$`9`),var(vcov$`10`),var(vcov$`11`),var(vcov$`12`),
                                  var(vcov$`13`),var(vcov$`14`),var(vcov$`15`),
                                  
                                  var(vcov$`9`),var(vcov$`10`),
                                  var(vcov$`11`),var(vcov$`12`),var(vcov$`13`),var(vcov$`14`),var(vcov$`15`),
                                  
                                  var(vcov$`10`),var(vcov$`11`),var(vcov$`12`),var(vcov$`13`),var(vcov$`14`),
                                  var(vcov$`15`),
                                  
                                  var(vcov$`11`),var(vcov$`12`),var(vcov$`13`),var(vcov$`14`),
                                  var(vcov$`15`),
                                  
                                  var(vcov$`12`),var(vcov$`13`),var(vcov$`14`),var(vcov$`15`),
                                  
                                  var(vcov$`13`),var(vcov$`14`),var(vcov$`15`),
                                  
                                  var(vcov$`14`),var(vcov$`15`),
                                  
                                  var(vcov$`15`)),
                      cov = c(cov(vcov$`1`,vcov$`2`),cov(vcov$`1`,vcov$`3`),cov(vcov$`1`,vcov$`4`),cov(vcov$`1`,vcov$`5`),cov(vcov$`1`,vcov$`6`),
                              cov(vcov$`1`,vcov$`7`),cov(vcov$`1`,vcov$`8`),cov(vcov$`1`,vcov$`9`),cov(vcov$`1`,vcov$`10`),cov(vcov$`1`,vcov$`11`),
                              cov(vcov$`1`,vcov$`12`),cov(vcov$`1`,vcov$`13`),cov(vcov$`1`,vcov$`14`),cov(vcov$`1`,vcov$`15`),
                              cov(vcov$`2`,vcov$`3`),cov(vcov$`2`,vcov$`4`),cov(vcov$`2`,vcov$`5`),cov(vcov$`2`,vcov$`6`),cov(vcov$`2`,vcov$`7`),
                              cov(vcov$`2`,vcov$`8`),cov(vcov$`2`,vcov$`9`),cov(vcov$`2`,vcov$`10`),cov(vcov$`2`,vcov$`11`),cov(vcov$`2`,vcov$`12`),
                              cov(vcov$`2`,vcov$`13`),cov(vcov$`2`,vcov$`14`),cov(vcov$`2`,vcov$`15`),
                              cov(vcov$`3`,vcov$`4`),cov(vcov$`3`,vcov$`5`),cov(vcov$`3`,vcov$`6`),cov(vcov$`3`,vcov$`7`),cov(vcov$`3`,vcov$`8`),
                              cov(vcov$`3`,vcov$`9`),cov(vcov$`3`,vcov$`10`),cov(vcov$`3`,vcov$`11`),cov(vcov$`3`,vcov$`12`),cov(vcov$`3`,vcov$`13`),
                              cov(vcov$`3`,vcov$`14`),cov(vcov$`3`,vcov$`15`),
                              cov(vcov$`4`,vcov$`5`),cov(vcov$`4`,vcov$`6`),cov(vcov$`4`,vcov$`7`),cov(vcov$`4`,vcov$`8`),cov(vcov$`4`,vcov$`9`),
                              cov(vcov$`4`,vcov$`10`),cov(vcov$`4`,vcov$`11`),cov(vcov$`4`,vcov$`12`),cov(vcov$`4`,vcov$`13`),cov(vcov$`4`,vcov$`14`),
                              cov(vcov$`4`,vcov$`15`),
                              cov(vcov$`5`,vcov$`6`),cov(vcov$`5`,vcov$`7`),cov(vcov$`5`,vcov$`8`),cov(vcov$`5`,vcov$`9`),cov(vcov$`5`,vcov$`10`),
                              cov(vcov$`5`,vcov$`11`),cov(vcov$`5`,vcov$`12`),cov(vcov$`5`,vcov$`13`),cov(vcov$`5`,vcov$`14`),cov(vcov$`5`,vcov$`15`),
                              cov(vcov$`6`,vcov$`7`),cov(vcov$`6`,vcov$`8`),cov(vcov$`6`,vcov$`9`),cov(vcov$`6`,vcov$`10`),cov(vcov$`6`,vcov$`11`),
                              cov(vcov$`6`,vcov$`12`),cov(vcov$`6`,vcov$`13`),cov(vcov$`6`,vcov$`14`),cov(vcov$`6`,vcov$`15`),
                              cov(vcov$`7`,vcov$`8`),cov(vcov$`7`,vcov$`9`),cov(vcov$`7`,vcov$`10`),cov(vcov$`7`,vcov$`11`),cov(vcov$`7`,vcov$`12`),
                              cov(vcov$`7`,vcov$`13`),cov(vcov$`7`,vcov$`14`),cov(vcov$`7`,vcov$`15`),
                              cov(vcov$`8`,vcov$`9`),cov(vcov$`8`,vcov$`10`),cov(vcov$`8`,vcov$`11`),cov(vcov$`8`,vcov$`12`),cov(vcov$`8`,vcov$`13`),
                              cov(vcov$`8`,vcov$`14`),cov(vcov$`8`,vcov$`15`),
                              cov(vcov$`9`,vcov$`10`),cov(vcov$`9`,vcov$`11`),cov(vcov$`9`,vcov$`12`),cov(vcov$`9`,vcov$`13`),cov(vcov$`9`,vcov$`14`),
                              cov(vcov$`9`,vcov$`15`),
                              cov(vcov$`10`,vcov$`11`),cov(vcov$`10`,vcov$`12`),cov(vcov$`10`,vcov$`13`),cov(vcov$`10`,vcov$`14`),cov(vcov$`10`,vcov$`15`),
                              cov(vcov$`11`,vcov$`12`),cov(vcov$`11`,vcov$`13`),cov(vcov$`11`,vcov$`14`),cov(vcov$`11`,vcov$`15`),
                              cov(vcov$`12`,vcov$`13`),cov(vcov$`12`,vcov$`14`),cov(vcov$`12`,vcov$`15`),
                              cov(vcov$`13`,vcov$`14`),cov(vcov$`13`,vcov$`15`),
                              cov(vcov$`14`,vcov$`15`))) %>%
                      mutate(across(c(var_1,var_2, cov), ~ round(., 5))) %>%
                      mutate(treatment = t)

# append to list
vcov_df_list[[t]] <- vcov_df

}

                      
# # Print 
# knitr::kable(vcov_df, format = "markdown", col.names = c("Elements", "Element 1", "Element 2", 
#                                                          "Element 1 Variance", "Element 2 Variance", 
#                                                          "Covariance (Element 1, Element 2)"))
    
# Generate a tabset to print results
variance_tab_panels <- list()

for (t in c("No-course Baseline", "Facts Baseline", "Emotions", "Reasoning", "Combo", "All")) {
    tab_name <- paste0(t)
    tab_content <- DT::datatable(vcov_df_list[[t]] %>% select(-treatment), options = list(pageLength = 5), 
                                 rownames = FALSE, colnames = c("Elements", "Element 1", "Element 2", 
                                                                "Element 1 Variance", "Element 2 Variance", 
                                                                "Covariance (Element 1, Element 2)"))
    variance_tab_panels[[length(variance_tab_panels) + 1]] <- tabPanel(tab_name, tab_content)
}

variance_tabset <- tabsetPanel(!!!variance_tab_panels)

htmltools::tagList(variance_tabset)



Intra- and inter-personal correlations

While correlations are calculated for all treatment groups, the focus should be on the No-course Baseline treatment group since estimates for users in such treatment arm are not conflated with treatment effects.

All correlations are calculated using the Pearson correlation coefficien, ranging from -1 to 1 (perfect linear relationship).


Intra-personal correlations are calculated within users. We report the mean correlation across users.

Pre vs. Post

Focus should be on the No-course Baseline treatment group since estimates for users in such treatment arm are not conflated with treatment effects.

# Add intra- and inter-personal correlations

# Intra-personal correlations
# Correlation within users
# Mean across users
# Pre vs. post

correlations_list <- list()

treatments <- c("No-course Baseline","Facts Baseline", "Emotions", "Reasoning", "Combo", "All")

for (t in treatments) {

  if (t == "All") {
    treat <- c("No-course Baseline","Facts Baseline", "Emotions", "Reasoning", "Combo")
  } else {
    treat <- t
  }
  
  cor_matrix_intra <- panel %>% 
  filter(treatment %in% treat) %>%
  group_by(user) %>% 
  summarize(
    all = cor(share[pre_post == "pre"], share[pre_post == "post"], use = "pairwise.complete.obs"),
    cor_misinfo = cor(share[pre_post == "pre" & post_is_misinfo == 1], share[pre_post == "post" & post_is_misinfo == 1], use = "pairwise.complete.obs"),
    cor_nonmisinfo = cor(share[pre_post == "pre" & post_is_misinfo == 0], share[pre_post == "post" & post_is_misinfo == 0], use = "pairwise.complete.obs"),
    cor_emotions = cor(share[pre_post == "pre" & type == "Emotions posts"], share[pre_post == "post" & type == "Emotions posts"], use = "pairwise.complete.obs"),
    cor_reasoning = cor(share[pre_post == "pre" & type == "Reasoning posts"], share[pre_post == "post" & type == "Reasoning posts"], use = "pairwise.complete.obs"),
    cor_combo = cor(share[pre_post == "pre" & type == "Combo posts"], share[pre_post == "post" & type == "Combo posts"], use = "pairwise.complete.obs")
  ) %>% 
  summarize(
    all = mean(all, na.rm = TRUE),
    cor_misinfo = mean(cor_misinfo, na.rm = TRUE),
    cor_nonmisinfo = mean(cor_nonmisinfo, na.rm = TRUE),
    cor_emotions = mean(cor_emotions, na.rm = TRUE),
    cor_reasoning = mean(cor_reasoning, na.rm = TRUE),
    cor_combo = mean(cor_combo, na.rm = TRUE)
  ) %>%
  mutate(type = "pre vs. post")
# pivot to long format
cor_matrix_intra <- cor_matrix_intra %>% 
  pivot_longer(cols = c("all","cor_misinfo","cor_nonmisinfo","cor_emotions","cor_reasoning","cor_combo"),
               names_to = "cor_type", values_to = "cor") %>%
  mutate(cor_type = str_replace(cor_type, "cor_", "")) %>%
  rename('intra_cor' = 'cor')

# Inter-personal correlations
# Correlation between users
# Mean across users
# Pre vs. post
cor_matrix_inter <- panel %>%
  filter(treatment %in% treat) %>%
  summarize(
    all = cor(share[pre_post == "pre"], share[pre_post == "post"], use = "pairwise.complete.obs"),
    cor_misinfo = cor(share[pre_post == "pre" & post_is_misinfo == 1], share[pre_post == "post" & post_is_misinfo == 1], use = "pairwise.complete.obs"),
    cor_nonmisinfo = cor(share[pre_post == "pre" & post_is_misinfo == 0], share[pre_post == "post" & post_is_misinfo == 0], use = "pairwise.complete.obs"),
    cor_emotions = cor(share[pre_post == "pre" & type == "Emotions posts"], share[pre_post == "post" & type == "Emotions posts"], use = "pairwise.complete.obs"),
    cor_reasoning = cor(share[pre_post == "pre" & type == "Reasoning posts"], share[pre_post == "post" & type == "Reasoning posts"], use = "pairwise.complete.obs"),
    cor_combo = cor(share[pre_post == "pre" & type == "Combo posts"], share[pre_post == "post" & type == "Combo posts"], use = "pairwise.complete.obs")
  ) %>%
  mutate(type = "pre vs. post")
# pivot to long format
cor_matrix_inter <- cor_matrix_inter %>% 
  pivot_longer(cols = c("all","cor_misinfo","cor_nonmisinfo","cor_emotions","cor_reasoning","cor_combo"),
               names_to = "cor_type", values_to = "cor") %>%
  mutate(cor_type = str_replace(cor_type, "cor_", "")) %>%
  rename('inter_cor' = 'cor')

cor_matrix <- left_join(cor_matrix_intra, cor_matrix_inter) %>%
  mutate(treatment = t) %>%
  select(treatment, cor_type, type, intra_cor, inter_cor) %>%
  # format to 5 digits
  mutate(across(c(intra_cor, inter_cor), ~ round(., 5)))

correlations_list[[t]] <- cor_matrix

}

# Initialize an empty list to store tab panels
correlations_tab_panels <- list()

# Loop through each key in variance_summary_tables
for (treatment in names(correlations_list)) {
    tab_name <- paste0(treatment)
    tab_content <- DT::datatable(correlations_list[[treatment]], options = list(pageLength = 6), 
                                 rownames = FALSE, colnames = c("Treatment",
                                                                "Post type",
                                                                "Correlation",
                                                                "Intra-participant correlation",
                                                                "Inter-participant correlation"))
    correlations_tab_panels[[length(correlations_tab_panels) + 1]] <- tabPanel(tab_name, tab_content)
}

# Create the tabset with the variance tab panels
correlations_tabset <- tabsetPanel(!!!correlations_tab_panels)
# Render the tabset
htmltools::tagList(correlations_tabset)

Across tactics

Pearson correlations between tactics for different survey periods.

Focus should be on the No-course Baseline treatment group since estimates for users in such treatment arm are not conflated with treatment effects.

# Add intra- and inter-personal correlations for pairs of tactics

# Intra-personal correlations
# Correlation within users
# Mean across users
# Tactic x vs. Tactic y

correlations_list <- list()

treatments <- c("No-course Baseline","Facts Baseline", "Emotions", "Reasoning", "Combo", "All")
periods <- c("pre","post","Pre and Post")

for (t in treatments) {

  if (t == "All") {
    treat <- c("No-course Baseline","Facts Baseline", "Emotions", "Reasoning", "Combo")
  } else {
    treat <- t
  }
  
  corr_list_treatment <- data.frame()
  
  for (p in periods) {
  
    if (p == "Pre and Post") {
      period <- c("pre","post")
    } else {
      period <- p
    }
    
    cor_matrix_intra <- panel %>% 
    filter(treatment %in% treat) %>%
    filter(pre_post %in% period) %>%
    group_by(user) %>% 
    summarize(
      cor_emotions_reasoning = cor(share[type == "Emotions posts"], share[type == "Reasoning posts"], use = "pairwise.complete.obs"),
      cor_emotions_combo = cor(share[type == "Emotions posts"], share[type == "Combo posts"], use = "pairwise.complete.obs"),
      cor_reasoning_combo = cor(share[type == "Reasoning posts"], share[type == "Combo posts"], use = "pairwise.complete.obs")
    ) %>% 
    summarize(
      cor_emotions_reasoning = mean(cor_emotions_reasoning, na.rm = TRUE),
      cor_emotions_combo = mean(cor_emotions_combo, na.rm = TRUE),
      cor_reasoning_combo = mean(cor_reasoning_combo, na.rm = TRUE)
    ) %>%
    mutate(type = "tactics")
    
  # pivot to long format
  cor_matrix_intra <- cor_matrix_intra %>% 
    pivot_longer(cols = c("cor_emotions_reasoning","cor_emotions_combo","cor_reasoning_combo"),
                 names_to = "cor_type", values_to = "cor") %>%
    mutate(cor_type = str_replace(cor_type, "cor_", "")) %>%
    rename('intra_cor' = 'cor') %>%
    mutate(cor_type = ifelse(cor_type == "emotions_reasoning", "Emotions vs. Reasoning",
                             ifelse(cor_type == "emotions_combo", "Emotions vs. Combo", "Reasoning vs. Combo"))) %>%
    mutate(across(c(intra_cor), ~ round(., 5))) %>%
    mutate(Period = p)

  # Inter-personal correlations
  # Correlation between users
  # Mean across users
  # Tactic x vs. Tactic y
  cor_matrix_inter <- panel %>%
    filter(treatment %in% treat) %>%
    filter(pre_post %in% period) %>%
    summarize(
      cor_emotions_reasoning = cor(share[type == "Emotions posts"], share[type == "Reasoning posts"], use = "pairwise.complete.obs"),
      cor_emotions_combo = cor(share[type == "Emotions posts"], share[type == "Combo posts"], use = "pairwise.complete.obs"),
      cor_reasoning_combo = cor(share[type == "Reasoning posts"], share[type == "Combo posts"], use = "pairwise.complete.obs")
    ) %>%
    mutate(type = "tactics")
  # pivot to long format
  cor_matrix_inter <- cor_matrix_inter %>% 
    pivot_longer(cols = c("cor_emotions_reasoning","cor_emotions_combo","cor_reasoning_combo"),
                 names_to = "cor_type", values_to = "cor") %>%
    mutate(cor_type = str_replace(cor_type, "cor_", "")) %>%
    rename('inter_cor' = 'cor') %>%
    mutate(cor_type = ifelse(cor_type == "emotions_reasoning", "Emotions vs. Reasoning",
                             ifelse(cor_type == "emotions_combo", "Emotions vs. Combo", "Reasoning vs. Combo")))
  
  cor_matrix <- left_join(cor_matrix_intra, cor_matrix_inter) %>%
    mutate(treatment = t, period = p) %>%
    select(treatment, cor_type, type, intra_cor, inter_cor) %>%
    # format to 5 digits
    mutate(across(c(intra_cor, inter_cor), ~ round(., 5))) %>%
    # add time period
    mutate(Period = p)
  
  corr_list_treatment <- rbind(corr_list_treatment, cor_matrix) %>%
    select(treatment, Period, type, cor_type, intra_cor, inter_cor)

}

correlations_list[[t]] <- corr_list_treatment
  
}

# Initialize an empty list to store tab panels
correlations_tab_panels <- list()

# Loop through each key in variance_summary_tables
for (treatment in names(correlations_list)) {
    tab_name <- paste0(treatment)
    tab_content <- DT::datatable(correlations_list[[treatment]] %>% select(-type), options = list(pageLength = 9), 
                                 rownames = FALSE, colnames = c("Treatment",
                                                                "Period",
                                                                "Correlation",
                                                                "Intra-participant correlation",
                                                                "Inter-participant correlation"))
    correlations_tab_panels[[length(correlations_tab_panels) + 1]] <- tabPanel(tab_name, tab_content)
}

# Create the tabset with the variance tab panels
correlations_tabset <- tabsetPanel(!!!correlations_tab_panels)
# Render the tabset
htmltools::tagList(correlations_tabset)
cat("In 'No-course Baseline' tab, the correlation between Reasoning and Combo at the post-treatment period is -1.2569e-17.")
## In 'No-course Baseline' tab, the correlation between Reasoning and Combo at the post-treatment period is -1.2569e-17.



Sharing distributions / histograms

Post type

# 15 pastel colors from package
colors <- c("#F98C8C", "#F9D5A7", "#F9F1A5", "#D0F2A5", "#A5F2A5", "#A5F2D0", "#A5F2F2", "#A5D0F2", "#A5A5F2", "#D0A5F2", "#F2A5F2", "#F2A5D0", "#F2A5A5", "#F2D0A5", "#F2F2A5")

# Add histograms of share by post type
# Loop by type of post
# Loop by pre or post
# Loop by treatment

treatments <- c("No-course Baseline","Facts Baseline", "Emotions", "Reasoning", "Combo", "All")
periods <- c("pre","post","Pre and Post")

histograms_list <- list()

for (t in treatments) {
  
  cat("<details>")
  if (t == "All") {
    cat("<summary> Click here to view sharing distribution for ",paste0("**",t,"**")," treatment groups</summary>")
  } else {
    cat("<summary> Click here to view sharing distribution for ",paste0("**",t,"**")," treatment group</summary>")
  }
  
  if (t == "All") {
    treat <- c("No-course Baseline","Facts Baseline", "Emotions", "Reasoning", "Combo")
  } else {
    treat <- t
  }
  
  histograms_list_treatment <- data.frame()
  
  for (p in periods) {
  
    if (p == "Pre and Post") {
      period <- c("pre","post")
    } else {
      period <- p
    }
    
    cat(paste0("\n<br><br><br><br>$$\\textit{Period: ",p,"}$$\n<br><br><br><br>"))
    
    for (post_type in 1:length(unique(panel$type))) {
      
      df <- panel %>%
      filter(treatment %in% treat) %>%
      filter(pre_post %in% period) %>%
      filter(type %in% unique(panel$type)[post_type]) %>%
      group_by(user) %>%
      summarise(share = mean(share, na.rm = TRUE)) %>%
      mutate(denominator = n()) %>%
      group_by(share) %>%
      mutate(numerator = n()) %>%
      distinct(share, numerator, denominator) %>%
      ungroup() %>%
      mutate(ratio = (numerator/denominator)*100)
      
      # generate histogram of variable share
      # as a proportion of all posts seen by user of such type
      g <- ggplot(df) +
        geom_bar(aes(x = share, y = ratio), stat = "identity", fill = colors[post_type]) +
        labs(title = paste(unique(panel$type)[post_type]),
             x = paste0("\nProportion of posts shared at ", p),
             y = paste0("Frequency (as a percentage of total ",unique(panel$type)[post_type]," shown)\n")) +
        scale_x_continuous(labels = scales::percent_format(scale = 100),
                           breaks = (df$share)) +
        theme_minimal() + 
        theme(legend.position = "none", 
              plot.title = element_text(hjust = 0.5))
        
      print(g)
      cat("<br><br>")
      }
    
  }
  
  cat("</details>")
  cat("<br><br>")
    
}
Click here to view sharing distribution for No-course Baseline treatment group



\[\textit{Period: pre}\]















\[\textit{Period: post}\]















\[\textit{Period: Pre and Post}\]













Click here to view sharing distribution for Facts Baseline treatment group



\[\textit{Period: pre}\]















\[\textit{Period: post}\]















\[\textit{Period: Pre and Post}\]













Click here to view sharing distribution for Emotions treatment group



\[\textit{Period: pre}\]















\[\textit{Period: post}\]















\[\textit{Period: Pre and Post}\]













Click here to view sharing distribution for Reasoning treatment group



\[\textit{Period: pre}\]















\[\textit{Period: post}\]















\[\textit{Period: Pre and Post}\]













Click here to view sharing distribution for Combo treatment group



\[\textit{Period: pre}\]















\[\textit{Period: post}\]















\[\textit{Period: Pre and Post}\]













Click here to view sharing distribution for All treatment groups



\[\textit{Period: pre}\]















\[\textit{Period: post}\]















\[\textit{Period: Pre and Post}\]













Post domain

# Add histograms of share by post domain
# Loop by domain
# Loop by pre or post
# Loop by treatment

treatments <- c("No-course Baseline","Facts Baseline", "Emotions", "Reasoning", "Combo", "All")
periods <- c("pre","post","Pre and Post")

histograms_list <- list()

for (t in treatments) {
  
  cat("<details>")
  if (t == "All") {
    cat("<summary> Click here to view sharing distribution for ",paste0("**",t,"**")," treatment groups</summary>")
  } else {
    cat("<summary> Click here to view sharing distribution for ",paste0("**",t,"**")," treatment group</summary>")
  }
  
  if (t == "All") {
    treat <- c("No-course Baseline","Facts Baseline", "Emotions", "Reasoning", "Combo")
  } else {
    treat <- t
  }
  
  histograms_list_treatment <- data.frame()
  
  for (p in periods) {
  
    if (p == "Pre and Post") {
      period <- c("pre","post")
    } else {
      period <- p
    }
    
    cat(paste0("\n<br><br><br><br>$$\\textit{Period: ",p,"}$$\n<br><br><br><br>"))
    
    for (domain in 1:length(unique(panel$fact))) {
      
      df <- panel %>%
      filter(treatment %in% treat) %>%
      filter(pre_post %in% period) %>%
      filter(fact %in% domain) %>%
      group_by(user) %>%
      summarise(share = mean(share, na.rm = TRUE)) %>%
      mutate(denominator = n()) %>%
      group_by(share) %>%
      mutate(numerator = n()) %>%
      distinct(share, numerator, denominator) %>%
      ungroup() %>%
      mutate(ratio = (numerator/denominator)*100)
      
      # generate histogram of variable share
      # as a proportion of all posts seen by user of such type
      g <- ggplot(df) +
        geom_bar(aes(x = share, y = ratio), stat = "identity", fill = colors[domain]) +
        labs(title = paste("Post domain",domain),
             x = paste0("\nProportion of posts shared at ", p),
             y = paste0("Frequency (as a percentage of total posts domain ",domain," shown)\n")) +
        scale_x_continuous(labels = scales::percent_format(scale = 100),
                           breaks = (df$share)) +
        theme_minimal() + 
        theme(legend.position = "none", 
              plot.title = element_text(hjust = 0.5))
        
      print(g)
      cat("<br><br>")
      }
    
  }
  
  cat("</details>")
  cat("<br><br>")
  
}
Click here to view sharing distribution for No-course Baseline treatment group



\[\textit{Period: pre}\]





































\[\textit{Period: post}\]





































\[\textit{Period: Pre and Post}\]



































Click here to view sharing distribution for Facts Baseline treatment group



\[\textit{Period: pre}\]





































\[\textit{Period: post}\]





































\[\textit{Period: Pre and Post}\]



































Click here to view sharing distribution for Emotions treatment group



\[\textit{Period: pre}\]





































\[\textit{Period: post}\]





































\[\textit{Period: Pre and Post}\]



































Click here to view sharing distribution for Reasoning treatment group



\[\textit{Period: pre}\]





































\[\textit{Period: post}\]





































\[\textit{Period: Pre and Post}\]



































Click here to view sharing distribution for Combo treatment group



\[\textit{Period: pre}\]





































\[\textit{Period: post}\]





































\[\textit{Period: Pre and Post}\]



































Click here to view sharing distribution for All treatment groups



\[\textit{Period: pre}\]





































\[\textit{Period: post}\]





































\[\textit{Period: Pre and Post}\]





































Analysis

Baseline estimation

Through the following specification, we estimate the treatment effects of each course on Misinfo and Non-misinfo posts sharing:


\(\textit{Share}_{ipt} = \alpha + \beta_1\mathbb{I}[\textit{Treatment}_{i}] \times \mathbb{I}[\textit{Post-treatment}_{t}] \times \mathbb{I}[\textit{Misinfo}_{p}]\)\(+\)

\(\beta_2\mathbb{I}[\textit{Treatment}_{i}] \times \mathbb{I}[\textit{Post-treatment}_{t}]\)\(+\)

\(\beta_3\mathbb{I}[\textit{Treatment}_{i}] \times \mathbb{I}[\textit{Misinfo}_{p}]\)\(+\)

\(\beta_4\mathbb{I}[\textit{Treatment}_{i}]\)\(+\)

\(\beta_5\mathbb{I}[\textit{Post-treatment}_{t}] \times \mathbb{I}[\textit{Misinfo}_{p}]\)\(+\)

\(\beta_6\mathbb{I}[\textit{Post-treatment}_{t}]\)\(+\)

\(\beta_7\mathbb{I}[\textit{Misinfo}_{p}]\)\(+\)

\(\epsilon_{ipt}\),


where:

  • \(\textit{Share}_{ipt}\): a binary indicator equal to 1 if the user \(i\) decided to share post \(p\) at time \(t\) (pre-treatment or post-treatment survey)

  • \(\alpha\): Average sharing of Non-misinfo posts for Facts Baseline, the baseline treatment group.

  • version 1: \(\textit{Treatment}_i = \{\textit{Facts Baseline}, \textit{Emotions course}\}\)

    • \(\alpha\): Pre Non-Misinfo for Facts Baseline

    • \(\alpha + \beta_4\): Pre Non-Misinfo for Emotions

    • \(\alpha + \beta_7\): Pre Misinfo for Facts Baseline

    • \(\alpha + \beta_3 + \beta_4 + \beta_7\): Pre Misinfo for Emotions

    • \(\alpha + \beta_6\): Post Non-Misinfo for Facts Baseline

    • \(\alpha + \beta_2 + \beta_4 + \beta_6\): Post Non-Misinfo for Emotions

    • \(\alpha + \beta_5 + \beta_6 + \beta_7\): Post Misinfo for Facts Baseline

    • \(\alpha + \beta_1 + \beta_2 + \beta_3 + \beta_4 + \beta_5 + \beta_6 + \beta_7\): Post Misinfo for the Emotions

  • version 2: \(\textit{Treatment}_i = \{\textit{No-course Baseline}, \textit{Facts Baseline}, \textit{Emotions course}, \textit{Reasoning course}, \textit{Combo course}\}\)

  • \(\epsilon_{ipt}\): standard errors clustered at the user level


We estimate two versions:

  1. two treatment arms (Facts Baseline and Emotions)

  2. five treatment arms (No-course Baseline, Facts Baseline, Emotions, Reasoning, and Combo).


For all estimations, we provide a short and a long table. The short table shows the treatment coefficients only. The long table also shows all covariates and its interactions. To access the long table, click on the button.


Fixed effects

We report estimates when adding the following sets of fixed effects to the model:

User

  1. User-specific sharing fixed effect.

Post-domain

  1. Post-domain-specific sharing fixed effect (for 15 different domains) and user-specific sharing fixed effect.

Post-tactic

  1. Post-tactic-specific sharing fixed effect (for 3 manipulation tactics used in misinformation posts: Emotions, Reasons, Combo, plus non-misinformation) and user-specific sharing fixed effect.

Post-domain x Post-tactic

  1. Post-domain \(\times\) Post-tactic-specific sharing fixed effect (for 60 different combinations: 15 domains \(\times\) 4 tactics) and user-specific sharing fixed effect.

Post-ID

  1. Post-specific sharing fixed effect (for 60 different posts) and user-specific sharing fixed effect.


Covariates

We report estimates when adding one of the following covariate sets in addition to the user-specific sharing fixed effect.

Each set of covariates is de-meaned and interacted with the treatment, post-treatment, and misinformation indicators:

\[\textit{De-meaned Cov}_i \times \mathbb{1}[Treatment_i] \times \mathbb{1}[\textit{Post-treatment}_t] \times \mathbb{1}[Misinformation_p]\]

Demographics:

  1. Include set of de-meaned demographics \({X}_i\).

Misinfo and Non-misinfo Sharing rates:

  1. \(\textit{De-meaned Misinfo Sharing rate}_{it-1} + \textit{De-meaned Non-Misinfo Sharing rate}_{it-1}\)

Misinfo and Non-Misinfo Sharing rates and Tactic Sharing rates:

  1. \(\textit{De-meaned Misinfo Sharing rate}_{it-1} + \textit{De-meaned Non-Misinfo Sharing rate}_{it-1}\)\(+\) \(\textit{De-meaned Sharing rate of Emotions posts}_{it-1} + \textit{De-meaned Sharing rate of Reasoning posts}_{it-1}\)\(+\) \(\textit{De-meaned Sharing rate of Combo posts}_{it-1}\)

Demographics, as well as Misinfo and Non-misinfo Sharing rates:

  1. \({X}_i + \textit{De-meaned Misinfo Sharing rate}_{it-1} + \textit{De-meaned Non-Misinfo Sharing rate}_{it-1}\).

Demographics, as well as Misinfo, Non-Misinfo Sharing rates, and Tactic Sharing rates:

  1. \({X}_i + \textit{De-meaned Misinfo Sharing rate}_{it-1} + \textit{De-meaned Non-Misinfo Sharing rate}_{it-1}\)\(+\) \(\textit{De-meaned Sharing rate of Emotions posts}_{it-1} + \textit{De-meaned Sharing rate of Reasoning posts}_{it-1}\)\(+\) \(\textit{De-meaned Sharing rate of Combo posts}_{it-1}\)




Linear


Baseline estimation

Below, we present the estimates based on 2 treatment arms: Facts Baseline and Emotions.


The sample includes all users who completed the post-survey and belong to the “Facts Baseline” (n = 1,790) or “Emotions course” (n = 1,836) treatment groups (n = 3,626). We consider all 9 posts in the pre-treatment period (“pre”) and all 9 posts in the post-treatment period (i.e., “post”).


# Define panel df with two treatment arms only
panel_2 <- panel %>% filter(treatment %in% c('Facts Baseline','Emotions'))
panel_2$treatment <- factor(panel_2$treatment, levels = c('Facts Baseline','Emotions'))
panel_2$emotions <- ifelse(panel_2$treatment == "Emotions",1,0)
# version 1: 2 treatment arms
formula_baseline_lm <- "share ~ treatment*post*post_is_misinfo"
baseline_lm <- lm(as.formula(formula_baseline_lm),panel_2)
baseline_lm_robust <- lm_robust(as.formula(formula_baseline_lm),panel_2, cluster = user, se_type = 'CR2')
# Calculate out-of-sample R2
BiocParallel::register(BiocParallel::MulticoreParam(workers = 8)) # define number of cores

if (!file.exists("R2oos_baseline1.rds")) {
fitFunLM <- function(y, x){lm_robust.fit(y = y, x = cbind(1, x), cluster = user, se_type = "CR2")}
predFunLM <- function(mod, x) {cbind(1,x) %*% mod$coef}

# baseline
formula <- gsub("^share","",formula_baseline_lm)
X <- model.matrix(as.formula(formula), data = panel_2)
X <- X[, !(colnames(X) %in% "(Intercept)")]

R2oos_baseline1 <- oosse::R2oosse(panel_2$share,
                          X[,-1],
                          fitFun = fitFunLM,
                          predFun = predFunLM,
                          methodMSE = "bootstrap",
                          nBootstraps = 100,
                          nBootstrapsCor = 25)
saveRDS(R2oos_baseline1,"R2oos_baseline1.rds")
} else {
  R2oos_baseline1 <- readRDS("R2oos_baseline1.rds")
}

R2out <- as.numeric(R2oos_baseline1$R2[1])
# Print model
headers <- c("Share (binary indicator)")
model_list <- list(baseline_lm)
names <- unique(c(names(baseline_lm$coefficients)))
variable_labels_wide <- variable_mapping_long[names]

# out-of-sample R2
if (any(ls() %in% "R2out")) {
    R2out <- as.numeric(R2out)
} else {
    R2out <- rep("",length(model_list))
}

# keep variables
keep <- list("treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]")

# standard errors
se <- baseline_lm_robust$std.error

# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("(1)"),
                      override.se = se,
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test. MSE for out-of-sample R$^2$ is calculated through a cross-validation process with 100 repetitions and 10 folds.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = rep("No",length(model_list)),
                                             "Fixed Effects" = rep("No",length(model_list)),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2out)
                                             ),
                      reorder.gof = c(6,7,5,8,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment
  Share (binary indicator)
  (1)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202
  (0.0136)
Emotions x 1[Post-treatment] -0.0938***
  (0.0132)
Emotions x 1[Misinfo] -0.0039
  (0.0100)
R2 0.0422
Adj. R2 0.0421
Out-of-sample R2 0.0422
Num. obs. 65268
Fixed Effects No
Fixed Effects No
Covariates No
Clustered Std. Errors user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test. MSE for out-of-sample R\(^2\) is calculated through a cross-validation process with 100 repetitions and 10 folds.
# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
Click to view the full table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("(1)"),
                      stars = c(0.20, 0.10, 0.02),
                      override.se = se,
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test. MSE for out-of-sample R$^2$ is calculated through a cross-validation process with 10 folds.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.gof.rows = list("Fixed Effects" = rep("No",length(model_list)),
                                             "Fixed Effects" = rep("No",length(model_list)),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2out)
                                             ),
                      reorder.gof = c(6,7,5,8,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment
  Share (binary indicator)
  (1)
Facts Baseline 0.6829***
  (0.0081)
Emotions 0.0059
  (0.0114)
1[Post-treatment] -0.0758***
  (0.0089)
1[Misinfo] -0.1442***
  (0.0069)
Emotions x 1[Post-treatment] -0.0938***
  (0.0132)
Emotions x 1[Misinfo] -0.0039
  (0.0100)
1[Post-treatment] x 1[Misinfo] 0.0021
  (0.0095)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202
  (0.0136)
R2 0.0422
Adj. R2 0.0421
Out-of-sample R2 0.0422
Num. obs. 65268
Fixed Effects No
Fixed Effects No
Covariates No
Clustered Std. Errors user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test. MSE for out-of-sample R\(^2\) is calculated through a cross-validation process with 10 folds.
cat('</details>')


Prediction

Standard errors of the share predicted value are estimated using the Delta method.

Treatment effects in the last column refer to estimated marginal means (EMMs, or least-squares means) for specified factor combinations (Post-treatment and Misinfo). Point estimates are reported in the upper cell and standard errors, clustered at the user level, reported in parentheses in the bottom cell. t-ratios are reported in brackets.

# Table with prediction values
treatmentLevels <- unique(panel_2$treatment)
predictorVariables <- expand.grid(treatment = treatmentLevels,
                                  post = c(0, 1),
                                  post_is_misinfo = c(0, 1))
predictions <- predict(baseline_lm, newdata = predictorVariables, type = "response", se.fit = TRUE)
prediction_df <- predictorVariables
prediction_df$prediction <- format(predictions$fit, digits = 4)
prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")

# calculate difference between Facts Baseline and all other treatments
# prediction_df <- prediction_df %>%
#   group_by(post,post_is_misinfo) %>%
#   mutate(lag = ifelse(treatment == "Facts Baseline",
#                       prediction, NA)) %>%
#   tidyr::fill(lag) %>%
#   ungroup() %>%
#   mutate(te = ifelse(treatment != "Facts Baseline",
#                      format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
#   select(-lag) %>%
#   mutate(te = ifelse(is.na(te),"",te))

emm_res <- emmeans(baseline_lm, specs = pairwise ~ treatment | post * post_is_misinfo)
contrast_res <- contrast(emm_res, method = "revpairwise")
contrast_df <- as.data.frame(contrast_res) %>% select(post, post_is_misinfo, estimate, SE, t.ratio)
contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(t.ratio, digits = 4),"]"))) %>%
  mutate(estimate = format(estimate, digits = 4)) %>%
  mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
  select(treatment, post, post_is_misinfo, estimate)

prediction_df <- left_join(prediction_df, contrast_df, 
                        by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))

prediction_df <- prediction_df %>% arrange(post,post_is_misinfo)

k <- knitr::kable(prediction_df, col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Treatment effect<br>Emotions vs. Facts"))
print(k)
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Treatment effect
Emotions vs. Facts
Facts Baseline 0 0 0.6829 (0.006670) 0.005948
Emotions 0 0 0.6888 (0.006586) (0.009374); [0.6346]
Facts Baseline 0 1 0.5386 (0.004717) 0.002028
Emotions 0 1 0.5407 (0.004657) (0.006628); [0.3059]
Facts Baseline 1 0 0.6071 (0.006670) -0.087832
Emotions 1 0 0.5192 (0.006586) (0.009374); [ -9.3698]
Facts Baseline 1 1 0.4650 (0.004717) -0.111959
Emotions 1 1 0.3530 (0.004657) (0.006628); [-16.8909]



Click for All treatment arms
# version 2: all treatment arms
formula_baseline_all_lm <- "share ~ treatment*post*post_is_misinfo"
baseline_all_lm <- lm(as.formula(formula_baseline_all_lm),panel)
baseline_all_lm_robust <- lm_robust(as.formula(formula_baseline_all_lm),panel, cluster = user, se_type = 'CR2')
# Calculate out-of-sample R2

if (!file.exists("R2oos_baseline1_all.rds")) {
# baseline all treatments
formula <- gsub("^share","",formula_baseline_all_lm)
X <- model.matrix(as.formula(formula), data = panel)
X <- X[, !(colnames(X) %in% "(Intercept)")]

R2oos_baseline1_all <- oosse::R2oosse(panel$share,
                          X[,-1],
                          fitFun = fitFunLM,
                          predFun = predFunLM,
                          methodMSE = "bootstrap",
                          nBootstraps = 100,
                          nBootstrapsCor = 25)
saveRDS(R2oos_baseline1_all,"R2oos_baseline1_all.rds")
} else {
  R2oos_baseline1_all <- readRDS("R2oos_baseline1_all.rds")
}
R2out_all <- as.numeric(R2oos_baseline1_all$R2[1])

Baseline estimation


The sample includes all users who completed the post-survey (n = 8,684). We consider all 9 posts in the pre-treatment period (“pre”) and all 9 posts in the post-treatment period (i.e., “post”).


# Print model
headers <- c("Share (binary indicator)")
model_list <- list(baseline_all_lm)
names <- unique(c(names(baseline_all_lm$coefficients)))
variable_labels_wide <- variable_mapping_long[names]

# out-of-sample R2
if (any(ls() %in% "R2out_all")) {
    R2out_all <- as.numeric(R2out_all)
} else {
    R2out_all <- rep("",length(model_list))
}

# keep variables
keep <- list("treatmentFacts Baseline:post:post_is_misinfo" = "Facts Baseline x 1[Post-treatment] x 1[Misinfo]",
             "treatmentNo-course Baseline:post_is_misinfo" = "No-course Baseline x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentReasoning:post:post_is_misinfo" = "Reasoning x 1[Post-treatment] x 1[Misinfo]",
             "treatmentCombo:post:post_is_misinfo" = "Combo x 1[Post-treatment] x 1[Misinfo]",
             
             "treatmentFacts Baseline:post" = "Facts Baseline x 1[Post-treatment]",
             "treatmentNo-course Baseline" = "No-course Baseline x 1[Post-treatment]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentReasoning:post" = "Reasoning x 1[Post-treatment]",
             "treatmentCombo:post" = "Combo x 1[Post-treatment]",
             
             "treatmentFacts Baseline:post_is_misinfo" = "Facts Baseline x 1[Misinfo]",
             "treatmentNo-course Baseline:post_is_misinfo" = "No-course Baseline x 1[Misinfo]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]",
             "treatmentReasoning:post_is_misinfo" = "Reasoning x 1[Misinfo]",
             "treatmentCombo:post_is_misinfo" = "Combo x 1[Misinfo]")

# standard errors
se <- baseline_all_lm_robust$std.error

# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("(1)"),
                      stars = c(0.20, 0.10, 0.02),
                      override.se = se,
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = rep("No",length(model_list)),
                                             "Fixed Effects" = rep("No",length(model_list)),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2out_all)
                                             ),
                      reorder.gof = c(6,7,5,8,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment
  Share (binary indicator)
  (1)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0051
  (0.0101)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0051
  (0.0101)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202
  (0.0136)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0154
  (0.0139)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0127
  (0.0138)
No-course Baseline x 1[Post-treatment] 0.0213**
  (0.0116)
Emotions x 1[Post-treatment] -0.0938***
  (0.0132)
Reasoning x 1[Post-treatment] -0.0777***
  (0.0130)
Combo x 1[Post-treatment] -0.0884***
  (0.0131)
Emotions x 1[Misinfo] -0.0039
  (0.0100)
Reasoning x 1[Misinfo] -0.0196**
  (0.0101)
Combo x 1[Misinfo] 0.0040
  (0.0099)
R2 0.0429
Adj. R2 0.0428
Out-of-sample R2 0.0428
Num. obs. 156312
Fixed Effects No
Fixed Effects No
Covariates No
Clustered Std. Errors user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.
# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
Click to view the full table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("(1)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test. MSE for out-of-sample R$^2$ is calculated through a cross-validation process with 100 repetitions and 10 folds.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.gof.rows = list("Fixed Effects" = rep("No",length(model_list)),
                                             "Fixed Effects" = rep("No",length(model_list)),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2out_all)
                                             ),
                      reorder.gof = c(6,7,5,8,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment
  Share (binary indicator)
  (1)
Facts Baseline 0.6829***
  (0.0067)
No-course Baseline 0.0213**
  (0.0096)
Emotions 0.0059
  (0.0094)
Reasoning 0.0209**
  (0.0096)
Combo 0.0035
  (0.0095)
1[Post-treatment] -0.0758***
  (0.0094)
1[Misinfo] -0.1442***
  (0.0082)
No-course Baseline x 1[Post-treatment] 0.0514***
  (0.0136)
Emotions x 1[Post-treatment] -0.0938***
  (0.0132)
Reasoning x 1[Post-treatment] -0.0777***
  (0.0135)
Combo x 1[Post-treatment] -0.0884***
  (0.0134)
No-course Baseline x 1[Misinfo] 0.0051
  (0.0118)
Emotions x 1[Misinfo] -0.0039
  (0.0115)
Reasoning x 1[Misinfo] -0.0196**
  (0.0117)
Combo x 1[Misinfo] 0.0040
  (0.0116)
1[Post-treatment] x 1[Misinfo] 0.0021
  (0.0115)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0033
  (0.0167)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202
  (0.0162)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0154
  (0.0166)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0127
  (0.0164)
R2 0.0429
Adj. R2 0.0428
Out-of-sample R2 0.0428
Num. obs. 156312
Fixed Effects No
Fixed Effects No
Covariates No
Clustered Std. Errors user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test. MSE for out-of-sample R\(^2\) is calculated through a cross-validation process with 100 repetitions and 10 folds.
cat('</details>')


Prediction

Standard errors of the share predicted value are estimated using the Delta method. Treatment effects standard errors are clustered at the user level and reported in parentheses. t-ratios are reported in brackets.

# Table with prediction values
treatmentLevels <- unique(panel$treatment)
predictorVariables <- expand.grid(treatment = treatmentLevels,
                                  post = c(0, 1),
                                  post_is_misinfo = c(0, 1))

predictions <- predict(baseline_all_lm, newdata = predictorVariables, type = "response", se.fit = TRUE)
prediction_df <- predictorVariables
prediction_df$prediction <- format(predictions$fit, digits = 4)
prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")

# calculate difference between Facts Baseline and all other treatments
# prediction_df <- prediction_df %>%
#   group_by(post,post_is_misinfo) %>%
#   mutate(lag = ifelse(treatment == "Facts Baseline",
#                       prediction, NA)) %>%
#   tidyr::fill(lag) %>%
#   ungroup() %>%
#   mutate(te = ifelse(treatment != "Facts Baseline",
#                      format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
#   select(-lag) %>%
#   mutate(te = ifelse(is.na(te),"",te))

emm_res <- emmeans(baseline_all_lm, specs = pairwise ~ treatment | post * post_is_misinfo)
contrast_res <- contrast(emm_res, method = "revpairwise")
contrast_df <- as.data.frame(contrast_res) 
contrast_df <- contrast_df %>% filter(contrast == "Emotions - Facts Baseline") %>% 
  select(post, post_is_misinfo, estimate, SE, t.ratio)
contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(t.ratio, digits = 4),"]"))) %>%
  mutate(estimate = format(estimate, digits = 4)) %>%
  mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
  select(treatment, post, post_is_misinfo, estimate)

prediction_df <- left_join(prediction_df, contrast_df, 
                        by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))

prediction_df <- prediction_df %>% arrange(post,post_is_misinfo) %>%
  mutate(estimate = ifelse(is.na(estimate),"",estimate))

knitr::kable(prediction_df, col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts"))
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Facts Baseline 0 0 0.6829 (0.006659) 0.005948
Emotions 0 0 0.6888 (0.006575) (0.009358); [0.6356]
No-course Baseline 0 0 0.7041 (0.006983)
Reasoning 0 0 0.7037 (0.006853)
Combo 0 0 0.6864 (0.006754)
Facts Baseline 0 1 0.5386 (0.004709) 0.002028
Emotions 0 1 0.5407 (0.004649) (0.006617); [0.3064]
No-course Baseline 0 1 0.5650 (0.004937)
Reasoning 0 1 0.5399 (0.004846)
Combo 0 1 0.5462 (0.004776)
Facts Baseline 1 0 0.6071 (0.006659) -0.087832
Emotions 1 0 0.5192 (0.006575) (0.009358); [ -9.3854]
No-course Baseline 1 0 0.6798 (0.006983)
Reasoning 1 0 0.5503 (0.006853)
Combo 1 0 0.5222 (0.006754)
Facts Baseline 1 1 0.4650 (0.004709) -0.111959
Emotions 1 1 0.3530 (0.004649) (0.006617); [-16.9190]
No-course Baseline 1 1 0.5461 (0.004937)
Reasoning 1 1 0.4040 (0.004846)
Combo 1 1 0.3715 (0.004776)


Click for Comparison with the estimates in the IAM paper
knitr::include_graphics("figures/table5.png")




Fixed effects

# version 1: 2 treatment arms
formula_fe1_lm <- "share ~ treatment*post*post_is_misinfo | user"
fe1_lm <- feols(as.formula(formula_fe1_lm),panel_2)

formula_fe2_lm <- "share ~ treatment*post*post_is_misinfo + factor(fact) | user"
fe2_lm <- feols(as.formula(formula_fe2_lm),panel_2)

formula_fe3_lm <- "share ~ treatment*post*post_is_misinfo + factor(type) | user"
fe3_lm <- feols(as.formula(formula_fe3_lm),panel_2)

formula_fe4_lm <- "share ~ treatment*post*post_is_misinfo + factor(fact)*factor(type) | user"
fe4_lm <- feols(as.formula(formula_fe4_lm),panel_2)

formula_fe5_lm <- "share ~ treatment*post*post_is_misinfo + factor(post_id) | user"
fe5_lm <- feols(as.formula(formula_fe5_lm),panel_2)
# Calculate out-of-sample R2
BiocParallel::register(BiocParallel::MulticoreParam(workers = 8)) # define number of cores

# estimate out-of-sample R2 for all fixed effects models
# use R2oosse function from oosse package
# w user FE
models_fe <- c('fe1_lm','fe2_lm','fe3_lm','fe4_lm','fe5_lm')

# Estimate R2oosse for all models
R2oos_fe_2treat <- list()

for (m in seq_along(models_fe)) {

  if (file.exists(paste0("R2oos_fe_2treat_", m, ".rds"))) {
    R2oos_fe_2treat[[m]] <- readRDS(paste0("R2oos_fe_2treat_", m, ".rds"))
  } else {

  formula <- gsub("^share", "", gsub(" \\| user", "", get(paste0("formula_fe", m, "_lm"))))
  X <- model.matrix(as.formula(formula),
                    data = panel_2 %>%
                      mutate(type = as.numeric(factor(panel_2$type, levels = unique(panel_2$type)))))
  X <- X[, !(colnames(X) %in% "(Intercept)")]
  X <- cbind(X, user = panel_2$user, treatment = panel_2$treatment)

  # identify estimation dataset
  estimation_data <- panel_2 %>% filter(row_number() %in% obs(get(models_fe[[m]])))

  if ("treatment" %in% colnames(X)) {
      X[,"treatment"] <- factor(estimation_data$treatment,
                                levels = levels(estimation_data$treatment))
  }

  # add fixed effects based on model
  if (m == 2) {
    X <- cbind(X, fact = estimation_data$fact)
  }
  if (m == 3) {
    X <- cbind(X, type = as.numeric(factor(estimation_data$type, levels = unique(estimation_data$type))))
  }
  if (m == 4) {
    X <- cbind(X, fact = estimation_data$fact,
                  type = as.numeric(factor(estimation_data$type), levels = unique(estimation_data$type)))
  }
  if (m == 5) {
    X <- cbind(X, post_id = estimation_data$post_id)
  }

  # Define the fit function for models with fixed effects
  fitFunLM_fe <- function(y, x) {
      feols(as.formula(get(paste0("formula_fe", m, "_lm"))),
            data = estimation_data %>%
                      mutate(type = as.numeric(factor(estimation_data$type, levels = unique(estimation_data$type)))))
  }

  # Define the prediction function for models with fixed effects
  predFunLM_fe <- function(mod,x) {
    predict(mod, newdata = x, type = "response")
  }


  # Calculate R2oosse
  R2oos_fe_2treat[[m]] <- oosse::R2oosse(y = panel_2$share,
                           x = X,
                           fitFun = fitFunLM_fe,
                           predFun = predFunLM_fe,
                           methodMSE = "CV",
                           cvReps = 100,
                           nFold = 10,
                           nBootstrapsCor = 25)

  # Save results
  saveRDS(R2oos_fe_2treat[[m]], paste0("R2oos_fe_2treat_", m, ".rds"))
  }
}

R2oos_fe_2treat_all <- as.numeric(unlist(lapply(R2oos_fe_2treat, function(x) x$R2[1])),4)
# Print model
headers <- c("Share (binary indicator)")
model_list <- list(baseline_lm, fe1_lm,fe2_lm,fe3_lm,fe4_lm,fe5_lm)
names <- unique(c(names(baseline_lm$coefficients),
                  names(fe1_lm$coefficients),
                  names(fe2_lm$coefficients),
                  names(fe3_lm$coefficients),
                  names(fe4_lm$coefficients),
                  names(fe5_lm$coefficients)))
variable_labels_wide <- variable_mapping_long[names]

# out-of-sample R2
if (any(ls() %in% "R2oos_fe_2treat_all")) {
    #R2oos_fe_2treat_all <- c(R2out, R2oos_fe_2treat_all)
    R2oos_fe_2treat_all <- c(format(R2out, digits = 4),rep("",length(model_list)-1))
} else {
    R2oos_fe_2treat_all <- rep("",length(model_list))
}

# remove blankrows
coef_names <- names
matrix_coeff_na <- expand.grid(coef_name = coef_names, model = seq(length(model_list)))
matrix_coeff_na$var <- 0
matrix_coeff_na$var_na <- 0
for (m in 1:length(model_list)) {
  na_coeff <- names(model_list[[m]]$coefficients)[is.na(model_list[[m]]$coefficients)]
  #na_coeff <- names(model_list[[m]]$coefficients[,1])[is.na(model_list[[m]]$coefficients[,1])] # felm
  for (c in na_coeff) {
    matrix_coeff_na$var[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1 # 1 if variable is in the model (not all models have all variables)
    matrix_coeff_na$var_na[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1
  }
}
matrix_coeff_na <- matrix_coeff_na %>% group_by(coef_name) %>% mutate(var = sum(var), var_na = sum(var_na)) %>% distinct(coef_name,var,var_na)
rows_to_omit <- as.vector(unique(matrix_coeff_na$coef_name[matrix_coeff_na$var_na != 0])) # omit if NA in all models
rows_to_omit <- gsub("\\^\\s","^",paste0("^",rows_to_omit,"$", collapse = "|"))
rows_to_omit <- gsub("\\(","\\\\(",gsub("\\)","\\\\)",rows_to_omit))


# keep variables
keep <- list("treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]")

# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_fe_2treat_all)),
                      reorder.gof = c(8,6,7,9,10,11,12,5,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202 -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0162) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0133) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0115) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 0.0422          
Adj. R2 0.0421          
R2 (full model)   0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model)   0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2 0.04216          
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates No No No No No No
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.
# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
Click to view the full table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      omit.coef = rows_to_omit,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_fe_2treat_all)),
                      reorder.gof = c(8,6,7,9,10,11,12,5,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6829***          
  (0.0067)          
Emotions 0.0059          
  (0.0094)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0743*** -0.0743***
  (0.0094) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1460*** -0.0394*** -0.0286*** -0.0747***
  (0.0082) (0.0069) (0.0067) (0.0060) (0.0066) (0.0054)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0133) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0115) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0040 0.0040
  (0.0116) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202 -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0162) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Post domain 2     -0.1989***   -0.1730***  
      (0.0089)   (0.0150)  
Post domain 3     -0.2873***   -0.3172***  
      (0.0087)   (0.0148)  
Post domain 4     -0.1939***   -0.2624***  
      (0.0089)   (0.0151)  
Post domain 5     0.0573***   -0.0069  
      (0.0080)   (0.0137)  
Post domain 6     0.0263***   0.0467***  
      (0.0085)   (0.0134)  
Post domain 7     -0.2382***   -0.2006***  
      (0.0088)   (0.0149)  
Post domain 8     -0.2172***   -0.1220***  
      (0.0088)   (0.0147)  
Post domain 9     0.0456***   -0.0596***  
      (0.0082)   (0.0143)  
Post domain 10     -0.0577***   -0.1001***  
      (0.0085)   (0.0143)  
Post domain 11     -0.1629***   -0.1861***  
      (0.0090)   (0.0149)  
Post domain 12     -0.1110***   -0.1377***  
      (0.0085)   (0.0144)  
Post domain 13     -0.1564***   -0.2181***  
      (0.0088)   (0.0149)  
Post domain 14     -0.2815***   -0.3292***  
      (0.0090)   (0.0152)  
Post domain 15     -0.1923***   -0.2956***  
      (0.0087)   (0.0151)  
1[Combo manipulation tactic]       -0.1294*** -0.1532***  
        (0.0044) (0.0192)  
1[Emotions manipulation tactic]       -0.0960*** -0.2038***  
        (0.0042) (0.0198)  
1[Reasoning manipulation tactic]       -0.0890*** -0.1088***  
        (0.0041) (0.0194)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0666***  
          (0.0245)  
Post domain 3 x 1[Combo manipulation tactic]         0.0541**  
          (0.0233)  
Post domain 4 x 1[Combo manipulation tactic]         0.0984***  
          (0.0236)  
Post domain 5 x 1[Combo manipulation tactic]         0.1031***  
          (0.0234)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3263***  
          (0.0226)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0368*  
          (0.0238)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0191  
          (0.0241)  
Post domain 9 x 1[Combo manipulation tactic]         0.1669***  
          (0.0234)  
Post domain 10 x 1[Combo manipulation tactic]         0.0193  
          (0.0239)  
Post domain 11 x 1[Combo manipulation tactic]         0.0561**  
          (0.0242)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0390*  
          (0.0240)  
Post domain 13 x 1[Combo manipulation tactic]         0.0474**  
          (0.0239)  
Post domain 14 x 1[Combo manipulation tactic]         0.0208  
          (0.0235)  
Post domain 15 x 1[Combo manipulation tactic]         0.1033***  
          (0.0237)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0815***  
          (0.0243)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1354***  
          (0.0236)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0892***  
          (0.0238)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1411***  
          (0.0234)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1656***  
          (0.0234)  
Post domain 7 x 1[Emotions manipulation tactic]         0.0071  
          (0.0238)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1331***  
          (0.0241)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1794***  
          (0.0241)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1221***  
          (0.0235)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0225  
          (0.0240)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1420***  
          (0.0240)  
Post domain 13 x 1[Emotions manipulation tactic]         0.2141***  
          (0.0239)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1270***  
          (0.0239)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3714***  
          (0.0242)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0258  
          (0.0243)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0549***  
          (0.0232)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.1223***  
          (0.0243)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0403**  
          (0.0236)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0723***  
          (0.0227)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1413***  
          (0.0235)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2816***  
          (0.0237)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1259***  
          (0.0238)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0433**  
          (0.0239)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0733***  
          (0.0240)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0160  
          (0.0237)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0170  
          (0.0237)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0646***  
          (0.0239)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0141  
          (0.0237)  
Post 2 indicator           -0.1730***
            (0.0150)
Post 3 indicator           -0.3172***
            (0.0148)
Post 4 indicator           -0.2624***
            (0.0151)
Post 5 indicator           -0.0069
            (0.0137)
Post 6 indicator           0.0467***
            (0.0134)
Post 7 indicator           -0.2006***
            (0.0149)
Post 8 indicator           -0.1220***
            (0.0147)
Post 9 indicator           -0.0596***
            (0.0143)
Post 10 indicator           -0.1001***
            (0.0143)
Post 11 indicator           -0.1861***
            (0.0149)
Post 12 indicator           -0.1377***
            (0.0144)
Post 13 indicator           -0.2181***
            (0.0149)
Post 14 indicator           -0.3292***
            (0.0152)
Post 15 indicator           -0.2956***
            (0.0151)
Post 16 indicator           -0.1071***
            (0.0157)
Post 17 indicator           -0.3466***
            (0.0165)
Post 18 indicator           -0.3702***
            (0.0157)
Post 19 indicator           -0.2710***
            (0.0160)
Post 20 indicator           -0.0109
            (0.0153)
Post 21 indicator           -0.3867***
            (0.0148)
Post 22 indicator           -0.3444***
            (0.0156)
Post 23 indicator           -0.2481***
            (0.0157)
Post 24 indicator           0.0002
            (0.0146)
Post 25 indicator           -0.1878***
            (0.0163)
Post 26 indicator           -0.2371***
            (0.0167)
Post 27 indicator           -0.2838***
            (0.0159)
Post 28 indicator           -0.2778***
            (0.0160)
Post 29 indicator           -0.4155***
            (0.0157)
Post 30 indicator           -0.2995***
            (0.0153)
Post 31 indicator           -0.1578***
            (0.0164)
Post 32 indicator           -0.4123***
            (0.0157)
Post 33 indicator           -0.3396***
            (0.0156)
Post 34 indicator           -0.3310***
            (0.0155)
Post 35 indicator           -0.0236*
            (0.0157)
Post 36 indicator           0.0545***
            (0.0149)
Post 37 indicator           -0.3512***
            (0.0157)
Post 38 indicator           -0.4129***
            (0.0153)
Post 39 indicator           -0.0380***
            (0.0156)
Post 40 indicator           -0.1357***
            (0.0156)
Post 41 indicator           -0.3663***
            (0.0152)
Post 42 indicator           -0.1535***
            (0.0160)
Post 43 indicator           -0.1619***
            (0.0160)
Post 44 indicator           -0.3599***
            (0.0157)
Post 45 indicator           -0.0820***
            (0.0154)
Post 46 indicator           -0.0627***
            (0.0160)
Post 47 indicator           -0.2098***
            (0.0158)
Post 48 indicator           -0.4348***
            (0.0149)
Post 49 indicator           -0.2027***
            (0.0164)
Post 50 indicator           -0.0293**
            (0.0154)
Post 51 indicator           0.0563***
            (0.0148)
Post 52 indicator           -0.4046***
            (0.0156)
Post 53 indicator           -0.4662***
            (0.0158)
Post 54 indicator           0.0036
            (0.0152)
Post 55 indicator           -0.1195***
            (0.0157)
Post 56 indicator           -0.1755***
            (0.0163)
Post 57 indicator           -0.1844***
            (0.0154)
Post 58 indicator           -0.2638***
            (0.0160)
Post 59 indicator           -0.3272***
            (0.0160)
Post 60 indicator           -0.3724***
            (0.0151)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 0.0422          
Adj. R2 0.0421          
R2 (full model)   0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model)   0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2 0.04216          
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates No No No No No No
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.
cat('</details>')


Prediction

Standard errors of the share predicted value are estimated using the Delta method.

Treatment effects in the last column refer to estimated marginal means (EMMs, or least-squares means) for specified factor combinations (Post-treatment and Misinfo). Point estimates are reported in the upper cell and standard errors, clustered at the user level, reported in parentheses in the bottom cell. t-ratios are reported in brackets.

Treatment effects estimates for specifications that include Post-Tactic ID fixed effects are not reported since all tactics are misinformation.

# Models' predictions
models <- c("Model 1: Baseline",
            "Model 2: User ID FE",
            "Model 3: User ID FE + Post domain FE",
            "Model 4: User ID FE + Post tactic",
            "Model 5: User ID FE + Post domain x Post tactic",
            "Model 6: User ID FE + Post ID FE")
list_models <- list(baseline_lm,fe1_lm,fe2_lm,fe3_lm,fe4_lm,fe5_lm)
treatmentLevels <- unique(panel_2$treatment)

second_fixed_effects <- list("",
                             "",
                             c(fact = unique(panel_2$fact)),
                             c(fact = unique(panel_2$type)),
                             list(type = unique(panel_2$type),fact = unique(panel_2$fact)),
                             c(user = unique(panel_2$post_id)))

second_fixed_effects_name <- list("","","fact","type",c("type","fact"),"post_id")
second_fixed_effects_feglm <- c("share ~ treatment", 
                                "share ~ treatment",
                              "share ~ treatment + factor(fact)",
                              "share ~ treatment + factor(type)",
                              "share ~ treatment + factor(fact)*factor(type)",
                              "share ~ treatment + factor(post_id)")

for (m in 1:length(models)) {
  # output df
  prediction_df <- expand.grid(treatment = unique(panel_2$treatment),
                post = c(0, 1),
                post_is_misinfo = c(0, 1),
                prediction = NA,
                prediction_se = NA)
  
  for (treatment in unique(panel_2$treatment)) {
    for (post in c(0,1)) {
      for (misinfo in c(0,1)) {
        
        # Create new data
        # 1 vs. 2 fixed effects
        # type
        if (m %in% c(2,3,4,6)) {
          predictorVariables <- expand.grid(treatment = treatment,
                                            post = post,
                                            post_is_misinfo = misinfo,
                                            user = unique(panel_2$user[panel_2$treatment == treatment]),
                                            second_fixed_effects_name = second_fixed_effects[[m]])
        } 
        if (m %in% c(5)) {
          predictorVariables <- expand.grid(treatment = treatment,
                                            post = post,
                                            post_is_misinfo = misinfo,
                                            user = unique(panel_2$user[panel_2$treatment == treatment]),
                                            second_fixed_effects_name = second_fixed_effects[[m]][[1]],
                                            second_fixed_effects_name2 = second_fixed_effects[[m]][[2]])
        }
        
        
        if (m %in% c(2)) {
          predictorVariables <- predictorVariables %>% select(-second_fixed_effects_name)
        }
        if (m %in% c(3,4,6)) {
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name"] <- second_fixed_effects_name[m]
        } 
        if (m == 5) {
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name"] <- second_fixed_effects_name[[m]][1]
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name2"] <- second_fixed_effects_name[[m]][2]
        }
        
        # predicted value
        if (m != 1) {
  
        predicted_shares <- predict(list_models[[m]], newdata = predictorVariables)
        predictorVariables$prediction <- predicted_shares
          
        # mean of predicted value
        prediction_df$prediction[prediction_df$treatment == treatment & prediction_df$post == post & prediction_df$post_is_misinfo == misinfo] <- format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,mean)[,4], digits = 5)
        # se of predicted value
        prediction_df$prediction_se[prediction_df$treatment == treatment & prediction_df$post == post & prediction_df$post_is_misinfo == misinfo] <- paste0("(",format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,se_cont)[,4], digits = 4),")")
        }
      }
    }
  }
  
  # predicted value
  if (m == 1) {
    predictorVariables <- expand.grid(treatment = unique(panel_2$treatment),
                                          post = c(0,1),
                                          post_is_misinfo = c(0,1)) 
    
    predictions <- predict(baseline_lm, newdata = predictorVariables, type = "response", se.fit = TRUE)
    prediction_df <- predictorVariables
    prediction_df$prediction <- format(predictions$fit, digits = 4)
    prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")
    
    emm_res <- emmeans(baseline_lm, specs = pairwise ~ treatment | post * post_is_misinfo)
    contrast_res <- contrast(emm_res, method = "revpairwise")
    contrast_df <- as.data.frame(contrast_res) %>% select(post, post_is_misinfo, estimate, SE, t.ratio)
    contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(t.ratio, digits = 4),"]"))) %>%
    mutate(estimate = format(estimate, digits = 4)) %>%
    mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
    select(treatment, post, post_is_misinfo, estimate)
    
    prediction_df <- left_join(prediction_df, contrast_df, 
                          by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
  }
  
  # calculate difference between Facts Baseline and all other treatments
  # prediction_df <- prediction_df %>%
  #   group_by(post,post_is_misinfo) %>%
  #   mutate(lag = ifelse(treatment == "Facts Baseline",
  #                       prediction, NA)) %>%
  #   tidyr::fill(lag) %>%
  #   ungroup() %>%
  #   mutate(te = ifelse(treatment != "Facts Baseline",
  #                      format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
  #   select(-lag) %>%
  #   mutate(te = ifelse(is.na(te),"",te))
    

  # calculate difference between Facts Baseline and all other treatments
    prediction_df <- prediction_df %>%
    group_by(post,post_is_misinfo) %>%
    mutate(lag = ifelse(treatment == "Emotions",
                        prediction, NA)) %>%
    tidyr::fill(lag, .direction = "up") %>%
    ungroup() %>% 
      mutate(te = ifelse(treatment == "Facts Baseline",
                                     format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
      select(-lag) %>%
      mutate(te = ifelse(is.na(te),"",te))
  
    if (m %in% c(2,3,6)) {
     # predicted treatment effects
      contrast_df <- data.frame()
        for (p in c(0,1)) {
        for (mis in c(0,1)) {
          
          fixed_effect_model <- feglm(as.formula(second_fixed_effects_feglm[m]),panel_2 %>% 
                                        filter(post == p & post_is_misinfo == mis), cluster = "user")
          
          # obtain data frame with estimate, std error, and z value
          fixed_effect_model_df_add <- data.frame(
            treatment = unique(panel_2$treatment),
            estimate = format(coef(fixed_effect_model), digits = 4),
            SE = sqrt(diag(vcov(fixed_effect_model))),
            z.ratio = coef(fixed_effect_model) / sqrt(diag(vcov(fixed_effect_model))),
            post = p,
            post_is_misinfo = mis
          ) 
          # make rownames a column
          fixed_effect_model_df_add <- rownames_to_column(fixed_effect_model_df_add, var = "treatment2") %>% 
            filter(treatment == "Emotions" & treatment2 == "treatmentEmotions") %>% select(-treatment2) %>%
            mutate(zratio = paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))
          fixed_effect_model_df_add <- rbind(fixed_effect_model_df_add %>% mutate(treatment = "Facts Baseline"),fixed_effect_model_df_add %>% mutate(treatment = "Emotions")) %>%
            mutate(estimate = ifelse(treatment == "Emotions", zratio, estimate)) %>% 
            mutate(post = ifelse(post == 0,as.numeric(0),as.numeric(1)),
                   post_is_misinfo = ifelse(post_is_misinfo == 0,as.numeric(0),as.numeric(1))) %>%
            select(treatment, post, post_is_misinfo, estimate)
          contrast_df <- rbind(contrast_df, fixed_effect_model_df_add)
        }
        }
        
       prediction_df <- left_join(prediction_df, contrast_df, 
                                by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    }
    
    if (m %in% c(4,5)) {
      prediction_df$estimate <- ""
    }
    

  prediction_df <- prediction_df %>% select(treatment,post,post_is_misinfo,prediction,prediction_se,te,estimate)
  prediction_df <- prediction_df %>% arrange(post,post_is_misinfo)
  
  k <- knitr::kable(prediction_df, caption = models[m],
                         col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","Treatment effect<br>Emotions--Facts"))
  print(k)
}
Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.6829 (0.006670) -0.0059 0.005948
Emotions 0 0 0.6888 (0.006586) (0.009374); [0.6346]
Facts Baseline 0 1 0.5386 (0.004717) -0.0021 0.002028
Emotions 0 1 0.5407 (0.004657) (0.006628); [0.3059]
Facts Baseline 1 0 0.6071 (0.006670) 0.0879 -0.087832
Emotions 1 0 0.5192 (0.006586) (0.009374); [ -9.3698]
Facts Baseline 1 1 0.4650 (0.004717) 0.1120 -0.111959
Emotions 1 1 0.3530 (0.004657) (0.006628); [-16.8909]
Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68287 (0.006739) -0.00595 0.005948
Emotions 0 0 0.68882 (0.006114) (0.01144); [0.5199]
Facts Baseline 0 1 0.53864 (0.006739) -0.00203 0.002028
Emotions 0 1 0.54067 (0.006114) (0.01097); [0.1849]
Facts Baseline 1 0 0.60708 (0.006739) 0.08784 -0.08783
Emotions 1 0 0.51924 (0.006114) (0.01252); [-7.016]
Facts Baseline 1 1 0.46499 (0.006739) 0.11196 -0.112
Emotions 1 1 0.35303 (0.006114) (0.01114); [-10.05]
Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68362 (0.001872) -0.00537 0.006384
Emotions 0 0 0.68899 (0.001721) (0.01131); [0.5643]
Facts Baseline 0 1 0.53765 (0.001872) -0.00391 0.004800
Emotions 0 1 0.54156 (0.001721) (0.01084); [0.4428]
Facts Baseline 1 0 0.6088 (0.001872) 0.08947 -0.088912
Emotions 1 0 0.51933 (0.001721) (0.01227); [-7.244]
Facts Baseline 1 1 0.46512 (0.001872) 0.11302 -0.11371
Emotions 1 1 0.3521 (0.001721) (0.01107); [-10.27]
Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.60427 (0.003416) -0.00594
Emotions 0 0 0.61021 (0.003107)
Facts Baseline 0 1 0.56484 (0.003416) -0.00203
Emotions 0 1 0.56687 (0.003107)
Facts Baseline 1 0 0.52847 (0.003416) 0.08783
Emotions 1 0 0.44064 (0.003107)
Facts Baseline 1 1 0.49119 (0.003416) 0.11195
Emotions 1 1 0.37924 (0.003107)
Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.59559 (0.000977) -0.00655
Emotions 0 0 0.60214 (0.0009033)
Facts Baseline 0 1 0.56695 (0.000977) -0.00416
Emotions 0 1 0.57111 (0.0009033)
Facts Baseline 1 0 0.52128 (0.000977) 0.08907
Emotions 1 0 0.43221 (0.0009033)
Facts Baseline 1 1 0.49666 (0.000977) 0.11610
Emotions 1 1 0.38056 (0.0009033)
Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.63011 (0.0009693) -0.00654 0.006384
Emotions 0 0 0.63665 (0.0008952) (0.01131); [0.5643]
Facts Baseline 0 1 0.55545 (0.0009693) -0.00416 0.004202
Emotions 0 1 0.55961 (0.0008952) (0.01074); [0.3911]
Facts Baseline 1 0 0.55579 (0.0009693) 0.08906 -0.088912
Emotions 1 0 0.46673 (0.0008952) (0.01227); [-7.244]
Facts Baseline 1 1 0.48516 (0.0009693) 0.11610 -0.11650
Emotions 1 1 0.36906 (0.0008952) (0.01099); [-10.6]



Click for All treatment arms
# version 2: all treatment arms
formula_fe1_all_lm <- "share ~ treatment*post*post_is_misinfo | user"
fe1_all_lm <- feols(as.formula(formula_fe1_all_lm),panel)

formula_fe2_all_lm <- "share ~ treatment*post*post_is_misinfo + factor(fact) | user"
fe2_all_lm <- feols(as.formula(formula_fe2_all_lm),panel)

formula_fe3_all_lm <- "share ~ treatment*post*post_is_misinfo + factor(type) | user"
fe3_all_lm <- feols(as.formula(formula_fe3_all_lm),panel)

formula_fe4_all_lm <- "share ~ treatment*post*post_is_misinfo + factor(fact)*factor(type) | user"
fe4_all_lm <- feols(as.formula(formula_fe4_all_lm),panel)

formula_fe5_all_lm <- "share ~ treatment*post*post_is_misinfo + factor(post_id) | user"
fe5_all_lm <- feols(as.formula(formula_fe5_all_lm),panel)


# Calculate out-of-sample R2
BiocParallel::register(BiocParallel::MulticoreParam(workers = 8)) # define number of cores

# estimate out-of-sample R2 for all fixed effects models
# use R2oosse function from oosse package
# w user FE
models_fe <- c('fe1_all_lm','fe2_all_lm','fe3_all_lm','fe4_all_lm','fe5_all_lm')

# Estimate R2oosse for all models
R2oos_fe_alltreat <- list()

for (m in seq_along(models_fe)) {

  if (file.exists(paste0("R2oos_fe_alltreat_", m, ".rds"))) {
    R2oos_fe_alltreat[[m]] <- readRDS(paste0("R2oos_fe_alltreat_", m, ".rds"))
  } else {

  formula <- gsub("^share", "", gsub(" \\| user", "", get(paste0("formula_fe", m, "_all_lm"))))
  X <- model.matrix(as.formula(formula),
                    data = panel %>%
                      mutate(type = as.numeric(factor(panel$type, levels = unique(panel$type)))))
  X <- X[, !(colnames(X) %in% "(Intercept)")]
  X <- cbind(X, user = panel$user, treatment = panel$treatment)

  # add fixed effects based on model
  if (m == 2) {
    X <- cbind(X, fact = panel$fact)
  }
  if (m == 3) {
    X <- cbind(X, type = panel$type)
  }
  if (m == 4) {
    X <- cbind(X, fact = panel$fact, type = panel$type)
  }
  if (m == 5) {
    X <- cbind(X, post_id = panel$post_id)
  }

# Define the fit function for models with fixed effects
fitFunLM_fe <- function(y, x) {
    feols(as.formula(get(paste0("formula_fe", m, "_all_lm"))),
    data = panel %>% mutate(treatment = as.integer(treatment)))
}

  # Define the prediction function for models with fixed effects
  predFunLM_fe <- function(mod, x) {
      predict(mod, newdata = x, type = "response")
  }


  # Calculate R2oosse
  R2oos_fe_alltreat[[m]] <- oosse::R2oosse(y = panel$share,
                           x = X,
                           fitFun = fitFunLM_fe,
                           predFun = predFunLM_fe,
                           methodMSE = "CV",
                           cvReps = 100,
                           nFold = 10,
                           nBootstrapsCor = 25)

  # Save results
  saveRDS(R2oos_fe_alltreat[[m]], paste0("R2oos_fe_alltreat_", m, ".rds"))
  }
}
R2oos_fe_alltreat_all <- as.numeric(unlist(lapply(R2oos_fe_alltreat, function(x) x$R2[1])),4)


The sample includes all users who completed the post-survey (n = 8,684). We consider all 9 posts in the pre-treatment period (“pre”) and all 9 posts in the post-treatment period (i.e., “post”).


# Print model
headers <- c("Share (binary indicator)")
model_list <- list(baseline_all_lm,fe1_all_lm,fe2_all_lm,fe3_all_lm,fe4_all_lm,fe5_all_lm)
names <- unique(c(names(baseline_all_lm$coefficients),
                  names(fe1_all_lm$coefficients),
                  names(fe2_all_lm$coefficients),
                  names(fe3_all_lm$coefficients),
                  names(fe4_all_lm$coefficients),
                  names(fe5_all_lm$coefficients)))
variable_labels_wide <- variable_mapping_long[names]
# out-of-sample R2
if (any(ls() %in% "R2oos_fe_alltreat_all")) {
    #R2oos_fe_alltreat_all <- c(R2out_all, R2oos_fe_alltreat_all)
    R2oos_fe_alltreat_all <- c(R2out_all,rep("",length(model_list)-1))
} else {
    R2oos_fe_alltreat_all <- rep("",length(model_list))
}

# remove blankrows
coef_names <- names
matrix_coeff_na <- expand.grid(coef_name = coef_names, model = seq(length(model_list)))
matrix_coeff_na$var <- 0
matrix_coeff_na$var_na <- 0
for (m in 1:length(model_list)) {
  na_coeff <- names(model_list[[m]]$coefficients)[is.na(model_list[[m]]$coefficients)]
  #na_coeff <- names(model_list[[m]]$coefficients[,1])[is.na(model_list[[m]]$coefficients[,1])] # felm
  for (c in na_coeff) {
    matrix_coeff_na$var[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1 # 1 if variable is in the model (not all models have all variables)
    matrix_coeff_na$var_na[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1
  }
}
matrix_coeff_na <- matrix_coeff_na %>% group_by(coef_name) %>% mutate(var = sum(var), var_na = sum(var_na)) %>% distinct(coef_name,var,var_na)
rows_to_omit <- as.vector(unique(matrix_coeff_na$coef_name[matrix_coeff_na$var_na != 0])) # omit if NA in all models
rows_to_omit <- gsub("\\^\\s","^",paste0("^",rows_to_omit,"$", collapse = "|"))
rows_to_omit <- gsub("\\(","\\\\(",gsub("\\)","\\\\)",rows_to_omit))


# keep variables
keep <- list("treatmentFacts Baseline:post:post_is_misinfo" = "Facts Baseline x 1[Post-treatment] x 1[Misinfo]",
             "treatmentNo-course Baseline:post_is_misinfo" = "No-course Baseline x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentReasoning:post:post_is_misinfo" = "Reasoning x 1[Post-treatment] x 1[Misinfo]",
             "treatmentCombo:post:post_is_misinfo" = "Combo x 1[Post-treatment] x 1[Misinfo]",
             
             "treatmentFacts Baseline:post" = "Facts Baseline x 1[Post-treatment]",
             "treatmentNo-course Baseline" = "No-course Baseline x 1[Post-treatment]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentReasoning:post" = "Reasoning x 1[Post-treatment]",
             "treatmentCombo:post" = "Combo x 1[Post-treatment]",
             
             "treatmentFacts Baseline:post_is_misinfo" = "Facts Baseline x 1[Misinfo]",
             "treatmentNo-course Baseline:post_is_misinfo" = "No-course Baseline x 1[Misinfo]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]",
             "treatmentReasoning:post_is_misinfo" = "Reasoning x 1[Misinfo]",
             "treatmentCombo:post_is_misinfo" = "Combo x 1[Misinfo]")

# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_fe_alltreat_all)),
                      reorder.gof = c(8,6,7,9,10,11,12,5,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0051 0.0051 0.0048 0.0051 0.0044 0.0044
  (0.0118) (0.0101) (0.0098) (0.0101) (0.0097) (0.0097)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0051 0.0051 0.0048 0.0051 0.0044 0.0044
  (0.0118) (0.0101) (0.0098) (0.0101) (0.0097) (0.0097)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202 -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0162) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0154 0.0154 0.0129 0.0154 0.0107 0.0107
  (0.0166) (0.0139) (0.0132) (0.0139) (0.0130) (0.0130)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0127 -0.0127 -0.0142 -0.0127 -0.0194* -0.0194*
  (0.0164) (0.0138) (0.0132) (0.0138) (0.0130) (0.0130)
No-course Baseline x 1[Post-treatment] 0.0213**          
  (0.0096)          
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0132) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Reasoning x 1[Post-treatment] -0.0777*** -0.0777*** -0.0785*** -0.0777*** -0.0783*** -0.0783***
  (0.0135) (0.0130) (0.0128) (0.0130) (0.0127) (0.0127)
Combo x 1[Post-treatment] -0.0884*** -0.0884*** -0.0882*** -0.0884*** -0.0883*** -0.0883***
  (0.0134) (0.0131) (0.0128) (0.0131) (0.0127) (0.0127)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0115) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Reasoning x 1[Misinfo] -0.0196** -0.0196** -0.0143* -0.0196** -0.0153* -0.0153*
  (0.0117) (0.0101) (0.0097) (0.0101) (0.0096) (0.0096)
Combo x 1[Misinfo] 0.0040 0.0040 0.0064 0.0040 0.0070 0.0070
  (0.0116) (0.0099) (0.0097) (0.0099) (0.0096) (0.0096)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 0.0429          
Adj. R2 0.0428          
R2 (full model)   0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model)   0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
Out-of-sample R2 0.0428187159122504          
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates No No No No No No
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.
# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
Click to view the full table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      omit.coef = rows_to_omit,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "\\textit{{Out-of-sample R}$^2$" = c(R2oos_fe_alltreat_all)),
                      reorder.gof = c(8,6,7,9,10,11,12,5,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6829***          
  (0.0067)          
No-course Baseline 0.0213**          
  (0.0096)          
Emotions 0.0059          
  (0.0094)          
Reasoning 0.0209**          
  (0.0096)          
Combo 0.0035          
  (0.0095)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0742*** -0.0742***
  (0.0094) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1459*** -0.1173*** -0.1537*** -0.4320***
  (0.0082) (0.0069) (0.0067) (0.0095) (0.0127) (0.0123)
No-course Baseline x 1[Post-treatment] 0.0514*** 0.0514*** 0.0513*** 0.0514*** 0.0507*** 0.0507***
  (0.0136) (0.0126) (0.0124) (0.0126) (0.0123) (0.0123)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0132) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Reasoning x 1[Post-treatment] -0.0777*** -0.0777*** -0.0785*** -0.0777*** -0.0783*** -0.0783***
  (0.0135) (0.0130) (0.0128) (0.0130) (0.0127) (0.0127)
Combo x 1[Post-treatment] -0.0884*** -0.0884*** -0.0882*** -0.0884*** -0.0883*** -0.0883***
  (0.0134) (0.0131) (0.0128) (0.0131) (0.0127) (0.0127)
No-course Baseline x 1[Misinfo] 0.0051 0.0051 0.0048 0.0051 0.0044 0.0044
  (0.0118) (0.0101) (0.0098) (0.0101) (0.0097) (0.0097)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0115) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Reasoning x 1[Misinfo] -0.0196** -0.0196** -0.0143* -0.0196** -0.0153* -0.0153*
  (0.0117) (0.0101) (0.0097) (0.0101) (0.0096) (0.0096)
Combo x 1[Misinfo] 0.0040 0.0040 0.0064 0.0040 0.0070 0.0070
  (0.0116) (0.0099) (0.0097) (0.0099) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0039 0.0039
  (0.0115) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0033 0.0033 0.0046 0.0033 0.0042 0.0042
  (0.0167) (0.0140) (0.0133) (0.0140) (0.0131) (0.0131)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202 -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0162) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0154 0.0154 0.0129 0.0154 0.0107 0.0107
  (0.0166) (0.0139) (0.0132) (0.0139) (0.0130) (0.0130)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0127 -0.0127 -0.0142 -0.0127 -0.0194* -0.0194*
  (0.0164) (0.0138) (0.0132) (0.0138) (0.0130) (0.0130)
Post domain 2     -0.2001***   -0.1794***  
      (0.0057)   (0.0095)  
Post domain 3     -0.2813***   -0.3043***  
      (0.0055)   (0.0095)  
Post domain 4     -0.1804***   -0.2332***  
      (0.0056)   (0.0097)  
Post domain 5     0.0545***   -0.0010  
      (0.0051)   (0.0087)  
Post domain 6     0.0164***   0.0389***  
      (0.0054)   (0.0084)  
Post domain 7     -0.2347***   -0.1827***  
      (0.0056)   (0.0094)  
Post domain 8     -0.2195***   -0.1160***  
      (0.0057)   (0.0095)  
Post domain 9     0.0369***   -0.0608***  
      (0.0053)   (0.0091)  
Post domain 10     -0.0565***   -0.0963***  
      (0.0054)   (0.0091)  
Post domain 11     -0.1586***   -0.1739***  
      (0.0057)   (0.0094)  
Post domain 12     -0.1047***   -0.1343***  
      (0.0054)   (0.0092)  
Post domain 13     -0.1541***   -0.2155***  
      (0.0055)   (0.0093)  
Post domain 14     -0.2759***   -0.3151***  
      (0.0057)   (0.0097)  
Post domain 15     -0.1868***   -0.2755***  
      (0.0056)   (0.0095)  
1[Combo manipulation tactic]       -0.0512*** -0.0275***  
        (0.0041) (0.0078)  
1[Emotions manipulation tactic]       -0.0154*** -0.0585***  
        (0.0041) (0.0080)  
1[Reasoning manipulation tactic]       -0.0143*** 0.0208***  
        (0.0041) (0.0079)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0536***  
          (0.0158)  
Post domain 3 x 1[Combo manipulation tactic]         0.0462***  
          (0.0152)  
Post domain 4 x 1[Combo manipulation tactic]         0.0789***  
          (0.0153)  
Post domain 5 x 1[Combo manipulation tactic]         0.0971***  
          (0.0149)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3110***  
          (0.0147)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0471***  
          (0.0153)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0192  
          (0.0155)  
Post domain 9 x 1[Combo manipulation tactic]         0.1469***  
          (0.0150)  
Post domain 10 x 1[Combo manipulation tactic]         0.0318**  
          (0.0154)  
Post domain 11 x 1[Combo manipulation tactic]         0.0595***  
          (0.0153)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0230*  
          (0.0156)  
Post domain 13 x 1[Combo manipulation tactic]         0.0600***  
          (0.0154)  
Post domain 14 x 1[Combo manipulation tactic]         0.0296**  
          (0.0153)  
Post domain 15 x 1[Combo manipulation tactic]         0.0822***  
          (0.0153)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0845***  
          (0.0155)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1118***  
          (0.0154)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0617***  
          (0.0153)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1184***  
          (0.0148)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1477***  
          (0.0147)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0324**  
          (0.0151)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1539***  
          (0.0153)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1660***  
          (0.0153)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1090***  
          (0.0152)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0397***  
          (0.0154)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1449***  
          (0.0153)  
Post domain 13 x 1[Emotions manipulation tactic]         0.1875***  
          (0.0151)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1025***  
          (0.0154)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3384***  
          (0.0155)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0427***  
          (0.0155)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0517***  
          (0.0150)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.0985***  
          (0.0155)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0326**  
          (0.0150)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0629***  
          (0.0144)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1533***  
          (0.0149)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2920***  
          (0.0151)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1260***  
          (0.0151)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0377***  
          (0.0151)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0529***  
          (0.0155)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0132  
          (0.0151)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0267**  
          (0.0153)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0441***  
          (0.0152)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0236*  
          (0.0151)  
Post 2 indicator           -0.1794***
            (0.0095)
Post 3 indicator           -0.3043***
            (0.0095)
Post 4 indicator           -0.2332***
            (0.0097)
Post 5 indicator           -0.0010
            (0.0087)
Post 6 indicator           0.0389***
            (0.0084)
Post 7 indicator           -0.1827***
            (0.0094)
Post 8 indicator           -0.1160***
            (0.0095)
Post 9 indicator           -0.0608***
            (0.0091)
Post 10 indicator           -0.0963***
            (0.0091)
Post 11 indicator           -0.1739***
            (0.0094)
Post 12 indicator           -0.1343***
            (0.0092)
Post 13 indicator           -0.2155***
            (0.0093)
Post 14 indicator           -0.3151***
            (0.0097)
Post 15 indicator           -0.2755***
            (0.0095)
Post 16 indicator           0.2508***
            (0.0118)
Post 17 indicator           0.0178*
            (0.0119)
Post 18 indicator           -0.0072
            (0.0113)
Post 19 indicator           0.0965***
            (0.0114)
Post 20 indicator           0.3469***
            (0.0115)
Post 21 indicator           -0.0213**
            (0.0113)
Post 22 indicator           0.0211**
            (0.0114)
Post 23 indicator           0.1157***
            (0.0118)
Post 24 indicator           0.3370***
            (0.0116)
Post 25 indicator           0.1863***
            (0.0118)
Post 26 indicator           0.1364***
            (0.0120)
Post 27 indicator           0.0935***
            (0.0116)
Post 28 indicator           0.0953***
            (0.0117)
Post 29 indicator           -0.0346***
            (0.0113)
Post 30 indicator           0.0576***
            (0.0116)
Post 31 indicator           0.2198***
            (0.0117)
Post 32 indicator           -0.0441***
            (0.0115)
Post 33 indicator           0.0273***
            (0.0113)
Post 34 indicator           0.0482***
            (0.0114)
Post 35 indicator           0.3371***
            (0.0115)
Post 36 indicator           0.4064***
            (0.0116)
Post 37 indicator           0.0046
            (0.0112)
Post 38 indicator           -0.0501***
            (0.0112)
Post 39 indicator           0.3250***
            (0.0117)
Post 40 indicator           0.2324***
            (0.0118)
Post 41 indicator           0.0062
            (0.0116)
Post 42 indicator           0.2304***
            (0.0118)
Post 43 indicator           0.1917***
            (0.0115)
Post 44 indicator           0.0072
            (0.0114)
Post 45 indicator           0.2826***
            (0.0118)
Post 46 indicator           0.2991***
            (0.0118)
Post 47 indicator           0.1624***
            (0.0118)
Post 48 indicator           -0.0569***
            (0.0110)
Post 49 indicator           0.1643***
            (0.0121)
Post 50 indicator           0.3306***
            (0.0118)
Post 51 indicator           0.4009***
            (0.0113)
Post 52 indicator           -0.0369***
            (0.0113)
Post 53 indicator           -0.1089***
            (0.0115)
Post 54 indicator           0.3643***
            (0.0116)
Post 55 indicator           0.2405***
            (0.0118)
Post 56 indicator           0.1781***
            (0.0122)
Post 57 indicator           0.1780***
            (0.0115)
Post 58 indicator           0.1102***
            (0.0117)
Post 59 indicator           0.0281***
            (0.0116)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 0.0429          
Adj. R2 0.0428          
R2 (full model)   0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model)   0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
\textit{{Out-of-sample R}\(^2\) 0.0428187159122504          
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates No No No No No No
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.
cat('</details>')


Prediction

Standard errors of the share predicted value are estimated using the Delta method. Treatment effects standard errors are clustered at the user level and reported in parentheses. t-ratios are reported in brackets. Treatment effects estimates for specifications that include Post-Tactic ID fixed effects are not reported since all tactics are misinformation.

# Models' predictions
models <- c("Model 1: Baseline",
            "Model 2: User ID FE",
            "Model 3: User ID FE + Post domain FE",
            "Model 4: User ID FE + Post tactic",
            "Model 5: User ID FE + Post domain x Post tactic",
            "Model 6: User ID FE + Post ID FE")
list_models <- list(baseline_all_lm, fe1_all_lm,fe2_all_lm,fe3_all_lm,fe4_all_lm,fe5_all_lm)
treatmentLevels <- unique(panel$treatment)


second_fixed_effects <- list("",
                             "",
                             c(fact = unique(panel$fact)),
                             c(fact = unique(panel$type)),
                             list(type = unique(panel$type),fact = unique(panel$fact)),
                             c(user = unique(panel$post_id)))

second_fixed_effects_name <- list("","","fact","type",c("type","fact"),"post_id")

second_fixed_effects_feglm <- c("share ~ treatment", 
                                "share ~ treatment",
                              "share ~ treatment + factor(fact)",
                              "share ~ treatment + factor(type)",
                              "share ~ treatment + factor(fact)*factor(type)",
                              "share ~ treatment + factor(post_id)")

for (m in 1:length(models)) {
  # output df
  prediction_df <- expand.grid(treatment = unique(panel$treatment),
                post = c(0, 1),
                post_is_misinfo = c(0, 1),
                prediction = NA,
                prediction_se = NA)
  
  for (treatment in unique(panel$treatment)) {
    for (post in c(0,1)) {
      for (misinfo in c(0,1)) {
        
        # Create new data
        # 1 vs. 2 fixed effects
        if (m %in% c(2,3,4,6)) {
          predictorVariables <- expand.grid(treatment = treatment,
                                            post = post,
                                            post_is_misinfo = misinfo,
                                            user = unique(panel$user[panel$treatment == treatment]),
                                            second_fixed_effects_name = second_fixed_effects[[m]])
        } 
        if (m %in% c(5)) {
          predictorVariables <- expand.grid(treatment = treatment,
                                            post = post,
                                            post_is_misinfo = misinfo,
                                            user = unique(panel$user[panel$treatment == treatment]),
                                            second_fixed_effects_name = second_fixed_effects[[m]][[1]],
                                            second_fixed_effects_name2 = second_fixed_effects[[m]][[2]])
        }

        # change name of second-fixed effect
        if (m %in% c(2)) {
          predictorVariables <- predictorVariables %>% select(-second_fixed_effects_name)
        }
        if (m %in% c(3,4,6)) {
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name"] <- second_fixed_effects_name[m]
        } 
        if (m %in% c(5)) {
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name"] <- second_fixed_effects_name[[m]][1]
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name2"] <- second_fixed_effects_name[[m]][2]
        }
        
        # predict value
        if (m != 1) {
        predicted_shares <- predict(list_models[[m]], newdata = predictorVariables)
        predictorVariables$prediction <- predicted_shares
        
        # mean of predicted value
        prediction_df$prediction[prediction_df$treatment == treatment & prediction_df$post == post & prediction_df$post_is_misinfo == misinfo] <- format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,mean)[,4], digits = 5)
        # se of predicted value
        prediction_df$prediction_se[prediction_df$treatment == treatment & prediction_df$post == post & prediction_df$post_is_misinfo == misinfo] <- paste0("(",format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,se_cont)[,4], digits = 4),")")
        
        }
        
      }
    }
  }
  
  # predicted value
  if (m == 1) {
    predictorVariables <- expand.grid(treatment = unique(panel$treatment),
                                          post = c(0,1),
                                          post_is_misinfo = c(0,1)) 
    predictions <- predict(baseline_all_lm, newdata = predictorVariables, type = "response", se.fit = TRUE)
    prediction_df <- predictorVariables
    prediction_df$prediction <- format(predictions$fit, digits = 4)
    prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")
    
      emm_res <- emmeans(baseline_all_lm, specs = pairwise ~ treatment | post * post_is_misinfo)
  contrast_res <- contrast(emm_res, method = "revpairwise")
  contrast_df <- as.data.frame(contrast_res) 
  contrast_df <- contrast_df %>% filter(contrast == "Emotions - Facts Baseline") %>% 
  select(post, post_is_misinfo, estimate, SE, t.ratio)
  contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(t.ratio, digits = 4),"]"))) %>%
    mutate(estimate = format(estimate, digits = 4)) %>%
    mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
    select(treatment, post, post_is_misinfo, estimate)
  
  prediction_df <- left_join(prediction_df, contrast_df, 
                          by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
  }
  
# calculate difference between Facts Baseline and all other treatments
# prediction_df <- prediction_df %>%
#   group_by(post,post_is_misinfo) %>%
#   mutate(lag = ifelse(treatment == "Facts Baseline",
#                       prediction, NA)) %>%
#   tidyr::fill(lag) %>%
#   ungroup() %>%
#   mutate(te = ifelse(treatment != "Facts Baseline",
#                      format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
#   select(-lag) %>%
#   mutate(te = ifelse(is.na(te),"",te))
  
    # calculate difference between Facts Baseline and all other treatments
    prediction_df <- prediction_df %>%
    group_by(post,post_is_misinfo) %>%
    mutate(lag = ifelse(treatment == "Emotions",
                        prediction, NA)) %>%
    tidyr::fill(lag, .direction = "up") %>%
    ungroup() %>% 
      mutate(te = ifelse(treatment == "Facts Baseline",
                                     format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
      select(-lag) %>%
      mutate(te = ifelse(is.na(te),"",te))
  
    if (m %in% c(2,3,6)) {
     # predicted treatment effects
      contrast_df <- data.frame()
        for (p in c(0,1)) {
        for (mis in c(0,1)) {
          
          fixed_effect_model <- feglm(as.formula(second_fixed_effects_feglm[m]),panel %>% 
                                        filter(post == p & post_is_misinfo == mis), cluster = "user")
          
          # obtain data frame with estimate, std error, and z value
          fixed_effect_model_df_add <- data.frame(
            treatment = c("No-course Baseline","Emotions","Reasoning","Combo"),
            estimate = format(coef(fixed_effect_model)[grepl("treatment",names(coef(fixed_effect_model)))], digits = 4),
            SE = sqrt(diag(vcov(fixed_effect_model)))[grepl("treatment",names(diag(vcov(fixed_effect_model))))],
            z.ratio = coef(fixed_effect_model)[grepl("treatment",names(coef(fixed_effect_model)))] / sqrt(diag(vcov(fixed_effect_model)))[grepl("treatment",names(diag(vcov(fixed_effect_model))))],
            post = p,
            post_is_misinfo = mis
          )
          # make rownames a column
          fixed_effect_model_df_add <- rownames_to_column(fixed_effect_model_df_add, var = "treatment2") %>% 
            filter(treatment == "Emotions" & treatment2 == "treatmentEmotions") %>% select(-treatment2) %>%
            mutate(zratio = paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))

          fixed_effect_model_df_add <- rbind(fixed_effect_model_df_add %>% mutate(treatment = "Facts Baseline"),fixed_effect_model_df_add %>% mutate(treatment = "Emotions")) %>%
            mutate(estimate = ifelse(treatment == "Emotions", zratio, estimate)) %>% 
            mutate(post = ifelse(post == 0,as.numeric(0),as.numeric(1)),
                   post_is_misinfo = ifelse(post_is_misinfo == 0,as.numeric(0),as.numeric(1))) %>%
            select(treatment, post, post_is_misinfo, estimate) %>%
            mutate(estimate = ifelse(is.na(estimate),"",estimate))
          
          contrast_df <- rbind(contrast_df, fixed_effect_model_df_add)
        }
        }
        
       prediction_df <- left_join(prediction_df, contrast_df, 
                                by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    }
    
    if (m %in% c(4,5)) {
      prediction_df$estimate <- ""
    }
    

    prediction_df <- prediction_df %>% select(treatment,post,post_is_misinfo,prediction,prediction_se,te,estimate)
    
    prediction_df <- prediction_df %>% arrange(post,post_is_misinfo) %>%
      mutate(estimate = ifelse(is.na(estimate),"",estimate))

  k <- knitr::kable(prediction_df, caption = models[m],
                         col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","Treatment effect<br>Emotions--Facts"))
  print(k)
}
Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.6829 (0.006659) -0.0059 0.005948
Emotions 0 0 0.6888 (0.006575) (0.009358); [0.6356]
No-course Baseline 0 0 0.7041 (0.006983)
Reasoning 0 0 0.7037 (0.006853)
Combo 0 0 0.6864 (0.006754)
Facts Baseline 0 1 0.5386 (0.004709) -0.0021 0.002028
Emotions 0 1 0.5407 (0.004649) (0.006617); [0.3064]
No-course Baseline 0 1 0.5650 (0.004937)
Reasoning 0 1 0.5399 (0.004846)
Combo 0 1 0.5462 (0.004776)
Facts Baseline 1 0 0.6071 (0.006659) 0.0879 -0.087832
Emotions 1 0 0.5192 (0.006575) (0.009358); [ -9.3854]
No-course Baseline 1 0 0.6798 (0.006983)
Reasoning 1 0 0.5503 (0.006853)
Combo 1 0 0.5222 (0.006754)
Facts Baseline 1 1 0.4650 (0.004709) 0.1120 -0.111959
Emotions 1 1 0.3530 (0.004649) (0.006617); [-16.9190]
No-course Baseline 1 1 0.5461 (0.004937)
Reasoning 1 1 0.4040 (0.004846)
Combo 1 1 0.3715 (0.004776)
Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68287 (0.006739) -0.00595 0.005948
Emotions 0 0 0.68882 (0.006114) (0.01144); [0.5199]
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53864 (0.006739) -0.00203 0.002028
Emotions 0 1 0.54067 (0.006114) (0.01097); [0.1849]
No-course Baseline 0 1 0.56501 (0.006896)
Reasoning 0 1 0.53994 (0.00667)
Combo 0 1 0.54617 (0.006623)
Facts Baseline 1 0 0.60708 (0.006739) 0.08784 -0.08783
Emotions 1 0 0.51924 (0.006114) (0.01252); [-7.017]
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46499 (0.006739) 0.11196 -0.11196
Emotions 1 1 0.35303 (0.006114) (0.01114); [-10.05]
No-course Baseline 1 1 0.54607 (0.006896)
Reasoning 1 1 0.40404 (0.00667)
Combo 1 1 0.37146 (0.006623)
Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68359 (0.001863) -0.00544 0.006456
Emotions 0 0 0.68903 (0.001712) (0.01131); [0.5707]
No-course Baseline 0 0 0.70468 (0.001914)
Reasoning 0 0 0.70177 (0.001852)
Combo 0 0 0.68565 (0.001838)
Facts Baseline 0 1 0.53767 (0.001863) -0.00388 0.004722
Emotions 0 1 0.54155 (0.001712) (0.01084); [0.4355]
No-course Baseline 0 1 0.56355 (0.001914)
Reasoning 0 1 0.54155 (0.001852)
Combo 0 1 0.54616 (0.001838)
Facts Baseline 1 0 0.60875 (0.001863) 0.08945 -0.08884
Emotions 1 0 0.5193 (0.001712) (0.01227); [-7.239]
No-course Baseline 1 0 0.6811 (0.001914)
Reasoning 1 0 0.54844 (0.001852)
Combo 1 0 0.52264 (0.001838)
Facts Baseline 1 1 0.46512 (0.001863) 0.11300 -0.11362
Emotions 1 1 0.35212 (0.001712) (0.01107); [-10.26]
No-course Baseline 1 1 0.54686 (0.001914)
Reasoning 1 1 0.40336 (0.001852)
Combo 1 1 0.37125 (0.001838)
Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.66264 (0.003376) -0.00594
Emotions 0 0 0.66858 (0.003064)
No-course Baseline 0 0 0.6839 (0.003455)
Reasoning 0 0 0.68351 (0.003342)
Combo 0 0 0.66617 (0.003319)
Facts Baseline 0 1 0.54538 (0.003376) -0.00203
Emotions 0 1 0.54741 (0.003064)
No-course Baseline 0 1 0.57175 (0.003455)
Reasoning 0 1 0.54668 (0.003342)
Combo 0 1 0.55291 (0.003319)
Facts Baseline 1 0 0.58684 (0.003376) 0.08783
Emotions 1 0 0.49901 (0.003064)
No-course Baseline 1 0 0.65954 (0.003455)
Reasoning 1 0 0.53006 (0.003342)
Combo 1 0 0.50199 (0.003319)
Facts Baseline 1 1 0.47173 (0.003376) 0.11195
Emotions 1 1 0.35978 (0.003064)
No-course Baseline 1 1 0.55281 (0.003455)
Reasoning 1 1 0.41079 (0.003342)
Combo 1 1 0.3782 (0.003319)
Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68932 (0.0009589) -0.00661
Emotions 0 0 0.69593 (0.0008842)
No-course Baseline 0 0 0.71016 (0.000986)
Reasoning 0 0 0.70796 (0.000956)
Combo 0 0 0.6916 (0.0009496)
Facts Baseline 0 1 0.53563 (0.0009589) -0.00416
Emotions 0 1 0.53979 (0.0008842)
No-course Baseline 0 1 0.56092 (0.000986)
Reasoning 0 1 0.53896 (0.000956)
Combo 0 1 0.54489 (0.0009496)
Facts Baseline 1 0 0.61511 (0.0009589) 0.08900
Emotions 1 0 0.52611 (0.0008842)
No-course Baseline 1 0 0.68661 (0.000986)
Reasoning 1 0 0.55543 (0.000956)
Combo 1 0 0.5291 (0.0009496)
Facts Baseline 1 1 0.46532 (0.0009589) 0.11603
Emotions 1 1 0.34929 (0.0008842)
No-course Baseline 1 1 0.54547 (0.000986)
Reasoning 1 1 0.40099 (0.000956)
Combo 1 1 0.36686 (0.0009496)
Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.89807 (0.001031) -0.00662 0.006456
Emotions 0 0 0.90469 (0.0009602) (0.01131); [0.5707]
No-course Baseline 0 0 0.91892 (0.001063)
Reasoning 0 0 0.91672 (0.001033)
Combo 0 0 0.90035 (0.001024)
Facts Baseline 0 1 0.46604 (0.001031) -0.00416 0.004337
Emotions 0 1 0.4702 (0.0009602) (0.01075); [0.4033]
No-course Baseline 0 1 0.49133 (0.001063)
Reasoning 0 1 0.46937 (0.001033)
Combo 0 1 0.47529 (0.001024)
Facts Baseline 1 0 0.82387 (0.001031) 0.08901 -0.08884
Emotions 1 0 0.73486 (0.0009602) (0.01227); [-7.239]
No-course Baseline 1 0 0.89536 (0.001063)
Reasoning 1 0 0.76419 (0.001033)
Combo 1 0 0.73785 (0.001024)
Facts Baseline 1 1 0.39573 (0.001031) 0.11603 -0.11615
Emotions 1 1 0.2797 (0.0009602) (0.011); [-10.56]
No-course Baseline 1 1 0.47588 (0.001063)
Reasoning 1 1 0.3314 (0.001033)
Combo 1 1 0.29727 (0.001024)




Covariates

# version 1: 2 treatment arms

covariate_list <- c(demographics_demeaned_treatment,
                    sharing_demeaned_treatment,
                    sharing_tactic_demeaned_treatment,
                    demographics_sharing_demeaned_treatment,
                    all_covariates_demeaned_treatment)

cov_estimates_list <- list()

for (cov_list in covariate_list) {

# Demographics
formula_cov1_lm <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list)
cov1_lm <- feols(as.formula(formula_cov1_lm),panel_2)

formula_cov2_lm <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list," | user")
cov2_lm <- feols(as.formula(formula_cov2_lm),panel_2)

# Misinfo and Non-misinfo sharing rates
formula_cov3_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact) "," + ",cov_list," | user")
cov3_lm <- feols(as.formula(formula_cov3_lm),panel_2)

# Misinfo, Non-misinfo, and Tactic sharing rates
formula_cov4_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(type) "," + ",cov_list," | user")
cov4_lm <- feols(as.formula(formula_cov4_lm),panel_2)

# Demographics and Misinfo and Non-misinfo sharing rates
formula_cov5_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact)*factor(type) "," + ",cov_list," | user")
cov5_lm <- feols(as.formula(formula_cov5_lm),panel_2)

# Demographics, Misinfo and Non-misinfo sharing rates, and Tactic sharing rates
formula_cov6_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(post_id) "," + ",cov_list," | user")
cov6_lm <- feols(as.formula(formula_cov6_lm),panel_2)

cov_estimates_list[[length(cov_estimates_list) + 1]] <- list(cov1_lm,cov2_lm,cov3_lm,cov4_lm,cov5_lm,cov6_lm)
}
# Calculate out-of-sample R2
BiocParallel::register(BiocParallel::MulticoreParam(workers = 8)) # define number of cores

# estimate out-of-sample R2 for all fixed effects models
# use R2oosse function from oosse package
# w user FE

if (file.exists("cov_roose_list.rds")) {

  cov_roose_list <- readRDS("cov_roose_list.rds")
  # extract each element from list
  R2oos_cov_2treat_all <- (cov_roose_list)

} else {

cov_roose_list <- list()
models_cov <- list('cov1_lm','cov2_lm','cov3_lm','cov4_lm','cov5_lm','cov6_lm')

for (cov_list in covariate_list) {

# Demographics
formula_cov1_lm <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list)
formula_cov2_lm <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list," | user")
# Misinfo and Non-misinfo sharing rates
formula_cov3_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact) "," + ",cov_list," | user")
# Misinfo, Non-misinfo, and Tactic sharing rates
formula_cov4_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(type) "," + ",cov_list," | user")
# Demographics and Misinfo and Non-misinfo sharing rates
formula_cov5_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact)*factor(type) "," + ",cov_list," | user")
# Demographics, Misinfo and Non-misinfo sharing rates, and Tactic sharing rates
formula_cov6_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(post_id) "," + ",cov_list," | user")

# Estimate R2oosse for all models
R2oos_cov_2treat <- list()

for (m in seq_along(models_cov)) {

  #print(paste0('cov: ',length(cov_roose_list) + 1,'; model: ',m))

  if (file.exists(paste0("R2oos_cov_2treat_", m,"_",length(cov_roose_list) + 1,".rds"))) {
    R2oos_cov_2treat[[m]] <- readRDS(paste0("R2oos_cov_2treat_", m,"_",length(cov_roose_list) + 1,".rds"))
  } else {

  formula <- gsub("^share", "", gsub(" \\| user", "", get(paste0("formula_cov", m, "_lm"))))
  X <- model.matrix(as.formula(formula),
                    data = panel_2 %>%
                      mutate(type = as.numeric(factor(panel_2$type, levels = unique(panel_2$type)))))
  X <- X[, !(colnames(X) %in% "(Intercept)")]
  X <- cbind(X, user = panel_2$user, treatment = panel_2$treatment)

  # identify estimation dataset
  estimation_data <- panel_2 %>% filter(row_number() %in% fixest::obs(get(models_cov[[m]])))

  if ("treatment" %in% colnames(X)) {
      X[,"treatment"] <- factor(estimation_data$treatment,
                                levels = levels(estimation_data$treatment))
  }

  # add fixed effects based on model
  if (m == 3) {
    X <- cbind(X, fact = estimation_data$fact)
  }
  if (m == 4) {
    X <- cbind(X, type = as.numeric(factor(estimation_data$type, levels = unique(estimation_data$type))))
  }
  if (m == 5) {
    X <- cbind(X, fact = estimation_data$fact,
                  type = as.numeric(factor(estimation_data$type), levels = unique(estimation_data$type)))
  }
  if (m == 6) {
    X <- cbind(X, post_id = estimation_data$post_id)
  }

  # Define the fit function for models with fixed effects
  fitFunLM_cov <- function(y, x) {
      fixest::feols(as.formula(get(paste0("formula_cov", m, "_lm"))),
            data = estimation_data %>%
                      mutate(type = as.numeric(factor(estimation_data$type, levels = unique(estimation_data$type)))))
  }

  # Define the prediction function for models with fixed effects
  predFunLM_cov <- function(mod,x) {
    predict(mod, newdata = x, type = "response")
  }


  # Calculate R2oosse
  R2oos_cov_2treat[[m]] <- oosse::R2oosse(y = estimation_data$share,
                           x = X,
                           fitFun = fitFunLM_cov,
                           predFun = predFunLM_cov,
                           methodMSE = "CV",
                           cvReps = 100,
                           nFold = 10,
                           nBootstrapsCor = 25)

  # Save results
  saveRDS(R2oos_cov_2treat[[m]], paste0("R2oos_cov_2treat_", m,"_",length(cov_roose_list) + 1,".rds"))
  }
}

R2oos_cov_2treat_all <- as.numeric(unlist(lapply(R2oos_cov_2treat, function(x) x$R2[1])),4)

cov_roose_list[[length(cov_roose_list) + 1]] <- R2oos_cov_2treat_all
}
saveRDS(cov_roose_list, "cov_roose_list.rds")
}
covariate_list_names <- c("Demographics",
                          "Sharing rates",
                          "Tactic sharing rates",
                          "Demographics + Sharing rates",
                          "Demographics + Sharing rates + Tactic sharing rates")

for (cov in seq(length(covariate_list))) {

# Print model
headers <- c("Share (binary indicator)")
model_list <- cov_estimates_list[[cov]]
names <- unique(c(names(cov_estimates_list[[cov]][[1]]$coefficients),
                  names(cov_estimates_list[[cov]][[2]]$coefficients),
                  names(cov_estimates_list[[cov]][[3]]$coefficients),
                  names(cov_estimates_list[[cov]][[4]]$coefficients),
                  names(cov_estimates_list[[cov]][[5]]$coefficients),
                  names(cov_estimates_list[[cov]][[6]]$coefficients)))
variable_labels_wide <- variable_mapping_long[names]

# remove blankrows
coef_names <- names
matrix_coeff_na <- expand.grid(coef_name = coef_names, model = seq(length(model_list)))
matrix_coeff_na$var <- 0
matrix_coeff_na$var_na <- 0
for (m in 1:length(model_list)) {
  na_coeff <- names(model_list[[m]]$coefficients)[is.na(model_list[[m]]$coefficients)]
  for (c in na_coeff) {
    matrix_coeff_na$var[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1 # 1 if variable is in the model (not all models have all variables)
    matrix_coeff_na$var_na[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1
  }
}
matrix_coeff_na <- matrix_coeff_na %>% group_by(coef_name) %>% mutate(var = sum(var), var_na = sum(var_na)) %>% distinct(coef_name,var,var_na)
rows_to_omit <- as.vector(unique(matrix_coeff_na$coef_name[matrix_coeff_na$var_na != 0])) # omit if NA in all models
rows_to_omit <- gsub("\\^\\s","^",paste0("^",rows_to_omit,"$", collapse = "|"))
rows_to_omit <- gsub("\\(","\\\\(",gsub("\\)","\\\\)",rows_to_omit))

# out-of-sample R2
if (any(ls() %in% "R2oos_cov_2treat_all")) {
  # obtain first elements of list
  #R2oos_cov_2treat_all <- cov_roose_list[[cov]]
  R2oos_cov_2treat_all <- rep("",length(model_list))
} else {
    R2oos_cov_2treat_all <- rep("",length(model_list))
}

# keep variables
keep <- list("treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]")

# Print model name
cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))

# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects\n<br>Covariates:",covariate_list_names[cov]),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = c("",rep(covariate_list_names[cov],length(model_list)-1)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_cov_2treat_all)),
                      reorder.gof = c(6,7,8,9,10,5,1,2,3,4)
)
cat(html_table)
cat("<br>")
                      
# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects\n<br>Covariates:",covariate_list_names[cov]),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      omit.coef = rows_to_omit,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = c("",rep(covariate_list_names[cov],length(model_list)-1)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_cov_2treat_all)),
                      reorder.gof = c(6,7,8,9,10,5,1,2,3,4)
)
cat(html_table)
cat('</details>')
cat('<br>\n<br>\n<br>')
}
\[\text{Demographics}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202 -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0159) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0130) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0112) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 (full model) 0.0865 0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model) 0.0859 0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics Demographics Demographics Demographics Demographics
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6877***          
  (0.0065)          
Emotions 0.0004          
  (0.0092)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0743*** -0.0743***
  (0.0092) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1460*** -0.0394*** -0.0286*** -0.0747***
  (0.0080) (0.0069) (0.0067) (0.0060) (0.0066) (0.0054)
Age -0.0036          
  (0.0030)          
Man 0.0136***          
  (0.0027)          
Some college -0.0063**          
  (0.0033)          
Bachelor’s degree -0.0143***          
  (0.0034)          
Graduate degree -0.0108***          
  (0.0029)          
Married 0.0006          
  (0.0030)          
Unemployed -0.0155***          
  (0.0035)          
Employed -0.0090***          
  (0.0038)          
Mostly urban -0.0282***          
  (0.0032)          
Suburban -0.0174***          
  (0.0031)          
Christian 0.0089***          
  (0.0028)          
Attends religious services 0.0103***          
  (0.0027)          
Uses social media -0.0196***          
  (0.0025)          
Hours spent on Social Media 0.0076***          
  (0.0030)          
Social Media Share: 80-100% 0.0827***          
  (0.0033)          
Social Media Share: 60-80% 0.1135***          
  (0.0036)          
Social Media Share: 40-60% 0.0988***          
  (0.0037)          
Social Media Share: 20-40% 0.0524***          
  (0.0035)          
Passed attention check at pre-treatment -0.0217***          
  (0.0027)          
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0130) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0112) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0040 0.0040
  (0.0113) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
Emotions x Age -0.0116***          
  (0.0044)          
Emotions x Man -0.0022          
  (0.0038)          
Emotions x Some college -0.0034          
  (0.0047)          
Emotions x Bachelor’s degree 0.0086**          
  (0.0047)          
Emotions x Graduate degree 0.0109***          
  (0.0039)          
Emotions x Married 0.0051          
  (0.0043)          
Emotions x Unemployed -0.0071*          
  (0.0049)          
Emotions x Employed -0.0189***          
  (0.0053)          
Emotions x Mostly urban 0.0286***          
  (0.0045)          
Emotions x Suburban 0.0149***          
  (0.0044)          
Emotions x Christian -0.0083**          
  (0.0040)          
Emotions x Attends religious services -0.0214***          
  (0.0039)          
Emotions x Uses social media 0.0062*          
  (0.0040)          
Emotions x Hours spent on Social Media -0.0128***          
  (0.0041)          
Emotions x Social Media Share: 80-100% -0.0095**          
  (0.0046)          
Emotions x Social Media Share: 60-80% -0.0077*          
  (0.0051)          
Emotions x Social Media Share: 40-60% -0.0166***          
  (0.0053)          
Emotions x Social Media Share: 20-40% -0.0092**          
  (0.0049)          
Emotions x Passed attention check at pre-treatment -0.0039          
  (0.0038)          
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202 -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0159) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Post domain 2     -0.1989***   -0.1730***  
      (0.0089)   (0.0150)  
Post domain 3     -0.2873***   -0.3172***  
      (0.0087)   (0.0148)  
Post domain 4     -0.1939***   -0.2624***  
      (0.0089)   (0.0151)  
Post domain 5     0.0573***   -0.0069  
      (0.0080)   (0.0137)  
Post domain 6     0.0263***   0.0467***  
      (0.0085)   (0.0134)  
Post domain 7     -0.2382***   -0.2006***  
      (0.0088)   (0.0149)  
Post domain 8     -0.2172***   -0.1220***  
      (0.0088)   (0.0147)  
Post domain 9     0.0456***   -0.0596***  
      (0.0082)   (0.0143)  
Post domain 10     -0.0577***   -0.1001***  
      (0.0085)   (0.0143)  
Post domain 11     -0.1629***   -0.1861***  
      (0.0090)   (0.0149)  
Post domain 12     -0.1110***   -0.1377***  
      (0.0085)   (0.0144)  
Post domain 13     -0.1564***   -0.2181***  
      (0.0088)   (0.0149)  
Post domain 14     -0.2815***   -0.3292***  
      (0.0090)   (0.0152)  
Post domain 15     -0.1923***   -0.2956***  
      (0.0087)   (0.0151)  
1[Combo manipulation tactic]       -0.1294*** -0.1532***  
        (0.0044) (0.0192)  
1[Emotions manipulation tactic]       -0.0960*** -0.2038***  
        (0.0042) (0.0198)  
1[Reasoning manipulation tactic]       -0.0890*** -0.1088***  
        (0.0041) (0.0194)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0666***  
          (0.0245)  
Post domain 3 x 1[Combo manipulation tactic]         0.0541**  
          (0.0233)  
Post domain 4 x 1[Combo manipulation tactic]         0.0984***  
          (0.0236)  
Post domain 5 x 1[Combo manipulation tactic]         0.1031***  
          (0.0234)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3263***  
          (0.0226)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0368*  
          (0.0238)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0191  
          (0.0241)  
Post domain 9 x 1[Combo manipulation tactic]         0.1669***  
          (0.0234)  
Post domain 10 x 1[Combo manipulation tactic]         0.0193  
          (0.0239)  
Post domain 11 x 1[Combo manipulation tactic]         0.0561**  
          (0.0242)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0390*  
          (0.0240)  
Post domain 13 x 1[Combo manipulation tactic]         0.0474**  
          (0.0239)  
Post domain 14 x 1[Combo manipulation tactic]         0.0208  
          (0.0235)  
Post domain 15 x 1[Combo manipulation tactic]         0.1033***  
          (0.0237)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0815***  
          (0.0243)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1354***  
          (0.0236)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0892***  
          (0.0238)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1411***  
          (0.0234)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1656***  
          (0.0234)  
Post domain 7 x 1[Emotions manipulation tactic]         0.0071  
          (0.0238)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1331***  
          (0.0241)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1794***  
          (0.0241)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1221***  
          (0.0235)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0225  
          (0.0240)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1420***  
          (0.0240)  
Post domain 13 x 1[Emotions manipulation tactic]         0.2141***  
          (0.0239)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1270***  
          (0.0239)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3714***  
          (0.0242)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0258  
          (0.0243)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0549***  
          (0.0232)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.1223***  
          (0.0243)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0403**  
          (0.0236)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0723***  
          (0.0227)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1413***  
          (0.0235)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2816***  
          (0.0237)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1259***  
          (0.0238)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0433**  
          (0.0239)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0733***  
          (0.0240)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0160  
          (0.0237)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0170  
          (0.0237)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0646***  
          (0.0239)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0141  
          (0.0237)  
Post 2 indicator           -0.1730***
            (0.0150)
Post 3 indicator           -0.3172***
            (0.0148)
Post 4 indicator           -0.2624***
            (0.0151)
Post 5 indicator           -0.0069
            (0.0137)
Post 6 indicator           0.0467***
            (0.0134)
Post 7 indicator           -0.2006***
            (0.0149)
Post 8 indicator           -0.1220***
            (0.0147)
Post 9 indicator           -0.0596***
            (0.0143)
Post 10 indicator           -0.1001***
            (0.0143)
Post 11 indicator           -0.1861***
            (0.0149)
Post 12 indicator           -0.1377***
            (0.0144)
Post 13 indicator           -0.2181***
            (0.0149)
Post 14 indicator           -0.3292***
            (0.0152)
Post 15 indicator           -0.2956***
            (0.0151)
Post 16 indicator           -0.1071***
            (0.0157)
Post 17 indicator           -0.3466***
            (0.0165)
Post 18 indicator           -0.3702***
            (0.0157)
Post 19 indicator           -0.2710***
            (0.0160)
Post 20 indicator           -0.0109
            (0.0153)
Post 21 indicator           -0.3867***
            (0.0148)
Post 22 indicator           -0.3444***
            (0.0156)
Post 23 indicator           -0.2481***
            (0.0157)
Post 24 indicator           0.0002
            (0.0146)
Post 25 indicator           -0.1878***
            (0.0163)
Post 26 indicator           -0.2371***
            (0.0167)
Post 27 indicator           -0.2838***
            (0.0159)
Post 28 indicator           -0.2778***
            (0.0160)
Post 29 indicator           -0.4155***
            (0.0157)
Post 30 indicator           -0.2995***
            (0.0153)
Post 31 indicator           -0.1578***
            (0.0164)
Post 32 indicator           -0.4123***
            (0.0157)
Post 33 indicator           -0.3396***
            (0.0156)
Post 34 indicator           -0.3310***
            (0.0155)
Post 35 indicator           -0.0236*
            (0.0157)
Post 36 indicator           0.0545***
            (0.0149)
Post 37 indicator           -0.3512***
            (0.0157)
Post 38 indicator           -0.4129***
            (0.0153)
Post 39 indicator           -0.0380***
            (0.0156)
Post 40 indicator           -0.1357***
            (0.0156)
Post 41 indicator           -0.3663***
            (0.0152)
Post 42 indicator           -0.1535***
            (0.0160)
Post 43 indicator           -0.1619***
            (0.0160)
Post 44 indicator           -0.3599***
            (0.0157)
Post 45 indicator           -0.0820***
            (0.0154)
Post 46 indicator           -0.0627***
            (0.0160)
Post 47 indicator           -0.2098***
            (0.0158)
Post 48 indicator           -0.4348***
            (0.0149)
Post 49 indicator           -0.2027***
            (0.0164)
Post 50 indicator           -0.0293**
            (0.0154)
Post 51 indicator           0.0563***
            (0.0148)
Post 52 indicator           -0.4046***
            (0.0156)
Post 53 indicator           -0.4662***
            (0.0158)
Post 54 indicator           0.0036
            (0.0152)
Post 55 indicator           -0.1195***
            (0.0157)
Post 56 indicator           -0.1755***
            (0.0163)
Post 57 indicator           -0.1844***
            (0.0154)
Post 58 indicator           -0.2638***
            (0.0160)
Post 59 indicator           -0.3272***
            (0.0160)
Post 60 indicator           -0.3724***
            (0.0151)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 (full model) 0.0865 0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model) 0.0859 0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics Demographics Demographics Demographics Demographics
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0142) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0116) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0100) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 (full model) 0.2712 0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model) 0.2711 0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Sharing rates Sharing rates Sharing rates Sharing rates Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6897***          
  (0.0058)          
Emotions 0.0026          
  (0.0082)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0743*** -0.0743***
  (0.0082) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1460*** -0.0394*** -0.0286*** -0.0747***
  (0.0071) (0.0069) (0.0067) (0.0060) (0.0066) (0.0054)
Avg. Sharing of Misinfo posts at pre-treatment 0.1802***          
  (0.0031)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.1019***          
  (0.0030)          
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0116) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0100) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0040 0.0040
  (0.0101) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.0213***          
  (0.0042)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0144***          
  (0.0042)          
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0142) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Post domain 2     -0.1989***   -0.1730***  
      (0.0089)   (0.0150)  
Post domain 3     -0.2873***   -0.3172***  
      (0.0087)   (0.0148)  
Post domain 4     -0.1939***   -0.2624***  
      (0.0089)   (0.0151)  
Post domain 5     0.0573***   -0.0069  
      (0.0080)   (0.0137)  
Post domain 6     0.0263***   0.0467***  
      (0.0085)   (0.0134)  
Post domain 7     -0.2382***   -0.2006***  
      (0.0088)   (0.0149)  
Post domain 8     -0.2172***   -0.1220***  
      (0.0088)   (0.0147)  
Post domain 9     0.0456***   -0.0596***  
      (0.0082)   (0.0143)  
Post domain 10     -0.0577***   -0.1001***  
      (0.0085)   (0.0143)  
Post domain 11     -0.1629***   -0.1861***  
      (0.0090)   (0.0149)  
Post domain 12     -0.1110***   -0.1377***  
      (0.0085)   (0.0144)  
Post domain 13     -0.1564***   -0.2181***  
      (0.0088)   (0.0149)  
Post domain 14     -0.2815***   -0.3292***  
      (0.0090)   (0.0152)  
Post domain 15     -0.1923***   -0.2956***  
      (0.0087)   (0.0151)  
1[Combo manipulation tactic]       -0.1294*** -0.1532***  
        (0.0044) (0.0192)  
1[Emotions manipulation tactic]       -0.0960*** -0.2038***  
        (0.0042) (0.0198)  
1[Reasoning manipulation tactic]       -0.0890*** -0.1088***  
        (0.0041) (0.0194)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0666***  
          (0.0245)  
Post domain 3 x 1[Combo manipulation tactic]         0.0541**  
          (0.0233)  
Post domain 4 x 1[Combo manipulation tactic]         0.0984***  
          (0.0236)  
Post domain 5 x 1[Combo manipulation tactic]         0.1031***  
          (0.0234)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3263***  
          (0.0226)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0368*  
          (0.0238)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0191  
          (0.0241)  
Post domain 9 x 1[Combo manipulation tactic]         0.1669***  
          (0.0234)  
Post domain 10 x 1[Combo manipulation tactic]         0.0193  
          (0.0239)  
Post domain 11 x 1[Combo manipulation tactic]         0.0561**  
          (0.0242)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0390*  
          (0.0240)  
Post domain 13 x 1[Combo manipulation tactic]         0.0474**  
          (0.0239)  
Post domain 14 x 1[Combo manipulation tactic]         0.0208  
          (0.0235)  
Post domain 15 x 1[Combo manipulation tactic]         0.1033***  
          (0.0237)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0815***  
          (0.0243)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1354***  
          (0.0236)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0892***  
          (0.0238)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1411***  
          (0.0234)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1656***  
          (0.0234)  
Post domain 7 x 1[Emotions manipulation tactic]         0.0071  
          (0.0238)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1331***  
          (0.0241)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1794***  
          (0.0241)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1221***  
          (0.0235)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0225  
          (0.0240)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1420***  
          (0.0240)  
Post domain 13 x 1[Emotions manipulation tactic]         0.2141***  
          (0.0239)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1270***  
          (0.0239)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3714***  
          (0.0242)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0258  
          (0.0243)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0549***  
          (0.0232)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.1223***  
          (0.0243)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0403**  
          (0.0236)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0723***  
          (0.0227)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1413***  
          (0.0235)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2816***  
          (0.0237)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1259***  
          (0.0238)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0433**  
          (0.0239)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0733***  
          (0.0240)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0160  
          (0.0237)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0170  
          (0.0237)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0646***  
          (0.0239)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0141  
          (0.0237)  
Post 2 indicator           -0.1730***
            (0.0150)
Post 3 indicator           -0.3172***
            (0.0148)
Post 4 indicator           -0.2624***
            (0.0151)
Post 5 indicator           -0.0069
            (0.0137)
Post 6 indicator           0.0467***
            (0.0134)
Post 7 indicator           -0.2006***
            (0.0149)
Post 8 indicator           -0.1220***
            (0.0147)
Post 9 indicator           -0.0596***
            (0.0143)
Post 10 indicator           -0.1001***
            (0.0143)
Post 11 indicator           -0.1861***
            (0.0149)
Post 12 indicator           -0.1377***
            (0.0144)
Post 13 indicator           -0.2181***
            (0.0149)
Post 14 indicator           -0.3292***
            (0.0152)
Post 15 indicator           -0.2956***
            (0.0151)
Post 16 indicator           -0.1071***
            (0.0157)
Post 17 indicator           -0.3466***
            (0.0165)
Post 18 indicator           -0.3702***
            (0.0157)
Post 19 indicator           -0.2710***
            (0.0160)
Post 20 indicator           -0.0109
            (0.0153)
Post 21 indicator           -0.3867***
            (0.0148)
Post 22 indicator           -0.3444***
            (0.0156)
Post 23 indicator           -0.2481***
            (0.0157)
Post 24 indicator           0.0002
            (0.0146)
Post 25 indicator           -0.1878***
            (0.0163)
Post 26 indicator           -0.2371***
            (0.0167)
Post 27 indicator           -0.2838***
            (0.0159)
Post 28 indicator           -0.2778***
            (0.0160)
Post 29 indicator           -0.4155***
            (0.0157)
Post 30 indicator           -0.2995***
            (0.0153)
Post 31 indicator           -0.1578***
            (0.0164)
Post 32 indicator           -0.4123***
            (0.0157)
Post 33 indicator           -0.3396***
            (0.0156)
Post 34 indicator           -0.3310***
            (0.0155)
Post 35 indicator           -0.0236*
            (0.0157)
Post 36 indicator           0.0545***
            (0.0149)
Post 37 indicator           -0.3512***
            (0.0157)
Post 38 indicator           -0.4129***
            (0.0153)
Post 39 indicator           -0.0380***
            (0.0156)
Post 40 indicator           -0.1357***
            (0.0156)
Post 41 indicator           -0.3663***
            (0.0152)
Post 42 indicator           -0.1535***
            (0.0160)
Post 43 indicator           -0.1619***
            (0.0160)
Post 44 indicator           -0.3599***
            (0.0157)
Post 45 indicator           -0.0820***
            (0.0154)
Post 46 indicator           -0.0627***
            (0.0160)
Post 47 indicator           -0.2098***
            (0.0158)
Post 48 indicator           -0.4348***
            (0.0149)
Post 49 indicator           -0.2027***
            (0.0164)
Post 50 indicator           -0.0293**
            (0.0154)
Post 51 indicator           0.0563***
            (0.0148)
Post 52 indicator           -0.4046***
            (0.0156)
Post 53 indicator           -0.4662***
            (0.0158)
Post 54 indicator           0.0036
            (0.0152)
Post 55 indicator           -0.1195***
            (0.0157)
Post 56 indicator           -0.1755***
            (0.0163)
Post 57 indicator           -0.1844***
            (0.0154)
Post 58 indicator           -0.2638***
            (0.0160)
Post 59 indicator           -0.3272***
            (0.0160)
Post 60 indicator           -0.3724***
            (0.0151)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 (full model) 0.2712 0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model) 0.2711 0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Sharing rates Sharing rates Sharing rates Sharing rates Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Tactic sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0142) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0116) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0100) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 (full model) 0.2713 0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model) 0.2711 0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6898***          
  (0.0058)          
Emotions 0.0023          
  (0.0082)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0743*** -0.0743***
  (0.0082) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1460*** -0.0394*** -0.0286*** -0.0747***
  (0.0071) (0.0069) (0.0067) (0.0060) (0.0066) (0.0054)
Avg. Sharing of Misinfo posts at pre-treatment 0.0203          
  (1556.2355)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.1021***          
  (0.0030)          
Emotions posts 0.0682          
  (635.9552)          
Reasoning posts 0.0606          
  (629.9211)          
Combo posts 0.0672          
  (642.8073)          
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0116) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0100) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0040 0.0040
  (0.0101) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.0371***          
  (0.0103)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0147***          
  (0.0042)          
Emotions x Emotions posts 0.0066          
  (0.0067)          
Emotions x Reasoning posts 0.0131**          
  (0.0066)          
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0142) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Post domain 2     -0.1989***   -0.1730***  
      (0.0089)   (0.0150)  
Post domain 3     -0.2873***   -0.3172***  
      (0.0087)   (0.0148)  
Post domain 4     -0.1939***   -0.2624***  
      (0.0089)   (0.0151)  
Post domain 5     0.0573***   -0.0069  
      (0.0080)   (0.0137)  
Post domain 6     0.0263***   0.0467***  
      (0.0085)   (0.0134)  
Post domain 7     -0.2382***   -0.2006***  
      (0.0088)   (0.0149)  
Post domain 8     -0.2172***   -0.1220***  
      (0.0088)   (0.0147)  
Post domain 9     0.0456***   -0.0596***  
      (0.0082)   (0.0143)  
Post domain 10     -0.0577***   -0.1001***  
      (0.0085)   (0.0143)  
Post domain 11     -0.1629***   -0.1861***  
      (0.0090)   (0.0149)  
Post domain 12     -0.1110***   -0.1377***  
      (0.0085)   (0.0144)  
Post domain 13     -0.1564***   -0.2181***  
      (0.0088)   (0.0149)  
Post domain 14     -0.2815***   -0.3292***  
      (0.0090)   (0.0152)  
Post domain 15     -0.1923***   -0.2956***  
      (0.0087)   (0.0151)  
1[Combo manipulation tactic]       -0.1294*** -0.1532***  
        (0.0044) (0.0192)  
1[Emotions manipulation tactic]       -0.0960*** -0.2038***  
        (0.0042) (0.0198)  
1[Reasoning manipulation tactic]       -0.0890*** -0.1088***  
        (0.0041) (0.0194)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0666***  
          (0.0245)  
Post domain 3 x 1[Combo manipulation tactic]         0.0541**  
          (0.0233)  
Post domain 4 x 1[Combo manipulation tactic]         0.0984***  
          (0.0236)  
Post domain 5 x 1[Combo manipulation tactic]         0.1031***  
          (0.0234)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3263***  
          (0.0226)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0368*  
          (0.0238)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0191  
          (0.0241)  
Post domain 9 x 1[Combo manipulation tactic]         0.1669***  
          (0.0234)  
Post domain 10 x 1[Combo manipulation tactic]         0.0193  
          (0.0239)  
Post domain 11 x 1[Combo manipulation tactic]         0.0561**  
          (0.0242)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0390*  
          (0.0240)  
Post domain 13 x 1[Combo manipulation tactic]         0.0474**  
          (0.0239)  
Post domain 14 x 1[Combo manipulation tactic]         0.0208  
          (0.0235)  
Post domain 15 x 1[Combo manipulation tactic]         0.1033***  
          (0.0237)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0815***  
          (0.0243)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1354***  
          (0.0236)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0892***  
          (0.0238)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1411***  
          (0.0234)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1656***  
          (0.0234)  
Post domain 7 x 1[Emotions manipulation tactic]         0.0071  
          (0.0238)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1331***  
          (0.0241)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1794***  
          (0.0241)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1221***  
          (0.0235)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0225  
          (0.0240)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1420***  
          (0.0240)  
Post domain 13 x 1[Emotions manipulation tactic]         0.2141***  
          (0.0239)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1270***  
          (0.0239)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3714***  
          (0.0242)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0258  
          (0.0243)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0549***  
          (0.0232)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.1223***  
          (0.0243)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0403**  
          (0.0236)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0723***  
          (0.0227)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1413***  
          (0.0235)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2816***  
          (0.0237)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1259***  
          (0.0238)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0433**  
          (0.0239)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0733***  
          (0.0240)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0160  
          (0.0237)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0170  
          (0.0237)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0646***  
          (0.0239)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0141  
          (0.0237)  
Post 2 indicator           -0.1730***
            (0.0150)
Post 3 indicator           -0.3172***
            (0.0148)
Post 4 indicator           -0.2624***
            (0.0151)
Post 5 indicator           -0.0069
            (0.0137)
Post 6 indicator           0.0467***
            (0.0134)
Post 7 indicator           -0.2006***
            (0.0149)
Post 8 indicator           -0.1220***
            (0.0147)
Post 9 indicator           -0.0596***
            (0.0143)
Post 10 indicator           -0.1001***
            (0.0143)
Post 11 indicator           -0.1861***
            (0.0149)
Post 12 indicator           -0.1377***
            (0.0144)
Post 13 indicator           -0.2181***
            (0.0149)
Post 14 indicator           -0.3292***
            (0.0152)
Post 15 indicator           -0.2956***
            (0.0151)
Post 16 indicator           -0.1071***
            (0.0157)
Post 17 indicator           -0.3466***
            (0.0165)
Post 18 indicator           -0.3702***
            (0.0157)
Post 19 indicator           -0.2710***
            (0.0160)
Post 20 indicator           -0.0109
            (0.0153)
Post 21 indicator           -0.3867***
            (0.0148)
Post 22 indicator           -0.3444***
            (0.0156)
Post 23 indicator           -0.2481***
            (0.0157)
Post 24 indicator           0.0002
            (0.0146)
Post 25 indicator           -0.1878***
            (0.0163)
Post 26 indicator           -0.2371***
            (0.0167)
Post 27 indicator           -0.2838***
            (0.0159)
Post 28 indicator           -0.2778***
            (0.0160)
Post 29 indicator           -0.4155***
            (0.0157)
Post 30 indicator           -0.2995***
            (0.0153)
Post 31 indicator           -0.1578***
            (0.0164)
Post 32 indicator           -0.4123***
            (0.0157)
Post 33 indicator           -0.3396***
            (0.0156)
Post 34 indicator           -0.3310***
            (0.0155)
Post 35 indicator           -0.0236*
            (0.0157)
Post 36 indicator           0.0545***
            (0.0149)
Post 37 indicator           -0.3512***
            (0.0157)
Post 38 indicator           -0.4129***
            (0.0153)
Post 39 indicator           -0.0380***
            (0.0156)
Post 40 indicator           -0.1357***
            (0.0156)
Post 41 indicator           -0.3663***
            (0.0152)
Post 42 indicator           -0.1535***
            (0.0160)
Post 43 indicator           -0.1619***
            (0.0160)
Post 44 indicator           -0.3599***
            (0.0157)
Post 45 indicator           -0.0820***
            (0.0154)
Post 46 indicator           -0.0627***
            (0.0160)
Post 47 indicator           -0.2098***
            (0.0158)
Post 48 indicator           -0.4348***
            (0.0149)
Post 49 indicator           -0.2027***
            (0.0164)
Post 50 indicator           -0.0293**
            (0.0154)
Post 51 indicator           0.0563***
            (0.0148)
Post 52 indicator           -0.4046***
            (0.0156)
Post 53 indicator           -0.4662***
            (0.0158)
Post 54 indicator           0.0036
            (0.0152)
Post 55 indicator           -0.1195***
            (0.0157)
Post 56 indicator           -0.1755***
            (0.0163)
Post 57 indicator           -0.1844***
            (0.0154)
Post 58 indicator           -0.2638***
            (0.0160)
Post 59 indicator           -0.3272***
            (0.0160)
Post 60 indicator           -0.3724***
            (0.0151)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 (full model) 0.2713 0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model) 0.2711 0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Demographics + Sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0141) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0100) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 (full model) 0.2744 0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model) 0.2738 0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6907***          
  (0.0058)          
Emotions 0.0016          
  (0.0082)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0743*** -0.0743***
  (0.0082) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1460*** -0.0394*** -0.0286*** -0.0747***
  (0.0071) (0.0069) (0.0067) (0.0060) (0.0066) (0.0054)
Age -0.0058**          
  (0.0026)          
Man 0.0028          
  (0.0024)          
Some college -0.0018          
  (0.0030)          
Bachelor’s degree 0.0034          
  (0.0030)          
Graduate degree -0.0078***          
  (0.0026)          
Married -0.0028          
  (0.0027)          
Unemployed -0.0045*          
  (0.0031)          
Employed -0.0084***          
  (0.0034)          
Mostly urban -0.0056**          
  (0.0029)          
Suburban -0.0052**          
  (0.0028)          
Christian 0.0031          
  (0.0025)          
Attends religious services 0.0007          
  (0.0024)          
Uses social media -0.0060***          
  (0.0023)          
Hours spent on Social Media 0.0052**          
  (0.0026)          
Social Media Share: 80-100% 0.0130***          
  (0.0030)          
Social Media Share: 60-80% 0.0179***          
  (0.0034)          
Social Media Share: 40-60% 0.0149***          
  (0.0034)          
Social Media Share: 20-40% 0.0065**          
  (0.0031)          
Passed attention check at pre-treatment -0.0046**          
  (0.0024)          
Avg. Sharing of Misinfo posts at pre-treatment 0.1749***          
  (0.0032)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.0999***          
  (0.0030)          
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0100) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0040 0.0040
  (0.0101) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
Emotions x Age -0.0040          
  (0.0039)          
Emotions x Man 0.0061**          
  (0.0034)          
Emotions x Some college 0.0003          
  (0.0042)          
Emotions x Bachelor’s degree -0.0029          
  (0.0042)          
Emotions x Graduate degree 0.0094***          
  (0.0035)          
Emotions x Married -0.0050*          
  (0.0038)          
Emotions x Unemployed -0.0017          
  (0.0044)          
Emotions x Employed 0.0020          
  (0.0048)          
Emotions x Mostly urban 0.0080**          
  (0.0040)          
Emotions x Suburban -0.0013          
  (0.0039)          
Emotions x Christian -0.0036          
  (0.0035)          
Emotions x Attends religious services -0.0063**          
  (0.0035)          
Emotions x Uses social media 0.0086***          
  (0.0036)          
Emotions x Hours spent on Social Media -0.0020          
  (0.0036)          
Emotions x Social Media Share: 80-100% 0.0011          
  (0.0043)          
Emotions x Social Media Share: 60-80% 0.0051          
  (0.0048)          
Emotions x Social Media Share: 40-60% -0.0016          
  (0.0048)          
Emotions x Social Media Share: 20-40% 0.0044          
  (0.0044)          
Emotions x Passed attention check at pre-treatment -0.0009          
  (0.0034)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.0230***          
  (0.0043)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0125***          
  (0.0042)          
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0141) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Post domain 2     -0.1989***   -0.1730***  
      (0.0089)   (0.0150)  
Post domain 3     -0.2873***   -0.3172***  
      (0.0087)   (0.0148)  
Post domain 4     -0.1939***   -0.2624***  
      (0.0089)   (0.0151)  
Post domain 5     0.0573***   -0.0069  
      (0.0080)   (0.0137)  
Post domain 6     0.0263***   0.0467***  
      (0.0085)   (0.0134)  
Post domain 7     -0.2382***   -0.2006***  
      (0.0088)   (0.0149)  
Post domain 8     -0.2172***   -0.1220***  
      (0.0088)   (0.0147)  
Post domain 9     0.0456***   -0.0596***  
      (0.0082)   (0.0143)  
Post domain 10     -0.0577***   -0.1001***  
      (0.0085)   (0.0143)  
Post domain 11     -0.1629***   -0.1861***  
      (0.0090)   (0.0149)  
Post domain 12     -0.1110***   -0.1377***  
      (0.0085)   (0.0144)  
Post domain 13     -0.1564***   -0.2181***  
      (0.0088)   (0.0149)  
Post domain 14     -0.2815***   -0.3292***  
      (0.0090)   (0.0152)  
Post domain 15     -0.1923***   -0.2956***  
      (0.0087)   (0.0151)  
1[Combo manipulation tactic]       -0.1294*** -0.1532***  
        (0.0044) (0.0192)  
1[Emotions manipulation tactic]       -0.0960*** -0.2038***  
        (0.0042) (0.0198)  
1[Reasoning manipulation tactic]       -0.0890*** -0.1088***  
        (0.0041) (0.0194)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0666***  
          (0.0245)  
Post domain 3 x 1[Combo manipulation tactic]         0.0541**  
          (0.0233)  
Post domain 4 x 1[Combo manipulation tactic]         0.0984***  
          (0.0236)  
Post domain 5 x 1[Combo manipulation tactic]         0.1031***  
          (0.0234)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3263***  
          (0.0226)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0368*  
          (0.0238)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0191  
          (0.0241)  
Post domain 9 x 1[Combo manipulation tactic]         0.1669***  
          (0.0234)  
Post domain 10 x 1[Combo manipulation tactic]         0.0193  
          (0.0239)  
Post domain 11 x 1[Combo manipulation tactic]         0.0561**  
          (0.0242)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0390*  
          (0.0240)  
Post domain 13 x 1[Combo manipulation tactic]         0.0474**  
          (0.0239)  
Post domain 14 x 1[Combo manipulation tactic]         0.0208  
          (0.0235)  
Post domain 15 x 1[Combo manipulation tactic]         0.1033***  
          (0.0237)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0815***  
          (0.0243)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1354***  
          (0.0236)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0892***  
          (0.0238)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1411***  
          (0.0234)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1656***  
          (0.0234)  
Post domain 7 x 1[Emotions manipulation tactic]         0.0071  
          (0.0238)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1331***  
          (0.0241)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1794***  
          (0.0241)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1221***  
          (0.0235)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0225  
          (0.0240)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1420***  
          (0.0240)  
Post domain 13 x 1[Emotions manipulation tactic]         0.2141***  
          (0.0239)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1270***  
          (0.0239)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3714***  
          (0.0242)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0258  
          (0.0243)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0549***  
          (0.0232)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.1223***  
          (0.0243)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0403**  
          (0.0236)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0723***  
          (0.0227)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1413***  
          (0.0235)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2816***  
          (0.0237)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1259***  
          (0.0238)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0433**  
          (0.0239)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0733***  
          (0.0240)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0160  
          (0.0237)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0170  
          (0.0237)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0646***  
          (0.0239)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0141  
          (0.0237)  
Post 2 indicator           -0.1730***
            (0.0150)
Post 3 indicator           -0.3172***
            (0.0148)
Post 4 indicator           -0.2624***
            (0.0151)
Post 5 indicator           -0.0069
            (0.0137)
Post 6 indicator           0.0467***
            (0.0134)
Post 7 indicator           -0.2006***
            (0.0149)
Post 8 indicator           -0.1220***
            (0.0147)
Post 9 indicator           -0.0596***
            (0.0143)
Post 10 indicator           -0.1001***
            (0.0143)
Post 11 indicator           -0.1861***
            (0.0149)
Post 12 indicator           -0.1377***
            (0.0144)
Post 13 indicator           -0.2181***
            (0.0149)
Post 14 indicator           -0.3292***
            (0.0152)
Post 15 indicator           -0.2956***
            (0.0151)
Post 16 indicator           -0.1071***
            (0.0157)
Post 17 indicator           -0.3466***
            (0.0165)
Post 18 indicator           -0.3702***
            (0.0157)
Post 19 indicator           -0.2710***
            (0.0160)
Post 20 indicator           -0.0109
            (0.0153)
Post 21 indicator           -0.3867***
            (0.0148)
Post 22 indicator           -0.3444***
            (0.0156)
Post 23 indicator           -0.2481***
            (0.0157)
Post 24 indicator           0.0002
            (0.0146)
Post 25 indicator           -0.1878***
            (0.0163)
Post 26 indicator           -0.2371***
            (0.0167)
Post 27 indicator           -0.2838***
            (0.0159)
Post 28 indicator           -0.2778***
            (0.0160)
Post 29 indicator           -0.4155***
            (0.0157)
Post 30 indicator           -0.2995***
            (0.0153)
Post 31 indicator           -0.1578***
            (0.0164)
Post 32 indicator           -0.4123***
            (0.0157)
Post 33 indicator           -0.3396***
            (0.0156)
Post 34 indicator           -0.3310***
            (0.0155)
Post 35 indicator           -0.0236*
            (0.0157)
Post 36 indicator           0.0545***
            (0.0149)
Post 37 indicator           -0.3512***
            (0.0157)
Post 38 indicator           -0.4129***
            (0.0153)
Post 39 indicator           -0.0380***
            (0.0156)
Post 40 indicator           -0.1357***
            (0.0156)
Post 41 indicator           -0.3663***
            (0.0152)
Post 42 indicator           -0.1535***
            (0.0160)
Post 43 indicator           -0.1619***
            (0.0160)
Post 44 indicator           -0.3599***
            (0.0157)
Post 45 indicator           -0.0820***
            (0.0154)
Post 46 indicator           -0.0627***
            (0.0160)
Post 47 indicator           -0.2098***
            (0.0158)
Post 48 indicator           -0.4348***
            (0.0149)
Post 49 indicator           -0.2027***
            (0.0164)
Post 50 indicator           -0.0293**
            (0.0154)
Post 51 indicator           0.0563***
            (0.0148)
Post 52 indicator           -0.4046***
            (0.0156)
Post 53 indicator           -0.4662***
            (0.0158)
Post 54 indicator           0.0036
            (0.0152)
Post 55 indicator           -0.1195***
            (0.0157)
Post 56 indicator           -0.1755***
            (0.0163)
Post 57 indicator           -0.1844***
            (0.0154)
Post 58 indicator           -0.2638***
            (0.0160)
Post 59 indicator           -0.3272***
            (0.0160)
Post 60 indicator           -0.3724***
            (0.0151)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 (full model) 0.2744 0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model) 0.2738 0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Demographics + Sharing rates + Tactic sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates + Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0141) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0100) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 (full model) 0.2744 0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model) 0.2738 0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates + Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6908***          
  (0.0058)          
Emotions 0.0014          
  (0.0082)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0743*** -0.0743***
  (0.0082) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1460*** -0.0394*** -0.0286*** -0.0747***
  (0.0071) (0.0069) (0.0067) (0.0060) (0.0066) (0.0054)
Age -0.0058**          
  (0.0026)          
Man 0.0028          
  (0.0024)          
Some college -0.0018          
  (0.0030)          
Bachelor’s degree 0.0034          
  (0.0030)          
Graduate degree -0.0079***          
  (0.0026)          
Married -0.0026          
  (0.0027)          
Unemployed -0.0045*          
  (0.0031)          
Employed -0.0085***          
  (0.0034)          
Mostly urban -0.0054**          
  (0.0029)          
Suburban -0.0051**          
  (0.0028)          
Christian 0.0031          
  (0.0025)          
Attends religious services 0.0007          
  (0.0024)          
Uses social media -0.0060***          
  (0.0023)          
Hours spent on Social Media 0.0053**          
  (0.0026)          
Social Media Share: 80-100% 0.0130***          
  (0.0030)          
Social Media Share: 60-80% 0.0180***          
  (0.0034)          
Social Media Share: 40-60% 0.0150***          
  (0.0034)          
Social Media Share: 20-40% 0.0066**          
  (0.0031)          
Passed attention check at pre-treatment -0.0046**          
  (0.0024)          
Avg. Sharing of Misinfo posts at pre-treatment 0.0176          
  (1553.4631)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.1001***          
  (0.0030)          
Emotions posts 0.0673          
  (634.8222)          
Reasoning posts 0.0599          
  (628.7989)          
Combo posts 0.0656          
  (641.6622)          
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0948*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0015 -0.0039 -0.0024 -0.0024
  (0.0100) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0040 0.0040
  (0.0101) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
Emotions x Age -0.0039          
  (0.0039)          
Emotions x Man 0.0059**          
  (0.0034)          
Emotions x Some college 0.0002          
  (0.0042)          
Emotions x Bachelor’s degree -0.0030          
  (0.0042)          
Emotions x Graduate degree 0.0094***          
  (0.0035)          
Emotions x Married -0.0052*          
  (0.0038)          
Emotions x Unemployed -0.0019          
  (0.0044)          
Emotions x Employed 0.0020          
  (0.0048)          
Emotions x Mostly urban 0.0077**          
  (0.0040)          
Emotions x Suburban -0.0014          
  (0.0039)          
Emotions x Christian -0.0036          
  (0.0035)          
Emotions x Attends religious services -0.0064**          
  (0.0035)          
Emotions x Uses social media 0.0086***          
  (0.0036)          
Emotions x Hours spent on Social Media -0.0022          
  (0.0036)          
Emotions x Social Media Share: 80-100% 0.0010          
  (0.0043)          
Emotions x Social Media Share: 60-80% 0.0049          
  (0.0048)          
Emotions x Social Media Share: 40-60% -0.0020          
  (0.0048)          
Emotions x Social Media Share: 20-40% 0.0041          
  (0.0044)          
Emotions x Passed attention check at pre-treatment -0.0011          
  (0.0034)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.0363***          
  (0.0103)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0128***          
  (0.0042)          
Emotions x Emotions posts 0.0052          
  (0.0067)          
Emotions x Reasoning posts 0.0114**          
  (0.0066)          
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0221** -0.0202* -0.0246** -0.0246**
  (0.0141) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Post domain 2     -0.1989***   -0.1730***  
      (0.0089)   (0.0150)  
Post domain 3     -0.2873***   -0.3172***  
      (0.0087)   (0.0148)  
Post domain 4     -0.1939***   -0.2624***  
      (0.0089)   (0.0151)  
Post domain 5     0.0573***   -0.0069  
      (0.0080)   (0.0137)  
Post domain 6     0.0263***   0.0467***  
      (0.0085)   (0.0134)  
Post domain 7     -0.2382***   -0.2006***  
      (0.0088)   (0.0149)  
Post domain 8     -0.2172***   -0.1220***  
      (0.0088)   (0.0147)  
Post domain 9     0.0456***   -0.0596***  
      (0.0082)   (0.0143)  
Post domain 10     -0.0577***   -0.1001***  
      (0.0085)   (0.0143)  
Post domain 11     -0.1629***   -0.1861***  
      (0.0090)   (0.0149)  
Post domain 12     -0.1110***   -0.1377***  
      (0.0085)   (0.0144)  
Post domain 13     -0.1564***   -0.2181***  
      (0.0088)   (0.0149)  
Post domain 14     -0.2815***   -0.3292***  
      (0.0090)   (0.0152)  
Post domain 15     -0.1923***   -0.2956***  
      (0.0087)   (0.0151)  
1[Combo manipulation tactic]       -0.1294*** -0.1532***  
        (0.0044) (0.0192)  
1[Emotions manipulation tactic]       -0.0960*** -0.2038***  
        (0.0042) (0.0198)  
1[Reasoning manipulation tactic]       -0.0890*** -0.1088***  
        (0.0041) (0.0194)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0666***  
          (0.0245)  
Post domain 3 x 1[Combo manipulation tactic]         0.0541**  
          (0.0233)  
Post domain 4 x 1[Combo manipulation tactic]         0.0984***  
          (0.0236)  
Post domain 5 x 1[Combo manipulation tactic]         0.1031***  
          (0.0234)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3263***  
          (0.0226)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0368*  
          (0.0238)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0191  
          (0.0241)  
Post domain 9 x 1[Combo manipulation tactic]         0.1669***  
          (0.0234)  
Post domain 10 x 1[Combo manipulation tactic]         0.0193  
          (0.0239)  
Post domain 11 x 1[Combo manipulation tactic]         0.0561**  
          (0.0242)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0390*  
          (0.0240)  
Post domain 13 x 1[Combo manipulation tactic]         0.0474**  
          (0.0239)  
Post domain 14 x 1[Combo manipulation tactic]         0.0208  
          (0.0235)  
Post domain 15 x 1[Combo manipulation tactic]         0.1033***  
          (0.0237)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0815***  
          (0.0243)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1354***  
          (0.0236)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0892***  
          (0.0238)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1411***  
          (0.0234)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1656***  
          (0.0234)  
Post domain 7 x 1[Emotions manipulation tactic]         0.0071  
          (0.0238)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1331***  
          (0.0241)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1794***  
          (0.0241)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1221***  
          (0.0235)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0225  
          (0.0240)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1420***  
          (0.0240)  
Post domain 13 x 1[Emotions manipulation tactic]         0.2141***  
          (0.0239)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1270***  
          (0.0239)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3714***  
          (0.0242)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0258  
          (0.0243)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0549***  
          (0.0232)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.1223***  
          (0.0243)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0403**  
          (0.0236)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0723***  
          (0.0227)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1413***  
          (0.0235)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2816***  
          (0.0237)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1259***  
          (0.0238)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0433**  
          (0.0239)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0733***  
          (0.0240)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0160  
          (0.0237)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0170  
          (0.0237)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0646***  
          (0.0239)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0141  
          (0.0237)  
Post 2 indicator           -0.1730***
            (0.0150)
Post 3 indicator           -0.3172***
            (0.0148)
Post 4 indicator           -0.2624***
            (0.0151)
Post 5 indicator           -0.0069
            (0.0137)
Post 6 indicator           0.0467***
            (0.0134)
Post 7 indicator           -0.2006***
            (0.0149)
Post 8 indicator           -0.1220***
            (0.0147)
Post 9 indicator           -0.0596***
            (0.0143)
Post 10 indicator           -0.1001***
            (0.0143)
Post 11 indicator           -0.1861***
            (0.0149)
Post 12 indicator           -0.1377***
            (0.0144)
Post 13 indicator           -0.2181***
            (0.0149)
Post 14 indicator           -0.3292***
            (0.0152)
Post 15 indicator           -0.2956***
            (0.0151)
Post 16 indicator           -0.1071***
            (0.0157)
Post 17 indicator           -0.3466***
            (0.0165)
Post 18 indicator           -0.3702***
            (0.0157)
Post 19 indicator           -0.2710***
            (0.0160)
Post 20 indicator           -0.0109
            (0.0153)
Post 21 indicator           -0.3867***
            (0.0148)
Post 22 indicator           -0.3444***
            (0.0156)
Post 23 indicator           -0.2481***
            (0.0157)
Post 24 indicator           0.0002
            (0.0146)
Post 25 indicator           -0.1878***
            (0.0163)
Post 26 indicator           -0.2371***
            (0.0167)
Post 27 indicator           -0.2838***
            (0.0159)
Post 28 indicator           -0.2778***
            (0.0160)
Post 29 indicator           -0.4155***
            (0.0157)
Post 30 indicator           -0.2995***
            (0.0153)
Post 31 indicator           -0.1578***
            (0.0164)
Post 32 indicator           -0.4123***
            (0.0157)
Post 33 indicator           -0.3396***
            (0.0156)
Post 34 indicator           -0.3310***
            (0.0155)
Post 35 indicator           -0.0236*
            (0.0157)
Post 36 indicator           0.0545***
            (0.0149)
Post 37 indicator           -0.3512***
            (0.0157)
Post 38 indicator           -0.4129***
            (0.0153)
Post 39 indicator           -0.0380***
            (0.0156)
Post 40 indicator           -0.1357***
            (0.0156)
Post 41 indicator           -0.3663***
            (0.0152)
Post 42 indicator           -0.1535***
            (0.0160)
Post 43 indicator           -0.1619***
            (0.0160)
Post 44 indicator           -0.3599***
            (0.0157)
Post 45 indicator           -0.0820***
            (0.0154)
Post 46 indicator           -0.0627***
            (0.0160)
Post 47 indicator           -0.2098***
            (0.0158)
Post 48 indicator           -0.4348***
            (0.0149)
Post 49 indicator           -0.2027***
            (0.0164)
Post 50 indicator           -0.0293**
            (0.0154)
Post 51 indicator           0.0563***
            (0.0148)
Post 52 indicator           -0.4046***
            (0.0156)
Post 53 indicator           -0.4662***
            (0.0158)
Post 54 indicator           0.0036
            (0.0152)
Post 55 indicator           -0.1195***
            (0.0157)
Post 56 indicator           -0.1755***
            (0.0163)
Post 57 indicator           -0.1844***
            (0.0154)
Post 58 indicator           -0.2638***
            (0.0160)
Post 59 indicator           -0.3272***
            (0.0160)
Post 60 indicator           -0.3724***
            (0.0151)
Num. obs. 65268 65268 65268 65268 65268 65268
R2 (full model) 0.2744 0.3423 0.3939 0.3431 0.4154 0.4154
R2 (proj model)   0.0569 0.1309 0.0581 0.1618 0.1618
Adj. R2 (full model) 0.2738 0.3035 0.3580 0.3044 0.3804 0.3804
Adj. R2 (proj model)   0.0568 0.1306 0.0579 0.1609 0.1609
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.





Prediction

Standard errors of the share predicted value are estimated using the Delta method.

Treatment effects in the last column refer to estimated marginal means (EMMs, or least-squares means) for specified factor combinations (Post-treatment and Misinfo). Point estimates are reported in the upper cell and standard errors, clustered at the user level, reported in parentheses in the bottom cell. t-ratios are reported in brackets.

Treatment effects estimates for specifications that include Post-Tactic ID fixed effects are not reported since all tactics are misinformation.

cov_feglm <- c(paste0("share ~ treatment"),
               paste0("share ~ treatment + ",demographics_demeaned_treatment),
               paste0("share ~ treatment + factor(fact) + ",sharing_demeaned_treatment),
               paste0("share ~ treatment + factor(type) + ",sharing_tactic_demeaned_treatment),
               paste0("share ~ treatment + factor(fact)*factor(type) + ",demographics_sharing_demeaned_treatment),
               paste0("share ~ treatment + factor(post_id) + ",all_covariates_demeaned_treatment))

if (file.exists("prediction_2treat_df.rds")) {
  prediction_2treat_df <- readRDS("prediction_2treat_df.rds")
  
  counter <- 1
  
  for (cov in seq_along(covariate_list)) {
    
    cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))
    
      for (m in 1:length(models)) {
        
        k <- knitr::kable(prediction_2treat_df[[counter]], caption = models[m],
                             col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","Treatment effect<br>Emotions--Facts"))
        print(k)
        cat('<br>')
        
        counter <- counter + 1
      }
    
    cat('<br>\n<br>\n<br>')
    
  }
  
} else {

prediction_2treat_df <- list()

for (cov in seq_along(covariate_list)) {
  
  list_models <- cov_estimates_list[[cov]]
  
  cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))
        
  for (m in 1:length(models)) {
    
    treatmentLevels <- unique(panel_2$treatment)
    posts <- c(0, 1)
    misinfos <- c(0, 1)
    
    prediction_df <- expand.grid(treatment = treatmentLevels, post = posts, post_is_misinfo = misinfos) %>%
      mutate(prediction = NA_real_, prediction_se = NA_real_)

    for (row in 1:nrow(prediction_df)) {
      
      treat <- prediction_df$treatment[row]
      post <- prediction_df$post[row]
      misinfo <- prediction_df$post_is_misinfo[row]
      
      # Filter the relevant data
      relevant_data <- panel_2 %>% 
        filter(row_number() %in% obs(list_models[[m]])) %>%
        filter(treatment == treat & post == post & post_is_misinfo == misinfo)

      # Prepare predictor variables based on model requirements
      predictorVariables <- relevant_data %>%
        distinct(user, .keep_all = TRUE) %>%
        group_by(user, type, fact, post_id) %>%
        summarise(age_cov = mean(age_cov, na.rm = TRUE),
                  gender_Man_cov = mean(gender_Man_cov, na.rm = TRUE),
                  education_Some_college_cov = mean(education_Some_college_cov, na.rm = TRUE),
                  education_Bachelor_degree_cov = mean(education_Bachelor_degree_cov, na.rm = TRUE),
                  education_Graduate_degree_cov = mean(education_Graduate_degree_cov, na.rm = TRUE),
                  marital_Married_or_in_a_domestic_partnership_cov = mean(marital_Married_or_in_a_domestic_partnership_cov, na.rm = TRUE),
                  employment_Unemployed_cov = mean(employment_Unemployed_cov, na.rm = TRUE),
                  employment_Employed_cov = mean(employment_Employed_cov, na.rm = TRUE),
                  location_Mostly_urban_cov = mean(location_Mostly_urban_cov, na.rm = TRUE),
                  location_Suburban_cov = mean(location_Suburban_cov, na.rm = TRUE),
                  religion_Christian_cov = mean(religion_Christian_cov, na.rm = TRUE),
                  religiosity_Attends_cov = mean(religiosity_Attends_cov, na.rm = TRUE),
                  social_media_bin_Yes_cov = mean(social_media_bin_Yes_cov, na.rm = TRUE),
                  social_media_hours_cov = mean(social_media_hours_cov, na.rm = TRUE),
                  att_check_pre_cov = mean(att_check_pre_cov, na.rm = TRUE),
                  social_media_share_80_100_cov = mean(social_media_share_80_100_cov, na.rm = TRUE),
                  social_media_share_60_80_cov = mean(social_media_share_60_80_cov, na.rm = TRUE),
                  social_media_share_40_60_cov = mean(social_media_share_40_60_cov, na.rm = TRUE),
                  social_media_share_20_40_cov = mean(social_media_share_20_40_cov, na.rm = TRUE),
                  misinfo_pre_cov = mean(misinfo_pre_cov, na.rm = TRUE),
                  base_rate_pre_cov = mean(base_rate_pre_cov, na.rm = TRUE),
                  emotions_pre_cov = mean(emotions_pre_cov, na.rm = TRUE),
                  reasoning_pre_cov = mean(reasoning_pre_cov, na.rm = TRUE),
                  combo_pre_cov = mean(combo_pre_cov, na.rm = TRUE)) %>% # now add the treatment and post variables and misinfo
        mutate(treatment = treat,
               post = post,
               post_is_misinfo = misinfo)
      
      
        # predicted value
        if (m != 1) {

        predicted_shares <- predict(list_models[[m]], newdata = predictorVariables)
        predictorVariables$prediction <- predicted_shares

        # mean of predicted value
        prediction_df$prediction[row] <- format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,mean)[,4], digits = 5)
        # se of predicted value
        prediction_df$prediction_se[row] <- paste0("(",format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,se_cont)[,4], digits = 4),")")
        
        }
      
    }

     # predicted value
    if (m == 1) {
      predictorVariables <- expand.grid(treatment = unique(panel_2$treatment),
                                            post = c(0,1),
                                            post_is_misinfo = c(0,1))
      predictions <- predict(baseline_lm, newdata = predictorVariables, type = "response", se.fit = TRUE)
      prediction_df <- predictorVariables
      prediction_df$prediction <- format(predictions$fit, digits = 4)
      prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")
      
      emm_res <- emmeans(baseline_lm, specs = pairwise ~ treatment | post * post_is_misinfo)
      contrast_res <- contrast(emm_res, method = "revpairwise")
      contrast_df <- as.data.frame(contrast_res) %>% select(post, post_is_misinfo, estimate, SE, t.ratio)
      contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(t.ratio, digits = 4),"]"))) %>%
        mutate(estimate = format(estimate, digits = 4)) %>%
        mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
        select(treatment, post, post_is_misinfo, estimate)
      
       prediction_df <- left_join(prediction_df, contrast_df, 
                              by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    }

    # calculate difference between Facts Baseline and all other treatments
    # prediction_df <- prediction_df %>%
    #   group_by(post,post_is_misinfo) %>%
    #   mutate(lag = ifelse(treatment == "Facts Baseline",
    #                       prediction, NA)) %>%
    #   tidyr::fill(lag) %>%
    #   ungroup() %>%
    #   mutate(te = ifelse(treatment != "Facts Baseline",
    #                      format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
    #   select(-lag) %>%
    #   mutate(te = ifelse(is.na(te),"",te))
    

    # calculate difference between Facts Baseline and all other treatments
    prediction_df <- prediction_df %>%
    group_by(post,post_is_misinfo) %>%
    mutate(lag = ifelse(treatment == "Emotions",
                        prediction, NA)) %>%
    tidyr::fill(lag, .direction = "up") %>%
    ungroup() %>% 
      mutate(te = ifelse(treatment == "Facts Baseline",
                                     format(as.numeric(lag) - as.numeric(prediction), digits = 5), NA)) %>%
      select(-lag) %>%
      mutate(te = ifelse(is.na(te),"",te))
    
    
     if (m %in% c(2,3,6)) {
     # predicted treatment effects
      contrast_df <- data.frame()
        for (p in c(0,1)) {
        for (mis in c(0,1)) {
          
          cov_model <- feglm(as.formula(cov_feglm[m]),panel_2 %>% 
                               filter(post == p & post_is_misinfo == mis), cluster = "user")
          
          # obtain data frame with estimate, std error, and z value
          cov_model_add <- data.frame(
            treatment = unique(panel_2$treatment),
            estimate = format(coef(cov_model)[grepl("^treatmentEmotions$",names(coef(cov_model)))], digits = 4),
            SE = sqrt(diag(vcov(cov_model)))[grepl("^treatmentEmotions$",names(diag(vcov(cov_model))))],
            z.ratio = coef(cov_model)[grepl("^treatmentEmotions$",names(coef(cov_model)))] / sqrt(diag(vcov(cov_model)))[grepl("^treatmentEmotions$",names(diag(vcov(cov_model))))],
            post = p,
            post_is_misinfo = mis
          ) %>% distinct(estimate, SE, z.ratio, post, post_is_misinfo, .keep_all = TRUE)
          # make rownames a column
          cov_model_add <- rownames_to_column(cov_model_add, var = "treatment2") %>% 
            filter((treatment == "Facts Baseline" & treatment2 == "treatmentEmotions")|(treatment == "Facts Baseline" & treatment2 == 1)) %>% 
            select(-treatment2) %>%
            mutate(zratio = paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))
          
          cov_model_add <- rbind(cov_model_add %>% 
            mutate(treatment = "Facts Baseline"),cov_model_add %>% 
            mutate(treatment = "Emotions")) %>%
            mutate(estimate = ifelse(treatment == "Emotions", zratio, estimate)) %>% 
            mutate(post = ifelse(post == 0,as.numeric(0),as.numeric(1)),
                   post_is_misinfo = ifelse(post_is_misinfo == 0,as.numeric(0),as.numeric(1))) %>%
            select(treatment, post, post_is_misinfo, estimate)
          contrast_df <- rbind(contrast_df, cov_model_add)
        }
        }
        
       prediction_df <- left_join(prediction_df, contrast_df, 
                                by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    }
    
    if (m %in% c(4,5)) {
      prediction_df$estimate <- ""
    }
    

    prediction_df <- prediction_df %>% select(treatment,post,post_is_misinfo,prediction,prediction_se,te,estimate)
    prediction_df <- prediction_df %>% arrange(post,post_is_misinfo)
      
    k <- knitr::kable(prediction_df, caption = models[m],
                           col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","Treatment Effect<br>Emotions vs. Facts"))
    print(k)
    
    cat('<br>')

    prediction_2treat_df[[length(prediction_2treat_df) + 1]] <- prediction_df
  }
  cat('<br>\n<br>\n<br>')
}

saveRDS(prediction_2treat_df, "prediction_2treat_df.rds")

}

\[\text{Demographics}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.6829 (0.008087) 0.0059 0.005948
Emotions 0 0 0.6888 (0.008097) (0.01144); [0.5198]
Facts Baseline 0 1 0.5386 (0.007712) 0.0021 0.002028
Emotions 0 1 0.5407 (0.007800) (0.01097); [0.1848]
Facts Baseline 1 0 0.6071 (0.008962) -0.0879 -0.087832
Emotions 1 0 0.5192 (0.008741) (0.01252); [ -7.0158]
Facts Baseline 1 1 0.4650 (0.008314) -0.1120 -0.111959
Emotions 1 1 0.3530 (0.007418) (0.01114); [-10.0482]


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.00595 0.0002093
Emotions 0 0 0.68882 (0.006114) (0.01107); [0.01891]
Facts Baseline 0 1 0.53864 (0.006739) 0.00203 -0.003628
Emotions 0 1 0.54067 (0.006114) (0.01027); [-0.3531]
Facts Baseline 1 0 0.60708 (0.006739) -0.08784 -0.09335
Emotions 1 0 0.51924 (0.006114) (0.01211); [-7.706]
Facts Baseline 1 1 0.46499 (0.006739) -0.11196 -0.1174
Emotions 1 1 0.35303 (0.006114) (0.01061); [-11.06]


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68715 (0.00733) -0.00043 0.0007216
Emotions 0 0 0.68672 (0.006659) (0.001309); [0.5511]
Facts Baseline 0 1 0.5375 (0.007286) 0.00360 0.00231
Emotions 0 1 0.5411 (0.006665) (0.001163); [1.987]
Facts Baseline 1 0 0.61233 (0.00733) -0.09527 -0.09243
Emotions 1 0 0.51706 (0.006659) (0.01082); [-8.545]
Facts Baseline 1 1 0.46497 (0.007286) -0.11333 -0.117
Emotions 1 1 0.35164 (0.006665) (0.009287); [-12.6]


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68285 (0.006739) 0.00595
Emotions 0 0 0.6888 (0.006114)
Facts Baseline 0 1 0.53795 (0.006743) 0.00260
Emotions 0 1 0.54055 (0.00612)
Facts Baseline 1 0 0.60706 (0.006739) -0.08783
Emotions 1 0 0.51923 (0.006114)
Facts Baseline 1 1 0.4643 (0.006743) -0.11138
Emotions 1 1 0.35292 (0.00612)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68642 (0.007268) -0.00151
Emotions 0 0 0.68491 (0.006642)
Facts Baseline 0 1 0.53772 (0.007549) 0.00260
Emotions 0 1 0.54032 (0.006976)
Facts Baseline 1 0 0.6121 (0.007268) -0.09711
Emotions 1 0 0.51499 (0.006642)
Facts Baseline 1 1 0.46742 (0.007549) -0.11765
Emotions 1 1 0.34977 (0.006976)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68638 (0.007268) -0.00151 0.0006994
Emotions 0 0 0.68487 (0.006642) (0.001323); [0.5287]
Facts Baseline 0 1 0.53774 (0.007549) 0.00260 0.001624
Emotions 0 1 0.54034 (0.006976) (0.001449); [1.121]
Facts Baseline 1 0 0.61207 (0.007268) -0.09712 -0.09515
Emotions 1 0 0.51495 (0.006642) (0.01066); [-8.926]
Facts Baseline 1 1 0.46744 (0.007549) -0.11765 -0.1217
Emotions 1 1 0.34979 (0.006976) (0.008987); [-13.54]





\[\text{Sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.6829 (0.008087) 0.0059 0.005948
Emotions 0 0 0.6888 (0.008097) (0.01144); [0.5198]
Facts Baseline 0 1 0.5386 (0.007712) 0.0021 0.002028
Emotions 0 1 0.5407 (0.007800) (0.01097); [0.1848]
Facts Baseline 1 0 0.6071 (0.008962) -0.0879 -0.087832
Emotions 1 0 0.5192 (0.008741) (0.01252); [ -7.0158]
Facts Baseline 1 1 0.4650 (0.008314) -0.1120 -0.111959
Emotions 1 1 0.3530 (0.007418) (0.01114); [-10.0482]


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.00595 0.0002093
Emotions 0 0 0.68882 (0.006114) (0.01107); [0.01891]
Facts Baseline 0 1 0.53864 (0.006739) 0.00203 -0.003628
Emotions 0 1 0.54067 (0.006114) (0.01027); [-0.3531]
Facts Baseline 1 0 0.60708 (0.006739) -0.08784 -0.09335
Emotions 1 0 0.51924 (0.006114) (0.01211); [-7.706]
Facts Baseline 1 1 0.46499 (0.006739) -0.11196 -0.1174
Emotions 1 1 0.35303 (0.006114) (0.01061); [-11.06]


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68715 (0.00733) -0.00043 0.0007216
Emotions 0 0 0.68672 (0.006659) (0.001309); [0.5511]
Facts Baseline 0 1 0.5375 (0.007286) 0.00360 0.00231
Emotions 0 1 0.5411 (0.006665) (0.001163); [1.987]
Facts Baseline 1 0 0.61233 (0.00733) -0.09527 -0.09243
Emotions 1 0 0.51706 (0.006659) (0.01082); [-8.545]
Facts Baseline 1 1 0.46497 (0.007286) -0.11333 -0.117
Emotions 1 1 0.35164 (0.006665) (0.009287); [-12.6]


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68285 (0.006739) 0.00595
Emotions 0 0 0.6888 (0.006114)
Facts Baseline 0 1 0.53795 (0.006743) 0.00260
Emotions 0 1 0.54055 (0.00612)
Facts Baseline 1 0 0.60706 (0.006739) -0.08783
Emotions 1 0 0.51923 (0.006114)
Facts Baseline 1 1 0.4643 (0.006743) -0.11138
Emotions 1 1 0.35292 (0.00612)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68642 (0.007268) -0.00151
Emotions 0 0 0.68491 (0.006642)
Facts Baseline 0 1 0.53772 (0.007549) 0.00260
Emotions 0 1 0.54032 (0.006976)
Facts Baseline 1 0 0.6121 (0.007268) -0.09711
Emotions 1 0 0.51499 (0.006642)
Facts Baseline 1 1 0.46742 (0.007549) -0.11765
Emotions 1 1 0.34977 (0.006976)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68638 (0.007268) -0.00151 0.0006994
Emotions 0 0 0.68487 (0.006642) (0.001323); [0.5287]
Facts Baseline 0 1 0.53774 (0.007549) 0.00260 0.001624
Emotions 0 1 0.54034 (0.006976) (0.001449); [1.121]
Facts Baseline 1 0 0.61207 (0.007268) -0.09712 -0.09515
Emotions 1 0 0.51495 (0.006642) (0.01066); [-8.926]
Facts Baseline 1 1 0.46744 (0.007549) -0.11765 -0.1217
Emotions 1 1 0.34979 (0.006976) (0.008987); [-13.54]





\[\text{Tactic sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.6829 (0.008087) 0.0059 0.005948
Emotions 0 0 0.6888 (0.008097) (0.01144); [0.5198]
Facts Baseline 0 1 0.5386 (0.007712) 0.0021 0.002028
Emotions 0 1 0.5407 (0.007800) (0.01097); [0.1848]
Facts Baseline 1 0 0.6071 (0.008962) -0.0879 -0.087832
Emotions 1 0 0.5192 (0.008741) (0.01252); [ -7.0158]
Facts Baseline 1 1 0.4650 (0.008314) -0.1120 -0.111959
Emotions 1 1 0.3530 (0.007418) (0.01114); [-10.0482]


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.00595 0.0002093
Emotions 0 0 0.68882 (0.006114) (0.01107); [0.01891]
Facts Baseline 0 1 0.53864 (0.006739) 0.00203 -0.003628
Emotions 0 1 0.54067 (0.006114) (0.01027); [-0.3531]
Facts Baseline 1 0 0.60708 (0.006739) -0.08784 -0.09335
Emotions 1 0 0.51924 (0.006114) (0.01211); [-7.706]
Facts Baseline 1 1 0.46499 (0.006739) -0.11196 -0.1174
Emotions 1 1 0.35303 (0.006114) (0.01061); [-11.06]


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68715 (0.00733) -0.00043 0.0007216
Emotions 0 0 0.68672 (0.006659) (0.001309); [0.5511]
Facts Baseline 0 1 0.5375 (0.007286) 0.00360 0.00231
Emotions 0 1 0.5411 (0.006665) (0.001163); [1.987]
Facts Baseline 1 0 0.61233 (0.00733) -0.09527 -0.09243
Emotions 1 0 0.51706 (0.006659) (0.01082); [-8.545]
Facts Baseline 1 1 0.46497 (0.007286) -0.11333 -0.117
Emotions 1 1 0.35164 (0.006665) (0.009287); [-12.6]


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68285 (0.006739) 0.00595
Emotions 0 0 0.6888 (0.006114)
Facts Baseline 0 1 0.53795 (0.006743) 0.00260
Emotions 0 1 0.54055 (0.00612)
Facts Baseline 1 0 0.60706 (0.006739) -0.08783
Emotions 1 0 0.51923 (0.006114)
Facts Baseline 1 1 0.4643 (0.006743) -0.11138
Emotions 1 1 0.35292 (0.00612)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68642 (0.007268) -0.00151
Emotions 0 0 0.68491 (0.006642)
Facts Baseline 0 1 0.53772 (0.007549) 0.00260
Emotions 0 1 0.54032 (0.006976)
Facts Baseline 1 0 0.6121 (0.007268) -0.09711
Emotions 1 0 0.51499 (0.006642)
Facts Baseline 1 1 0.46742 (0.007549) -0.11765
Emotions 1 1 0.34977 (0.006976)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68638 (0.007268) -0.00151 0.0006994
Emotions 0 0 0.68487 (0.006642) (0.001323); [0.5287]
Facts Baseline 0 1 0.53774 (0.007549) 0.00260 0.001624
Emotions 0 1 0.54034 (0.006976) (0.001449); [1.121]
Facts Baseline 1 0 0.61207 (0.007268) -0.09712 -0.09515
Emotions 1 0 0.51495 (0.006642) (0.01066); [-8.926]
Facts Baseline 1 1 0.46744 (0.007549) -0.11765 -0.1217
Emotions 1 1 0.34979 (0.006976) (0.008987); [-13.54]





\[\text{Demographics + Sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.6829 (0.008087) 0.0059 0.005948
Emotions 0 0 0.6888 (0.008097) (0.01144); [0.5198]
Facts Baseline 0 1 0.5386 (0.007712) 0.0021 0.002028
Emotions 0 1 0.5407 (0.007800) (0.01097); [0.1848]
Facts Baseline 1 0 0.6071 (0.008962) -0.0879 -0.087832
Emotions 1 0 0.5192 (0.008741) (0.01252); [ -7.0158]
Facts Baseline 1 1 0.4650 (0.008314) -0.1120 -0.111959
Emotions 1 1 0.3530 (0.007418) (0.01114); [-10.0482]


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.00595 0.0002093
Emotions 0 0 0.68882 (0.006114) (0.01107); [0.01891]
Facts Baseline 0 1 0.53864 (0.006739) 0.00203 -0.003628
Emotions 0 1 0.54067 (0.006114) (0.01027); [-0.3531]
Facts Baseline 1 0 0.60708 (0.006739) -0.08784 -0.09335
Emotions 1 0 0.51924 (0.006114) (0.01211); [-7.706]
Facts Baseline 1 1 0.46499 (0.006739) -0.11196 -0.1174
Emotions 1 1 0.35303 (0.006114) (0.01061); [-11.06]


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68715 (0.00733) -0.00043 0.0007216
Emotions 0 0 0.68672 (0.006659) (0.001309); [0.5511]
Facts Baseline 0 1 0.5375 (0.007286) 0.00360 0.00231
Emotions 0 1 0.5411 (0.006665) (0.001163); [1.987]
Facts Baseline 1 0 0.61233 (0.00733) -0.09527 -0.09243
Emotions 1 0 0.51706 (0.006659) (0.01082); [-8.545]
Facts Baseline 1 1 0.46497 (0.007286) -0.11333 -0.117
Emotions 1 1 0.35164 (0.006665) (0.009287); [-12.6]


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68285 (0.006739) 0.00595
Emotions 0 0 0.6888 (0.006114)
Facts Baseline 0 1 0.53795 (0.006743) 0.00260
Emotions 0 1 0.54055 (0.00612)
Facts Baseline 1 0 0.60706 (0.006739) -0.08783
Emotions 1 0 0.51923 (0.006114)
Facts Baseline 1 1 0.4643 (0.006743) -0.11138
Emotions 1 1 0.35292 (0.00612)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68642 (0.007268) -0.00151
Emotions 0 0 0.68491 (0.006642)
Facts Baseline 0 1 0.53772 (0.007549) 0.00260
Emotions 0 1 0.54032 (0.006976)
Facts Baseline 1 0 0.6121 (0.007268) -0.09711
Emotions 1 0 0.51499 (0.006642)
Facts Baseline 1 1 0.46742 (0.007549) -0.11765
Emotions 1 1 0.34977 (0.006976)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68638 (0.007268) -0.00151 0.0006994
Emotions 0 0 0.68487 (0.006642) (0.001323); [0.5287]
Facts Baseline 0 1 0.53774 (0.007549) 0.00260 0.001624
Emotions 0 1 0.54034 (0.006976) (0.001449); [1.121]
Facts Baseline 1 0 0.61207 (0.007268) -0.09712 -0.09515
Emotions 1 0 0.51495 (0.006642) (0.01066); [-8.926]
Facts Baseline 1 1 0.46744 (0.007549) -0.11765 -0.1217
Emotions 1 1 0.34979 (0.006976) (0.008987); [-13.54]





\[\text{Demographics + Sharing rates + Tactic sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.6829 (0.008087) 0.0059 0.005948
Emotions 0 0 0.6888 (0.008097) (0.01144); [0.5198]
Facts Baseline 0 1 0.5386 (0.007712) 0.0021 0.002028
Emotions 0 1 0.5407 (0.007800) (0.01097); [0.1848]
Facts Baseline 1 0 0.6071 (0.008962) -0.0879 -0.087832
Emotions 1 0 0.5192 (0.008741) (0.01252); [ -7.0158]
Facts Baseline 1 1 0.4650 (0.008314) -0.1120 -0.111959
Emotions 1 1 0.3530 (0.007418) (0.01114); [-10.0482]


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.00595 0.0002093
Emotions 0 0 0.68882 (0.006114) (0.01107); [0.01891]
Facts Baseline 0 1 0.53864 (0.006739) 0.00203 -0.003628
Emotions 0 1 0.54067 (0.006114) (0.01027); [-0.3531]
Facts Baseline 1 0 0.60708 (0.006739) -0.08784 -0.09335
Emotions 1 0 0.51924 (0.006114) (0.01211); [-7.706]
Facts Baseline 1 1 0.46499 (0.006739) -0.11196 -0.1174
Emotions 1 1 0.35303 (0.006114) (0.01061); [-11.06]


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68715 (0.00733) -0.00043 0.0007216
Emotions 0 0 0.68672 (0.006659) (0.001309); [0.5511]
Facts Baseline 0 1 0.5375 (0.007286) 0.00360 0.00231
Emotions 0 1 0.5411 (0.006665) (0.001163); [1.987]
Facts Baseline 1 0 0.61233 (0.00733) -0.09527 -0.09243
Emotions 1 0 0.51706 (0.006659) (0.01082); [-8.545]
Facts Baseline 1 1 0.46497 (0.007286) -0.11333 -0.117
Emotions 1 1 0.35164 (0.006665) (0.009287); [-12.6]


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68285 (0.006739) 0.00595
Emotions 0 0 0.6888 (0.006114)
Facts Baseline 0 1 0.53795 (0.006743) 0.00260
Emotions 0 1 0.54055 (0.00612)
Facts Baseline 1 0 0.60706 (0.006739) -0.08783
Emotions 1 0 0.51923 (0.006114)
Facts Baseline 1 1 0.4643 (0.006743) -0.11138
Emotions 1 1 0.35292 (0.00612)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68642 (0.007268) -0.00151
Emotions 0 0 0.68491 (0.006642)
Facts Baseline 0 1 0.53772 (0.007549) 0.00260
Emotions 0 1 0.54032 (0.006976)
Facts Baseline 1 0 0.6121 (0.007268) -0.09711
Emotions 1 0 0.51499 (0.006642)
Facts Baseline 1 1 0.46742 (0.007549) -0.11765
Emotions 1 1 0.34977 (0.006976)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment effect
Emotions–Facts
Facts Baseline 0 0 0.68638 (0.007268) -0.00151 0.0006994
Emotions 0 0 0.68487 (0.006642) (0.001323); [0.5287]
Facts Baseline 0 1 0.53774 (0.007549) 0.00260 0.001624
Emotions 0 1 0.54034 (0.006976) (0.001449); [1.121]
Facts Baseline 1 0 0.61207 (0.007268) -0.09712 -0.09515
Emotions 1 0 0.51495 (0.006642) (0.01066); [-8.926]
Facts Baseline 1 1 0.46744 (0.007549) -0.11765 -0.1217
Emotions 1 1 0.34979 (0.006976) (0.008987); [-13.54]






Click for All treatment arms
# version 2: all treatment arms

covariate_list <- c(demographics_demeaned_treatment,
                    sharing_demeaned_treatment,
                    sharing_tactic_demeaned_treatment,
                    demographics_sharing_demeaned_treatment,
                    all_covariates_demeaned_treatment)

cov_estimates_list <- list()

for (cov_list in covariate_list) {

# Demographics
formula_cov1_lm <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list)
cov1_lm <- feols(as.formula(formula_cov1_lm),panel)

formula_cov2_lm <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list," | user")
cov2_lm <- feols(as.formula(formula_cov2_lm),panel)

# Misinfo and Non-misinfo sharing rates
formula_cov3_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact) "," + ",cov_list," | user")
cov3_lm <- feols(as.formula(formula_cov3_lm),panel)

# Misinfo, Non-misinfo, and Tactic sharing rates
formula_cov4_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(type) "," + ",cov_list," | user")
cov4_lm <- feols(as.formula(formula_cov4_lm),panel)

# Demographics and Misinfo and Non-misinfo sharing rates
formula_cov5_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact)*factor(type) "," + ",cov_list," | user")
cov5_lm <- feols(as.formula(formula_cov5_lm),panel)

# Demographics, Misinfo and Non-misinfo sharing rates, and Tactic sharing rates
formula_cov6_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(post_id) "," + ",cov_list," | user")
cov6_lm <- feols(as.formula(formula_cov6_lm),panel)

cov_estimates_list[[length(cov_estimates_list) + 1]] <- list(cov1_lm,cov2_lm,cov3_lm,cov4_lm,cov5_lm,cov6_lm)
}


# Calculate out-of-sample R2
BiocParallel::register(BiocParallel::MulticoreParam(workers = 8)) # define number of cores

# estimate out-of-sample R2 for all fixed effects models
# use R2oosse function from oosse package
# w user FE

if (file.exists("cov_roose_all_list.rds")) {
  cov_roose_all_list <- readRDS("cov_roose_all_list.rds")
} else {
cov_roose_all_list <- list()
models_cov <- list('cov1_lm','cov2_lm','cov3_lm','cov4_lm','cov5_lm','cov6_lm')

for (cov_list in covariate_list) {

# Demographics
formula_cov1_lm <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list)
formula_cov2_lm <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list," | user")
# Misinfo and Non-misinfo sharing rates
formula_cov3_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact) "," + ",cov_list," | user")
# Misinfo, Non-misinfo, and Tactic sharing rates
formula_cov4_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(type) "," + ",cov_list," | user")
# Demographics and Misinfo and Non-misinfo sharing rates
formula_cov5_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact)*factor(type) "," + ",cov_list," | user")
# Demographics, Misinfo and Non-misinfo sharing rates, and Tactic sharing rates
formula_cov6_lm <- paste0("share ~ treatment*post*post_is_misinfo + factor(post_id) "," + ",cov_list," | user")

# Estimate R2oosse for all models
R2oos_cov_alltreat <- list()

for (m in seq_along(models_cov)) {

  #print(paste0('cov: ',length(cov_roose_all_list) + 1,'; model: ',m))

  if (file.exists(paste0("R2oos_cov_alltreat_", m,"_",length(cov_roose_all_list) + 1,".rds"))) {
    R2oos_cov_alltreat[[m]] <- readRDS(paste0("R2oos_cov_alltreat_", m,"_",length(cov_roose_all_list) + 1,".rds"))
  } else {

  formula <- gsub("^share", "", gsub(" \\| user", "", get(paste0("formula_cov", m, "_lm"))))
  X <- model.matrix(as.formula(formula),
                    data = panel %>%
                      mutate(type = as.numeric(factor(panel$type, levels = unique(panel$type)))))
  X <- X[, !(colnames(X) %in% "(Intercept)")]
  X <- cbind(X, user = panel$user, treatment = panel$treatment)

  # identify estimation dataset
  estimation_data <- panel %>% filter(row_number() %in% obs(get(models_cov[[m]])))

  if ("treatment" %in% colnames(X)) {
      X[,"treatment"] <- factor(estimation_data$treatment,
                                levels = levels(estimation_data$treatment))
  }

  # add fixed effects based on model
  if (m == 3) {
    X <- cbind(X, fact = estimation_data$fact)
  }
  if (m == 4) {
    X <- cbind(X, type = as.numeric(factor(estimation_data$type, levels = unique(estimation_data$type))))
  }
  if (m == 5) {
    X <- cbind(X, fact = estimation_data$fact,
                  type = as.numeric(factor(estimation_data$type), levels = unique(estimation_data$type)))
  }
  if (m == 6) {
    X <- cbind(X, post_id = estimation_data$post_id)
  }

  # Define the fit function for models with fixed effects
  fitFunLM_cov <- function(y, x) {
      feols(as.formula(get(paste0("formula_cov", m, "_lm"))),
            data = estimation_data %>%
                      mutate(type = as.numeric(factor(estimation_data$type, levels = unique(estimation_data$type)))))
  }

  # Define the prediction function for models with fixed effects
  predFunLM_cov <- function(mod,x) {
    predict(mod, newdata = x, type = "response")
  }


  # Calculate R2oosse
  R2oos_cov_alltreat[[m]] <- oosse::R2oosse(y = estimation_data$share,
                           x = X,
                           fitFun = fitFunLM_cov,
                           predFun = predFunLM_cov,
                           methodMSE = "CV",
                           cvReps = 100,
                           nFold = 10,
                           nBootstrapsCor = 25)

  # Save results
  saveRDS(R2oos_cov_alltreat[[m]], paste0("R2oos_cov_alltreat_", m,"_",length(cov_roose_all_list) + 1,".rds"))
  }
}

R2oos_cov_alltreat_all <- as.numeric(unlist(lapply(R2oos_cov_alltreat, function(x) x$R2[1])),4)

cov_roose_all_list[[length(cov_roose_all_list) + 1]] <- R2oos_cov_alltreat_all
}
saveRDS(cov_roose_all_list, "cov_roose_all_list.rds")
}
covariate_list_names <- c("Demographics",
                          "Sharing rates",
                          "Tactic sharing rates",
                          "Demographics + Sharing rates",
                          "Demographics + Sharing rates + Tactic sharing rates")

for (cov in seq(length(covariate_list))) {

# Print model
headers <- c("Share (binary indicator)")
model_list <- cov_estimates_list[[cov]]
names <- unique(c(names(cov_estimates_list[[cov]][[1]]$coefficients),
                  names(cov_estimates_list[[cov]][[2]]$coefficients),
                  names(cov_estimates_list[[cov]][[3]]$coefficients),
                  names(cov_estimates_list[[cov]][[4]]$coefficients),
                  names(cov_estimates_list[[cov]][[5]]$coefficients),
                  names(cov_estimates_list[[cov]][[6]]$coefficients)))
variable_labels_wide <- variable_mapping_long[names]

# remove blankrows
coef_names <- names
matrix_coeff_na <- expand.grid(coef_name = coef_names, model = seq(length(model_list)))
matrix_coeff_na$var <- 0
matrix_coeff_na$var_na <- 0
for (m in 1:length(model_list)) {
  na_coeff <- names(model_list[[m]]$coefficients)[is.na(model_list[[m]]$coefficients)]
  for (c in na_coeff) {
    matrix_coeff_na$var[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1 # 1 if variable is in the model (not all models have all variables)
    matrix_coeff_na$var_na[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1
  }
}
matrix_coeff_na <- matrix_coeff_na %>% group_by(coef_name) %>% mutate(var = sum(var), var_na = sum(var_na)) %>% distinct(coef_name,var,var_na)
rows_to_omit <- as.vector(unique(matrix_coeff_na$coef_name[matrix_coeff_na$var_na != 0])) # omit if NA in all models
rows_to_omit <- gsub("\\^\\s","^",paste0("^",rows_to_omit,"$", collapse = "|"))
rows_to_omit <- gsub("\\(","\\\\(",gsub("\\)","\\\\)",rows_to_omit))

# keep variables
keep <- list("treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]")

# out-of-sample R2
if (any(ls() %in% "R2oos_cov_alltreat_all")) {
    #R2oos_cov_alltreat_all <- c(R2oos_cov_alltreat_all)
    R2oos_cov_alltreat_all <- rep("",length(model_list))
} else {
    R2oos_cov_alltreat_all <- rep("",length(model_list))
}

# Print model name
cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))

# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects\n<br>Covariates:",covariate_list_names[cov]),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = c("",rep(covariate_list_names[cov],length(model_list)-1)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_cov_alltreat_all)),
                      reorder.gof = c(6,7,8,9,10,5,1,2,3,4)
)
cat(html_table)
cat("<br>")

# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects\n<br>Covariates:",covariate_list_names[cov]),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      omit.coef = rows_to_omit,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = c("",rep(covariate_list_names[cov],length(model_list)-1)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_cov_alltreat_all)),
                      reorder.gof = c(6,7,8,9,10,5,1,2,3,4)
)
cat(html_table)
cat('</details>')
cat('<br>\n<br>\n<br>')
}
\[\text{Demographics}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202 -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0159) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0129) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0112) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 (full model) 0.0847 0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model) 0.0840 0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics Demographics Demographics Demographics Demographics
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6877***          
  (0.0065)          
No-course Baseline 0.0147*          
  (0.0094)          
Emotions 0.0004          
  (0.0092)          
Reasoning 0.0140*          
  (0.0094)          
Combo -0.0012          
  (0.0093)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0742*** -0.0742***
  (0.0092) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1459*** -0.1173*** -0.1537*** -0.4320***
  (0.0080) (0.0069) (0.0067) (0.0095) (0.0127) (0.0123)
Age -0.0036          
  (0.0030)          
Man 0.0136***          
  (0.0027)          
Some college -0.0063**          
  (0.0033)          
Bachelor’s degree -0.0143***          
  (0.0034)          
Graduate degree -0.0108***          
  (0.0029)          
Married 0.0006          
  (0.0030)          
Unemployed -0.0155***          
  (0.0035)          
Employed -0.0090***          
  (0.0038)          
Mostly urban -0.0282***          
  (0.0032)          
Suburban -0.0174***          
  (0.0031)          
Christian 0.0089***          
  (0.0028)          
Attends religious services 0.0103***          
  (0.0027)          
Uses social media -0.0196***          
  (0.0025)          
Hours spent on Social Media 0.0076***          
  (0.0030)          
Social Media Share: 80-100% 0.0827***          
  (0.0033)          
Social Media Share: 60-80% 0.1135***          
  (0.0036)          
Social Media Share: 40-60% 0.0988***          
  (0.0037)          
Social Media Share: 20-40% 0.0524***          
  (0.0035)          
Passed attention check at pre-treatment -0.0217***          
  (0.0027)          
No-course Baseline x 1[Post-treatment] 0.0514*** 0.0514*** 0.0513*** 0.0514*** 0.0507*** 0.0507***
  (0.0133) (0.0126) (0.0124) (0.0126) (0.0123) (0.0123)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0129) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Reasoning x 1[Post-treatment] -0.0777*** -0.0777*** -0.0785*** -0.0777*** -0.0783*** -0.0783***
  (0.0132) (0.0130) (0.0128) (0.0130) (0.0127) (0.0127)
Combo x 1[Post-treatment] -0.0884*** -0.0884*** -0.0882*** -0.0884*** -0.0883*** -0.0883***
  (0.0131) (0.0131) (0.0128) (0.0131) (0.0127) (0.0127)
No-course Baseline x 1[Misinfo] 0.0051 0.0051 0.0048 0.0051 0.0044 0.0044
  (0.0116) (0.0101) (0.0098) (0.0101) (0.0097) (0.0097)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0112) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Reasoning x 1[Misinfo] -0.0196** -0.0196** -0.0143* -0.0196** -0.0153* -0.0153*
  (0.0114) (0.0101) (0.0097) (0.0101) (0.0096) (0.0096)
Combo x 1[Misinfo] 0.0040 0.0040 0.0064 0.0040 0.0070 0.0070
  (0.0114) (0.0099) (0.0097) (0.0099) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0039 0.0039
  (0.0113) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
No-course Baseline x Age -0.0049          
  (0.0042)          
Emotions x Age -0.0116***          
  (0.0044)          
Reasoning x Age -0.0070*          
  (0.0044)          
Combo x Age 0.0006          
  (0.0043)          
No-course Baseline x Man -0.0232***          
  (0.0040)          
Emotions x Man -0.0022          
  (0.0038)          
Reasoning x Man -0.0033          
  (0.0039)          
Combo x Man -0.0060*          
  (0.0039)          
No-course Baseline x Some college 0.0021          
  (0.0047)          
Emotions x Some college -0.0034          
  (0.0047)          
Reasoning x Some college -0.0098**          
  (0.0047)          
Combo x Some college 0.0013          
  (0.0047)          
No-course Baseline x Bachelor’s degree 0.0173***          
  (0.0048)          
Emotions x Bachelor’s degree 0.0086**          
  (0.0047)          
Reasoning x Bachelor’s degree -0.0026          
  (0.0048)          
Combo x Bachelor’s degree -0.0049          
  (0.0048)          
No-course Baseline x Graduate degree 0.0125***          
  (0.0043)          
Emotions x Graduate degree 0.0109***          
  (0.0039)          
Reasoning x Graduate degree 0.0150***          
  (0.0044)          
Combo x Graduate degree 0.0164***          
  (0.0038)          
No-course Baseline x Married 0.0082**          
  (0.0044)          
Emotions x Married 0.0051          
  (0.0043)          
Reasoning x Married 0.0010          
  (0.0044)          
Combo x Married -0.0076**          
  (0.0044)          
No-course Baseline x Unemployed 0.0052          
  (0.0050)          
Emotions x Unemployed -0.0071*          
  (0.0049)          
Reasoning x Unemployed 0.0098**          
  (0.0050)          
Combo x Unemployed 0.0013          
  (0.0050)          
No-course Baseline x Employed -0.0035          
  (0.0055)          
Emotions x Employed -0.0189***          
  (0.0053)          
Reasoning x Employed -0.0019          
  (0.0055)          
Combo x Employed -0.0011          
  (0.0054)          
No-course Baseline x Mostly urban 0.0294***          
  (0.0046)          
Emotions x Mostly urban 0.0286***          
  (0.0045)          
Reasoning x Mostly urban 0.0063*          
  (0.0046)          
Combo x Mostly urban 0.0213***          
  (0.0045)          
No-course Baseline x Suburban 0.0043          
  (0.0045)          
Emotions x Suburban 0.0149***          
  (0.0044)          
Reasoning x Suburban 0.0040          
  (0.0045)          
Combo x Suburban 0.0111***          
  (0.0045)          
No-course Baseline x Christian -0.0116***          
  (0.0039)          
Emotions x Christian -0.0083**          
  (0.0040)          
Reasoning x Christian -0.0078**          
  (0.0041)          
Combo x Christian -0.0026          
  (0.0040)          
No-course Baseline x Attends religious services -0.0124***          
  (0.0038)          
Emotions x Attends religious services -0.0214***          
  (0.0039)          
Reasoning x Attends religious services -0.0076**          
  (0.0040)          
Combo x Attends religious services -0.0147***          
  (0.0040)          
No-course Baseline x Uses social media 0.0154***          
  (0.0036)          
Emotions x Uses social media 0.0062*          
  (0.0040)          
Reasoning x Uses social media 0.0119***          
  (0.0037)          
Combo x Uses social media 0.0042          
  (0.0042)          
No-course Baseline x Hours spent on Social Media -0.0140***          
  (0.0041)          
Emotions x Hours spent on Social Media -0.0128***          
  (0.0041)          
Reasoning x Hours spent on Social Media 0.0037          
  (0.0042)          
Combo x Hours spent on Social Media -0.0203***          
  (0.0040)          
No-course Baseline x Social Media Share: 80-100% -0.0080**          
  (0.0046)          
Emotions x Social Media Share: 80-100% -0.0095**          
  (0.0046)          
Reasoning x Social Media Share: 80-100% 0.0007          
  (0.0046)          
Combo x Social Media Share: 80-100% -0.0124***          
  (0.0046)          
No-course Baseline x Social Media Share: 60-80% -0.0029          
  (0.0053)          
Emotions x Social Media Share: 60-80% -0.0077*          
  (0.0051)          
Reasoning x Social Media Share: 60-80% -0.0105**          
  (0.0053)          
Combo x Social Media Share: 60-80% -0.0115**          
  (0.0052)          
No-course Baseline x Social Media Share: 40-60% -0.0054          
  (0.0054)          
Emotions x Social Media Share: 40-60% -0.0166***          
  (0.0052)          
Reasoning x Social Media Share: 40-60% -0.0073*          
  (0.0054)          
Combo x Social Media Share: 40-60% -0.0209***          
  (0.0053)          
No-course Baseline x Social Media Share: 20-40% -0.0124***          
  (0.0051)          
Emotions x Social Media Share: 20-40% -0.0092**          
  (0.0049)          
Reasoning x Social Media Share: 20-40% -0.0049          
  (0.0051)          
Combo x Social Media Share: 20-40% -0.0112**          
  (0.0050)          
No-course Baseline x Passed attention check at pre-treatment -0.0144***          
  (0.0039)          
Emotions x Passed attention check at pre-treatment -0.0039          
  (0.0038)          
Reasoning x Passed attention check at pre-treatment 0.0115***          
  (0.0039)          
Combo x Passed attention check at pre-treatment -0.0079**          
  (0.0038)          
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0033 0.0033 0.0046 0.0033 0.0042 0.0042
  (0.0163) (0.0140) (0.0133) (0.0140) (0.0131) (0.0131)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202 -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0159) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0154 0.0154 0.0129 0.0154 0.0107 0.0107
  (0.0162) (0.0139) (0.0132) (0.0139) (0.0130) (0.0130)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0127 -0.0127 -0.0142 -0.0127 -0.0194* -0.0194*
  (0.0161) (0.0138) (0.0132) (0.0138) (0.0130) (0.0130)
Post domain 2     -0.2001***   -0.1794***  
      (0.0057)   (0.0095)  
Post domain 3     -0.2813***   -0.3043***  
      (0.0055)   (0.0095)  
Post domain 4     -0.1804***   -0.2332***  
      (0.0056)   (0.0097)  
Post domain 5     0.0545***   -0.0010  
      (0.0051)   (0.0087)  
Post domain 6     0.0164***   0.0389***  
      (0.0054)   (0.0084)  
Post domain 7     -0.2347***   -0.1827***  
      (0.0056)   (0.0094)  
Post domain 8     -0.2195***   -0.1160***  
      (0.0057)   (0.0095)  
Post domain 9     0.0369***   -0.0608***  
      (0.0053)   (0.0091)  
Post domain 10     -0.0565***   -0.0963***  
      (0.0054)   (0.0091)  
Post domain 11     -0.1586***   -0.1739***  
      (0.0057)   (0.0094)  
Post domain 12     -0.1047***   -0.1343***  
      (0.0054)   (0.0092)  
Post domain 13     -0.1541***   -0.2155***  
      (0.0055)   (0.0093)  
Post domain 14     -0.2759***   -0.3151***  
      (0.0057)   (0.0097)  
Post domain 15     -0.1868***   -0.2755***  
      (0.0056)   (0.0095)  
1[Combo manipulation tactic]       -0.0512*** -0.0275***  
        (0.0041) (0.0078)  
1[Emotions manipulation tactic]       -0.0154*** -0.0585***  
        (0.0041) (0.0080)  
1[Reasoning manipulation tactic]       -0.0143*** 0.0208***  
        (0.0041) (0.0079)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0536***  
          (0.0158)  
Post domain 3 x 1[Combo manipulation tactic]         0.0462***  
          (0.0152)  
Post domain 4 x 1[Combo manipulation tactic]         0.0789***  
          (0.0153)  
Post domain 5 x 1[Combo manipulation tactic]         0.0971***  
          (0.0149)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3110***  
          (0.0147)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0471***  
          (0.0153)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0192  
          (0.0155)  
Post domain 9 x 1[Combo manipulation tactic]         0.1469***  
          (0.0150)  
Post domain 10 x 1[Combo manipulation tactic]         0.0318**  
          (0.0154)  
Post domain 11 x 1[Combo manipulation tactic]         0.0595***  
          (0.0153)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0230*  
          (0.0156)  
Post domain 13 x 1[Combo manipulation tactic]         0.0600***  
          (0.0154)  
Post domain 14 x 1[Combo manipulation tactic]         0.0296**  
          (0.0153)  
Post domain 15 x 1[Combo manipulation tactic]         0.0822***  
          (0.0153)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0845***  
          (0.0155)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1118***  
          (0.0154)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0617***  
          (0.0153)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1184***  
          (0.0148)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1477***  
          (0.0147)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0324**  
          (0.0151)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1539***  
          (0.0153)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1660***  
          (0.0153)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1090***  
          (0.0152)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0397***  
          (0.0154)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1449***  
          (0.0153)  
Post domain 13 x 1[Emotions manipulation tactic]         0.1875***  
          (0.0151)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1025***  
          (0.0154)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3384***  
          (0.0155)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0427***  
          (0.0155)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0517***  
          (0.0150)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.0985***  
          (0.0155)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0326**  
          (0.0150)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0629***  
          (0.0144)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1533***  
          (0.0149)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2920***  
          (0.0151)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1260***  
          (0.0151)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0377***  
          (0.0151)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0529***  
          (0.0155)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0132  
          (0.0151)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0267**  
          (0.0153)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0441***  
          (0.0152)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0236*  
          (0.0151)  
Post 2 indicator           -0.1794***
            (0.0095)
Post 3 indicator           -0.3043***
            (0.0095)
Post 4 indicator           -0.2332***
            (0.0097)
Post 5 indicator           -0.0010
            (0.0087)
Post 6 indicator           0.0389***
            (0.0084)
Post 7 indicator           -0.1827***
            (0.0094)
Post 8 indicator           -0.1160***
            (0.0095)
Post 9 indicator           -0.0608***
            (0.0091)
Post 10 indicator           -0.0963***
            (0.0091)
Post 11 indicator           -0.1739***
            (0.0094)
Post 12 indicator           -0.1343***
            (0.0092)
Post 13 indicator           -0.2155***
            (0.0093)
Post 14 indicator           -0.3151***
            (0.0097)
Post 15 indicator           -0.2755***
            (0.0095)
Post 16 indicator           0.2508***
            (0.0118)
Post 17 indicator           0.0178*
            (0.0119)
Post 18 indicator           -0.0072
            (0.0113)
Post 19 indicator           0.0965***
            (0.0114)
Post 20 indicator           0.3469***
            (0.0115)
Post 21 indicator           -0.0213**
            (0.0113)
Post 22 indicator           0.0211**
            (0.0114)
Post 23 indicator           0.1157***
            (0.0118)
Post 24 indicator           0.3370***
            (0.0116)
Post 25 indicator           0.1863***
            (0.0118)
Post 26 indicator           0.1364***
            (0.0120)
Post 27 indicator           0.0935***
            (0.0116)
Post 28 indicator           0.0953***
            (0.0117)
Post 29 indicator           -0.0346***
            (0.0113)
Post 30 indicator           0.0576***
            (0.0116)
Post 31 indicator           0.2198***
            (0.0117)
Post 32 indicator           -0.0441***
            (0.0115)
Post 33 indicator           0.0273***
            (0.0113)
Post 34 indicator           0.0482***
            (0.0114)
Post 35 indicator           0.3371***
            (0.0115)
Post 36 indicator           0.4064***
            (0.0116)
Post 37 indicator           0.0046
            (0.0112)
Post 38 indicator           -0.0501***
            (0.0112)
Post 39 indicator           0.3250***
            (0.0117)
Post 40 indicator           0.2324***
            (0.0118)
Post 41 indicator           0.0062
            (0.0116)
Post 42 indicator           0.2304***
            (0.0118)
Post 43 indicator           0.1917***
            (0.0115)
Post 44 indicator           0.0072
            (0.0114)
Post 45 indicator           0.2826***
            (0.0118)
Post 46 indicator           0.2991***
            (0.0118)
Post 47 indicator           0.1624***
            (0.0118)
Post 48 indicator           -0.0569***
            (0.0110)
Post 49 indicator           0.1643***
            (0.0121)
Post 50 indicator           0.3306***
            (0.0118)
Post 51 indicator           0.4009***
            (0.0113)
Post 52 indicator           -0.0369***
            (0.0113)
Post 53 indicator           -0.1089***
            (0.0115)
Post 54 indicator           0.3643***
            (0.0116)
Post 55 indicator           0.2405***
            (0.0118)
Post 56 indicator           0.1781***
            (0.0122)
Post 57 indicator           0.1780***
            (0.0115)
Post 58 indicator           0.1102***
            (0.0117)
Post 59 indicator           0.0281***
            (0.0116)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 (full model) 0.0847 0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model) 0.0840 0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics Demographics Demographics Demographics Demographics
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0141) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0099) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 (full model) 0.2790 0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model) 0.2788 0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Sharing rates Sharing rates Sharing rates Sharing rates Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6897***          
  (0.0058)          
No-course Baseline 0.0006          
  (0.0084)          
Emotions 0.0026          
  (0.0081)          
Reasoning 0.0142**          
  (0.0083)          
Combo -0.0018          
  (0.0082)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0742*** -0.0742***
  (0.0082) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1459*** -0.1173*** -0.1537*** -0.4320***
  (0.0071) (0.0069) (0.0067) (0.0095) (0.0127) (0.0123)
Avg. Sharing of Misinfo posts at pre-treatment 0.1802***          
  (0.0030)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.1019***          
  (0.0030)          
No-course Baseline x 1[Post-treatment] 0.0514*** 0.0514*** 0.0513*** 0.0514*** 0.0507*** 0.0507***
  (0.0118) (0.0126) (0.0124) (0.0126) (0.0123) (0.0123)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Reasoning x 1[Post-treatment] -0.0777*** -0.0777*** -0.0785*** -0.0777*** -0.0783*** -0.0783***
  (0.0117) (0.0130) (0.0128) (0.0130) (0.0127) (0.0127)
Combo x 1[Post-treatment] -0.0884*** -0.0884*** -0.0882*** -0.0884*** -0.0883*** -0.0883***
  (0.0116) (0.0131) (0.0128) (0.0131) (0.0127) (0.0127)
No-course Baseline x 1[Misinfo] 0.0051 0.0051 0.0048 0.0051 0.0044 0.0044
  (0.0103) (0.0101) (0.0098) (0.0101) (0.0097) (0.0097)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0099) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Reasoning x 1[Misinfo] -0.0196** -0.0196** -0.0143* -0.0196** -0.0153* -0.0153*
  (0.0102) (0.0101) (0.0097) (0.0101) (0.0096) (0.0096)
Combo x 1[Misinfo] 0.0040 0.0040 0.0064 0.0040 0.0070 0.0070
  (0.0101) (0.0099) (0.0097) (0.0099) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0039 0.0039
  (0.0100) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
No-course Baseline x Avg. Sharing of Misinfo posts at pre-treatment 0.0028          
  (0.0043)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.0213***          
  (0.0042)          
Reasoning x Avg. Sharing of Misinfo posts at pre-treatment -0.0047          
  (0.0043)          
Combo x Avg. Sharing of Misinfo posts at pre-treatment -0.0097**          
  (0.0043)          
No-course Baseline x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0039          
  (0.0044)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0144***          
  (0.0041)          
Reasoning x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0111***          
  (0.0043)          
Combo x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0089**          
  (0.0043)          
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0033 0.0033 0.0046 0.0033 0.0042 0.0042
  (0.0145) (0.0140) (0.0133) (0.0140) (0.0131) (0.0131)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0141) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0154 0.0154 0.0129 0.0154 0.0107 0.0107
  (0.0144) (0.0139) (0.0132) (0.0139) (0.0130) (0.0130)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0127 -0.0127 -0.0142 -0.0127 -0.0194* -0.0194*
  (0.0143) (0.0138) (0.0132) (0.0138) (0.0130) (0.0130)
Post domain 2     -0.2001***   -0.1794***  
      (0.0057)   (0.0095)  
Post domain 3     -0.2813***   -0.3043***  
      (0.0055)   (0.0095)  
Post domain 4     -0.1804***   -0.2332***  
      (0.0056)   (0.0097)  
Post domain 5     0.0545***   -0.0010  
      (0.0051)   (0.0087)  
Post domain 6     0.0164***   0.0389***  
      (0.0054)   (0.0084)  
Post domain 7     -0.2347***   -0.1827***  
      (0.0056)   (0.0094)  
Post domain 8     -0.2195***   -0.1160***  
      (0.0057)   (0.0095)  
Post domain 9     0.0369***   -0.0608***  
      (0.0053)   (0.0091)  
Post domain 10     -0.0565***   -0.0963***  
      (0.0054)   (0.0091)  
Post domain 11     -0.1586***   -0.1739***  
      (0.0057)   (0.0094)  
Post domain 12     -0.1047***   -0.1343***  
      (0.0054)   (0.0092)  
Post domain 13     -0.1541***   -0.2155***  
      (0.0055)   (0.0093)  
Post domain 14     -0.2759***   -0.3151***  
      (0.0057)   (0.0097)  
Post domain 15     -0.1868***   -0.2755***  
      (0.0056)   (0.0095)  
1[Combo manipulation tactic]       -0.0512*** -0.0275***  
        (0.0041) (0.0078)  
1[Emotions manipulation tactic]       -0.0154*** -0.0585***  
        (0.0041) (0.0080)  
1[Reasoning manipulation tactic]       -0.0143*** 0.0208***  
        (0.0041) (0.0079)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0536***  
          (0.0158)  
Post domain 3 x 1[Combo manipulation tactic]         0.0462***  
          (0.0152)  
Post domain 4 x 1[Combo manipulation tactic]         0.0789***  
          (0.0153)  
Post domain 5 x 1[Combo manipulation tactic]         0.0971***  
          (0.0149)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3110***  
          (0.0147)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0471***  
          (0.0153)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0192  
          (0.0155)  
Post domain 9 x 1[Combo manipulation tactic]         0.1469***  
          (0.0150)  
Post domain 10 x 1[Combo manipulation tactic]         0.0318**  
          (0.0154)  
Post domain 11 x 1[Combo manipulation tactic]         0.0595***  
          (0.0153)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0230*  
          (0.0156)  
Post domain 13 x 1[Combo manipulation tactic]         0.0600***  
          (0.0154)  
Post domain 14 x 1[Combo manipulation tactic]         0.0296**  
          (0.0153)  
Post domain 15 x 1[Combo manipulation tactic]         0.0822***  
          (0.0153)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0845***  
          (0.0155)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1118***  
          (0.0154)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0617***  
          (0.0153)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1184***  
          (0.0148)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1477***  
          (0.0147)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0324**  
          (0.0151)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1539***  
          (0.0153)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1660***  
          (0.0153)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1090***  
          (0.0152)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0397***  
          (0.0154)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1449***  
          (0.0153)  
Post domain 13 x 1[Emotions manipulation tactic]         0.1875***  
          (0.0151)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1025***  
          (0.0154)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3384***  
          (0.0155)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0427***  
          (0.0155)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0517***  
          (0.0150)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.0985***  
          (0.0155)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0326**  
          (0.0150)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0629***  
          (0.0144)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1533***  
          (0.0149)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2920***  
          (0.0151)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1260***  
          (0.0151)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0377***  
          (0.0151)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0529***  
          (0.0155)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0132  
          (0.0151)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0267**  
          (0.0153)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0441***  
          (0.0152)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0236*  
          (0.0151)  
Post 2 indicator           -0.1794***
            (0.0095)
Post 3 indicator           -0.3043***
            (0.0095)
Post 4 indicator           -0.2332***
            (0.0097)
Post 5 indicator           -0.0010
            (0.0087)
Post 6 indicator           0.0389***
            (0.0084)
Post 7 indicator           -0.1827***
            (0.0094)
Post 8 indicator           -0.1160***
            (0.0095)
Post 9 indicator           -0.0608***
            (0.0091)
Post 10 indicator           -0.0963***
            (0.0091)
Post 11 indicator           -0.1739***
            (0.0094)
Post 12 indicator           -0.1343***
            (0.0092)
Post 13 indicator           -0.2155***
            (0.0093)
Post 14 indicator           -0.3151***
            (0.0097)
Post 15 indicator           -0.2755***
            (0.0095)
Post 16 indicator           0.2508***
            (0.0118)
Post 17 indicator           0.0178*
            (0.0119)
Post 18 indicator           -0.0072
            (0.0113)
Post 19 indicator           0.0965***
            (0.0114)
Post 20 indicator           0.3469***
            (0.0115)
Post 21 indicator           -0.0213**
            (0.0113)
Post 22 indicator           0.0211**
            (0.0114)
Post 23 indicator           0.1157***
            (0.0118)
Post 24 indicator           0.3370***
            (0.0116)
Post 25 indicator           0.1863***
            (0.0118)
Post 26 indicator           0.1364***
            (0.0120)
Post 27 indicator           0.0935***
            (0.0116)
Post 28 indicator           0.0953***
            (0.0117)
Post 29 indicator           -0.0346***
            (0.0113)
Post 30 indicator           0.0576***
            (0.0116)
Post 31 indicator           0.2198***
            (0.0117)
Post 32 indicator           -0.0441***
            (0.0115)
Post 33 indicator           0.0273***
            (0.0113)
Post 34 indicator           0.0482***
            (0.0114)
Post 35 indicator           0.3371***
            (0.0115)
Post 36 indicator           0.4064***
            (0.0116)
Post 37 indicator           0.0046
            (0.0112)
Post 38 indicator           -0.0501***
            (0.0112)
Post 39 indicator           0.3250***
            (0.0117)
Post 40 indicator           0.2324***
            (0.0118)
Post 41 indicator           0.0062
            (0.0116)
Post 42 indicator           0.2304***
            (0.0118)
Post 43 indicator           0.1917***
            (0.0115)
Post 44 indicator           0.0072
            (0.0114)
Post 45 indicator           0.2826***
            (0.0118)
Post 46 indicator           0.2991***
            (0.0118)
Post 47 indicator           0.1624***
            (0.0118)
Post 48 indicator           -0.0569***
            (0.0110)
Post 49 indicator           0.1643***
            (0.0121)
Post 50 indicator           0.3306***
            (0.0118)
Post 51 indicator           0.4009***
            (0.0113)
Post 52 indicator           -0.0369***
            (0.0113)
Post 53 indicator           -0.1089***
            (0.0115)
Post 54 indicator           0.3643***
            (0.0116)
Post 55 indicator           0.2405***
            (0.0118)
Post 56 indicator           0.1781***
            (0.0122)
Post 57 indicator           0.1780***
            (0.0115)
Post 58 indicator           0.1102***
            (0.0117)
Post 59 indicator           0.0281***
            (0.0116)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 (full model) 0.2790 0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model) 0.2788 0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Sharing rates Sharing rates Sharing rates Sharing rates Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Tactic sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0141) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0099) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 (full model) 0.2791 0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model) 0.2789 0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6898***          
  (0.0058)          
No-course Baseline 0.0004          
  (0.0084)          
Emotions 0.0023          
  (0.0081)          
Reasoning 0.0139**          
  (0.0083)          
Combo -0.0019          
  (0.0082)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0742*** -0.0742***
  (0.0082) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1459*** -0.1173*** -0.1537*** -0.4320***
  (0.0071) (0.0069) (0.0067) (0.0095) (0.0127) (0.0123)
Avg. Sharing of Misinfo posts at pre-treatment 0.0901          
  (805.5739)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.1021***          
  (0.0030)          
Emotions posts 0.0397          
  (329.1976)          
Reasoning posts 0.0323          
  (326.0741)          
Combo posts 0.0384          
  (332.7445)          
No-course Baseline x 1[Post-treatment] 0.0514*** 0.0514*** 0.0513*** 0.0514*** 0.0507*** 0.0507***
  (0.0118) (0.0126) (0.0124) (0.0126) (0.0123) (0.0123)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Reasoning x 1[Post-treatment] -0.0777*** -0.0777*** -0.0785*** -0.0777*** -0.0783*** -0.0783***
  (0.0117) (0.0130) (0.0128) (0.0130) (0.0127) (0.0127)
Combo x 1[Post-treatment] -0.0884*** -0.0884*** -0.0882*** -0.0884*** -0.0883*** -0.0883***
  (0.0116) (0.0131) (0.0128) (0.0131) (0.0127) (0.0127)
No-course Baseline x 1[Misinfo] 0.0051 0.0051 0.0048 0.0051 0.0044 0.0044
  (0.0103) (0.0101) (0.0098) (0.0101) (0.0097) (0.0097)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0099) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Reasoning x 1[Misinfo] -0.0196** -0.0196** -0.0143* -0.0196** -0.0153* -0.0153*
  (0.0102) (0.0101) (0.0097) (0.0101) (0.0096) (0.0096)
Combo x 1[Misinfo] 0.0040 0.0040 0.0064 0.0040 0.0070 0.0070
  (0.0101) (0.0099) (0.0097) (0.0099) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0039 0.0039
  (0.0100) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
No-course Baseline x Avg. Sharing of Misinfo posts at pre-treatment -0.0017          
  (0.0104)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.0371***          
  (0.0102)          
Reasoning x Avg. Sharing of Misinfo posts at pre-treatment 0.0066          
  (0.0103)          
Combo x Avg. Sharing of Misinfo posts at pre-treatment -0.0082          
  (0.0103)          
No-course Baseline x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0042          
  (0.0044)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0147***          
  (0.0042)          
Reasoning x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0116***          
  (0.0043)          
Combo x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0090**          
  (0.0043)          
No-course Baseline x Emotions posts 0.0025          
  (0.0067)          
Emotions x Emotions posts 0.0066          
  (0.0066)          
Reasoning x Emotions posts -0.0033          
  (0.0067)          
Combo x Emotions posts -0.0075          
  (0.0067)          
No-course Baseline x Reasoning posts 0.0032          
  (0.0067)          
Emotions x Reasoning posts 0.0131**          
  (0.0066)          
Reasoning x Reasoning posts -0.0105*          
  (0.0066)          
Combo x Reasoning posts 0.0058          
  (0.0067)          
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0033 0.0033 0.0046 0.0033 0.0042 0.0042
  (0.0145) (0.0140) (0.0133) (0.0140) (0.0131) (0.0131)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0141) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0154 0.0154 0.0129 0.0154 0.0107 0.0107
  (0.0144) (0.0139) (0.0132) (0.0139) (0.0130) (0.0130)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0127 -0.0127 -0.0142 -0.0127 -0.0194* -0.0194*
  (0.0143) (0.0138) (0.0132) (0.0138) (0.0130) (0.0130)
Post domain 2     -0.2001***   -0.1794***  
      (0.0057)   (0.0095)  
Post domain 3     -0.2813***   -0.3043***  
      (0.0055)   (0.0095)  
Post domain 4     -0.1804***   -0.2332***  
      (0.0056)   (0.0097)  
Post domain 5     0.0545***   -0.0010  
      (0.0051)   (0.0087)  
Post domain 6     0.0164***   0.0389***  
      (0.0054)   (0.0084)  
Post domain 7     -0.2347***   -0.1827***  
      (0.0056)   (0.0094)  
Post domain 8     -0.2195***   -0.1160***  
      (0.0057)   (0.0095)  
Post domain 9     0.0369***   -0.0608***  
      (0.0053)   (0.0091)  
Post domain 10     -0.0565***   -0.0963***  
      (0.0054)   (0.0091)  
Post domain 11     -0.1586***   -0.1739***  
      (0.0057)   (0.0094)  
Post domain 12     -0.1047***   -0.1343***  
      (0.0054)   (0.0092)  
Post domain 13     -0.1541***   -0.2155***  
      (0.0055)   (0.0093)  
Post domain 14     -0.2759***   -0.3151***  
      (0.0057)   (0.0097)  
Post domain 15     -0.1868***   -0.2755***  
      (0.0056)   (0.0095)  
1[Combo manipulation tactic]       -0.0512*** -0.0275***  
        (0.0041) (0.0078)  
1[Emotions manipulation tactic]       -0.0154*** -0.0585***  
        (0.0041) (0.0080)  
1[Reasoning manipulation tactic]       -0.0143*** 0.0208***  
        (0.0041) (0.0079)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0536***  
          (0.0158)  
Post domain 3 x 1[Combo manipulation tactic]         0.0462***  
          (0.0152)  
Post domain 4 x 1[Combo manipulation tactic]         0.0789***  
          (0.0153)  
Post domain 5 x 1[Combo manipulation tactic]         0.0971***  
          (0.0149)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3110***  
          (0.0147)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0471***  
          (0.0153)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0192  
          (0.0155)  
Post domain 9 x 1[Combo manipulation tactic]         0.1469***  
          (0.0150)  
Post domain 10 x 1[Combo manipulation tactic]         0.0318**  
          (0.0154)  
Post domain 11 x 1[Combo manipulation tactic]         0.0595***  
          (0.0153)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0230*  
          (0.0156)  
Post domain 13 x 1[Combo manipulation tactic]         0.0600***  
          (0.0154)  
Post domain 14 x 1[Combo manipulation tactic]         0.0296**  
          (0.0153)  
Post domain 15 x 1[Combo manipulation tactic]         0.0822***  
          (0.0153)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0845***  
          (0.0155)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1118***  
          (0.0154)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0617***  
          (0.0153)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1184***  
          (0.0148)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1477***  
          (0.0147)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0324**  
          (0.0151)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1539***  
          (0.0153)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1660***  
          (0.0153)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1090***  
          (0.0152)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0397***  
          (0.0154)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1449***  
          (0.0153)  
Post domain 13 x 1[Emotions manipulation tactic]         0.1875***  
          (0.0151)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1025***  
          (0.0154)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3384***  
          (0.0155)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0427***  
          (0.0155)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0517***  
          (0.0150)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.0985***  
          (0.0155)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0326**  
          (0.0150)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0629***  
          (0.0144)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1533***  
          (0.0149)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2920***  
          (0.0151)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1260***  
          (0.0151)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0377***  
          (0.0151)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0529***  
          (0.0155)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0132  
          (0.0151)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0267**  
          (0.0153)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0441***  
          (0.0152)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0236*  
          (0.0151)  
Post 2 indicator           -0.1794***
            (0.0095)
Post 3 indicator           -0.3043***
            (0.0095)
Post 4 indicator           -0.2332***
            (0.0097)
Post 5 indicator           -0.0010
            (0.0087)
Post 6 indicator           0.0389***
            (0.0084)
Post 7 indicator           -0.1827***
            (0.0094)
Post 8 indicator           -0.1160***
            (0.0095)
Post 9 indicator           -0.0608***
            (0.0091)
Post 10 indicator           -0.0963***
            (0.0091)
Post 11 indicator           -0.1739***
            (0.0094)
Post 12 indicator           -0.1343***
            (0.0092)
Post 13 indicator           -0.2155***
            (0.0093)
Post 14 indicator           -0.3151***
            (0.0097)
Post 15 indicator           -0.2755***
            (0.0095)
Post 16 indicator           0.2508***
            (0.0118)
Post 17 indicator           0.0178*
            (0.0119)
Post 18 indicator           -0.0072
            (0.0113)
Post 19 indicator           0.0965***
            (0.0114)
Post 20 indicator           0.3469***
            (0.0115)
Post 21 indicator           -0.0213**
            (0.0113)
Post 22 indicator           0.0211**
            (0.0114)
Post 23 indicator           0.1157***
            (0.0118)
Post 24 indicator           0.3370***
            (0.0116)
Post 25 indicator           0.1863***
            (0.0118)
Post 26 indicator           0.1364***
            (0.0120)
Post 27 indicator           0.0935***
            (0.0116)
Post 28 indicator           0.0953***
            (0.0117)
Post 29 indicator           -0.0346***
            (0.0113)
Post 30 indicator           0.0576***
            (0.0116)
Post 31 indicator           0.2198***
            (0.0117)
Post 32 indicator           -0.0441***
            (0.0115)
Post 33 indicator           0.0273***
            (0.0113)
Post 34 indicator           0.0482***
            (0.0114)
Post 35 indicator           0.3371***
            (0.0115)
Post 36 indicator           0.4064***
            (0.0116)
Post 37 indicator           0.0046
            (0.0112)
Post 38 indicator           -0.0501***
            (0.0112)
Post 39 indicator           0.3250***
            (0.0117)
Post 40 indicator           0.2324***
            (0.0118)
Post 41 indicator           0.0062
            (0.0116)
Post 42 indicator           0.2304***
            (0.0118)
Post 43 indicator           0.1917***
            (0.0115)
Post 44 indicator           0.0072
            (0.0114)
Post 45 indicator           0.2826***
            (0.0118)
Post 46 indicator           0.2991***
            (0.0118)
Post 47 indicator           0.1624***
            (0.0118)
Post 48 indicator           -0.0569***
            (0.0110)
Post 49 indicator           0.1643***
            (0.0121)
Post 50 indicator           0.3306***
            (0.0118)
Post 51 indicator           0.4009***
            (0.0113)
Post 52 indicator           -0.0369***
            (0.0113)
Post 53 indicator           -0.1089***
            (0.0115)
Post 54 indicator           0.3643***
            (0.0116)
Post 55 indicator           0.2405***
            (0.0118)
Post 56 indicator           0.1781***
            (0.0122)
Post 57 indicator           0.1780***
            (0.0115)
Post 58 indicator           0.1102***
            (0.0117)
Post 59 indicator           0.0281***
            (0.0116)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 (full model) 0.2791 0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model) 0.2789 0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Demographics + Sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0140) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0099) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 (full model) 0.2816 0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model) 0.2811 0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6907***          
  (0.0058)          
No-course Baseline -0.0012          
  (0.0084)          
Emotions 0.0016          
  (0.0081)          
Reasoning 0.0122*          
  (0.0083)          
Combo -0.0031          
  (0.0082)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0742*** -0.0742***
  (0.0082) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1459*** -0.1173*** -0.1537*** -0.4320***
  (0.0071) (0.0069) (0.0067) (0.0095) (0.0127) (0.0123)
Age -0.0058**          
  (0.0026)          
Man 0.0028          
  (0.0024)          
Some college -0.0018          
  (0.0030)          
Bachelor’s degree 0.0034          
  (0.0030)          
Graduate degree -0.0078***          
  (0.0026)          
Married -0.0028          
  (0.0027)          
Unemployed -0.0045*          
  (0.0031)          
Employed -0.0084***          
  (0.0034)          
Mostly urban -0.0056**          
  (0.0028)          
Suburban -0.0052**          
  (0.0028)          
Christian 0.0031          
  (0.0025)          
Attends religious services 0.0007          
  (0.0024)          
Uses social media -0.0060***          
  (0.0022)          
Hours spent on Social Media 0.0052**          
  (0.0026)          
Social Media Share: 80-100% 0.0130***          
  (0.0030)          
Social Media Share: 60-80% 0.0179***          
  (0.0033)          
Social Media Share: 40-60% 0.0149***          
  (0.0034)          
Social Media Share: 20-40% 0.0065**          
  (0.0031)          
Passed attention check at pre-treatment -0.0046**          
  (0.0024)          
Avg. Sharing of Misinfo posts at pre-treatment 0.1749***          
  (0.0031)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.0999***          
  (0.0030)          
No-course Baseline x 1[Post-treatment] 0.0514*** 0.0514*** 0.0513*** 0.0514*** 0.0507*** 0.0507***
  (0.0118) (0.0126) (0.0124) (0.0126) (0.0123) (0.0123)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Reasoning x 1[Post-treatment] -0.0777*** -0.0777*** -0.0785*** -0.0777*** -0.0783*** -0.0783***
  (0.0117) (0.0130) (0.0128) (0.0130) (0.0127) (0.0127)
Combo x 1[Post-treatment] -0.0884*** -0.0884*** -0.0882*** -0.0884*** -0.0883*** -0.0883***
  (0.0116) (0.0131) (0.0128) (0.0131) (0.0127) (0.0127)
No-course Baseline x 1[Misinfo] 0.0051 0.0051 0.0048 0.0051 0.0044 0.0044
  (0.0102) (0.0101) (0.0098) (0.0101) (0.0097) (0.0097)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0099) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Reasoning x 1[Misinfo] -0.0196** -0.0196** -0.0143* -0.0196** -0.0153* -0.0153*
  (0.0101) (0.0101) (0.0097) (0.0101) (0.0096) (0.0096)
Combo x 1[Misinfo] 0.0040 0.0040 0.0064 0.0040 0.0070 0.0070
  (0.0101) (0.0099) (0.0097) (0.0099) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0039 0.0039
  (0.0100) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
No-course Baseline x Age -0.0006          
  (0.0037)          
Emotions x Age -0.0040          
  (0.0039)          
Reasoning x Age -0.0018          
  (0.0039)          
Combo x Age -0.0011          
  (0.0038)          
No-course Baseline x Man -0.0075**          
  (0.0035)          
Emotions x Man 0.0061**          
  (0.0034)          
Reasoning x Man -0.0067**          
  (0.0034)          
Combo x Man 0.0034          
  (0.0034)          
No-course Baseline x Some college -0.0014          
  (0.0042)          
Emotions x Some college 0.0003          
  (0.0041)          
Reasoning x Some college -0.0013          
  (0.0042)          
Combo x Some college -0.0035          
  (0.0042)          
No-course Baseline x Bachelor’s degree -0.0047          
  (0.0043)          
Emotions x Bachelor’s degree -0.0029          
  (0.0042)          
Reasoning x Bachelor’s degree -0.0077**          
  (0.0042)          
Combo x Bachelor’s degree -0.0104***          
  (0.0042)          
No-course Baseline x Graduate degree 0.0027          
  (0.0038)          
Emotions x Graduate degree 0.0094***          
  (0.0034)          
Reasoning x Graduate degree 0.0019          
  (0.0039)          
Combo x Graduate degree 0.0087***          
  (0.0034)          
No-course Baseline x Married 0.0030          
  (0.0039)          
Emotions x Married -0.0050*          
  (0.0038)          
Reasoning x Married 0.0017          
  (0.0039)          
Combo x Married -0.0042          
  (0.0039)          
No-course Baseline x Unemployed 0.0024          
  (0.0044)          
Emotions x Unemployed -0.0017          
  (0.0043)          
Reasoning x Unemployed 0.0047          
  (0.0044)          
Combo x Unemployed 0.0010          
  (0.0044)          
No-course Baseline x Employed 0.0002          
  (0.0049)          
Emotions x Employed 0.0020          
  (0.0047)          
Reasoning x Employed 0.0028          
  (0.0049)          
Combo x Employed 0.0020          
  (0.0048)          
No-course Baseline x Mostly urban 0.0080**          
  (0.0041)          
Emotions x Mostly urban 0.0080**          
  (0.0040)          
Reasoning x Mostly urban -0.0010          
  (0.0041)          
Combo x Mostly urban 0.0098***          
  (0.0040)          
No-course Baseline x Suburban 0.0037          
  (0.0040)          
Emotions x Suburban -0.0013          
  (0.0039)          
Reasoning x Suburban -0.0031          
  (0.0040)          
Combo x Suburban 0.0090**          
  (0.0040)          
No-course Baseline x Christian -0.0077**          
  (0.0034)          
Emotions x Christian -0.0036          
  (0.0035)          
Reasoning x Christian 0.0026          
  (0.0036)          
Combo x Christian -0.0040          
  (0.0035)          
No-course Baseline x Attends religious services -0.0011          
  (0.0033)          
Emotions x Attends religious services -0.0063**          
  (0.0035)          
Reasoning x Attends religious services -0.0030          
  (0.0036)          
Combo x Attends religious services -0.0033          
  (0.0035)          
No-course Baseline x Uses social media 0.0058**          
  (0.0032)          
Emotions x Uses social media 0.0086***          
  (0.0036)          
Reasoning x Uses social media 0.0078***          
  (0.0032)          
Combo x Uses social media 0.0045          
  (0.0037)          
No-course Baseline x Hours spent on Social Media -0.0069**          
  (0.0036)          
Emotions x Hours spent on Social Media -0.0020          
  (0.0036)          
Reasoning x Hours spent on Social Media -0.0001          
  (0.0037)          
Combo x Hours spent on Social Media -0.0101***          
  (0.0036)          
No-course Baseline x Social Media Share: 80-100% 0.0002          
  (0.0042)          
Emotions x Social Media Share: 80-100% 0.0011          
  (0.0042)          
Reasoning x Social Media Share: 80-100% 0.0017          
  (0.0042)          
Combo x Social Media Share: 80-100% 0.0007          
  (0.0042)          
No-course Baseline x Social Media Share: 60-80% -0.0036          
  (0.0049)          
Emotions x Social Media Share: 60-80% 0.0051          
  (0.0047)          
Reasoning x Social Media Share: 60-80% -0.0003          
  (0.0049)          
Combo x Social Media Share: 60-80% 0.0004          
  (0.0048)          
No-course Baseline x Social Media Share: 40-60% -0.0036          
  (0.0050)          
Emotions x Social Media Share: 40-60% -0.0016          
  (0.0048)          
Reasoning x Social Media Share: 40-60% -0.0048          
  (0.0050)          
Combo x Social Media Share: 40-60% -0.0035          
  (0.0049)          
No-course Baseline x Social Media Share: 20-40% -0.0008          
  (0.0045)          
Emotions x Social Media Share: 20-40% 0.0044          
  (0.0044)          
Reasoning x Social Media Share: 20-40% -0.0033          
  (0.0045)          
Combo x Social Media Share: 20-40% -0.0042          
  (0.0045)          
No-course Baseline x Passed attention check at pre-treatment -0.0055*          
  (0.0035)          
Emotions x Passed attention check at pre-treatment -0.0009          
  (0.0034)          
Reasoning x Passed attention check at pre-treatment 0.0009          
  (0.0034)          
Combo x Passed attention check at pre-treatment 0.0076**          
  (0.0034)          
No-course Baseline x Avg. Sharing of Misinfo posts at pre-treatment 0.0023          
  (0.0045)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.0230***          
  (0.0043)          
Reasoning x Avg. Sharing of Misinfo posts at pre-treatment -0.0042          
  (0.0044)          
Combo x Avg. Sharing of Misinfo posts at pre-treatment -0.0081**          
  (0.0045)          
No-course Baseline x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0022          
  (0.0044)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0125***          
  (0.0042)          
Reasoning x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0106***          
  (0.0043)          
Combo x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0077**          
  (0.0043)          
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0033 0.0033 0.0046 0.0033 0.0042 0.0042
  (0.0145) (0.0140) (0.0133) (0.0140) (0.0131) (0.0131)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0140) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0154 0.0154 0.0129 0.0154 0.0107 0.0107
  (0.0143) (0.0139) (0.0132) (0.0139) (0.0130) (0.0130)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0127 -0.0127 -0.0142 -0.0127 -0.0194* -0.0194*
  (0.0142) (0.0138) (0.0132) (0.0138) (0.0130) (0.0130)
Post domain 2     -0.2001***   -0.1794***  
      (0.0057)   (0.0095)  
Post domain 3     -0.2813***   -0.3043***  
      (0.0055)   (0.0095)  
Post domain 4     -0.1804***   -0.2332***  
      (0.0056)   (0.0097)  
Post domain 5     0.0545***   -0.0010  
      (0.0051)   (0.0087)  
Post domain 6     0.0164***   0.0389***  
      (0.0054)   (0.0084)  
Post domain 7     -0.2347***   -0.1827***  
      (0.0056)   (0.0094)  
Post domain 8     -0.2195***   -0.1160***  
      (0.0057)   (0.0095)  
Post domain 9     0.0369***   -0.0608***  
      (0.0053)   (0.0091)  
Post domain 10     -0.0565***   -0.0963***  
      (0.0054)   (0.0091)  
Post domain 11     -0.1586***   -0.1739***  
      (0.0057)   (0.0094)  
Post domain 12     -0.1047***   -0.1343***  
      (0.0054)   (0.0092)  
Post domain 13     -0.1541***   -0.2155***  
      (0.0055)   (0.0093)  
Post domain 14     -0.2759***   -0.3151***  
      (0.0057)   (0.0097)  
Post domain 15     -0.1868***   -0.2755***  
      (0.0056)   (0.0095)  
1[Combo manipulation tactic]       -0.0512*** -0.0275***  
        (0.0041) (0.0078)  
1[Emotions manipulation tactic]       -0.0154*** -0.0585***  
        (0.0041) (0.0080)  
1[Reasoning manipulation tactic]       -0.0143*** 0.0208***  
        (0.0041) (0.0079)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0536***  
          (0.0158)  
Post domain 3 x 1[Combo manipulation tactic]         0.0462***  
          (0.0152)  
Post domain 4 x 1[Combo manipulation tactic]         0.0789***  
          (0.0153)  
Post domain 5 x 1[Combo manipulation tactic]         0.0971***  
          (0.0149)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3110***  
          (0.0147)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0471***  
          (0.0153)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0192  
          (0.0155)  
Post domain 9 x 1[Combo manipulation tactic]         0.1469***  
          (0.0150)  
Post domain 10 x 1[Combo manipulation tactic]         0.0318**  
          (0.0154)  
Post domain 11 x 1[Combo manipulation tactic]         0.0595***  
          (0.0153)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0230*  
          (0.0156)  
Post domain 13 x 1[Combo manipulation tactic]         0.0600***  
          (0.0154)  
Post domain 14 x 1[Combo manipulation tactic]         0.0296**  
          (0.0153)  
Post domain 15 x 1[Combo manipulation tactic]         0.0822***  
          (0.0153)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0845***  
          (0.0155)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1118***  
          (0.0154)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0617***  
          (0.0153)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1184***  
          (0.0148)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1477***  
          (0.0147)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0324**  
          (0.0151)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1539***  
          (0.0153)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1660***  
          (0.0153)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1090***  
          (0.0152)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0397***  
          (0.0154)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1449***  
          (0.0153)  
Post domain 13 x 1[Emotions manipulation tactic]         0.1875***  
          (0.0151)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1025***  
          (0.0154)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3384***  
          (0.0155)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0427***  
          (0.0155)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0517***  
          (0.0150)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.0985***  
          (0.0155)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0326**  
          (0.0150)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0629***  
          (0.0144)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1533***  
          (0.0149)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2920***  
          (0.0151)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1260***  
          (0.0151)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0377***  
          (0.0151)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0529***  
          (0.0155)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0132  
          (0.0151)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0267**  
          (0.0153)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0441***  
          (0.0152)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0236*  
          (0.0151)  
Post 2 indicator           -0.1794***
            (0.0095)
Post 3 indicator           -0.3043***
            (0.0095)
Post 4 indicator           -0.2332***
            (0.0097)
Post 5 indicator           -0.0010
            (0.0087)
Post 6 indicator           0.0389***
            (0.0084)
Post 7 indicator           -0.1827***
            (0.0094)
Post 8 indicator           -0.1160***
            (0.0095)
Post 9 indicator           -0.0608***
            (0.0091)
Post 10 indicator           -0.0963***
            (0.0091)
Post 11 indicator           -0.1739***
            (0.0094)
Post 12 indicator           -0.1343***
            (0.0092)
Post 13 indicator           -0.2155***
            (0.0093)
Post 14 indicator           -0.3151***
            (0.0097)
Post 15 indicator           -0.2755***
            (0.0095)
Post 16 indicator           0.2508***
            (0.0118)
Post 17 indicator           0.0178*
            (0.0119)
Post 18 indicator           -0.0072
            (0.0113)
Post 19 indicator           0.0965***
            (0.0114)
Post 20 indicator           0.3469***
            (0.0115)
Post 21 indicator           -0.0213**
            (0.0113)
Post 22 indicator           0.0211**
            (0.0114)
Post 23 indicator           0.1157***
            (0.0118)
Post 24 indicator           0.3370***
            (0.0116)
Post 25 indicator           0.1863***
            (0.0118)
Post 26 indicator           0.1364***
            (0.0120)
Post 27 indicator           0.0935***
            (0.0116)
Post 28 indicator           0.0953***
            (0.0117)
Post 29 indicator           -0.0346***
            (0.0113)
Post 30 indicator           0.0576***
            (0.0116)
Post 31 indicator           0.2198***
            (0.0117)
Post 32 indicator           -0.0441***
            (0.0115)
Post 33 indicator           0.0273***
            (0.0113)
Post 34 indicator           0.0482***
            (0.0114)
Post 35 indicator           0.3371***
            (0.0115)
Post 36 indicator           0.4064***
            (0.0116)
Post 37 indicator           0.0046
            (0.0112)
Post 38 indicator           -0.0501***
            (0.0112)
Post 39 indicator           0.3250***
            (0.0117)
Post 40 indicator           0.2324***
            (0.0118)
Post 41 indicator           0.0062
            (0.0116)
Post 42 indicator           0.2304***
            (0.0118)
Post 43 indicator           0.1917***
            (0.0115)
Post 44 indicator           0.0072
            (0.0114)
Post 45 indicator           0.2826***
            (0.0118)
Post 46 indicator           0.2991***
            (0.0118)
Post 47 indicator           0.1624***
            (0.0118)
Post 48 indicator           -0.0569***
            (0.0110)
Post 49 indicator           0.1643***
            (0.0121)
Post 50 indicator           0.3306***
            (0.0118)
Post 51 indicator           0.4009***
            (0.0113)
Post 52 indicator           -0.0369***
            (0.0113)
Post 53 indicator           -0.1089***
            (0.0115)
Post 54 indicator           0.3643***
            (0.0116)
Post 55 indicator           0.2405***
            (0.0118)
Post 56 indicator           0.1781***
            (0.0122)
Post 57 indicator           0.1780***
            (0.0115)
Post 58 indicator           0.1102***
            (0.0117)
Post 59 indicator           0.0281***
            (0.0116)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 (full model) 0.2816 0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model) 0.2811 0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Demographics + Sharing rates + Tactic sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates + Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0140) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0099) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 (full model) 0.2817 0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model) 0.2811 0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates + Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.6908***          
  (0.0058)          
No-course Baseline -0.0013          
  (0.0084)          
Emotions 0.0014          
  (0.0081)          
Reasoning 0.0119*          
  (0.0083)          
Combo -0.0031          
  (0.0082)          
1[Post-treatment] -0.0758*** -0.0758*** -0.0748*** -0.0758*** -0.0742*** -0.0742***
  (0.0082) (0.0089) (0.0087) (0.0089) (0.0086) (0.0086)
1[Misinfo] -0.1442*** -0.1442*** -0.1459*** -0.1173*** -0.1537*** -0.4320***
  (0.0071) (0.0069) (0.0067) (0.0095) (0.0127) (0.0123)
Age -0.0058**          
  (0.0026)          
Man 0.0028          
  (0.0024)          
Some college -0.0018          
  (0.0030)          
Bachelor’s degree 0.0034          
  (0.0030)          
Graduate degree -0.0079***          
  (0.0026)          
Married -0.0026          
  (0.0027)          
Unemployed -0.0045*          
  (0.0031)          
Employed -0.0085***          
  (0.0034)          
Mostly urban -0.0054**          
  (0.0028)          
Suburban -0.0051**          
  (0.0028)          
Christian 0.0031          
  (0.0025)          
Attends religious services 0.0007          
  (0.0024)          
Uses social media -0.0060***          
  (0.0022)          
Hours spent on Social Media 0.0053**          
  (0.0026)          
Social Media Share: 80-100% 0.0130***          
  (0.0030)          
Social Media Share: 60-80% 0.0180***          
  (0.0033)          
Social Media Share: 40-60% 0.0150***          
  (0.0034)          
Social Media Share: 20-40% 0.0066**          
  (0.0031)          
Passed attention check at pre-treatment -0.0046**          
  (0.0024)          
Avg. Sharing of Misinfo posts at pre-treatment 0.0849          
  (804.3693)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.1001***          
  (0.0030)          
Emotions posts 0.0398          
  (328.7053)          
Reasoning posts 0.0326          
  (325.5864)          
Combo posts 0.0378          
  (332.2469)          
No-course Baseline x 1[Post-treatment] 0.0514*** 0.0514*** 0.0513*** 0.0514*** 0.0507*** 0.0507***
  (0.0118) (0.0126) (0.0124) (0.0126) (0.0123) (0.0123)
Emotions x 1[Post-treatment] -0.0938*** -0.0938*** -0.0949*** -0.0938*** -0.0956*** -0.0956***
  (0.0115) (0.0132) (0.0129) (0.0132) (0.0128) (0.0128)
Reasoning x 1[Post-treatment] -0.0777*** -0.0777*** -0.0785*** -0.0777*** -0.0783*** -0.0783***
  (0.0117) (0.0130) (0.0128) (0.0130) (0.0127) (0.0127)
Combo x 1[Post-treatment] -0.0884*** -0.0884*** -0.0882*** -0.0884*** -0.0883*** -0.0883***
  (0.0116) (0.0131) (0.0128) (0.0131) (0.0127) (0.0127)
No-course Baseline x 1[Misinfo] 0.0051 0.0051 0.0048 0.0051 0.0044 0.0044
  (0.0102) (0.0101) (0.0098) (0.0101) (0.0097) (0.0097)
Emotions x 1[Misinfo] -0.0039 -0.0039 -0.0016 -0.0039 -0.0024 -0.0024
  (0.0099) (0.0100) (0.0097) (0.0100) (0.0096) (0.0096)
Reasoning x 1[Misinfo] -0.0196** -0.0196** -0.0143* -0.0196** -0.0153* -0.0153*
  (0.0101) (0.0101) (0.0097) (0.0101) (0.0096) (0.0096)
Combo x 1[Misinfo] 0.0040 0.0040 0.0064 0.0040 0.0070 0.0070
  (0.0101) (0.0099) (0.0097) (0.0099) (0.0096) (0.0096)
1[Post-treatment] x 1[Misinfo] 0.0021 0.0021 0.0023 0.0021 0.0039 0.0039
  (0.0100) (0.0095) (0.0090) (0.0095) (0.0089) (0.0089)
No-course Baseline x Age -0.0006          
  (0.0037)          
Emotions x Age -0.0039          
  (0.0039)          
Reasoning x Age -0.0017          
  (0.0039)          
Combo x Age -0.0011          
  (0.0038)          
No-course Baseline x Man -0.0074**          
  (0.0035)          
Emotions x Man 0.0059**          
  (0.0034)          
Reasoning x Man -0.0066**          
  (0.0034)          
Combo x Man 0.0034          
  (0.0034)          
No-course Baseline x Some college -0.0015          
  (0.0042)          
Emotions x Some college 0.0002          
  (0.0041)          
Reasoning x Some college -0.0013          
  (0.0042)          
Combo x Some college -0.0037          
  (0.0042)          
No-course Baseline x Bachelor’s degree -0.0048          
  (0.0043)          
Emotions x Bachelor’s degree -0.0030          
  (0.0042)          
Reasoning x Bachelor’s degree -0.0074**          
  (0.0042)          
Combo x Bachelor’s degree -0.0102***          
  (0.0042)          
No-course Baseline x Graduate degree 0.0026          
  (0.0038)          
Emotions x Graduate degree 0.0094***          
  (0.0034)          
Reasoning x Graduate degree 0.0020          
  (0.0039)          
Combo x Graduate degree 0.0088***          
  (0.0034)          
No-course Baseline x Married 0.0028          
  (0.0039)          
Emotions x Married -0.0052*          
  (0.0038)          
Reasoning x Married 0.0014          
  (0.0039)          
Combo x Married -0.0042          
  (0.0039)          
No-course Baseline x Unemployed 0.0024          
  (0.0044)          
Emotions x Unemployed -0.0019          
  (0.0043)          
Reasoning x Unemployed 0.0047          
  (0.0044)          
Combo x Unemployed 0.0010          
  (0.0044)          
No-course Baseline x Employed 0.0005          
  (0.0049)          
Emotions x Employed 0.0020          
  (0.0047)          
Reasoning x Employed 0.0031          
  (0.0049)          
Combo x Employed 0.0020          
  (0.0048)          
No-course Baseline x Mostly urban 0.0078**          
  (0.0041)          
Emotions x Mostly urban 0.0077**          
  (0.0040)          
Reasoning x Mostly urban -0.0012          
  (0.0041)          
Combo x Mostly urban 0.0096***          
  (0.0040)          
No-course Baseline x Suburban 0.0036          
  (0.0040)          
Emotions x Suburban -0.0014          
  (0.0039)          
Reasoning x Suburban -0.0030          
  (0.0040)          
Combo x Suburban 0.0089**          
  (0.0040)          
No-course Baseline x Christian -0.0076**          
  (0.0034)          
Emotions x Christian -0.0036          
  (0.0035)          
Reasoning x Christian 0.0028          
  (0.0036)          
Combo x Christian -0.0039          
  (0.0035)          
No-course Baseline x Attends religious services -0.0011          
  (0.0033)          
Emotions x Attends religious services -0.0064**          
  (0.0035)          
Reasoning x Attends religious services -0.0032          
  (0.0036)          
Combo x Attends religious services -0.0034          
  (0.0035)          
No-course Baseline x Uses social media 0.0058**          
  (0.0032)          
Emotions x Uses social media 0.0086***          
  (0.0036)          
Reasoning x Uses social media 0.0077***          
  (0.0032)          
Combo x Uses social media 0.0045          
  (0.0037)          
No-course Baseline x Hours spent on Social Media -0.0070**          
  (0.0036)          
Emotions x Hours spent on Social Media -0.0022          
  (0.0036)          
Reasoning x Hours spent on Social Media -0.0002          
  (0.0037)          
Combo x Hours spent on Social Media -0.0102***          
  (0.0036)          
No-course Baseline x Social Media Share: 80-100% 0.0001          
  (0.0042)          
Emotions x Social Media Share: 80-100% 0.0010          
  (0.0042)          
Reasoning x Social Media Share: 80-100% 0.0017          
  (0.0042)          
Combo x Social Media Share: 80-100% 0.0007          
  (0.0042)          
No-course Baseline x Social Media Share: 60-80% -0.0036          
  (0.0049)          
Emotions x Social Media Share: 60-80% 0.0049          
  (0.0047)          
Reasoning x Social Media Share: 60-80% -0.0007          
  (0.0049)          
Combo x Social Media Share: 60-80% 0.0003          
  (0.0048)          
No-course Baseline x Social Media Share: 40-60% -0.0038          
  (0.0050)          
Emotions x Social Media Share: 40-60% -0.0020          
  (0.0048)          
Reasoning x Social Media Share: 40-60% -0.0051          
  (0.0050)          
Combo x Social Media Share: 40-60% -0.0036          
  (0.0049)          
No-course Baseline x Social Media Share: 20-40% -0.0008          
  (0.0045)          
Emotions x Social Media Share: 20-40% 0.0041          
  (0.0044)          
Reasoning x Social Media Share: 20-40% -0.0035          
  (0.0045)          
Combo x Social Media Share: 20-40% -0.0042          
  (0.0045)          
No-course Baseline x Passed attention check at pre-treatment -0.0056*          
  (0.0035)          
Emotions x Passed attention check at pre-treatment -0.0011          
  (0.0034)          
Reasoning x Passed attention check at pre-treatment 0.0012          
  (0.0034)          
Combo x Passed attention check at pre-treatment 0.0074**          
  (0.0034)          
No-course Baseline x Avg. Sharing of Misinfo posts at pre-treatment -0.0003          
  (0.0105)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.0363***          
  (0.0103)          
Reasoning x Avg. Sharing of Misinfo posts at pre-treatment 0.0070          
  (0.0104)          
Combo x Avg. Sharing of Misinfo posts at pre-treatment -0.0059          
  (0.0104)          
No-course Baseline x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0024          
  (0.0044)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0128***          
  (0.0042)          
Reasoning x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0109***          
  (0.0043)          
Combo x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0078**          
  (0.0043)          
No-course Baseline x Emotions posts 0.0011          
  (0.0068)          
Emotions x Emotions posts 0.0052          
  (0.0067)          
Reasoning x Emotions posts -0.0040          
  (0.0068)          
Combo x Emotions posts -0.0075          
  (0.0068)          
No-course Baseline x Reasoning posts 0.0023          
  (0.0067)          
Emotions x Reasoning posts 0.0114**          
  (0.0066)          
Reasoning x Reasoning posts -0.0096*          
  (0.0066)          
Combo x Reasoning posts 0.0049          
  (0.0067)          
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0033 0.0033 0.0046 0.0033 0.0042 0.0042
  (0.0145) (0.0140) (0.0133) (0.0140) (0.0131) (0.0131)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0202* -0.0202* -0.0220** -0.0202* -0.0246** -0.0246**
  (0.0140) (0.0136) (0.0129) (0.0136) (0.0127) (0.0127)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0154 0.0154 0.0129 0.0154 0.0107 0.0107
  (0.0143) (0.0139) (0.0132) (0.0139) (0.0130) (0.0130)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0127 -0.0127 -0.0142 -0.0127 -0.0194* -0.0194*
  (0.0142) (0.0138) (0.0132) (0.0138) (0.0130) (0.0130)
Post domain 2     -0.2001***   -0.1794***  
      (0.0057)   (0.0095)  
Post domain 3     -0.2813***   -0.3043***  
      (0.0055)   (0.0095)  
Post domain 4     -0.1804***   -0.2332***  
      (0.0056)   (0.0097)  
Post domain 5     0.0545***   -0.0010  
      (0.0051)   (0.0087)  
Post domain 6     0.0164***   0.0389***  
      (0.0054)   (0.0084)  
Post domain 7     -0.2347***   -0.1827***  
      (0.0056)   (0.0094)  
Post domain 8     -0.2195***   -0.1160***  
      (0.0057)   (0.0095)  
Post domain 9     0.0369***   -0.0608***  
      (0.0053)   (0.0091)  
Post domain 10     -0.0565***   -0.0963***  
      (0.0054)   (0.0091)  
Post domain 11     -0.1586***   -0.1739***  
      (0.0057)   (0.0094)  
Post domain 12     -0.1047***   -0.1343***  
      (0.0054)   (0.0092)  
Post domain 13     -0.1541***   -0.2155***  
      (0.0055)   (0.0093)  
Post domain 14     -0.2759***   -0.3151***  
      (0.0057)   (0.0097)  
Post domain 15     -0.1868***   -0.2755***  
      (0.0056)   (0.0095)  
1[Combo manipulation tactic]       -0.0512*** -0.0275***  
        (0.0041) (0.0078)  
1[Emotions manipulation tactic]       -0.0154*** -0.0585***  
        (0.0041) (0.0080)  
1[Reasoning manipulation tactic]       -0.0143*** 0.0208***  
        (0.0041) (0.0079)  
Post domain 2 x 1[Combo manipulation tactic]         -0.0536***  
          (0.0158)  
Post domain 3 x 1[Combo manipulation tactic]         0.0462***  
          (0.0152)  
Post domain 4 x 1[Combo manipulation tactic]         0.0789***  
          (0.0153)  
Post domain 5 x 1[Combo manipulation tactic]         0.0971***  
          (0.0149)  
Post domain 6 x 1[Combo manipulation tactic]         -0.3110***  
          (0.0147)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0471***  
          (0.0153)  
Post domain 8 x 1[Combo manipulation tactic]         -0.0192  
          (0.0155)  
Post domain 9 x 1[Combo manipulation tactic]         0.1469***  
          (0.0150)  
Post domain 10 x 1[Combo manipulation tactic]         0.0318**  
          (0.0154)  
Post domain 11 x 1[Combo manipulation tactic]         0.0595***  
          (0.0153)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0230*  
          (0.0156)  
Post domain 13 x 1[Combo manipulation tactic]         0.0600***  
          (0.0154)  
Post domain 14 x 1[Combo manipulation tactic]         0.0296**  
          (0.0153)  
Post domain 15 x 1[Combo manipulation tactic]         0.0822***  
          (0.0153)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.0845***  
          (0.0155)  
Post domain 3 x 1[Emotions manipulation tactic]         0.1118***  
          (0.0154)  
Post domain 4 x 1[Emotions manipulation tactic]         0.0617***  
          (0.0153)  
Post domain 5 x 1[Emotions manipulation tactic]         0.1184***  
          (0.0148)  
Post domain 6 x 1[Emotions manipulation tactic]         0.1477***  
          (0.0147)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0324**  
          (0.0151)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.1539***  
          (0.0153)  
Post domain 9 x 1[Emotions manipulation tactic]         0.1660***  
          (0.0153)  
Post domain 10 x 1[Emotions manipulation tactic]         0.1090***  
          (0.0152)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0397***  
          (0.0154)  
Post domain 12 x 1[Emotions manipulation tactic]         0.1449***  
          (0.0153)  
Post domain 13 x 1[Emotions manipulation tactic]         0.1875***  
          (0.0151)  
Post domain 14 x 1[Emotions manipulation tactic]         0.1025***  
          (0.0154)  
Post domain 15 x 1[Emotions manipulation tactic]         0.3384***  
          (0.0155)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.0427***  
          (0.0155)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.0517***  
          (0.0150)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.0985***  
          (0.0155)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.0326**  
          (0.0150)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.0629***  
          (0.0144)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.1533***  
          (0.0149)  
Post domain 8 x 1[Reasoning manipulation tactic]         -0.2920***  
          (0.0151)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.1260***  
          (0.0151)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.0377***  
          (0.0151)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.0529***  
          (0.0155)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.0132  
          (0.0151)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.0267**  
          (0.0153)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.0441***  
          (0.0152)  
Post domain 15 x 1[Reasoning manipulation tactic]         -0.0236*  
          (0.0151)  
Post 2 indicator           -0.1794***
            (0.0095)
Post 3 indicator           -0.3043***
            (0.0095)
Post 4 indicator           -0.2332***
            (0.0097)
Post 5 indicator           -0.0010
            (0.0087)
Post 6 indicator           0.0389***
            (0.0084)
Post 7 indicator           -0.1827***
            (0.0094)
Post 8 indicator           -0.1160***
            (0.0095)
Post 9 indicator           -0.0608***
            (0.0091)
Post 10 indicator           -0.0963***
            (0.0091)
Post 11 indicator           -0.1739***
            (0.0094)
Post 12 indicator           -0.1343***
            (0.0092)
Post 13 indicator           -0.2155***
            (0.0093)
Post 14 indicator           -0.3151***
            (0.0097)
Post 15 indicator           -0.2755***
            (0.0095)
Post 16 indicator           0.2508***
            (0.0118)
Post 17 indicator           0.0178*
            (0.0119)
Post 18 indicator           -0.0072
            (0.0113)
Post 19 indicator           0.0965***
            (0.0114)
Post 20 indicator           0.3469***
            (0.0115)
Post 21 indicator           -0.0213**
            (0.0113)
Post 22 indicator           0.0211**
            (0.0114)
Post 23 indicator           0.1157***
            (0.0118)
Post 24 indicator           0.3370***
            (0.0116)
Post 25 indicator           0.1863***
            (0.0118)
Post 26 indicator           0.1364***
            (0.0120)
Post 27 indicator           0.0935***
            (0.0116)
Post 28 indicator           0.0953***
            (0.0117)
Post 29 indicator           -0.0346***
            (0.0113)
Post 30 indicator           0.0576***
            (0.0116)
Post 31 indicator           0.2198***
            (0.0117)
Post 32 indicator           -0.0441***
            (0.0115)
Post 33 indicator           0.0273***
            (0.0113)
Post 34 indicator           0.0482***
            (0.0114)
Post 35 indicator           0.3371***
            (0.0115)
Post 36 indicator           0.4064***
            (0.0116)
Post 37 indicator           0.0046
            (0.0112)
Post 38 indicator           -0.0501***
            (0.0112)
Post 39 indicator           0.3250***
            (0.0117)
Post 40 indicator           0.2324***
            (0.0118)
Post 41 indicator           0.0062
            (0.0116)
Post 42 indicator           0.2304***
            (0.0118)
Post 43 indicator           0.1917***
            (0.0115)
Post 44 indicator           0.0072
            (0.0114)
Post 45 indicator           0.2826***
            (0.0118)
Post 46 indicator           0.2991***
            (0.0118)
Post 47 indicator           0.1624***
            (0.0118)
Post 48 indicator           -0.0569***
            (0.0110)
Post 49 indicator           0.1643***
            (0.0121)
Post 50 indicator           0.3306***
            (0.0118)
Post 51 indicator           0.4009***
            (0.0113)
Post 52 indicator           -0.0369***
            (0.0113)
Post 53 indicator           -0.1089***
            (0.0115)
Post 54 indicator           0.3643***
            (0.0116)
Post 55 indicator           0.2405***
            (0.0118)
Post 56 indicator           0.1781***
            (0.0122)
Post 57 indicator           0.1780***
            (0.0115)
Post 58 indicator           0.1102***
            (0.0117)
Post 59 indicator           0.0281***
            (0.0116)
Num. obs. 156312 156312 156312 156312 156312 156312
R2 (full model) 0.2817 0.3470 0.3953 0.3478 0.4153 0.4153
R2 (proj model)   0.0545 0.1244 0.0556 0.1534 0.1534
Adj. R2 (full model) 0.2811 0.3085 0.3596 0.3094 0.3806 0.3806
Adj. R2 (proj model)   0.0544 0.1242 0.0555 0.1530 0.1530
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.





Prediction

Standard errors of the share predicted value are estimated using the Delta method. Treatment effects standard errors are clustered at the user level and reported in parentheses. t-ratios are reported in brackets. Treatment effects estimates for specifications that include Post-Tactic ID fixed effects are not reported since all tactics are misinformation.

cov_feglm_list <- list()

# covariate_list <- c(demographics_demeaned_treatment,
#                     sharing_demeaned_treatment,
#                     sharing_tactic_demeaned_treatment,
#                     demographics_sharing_demeaned_treatment,
#                     all_covariates_demeaned_treatment)
# 
# cov_estimates_list <- list()

for (cov_list in covariate_list) {
cov_feglm_list[[length(cov_feglm_list) + 1]] <- c(paste0("share ~ treatment"),
               paste0("share ~ treatment + ",cov_list),
               paste0("share ~ treatment + factor(fact) + ",cov_list),
               paste0("share ~ treatment + factor(type) + ",cov_list),
               paste0("share ~ treatment + factor(fact)*factor(type) + ",cov_list),
               paste0("share ~ treatment + factor(post_id) + ",cov_list))
}

if (file.exists("prediction_alltreat_df.rds")) {
  
  prediction_alltreat_df <- readRDS("prediction_alltreat_df.rds")
  
  counter <- 1
  
  for (cov in seq_along(covariate_list)) {
    
    cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))
    
      for (m in 1:length(models)) {
        
        k <- knitr::kable(prediction_alltreat_df[[counter]], caption = models[m],
                             col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","Treatment Effect<br>Emotions vs. Facts"))
        
        print(k)
        cat('<br>')
        
        counter <- counter + 1
      }
    
    cat('<br>\n<br>\n<br>')
  
  }
  
} else {

prediction_alltreat_df <- list()

for (cov in seq_along(covariate_list)) {
  
  list_models <- cov_estimates_list[[cov]]
  
  cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))
  
  for (m in 1:length(models)) {
    
    treatmentLevels <- unique(panel$treatment)
    posts <- c(0, 1)
    misinfos <- c(0, 1)
    
    prediction_df <- expand.grid(treatment = treatmentLevels, post = posts, post_is_misinfo = misinfos) %>%
      mutate(prediction = NA_real_, prediction_se = NA_real_)

    for (row in 1:nrow(prediction_df)) {
      
      treat <- as.character(prediction_df$treatment[row])
      post <- prediction_df$post[row]
      misinfo <- prediction_df$post_is_misinfo[row]
      
      # Filter the relevant data
      relevant_data <- panel %>% 
        filter(row_number() %in% obs(list_models[[m]])) %>%
        filter(treatment == treat & post == post & post_is_misinfo == misinfo)

      # Prepare predictor variables based on model requirements
      predictorVariables <- relevant_data %>%
        distinct(user, .keep_all = TRUE) %>%
        group_by(user, type, fact, post_id) %>%
        summarise(age_cov = mean(age_cov, na.rm = TRUE),
                  gender_Man_cov = mean(gender_Man_cov, na.rm = TRUE),
                  education_Some_college_cov = mean(education_Some_college_cov, na.rm = TRUE),
                  education_Bachelor_degree_cov = mean(education_Bachelor_degree_cov, na.rm = TRUE),
                  education_Graduate_degree_cov = mean(education_Graduate_degree_cov, na.rm = TRUE),
                  marital_Married_or_in_a_domestic_partnership_cov = mean(marital_Married_or_in_a_domestic_partnership_cov, na.rm = TRUE),
                  employment_Unemployed_cov = mean(employment_Unemployed_cov, na.rm = TRUE),
                  employment_Employed_cov = mean(employment_Employed_cov, na.rm = TRUE),
                  location_Mostly_urban_cov = mean(location_Mostly_urban_cov, na.rm = TRUE),
                  location_Suburban_cov = mean(location_Suburban_cov, na.rm = TRUE),
                  religion_Christian_cov = mean(religion_Christian_cov, na.rm = TRUE),
                  religiosity_Attends_cov = mean(religiosity_Attends_cov, na.rm = TRUE),
                  social_media_bin_Yes_cov = mean(social_media_bin_Yes_cov, na.rm = TRUE),
                  social_media_hours_cov = mean(social_media_hours_cov, na.rm = TRUE),
                  att_check_pre_cov = mean(att_check_pre_cov, na.rm = TRUE),
                  social_media_share_80_100_cov = mean(social_media_share_80_100_cov, na.rm = TRUE),
                  social_media_share_60_80_cov = mean(social_media_share_60_80_cov, na.rm = TRUE),
                  social_media_share_40_60_cov = mean(social_media_share_40_60_cov, na.rm = TRUE),
                  social_media_share_20_40_cov = mean(social_media_share_20_40_cov, na.rm = TRUE),
                  misinfo_pre_cov = mean(misinfo_pre_cov, na.rm = TRUE),
                  base_rate_pre_cov = mean(base_rate_pre_cov, na.rm = TRUE),
                  emotions_pre_cov = mean(emotions_pre_cov, na.rm = TRUE),
                  reasoning_pre_cov = mean(reasoning_pre_cov, na.rm = TRUE),
                  combo_pre_cov = mean(combo_pre_cov, na.rm = TRUE)) %>% # now add the treatment and post variables and misinfo
        mutate(treatment = treat,
               post = post,
               post_is_misinfo = misinfo)
      
      
        # predicted value
        if (m != 1) {

        predicted_shares <- predict(list_models[m], newdata = predictorVariables)
        predictorVariables$prediction <- as.numeric(unlist(predicted_shares))

        # mean of predicted value
        prediction_df$prediction[row] <- format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,mean)[,4], digits = 5)
        # se of predicted value
        prediction_df$prediction_se[row] <- paste0("(",format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,se_cont)[,4], digits = 4),")")
        
        }
      
    }

     # predicted value
    if (m == 1) {
      predictorVariables <- expand.grid(treatment = unique(panel$treatment),
                                            post = c(0,1),
                                            post_is_misinfo = c(0,1))
      predictions <- predict(baseline_all_lm, newdata = predictorVariables, type = "response", se.fit = TRUE)
      prediction_df <- predictorVariables
      prediction_df$prediction <- format(predictions$fit, digits = 4)
      prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")
      
      emm_res <- emmeans(baseline_all_lm, specs = pairwise ~ treatment | post * post_is_misinfo)
      contrast_res <- contrast(emm_res, method = "revpairwise")
      contrast_df <- as.data.frame(contrast_res) 
      contrast_df <- contrast_df %>% filter(contrast == "Emotions - Facts Baseline")
      contrast_df <- contrast_df %>% select(post, post_is_misinfo, estimate, SE, t.ratio)
      contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(t.ratio, digits = 4),"]"))) %>%
      mutate(estimate = format(estimate, digits = 4)) %>%
      mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
      select(treatment, post, post_is_misinfo, estimate)
    
     prediction_df <- left_join(prediction_df, contrast_df, 
                            by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    }

    # calculate difference between Facts Baseline and all other treatments
    # prediction_df <- prediction_df %>%
    #   group_by(post,post_is_misinfo) %>%
    #   mutate(lag = ifelse(treatment == "Facts Baseline",
    #                       prediction, NA)) %>%
    #   tidyr::fill(lag) %>%
    #   ungroup() %>%
    #   mutate(te = ifelse(treatment != "Facts Baseline",
    #                      format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
    #   select(-lag) %>%
    #   mutate(te = ifelse(is.na(te),"",te))
     
     # calculate difference between Facts Baseline and all other treatments
    prediction_df <- prediction_df %>%
    group_by(post,post_is_misinfo) %>%
    mutate(lag = ifelse(treatment == "Emotions",
                        prediction, NA)) %>%
    tidyr::fill(lag, .direction = "up") %>%
    ungroup() %>% 
      mutate(te = ifelse(treatment == "Facts Baseline",
                                     format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
      select(-lag) %>%
      mutate(te = ifelse(is.na(te),"",te))
    
    
      if (m %in% c(2,3,6)) {
     # predicted treatment effects
      contrast_df <- data.frame()
        for (p in c(0,1)) {
        for (mis in c(0,1)) {
          
          cov_model <- feglm(as.formula(cov_feglm_list[[cov]][m]),panel %>% 
                               filter(post == p & post_is_misinfo == mis), cluster = "user")
          
          # obtain data frame with estimate, std error, and z value
          cov_model_df_add <- data.frame(
            treatment = c("No-course Baseline","Emotions","Reasoning","Combo"),
            estimate = format(coef(cov_model)[grepl("^treatment",names(coef(cov_model))) & !grepl("\\:",names(coef(cov_model)))], digits = 4),
            SE = sqrt(diag(vcov(cov_model)))[grepl("^treatment",names(diag(vcov(cov_model)))) & !grepl("\\:",names(diag(vcov(cov_model))))],
            z.ratio = coef(cov_model)[grepl("^treatment",names(coef(cov_model))) & !grepl("\\:",names(coef(cov_model)))] / sqrt(diag(vcov(cov_model)))[grepl("^treatment",names(diag(vcov(cov_model)))) & !grepl("\\:",names(diag(vcov(cov_model))))],
            post = p,
            post_is_misinfo = mis
          )
          # make rownames a column
          cov_model_df_add <- rownames_to_column(cov_model_df_add, var = "treatment2") %>% 
            filter(treatment == "Emotions" & treatment2 == "treatmentEmotions") %>% select(-treatment2) %>%
            mutate(zratio = paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))

          cov_model_df_add <- rbind(cov_model_df_add %>% mutate(treatment = "Facts Baseline"),
                                    cov_model_df_add %>% mutate(treatment = "Emotions")) %>%
            mutate(estimate = ifelse(treatment == "Emotions", zratio, estimate)) %>% 
            mutate(post = ifelse(post == 0,as.numeric(0),as.numeric(1)),
                   post_is_misinfo = ifelse(post_is_misinfo == 0,as.numeric(0),as.numeric(1))) %>%
            select(treatment, post, post_is_misinfo, estimate) %>%
            mutate(estimate = ifelse(is.na(estimate),"",estimate))
          
          contrast_df <- rbind(contrast_df, cov_model_df_add)
        }
        }
        
       prediction_df <- left_join(prediction_df, contrast_df, 
                                by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    }
    
    if (m %in% c(4,5)) {
      prediction_df$estimate <- ""
    }
    

    prediction_df <- prediction_df %>% select(treatment,post,post_is_misinfo,prediction,prediction_se,te,estimate)
    
    prediction_df <- prediction_df %>% arrange(post,post_is_misinfo) %>%
      mutate(estimate = ifelse(is.na(estimate),"",estimate))

    k <- knitr::kable(prediction_df, caption = models[m],
                           col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","Treatment effect<br>Emotions vs. Facts"))
    print(k)
    cat('<br>')
     
      
      prediction_alltreat_df[[length(prediction_alltreat_df) + 1]] <- prediction_df
  }
  cat('<br>\n<br>\n<br>')
}

saveRDS(prediction_alltreat_df, "prediction_alltreat_df.rds")

}

\[\text{Demographics}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.6829 (0.008087) 0.005948
Emotions 0 0 0.6888 (0.008097) 0.0059 (0.01144); [0.5198]
No-course Baseline 0 0 0.7041 (0.008371)
Reasoning 0 0 0.7037 (0.008294)
Combo 0 0 0.6864 (0.008359)
Facts Baseline 0 1 0.5386 (0.007712) 0.002028
Emotions 0 1 0.5407 (0.007800) 0.0021 (0.01097); [0.1848]
No-course Baseline 0 1 0.5650 (0.008148)
Reasoning 0 1 0.5399 (0.008065)
Combo 0 1 0.5462 (0.007968)
Facts Baseline 1 0 0.6071 (0.008962) -0.087832
Emotions 1 0 0.5192 (0.008741) -0.0879 (0.01252); [ -7.0158]
No-course Baseline 1 0 0.6798 (0.008775)
Reasoning 1 0 0.5503 (0.009097)
Combo 1 0 0.5222 (0.009096)
Facts Baseline 1 1 0.4650 (0.008314) -0.111959
Emotions 1 1 0.3530 (0.007418) -0.1120 (0.01114); [-10.0482]
No-course Baseline 1 1 0.5461 (0.008271)
Reasoning 1 1 0.4040 (0.008156)
Combo 1 1 0.3715 (0.008052)


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.0002093
Emotions 0 0 0.68882 (0.006114) 0.00595 (0.01107); [0.01891]
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53864 (0.006739) -0.003628
Emotions 0 1 0.54067 (0.006114) 0.00203 (0.01027); [-0.3531]
No-course Baseline 0 1 0.56501 (0.006896)
Reasoning 0 1 0.53994 (0.00667)
Combo 0 1 0.54617 (0.006623)
Facts Baseline 1 0 0.60708 (0.006739) -0.09335
Emotions 1 0 0.51924 (0.006114) -0.08784 (0.01211); [-7.706]
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46499 (0.006739) -0.11737
Emotions 1 1 0.35303 (0.006114) -0.11196 (0.01061); [-11.06]
No-course Baseline 1 1 0.54607 (0.006896)
Reasoning 1 1 0.40404 (0.00667)
Combo 1 1 0.37146 (0.006623)


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68708 (0.007296) 0.0007917
Emotions 0 0 0.68691 (0.006623) -0.00017 (0.01093); [0.07244]
No-course Baseline 0 0 0.70681 (0.007465)
Reasoning 0 0 0.70467 (0.007186)
Combo 0 0 0.68609 (0.007109)
Facts Baseline 0 1 0.53759 (0.007252) -0.001089
Emotions 0 1 0.54124 (0.00663) 0.00365 (0.01014); [-0.1074]
No-course Baseline 0 1 0.56465 (0.007482)
Reasoning 0 1 0.53678 (0.007188)
Combo 0 1 0.5456 (0.007157)
Facts Baseline 1 0 0.61224 (0.007296) -0.09431
Emotions 1 0 0.51718 (0.006623) -0.09506 (0.01185); [-7.958]
No-course Baseline 1 0 0.68323 (0.007465)
Reasoning 1 0 0.55133 (0.007186)
Combo 1 0 0.52308 (0.007109)
Facts Baseline 1 1 0.46504 (0.007252) -0.11893
Emotions 1 1 0.35181 (0.00663) -0.11323 (0.01054); [-11.28]
No-course Baseline 1 1 0.54795 (0.007482)
Reasoning 1 1 0.39859 (0.007188)
Combo 1 1 0.37069 (0.007157)


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68287 (0.006739)
Emotions 0 0 0.68882 (0.006114) 0.00595
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53798 (0.006743)
Emotions 0 1 0.54051 (0.006119) 0.00253
No-course Baseline 0 1 0.56442 (0.006913)
Reasoning 0 1 0.53984 (0.006692)
Combo 0 1 0.54628 (0.00664)
Facts Baseline 1 0 0.60708 (0.006739)
Emotions 1 0 0.51925 (0.006114) -0.08783
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46433 (0.006743)
Emotions 1 1 0.35288 (0.006119) -0.11145
No-course Baseline 1 1 0.54548 (0.006913)
Reasoning 1 1 0.40394 (0.006692)
Combo 1 1 0.37156 (0.00664)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68625 (0.007209)
Emotions 0 0 0.68537 (0.006579) -0.00088
No-course Baseline 0 0 0.70608 (0.007419)
Reasoning 0 0 0.70338 (0.007231)
Combo 0 0 0.68525 (0.007031)
Facts Baseline 0 1 0.53805 (0.007503)
Emotions 0 1 0.54073 (0.006932) 0.00268
No-course Baseline 0 1 0.56257 (0.007866)
Reasoning 0 1 0.53858 (0.007523)
Combo 0 1 0.54627 (0.007512)
Facts Baseline 1 0 0.61204 (0.007209)
Emotions 1 0 0.51555 (0.006579) -0.09649
No-course Baseline 1 0 0.68253 (0.007419)
Reasoning 1 0 0.55085 (0.007231)
Combo 1 0 0.52275 (0.007031)
Facts Baseline 1 1 0.46774 (0.007503)
Emotions 1 1 0.35023 (0.006932) -0.11751
No-course Baseline 1 1 0.54712 (0.007866)
Reasoning 1 1 0.40062 (0.007523)
Combo 1 1 0.36824 (0.007512)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68628 (0.007209) 0.0007917
Emotions 0 0 0.6854 (0.006579) -0.00088 (0.01093); [0.07244]
No-course Baseline 0 0 0.70612 (0.007419)
Reasoning 0 0 0.70341 (0.007231)
Combo 0 0 0.68528 (0.007031)
Facts Baseline 0 1 0.53803 (0.007503) -0.001545
Emotions 0 1 0.54071 (0.006932) 0.00268 (0.01004); [-0.1539]
No-course Baseline 0 1 0.56255 (0.007866)
Reasoning 0 1 0.53857 (0.007523)
Combo 0 1 0.54625 (0.007512)
Facts Baseline 1 0 0.61207 (0.007209) -0.09431
Emotions 1 0 0.51558 (0.006579) -0.09649 (0.01185); [-7.958]
No-course Baseline 1 0 0.68256 (0.007419)
Reasoning 1 0 0.55088 (0.007231)
Combo 1 0 0.52278 (0.007031)
Facts Baseline 1 1 0.46772 (0.007503) -0.12131
Emotions 1 1 0.35021 (0.006932) -0.11751 (0.01046); [-11.6]
No-course Baseline 1 1 0.54711 (0.007866)
Reasoning 1 1 0.4006 (0.007523)
Combo 1 1 0.36822 (0.007512)





\[\text{Sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.6829 (0.008087) 0.005948
Emotions 0 0 0.6888 (0.008097) 0.0059 (0.01144); [0.5198]
No-course Baseline 0 0 0.7041 (0.008371)
Reasoning 0 0 0.7037 (0.008294)
Combo 0 0 0.6864 (0.008359)
Facts Baseline 0 1 0.5386 (0.007712) 0.002028
Emotions 0 1 0.5407 (0.007800) 0.0021 (0.01097); [0.1848]
No-course Baseline 0 1 0.5650 (0.008148)
Reasoning 0 1 0.5399 (0.008065)
Combo 0 1 0.5462 (0.007968)
Facts Baseline 1 0 0.6071 (0.008962) -0.087832
Emotions 1 0 0.5192 (0.008741) -0.0879 (0.01252); [ -7.0158]
No-course Baseline 1 0 0.6798 (0.008775)
Reasoning 1 0 0.5503 (0.009097)
Combo 1 0 0.5222 (0.009096)
Facts Baseline 1 1 0.4650 (0.008314) -0.111959
Emotions 1 1 0.3530 (0.007418) -0.1120 (0.01114); [-10.0482]
No-course Baseline 1 1 0.5461 (0.008271)
Reasoning 1 1 0.4040 (0.008156)
Combo 1 1 0.3715 (0.008052)


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.00000000000001223
Emotions 0 0 0.68882 (0.006114) 0.00595 (0.000000000000007451); [1.641]
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53864 (0.006739) 0.000000000000008436
Emotions 0 1 0.54067 (0.006114) 0.00203 (0.0000000000000137); [0.6158]
No-course Baseline 0 1 0.56501 (0.006896)
Reasoning 0 1 0.53994 (0.00667)
Combo 0 1 0.54617 (0.006623)
Facts Baseline 1 0 0.60708 (0.006739) -0.09122
Emotions 1 0 0.51924 (0.006114) -0.08784 (0.01116); [-8.172]
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46499 (0.006739) -0.11537
Emotions 1 1 0.35303 (0.006114) -0.11196 (0.00941); [-12.26]
No-course Baseline 1 1 0.54607 (0.006896)
Reasoning 1 1 0.40404 (0.00667)
Combo 1 1 0.37146 (0.006623)


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68708 (0.007296) 0.0005929
Emotions 0 0 0.68691 (0.006623) -0.00017 (0.001209); [0.4903]
No-course Baseline 0 0 0.70681 (0.007465)
Reasoning 0 0 0.70467 (0.007186)
Combo 0 0 0.68609 (0.007109)
Facts Baseline 0 1 0.53759 (0.007252) 0.0022597
Emotions 0 1 0.54124 (0.00663) 0.00365 (0.001151); [1.964]
No-course Baseline 0 1 0.56465 (0.007482)
Reasoning 0 1 0.53678 (0.007188)
Combo 0 1 0.5456 (0.007157)
Facts Baseline 1 0 0.61224 (0.007296) -0.09233
Emotions 1 0 0.51718 (0.006623) -0.09506 (0.01082); [-8.531]
No-course Baseline 1 0 0.68323 (0.007465)
Reasoning 1 0 0.55133 (0.007186)
Combo 1 0 0.52308 (0.007109)
Facts Baseline 1 1 0.46504 (0.007252) -0.11698
Emotions 1 1 0.35181 (0.00663) -0.11323 (0.00929); [-12.59]
No-course Baseline 1 1 0.54795 (0.007482)
Reasoning 1 1 0.39859 (0.007188)
Combo 1 1 0.37069 (0.007157)


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68287 (0.006739)
Emotions 0 0 0.68882 (0.006114) 0.00595
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53798 (0.006743)
Emotions 0 1 0.54051 (0.006119) 0.00253
No-course Baseline 0 1 0.56442 (0.006913)
Reasoning 0 1 0.53984 (0.006692)
Combo 0 1 0.54628 (0.00664)
Facts Baseline 1 0 0.60708 (0.006739)
Emotions 1 0 0.51925 (0.006114) -0.08783
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46433 (0.006743)
Emotions 1 1 0.35288 (0.006119) -0.11145
No-course Baseline 1 1 0.54548 (0.006913)
Reasoning 1 1 0.40394 (0.006692)
Combo 1 1 0.37156 (0.00664)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68625 (0.007209)
Emotions 0 0 0.68537 (0.006579) -0.00088
No-course Baseline 0 0 0.70608 (0.007419)
Reasoning 0 0 0.70338 (0.007231)
Combo 0 0 0.68525 (0.007031)
Facts Baseline 0 1 0.53805 (0.007503)
Emotions 0 1 0.54073 (0.006932) 0.00268
No-course Baseline 0 1 0.56257 (0.007866)
Reasoning 0 1 0.53858 (0.007523)
Combo 0 1 0.54627 (0.007512)
Facts Baseline 1 0 0.61204 (0.007209)
Emotions 1 0 0.51555 (0.006579) -0.09649
No-course Baseline 1 0 0.68253 (0.007419)
Reasoning 1 0 0.55085 (0.007231)
Combo 1 0 0.52275 (0.007031)
Facts Baseline 1 1 0.46774 (0.007503)
Emotions 1 1 0.35023 (0.006932) -0.11751
No-course Baseline 1 1 0.54712 (0.007866)
Reasoning 1 1 0.40062 (0.007523)
Combo 1 1 0.36824 (0.007512)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68628 (0.007209) 0.0005929
Emotions 0 0 0.6854 (0.006579) -0.00088 (0.001209); [0.4903]
No-course Baseline 0 0 0.70612 (0.007419)
Reasoning 0 0 0.70341 (0.007231)
Combo 0 0 0.68528 (0.007031)
Facts Baseline 0 1 0.53803 (0.007503) 0.0018000
Emotions 0 1 0.54071 (0.006932) 0.00268 (0.001422); [1.266]
No-course Baseline 0 1 0.56255 (0.007866)
Reasoning 0 1 0.53857 (0.007523)
Combo 0 1 0.54625 (0.007512)
Facts Baseline 1 0 0.61207 (0.007209) -0.09233
Emotions 1 0 0.51558 (0.006579) -0.09649 (0.01082); [-8.531]
No-course Baseline 1 0 0.68256 (0.007419)
Reasoning 1 0 0.55088 (0.007231)
Combo 1 0 0.52278 (0.007031)
Facts Baseline 1 1 0.46772 (0.007503) -0.11951
Emotions 1 1 0.35021 (0.006932) -0.11751 (0.009207); [-12.98]
No-course Baseline 1 1 0.54711 (0.007866)
Reasoning 1 1 0.4006 (0.007523)
Combo 1 1 0.36822 (0.007512)





\[\text{Tactic sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.6829 (0.008087) 0.005948
Emotions 0 0 0.6888 (0.008097) 0.0059 (0.01144); [0.5198]
No-course Baseline 0 0 0.7041 (0.008371)
Reasoning 0 0 0.7037 (0.008294)
Combo 0 0 0.6864 (0.008359)
Facts Baseline 0 1 0.5386 (0.007712) 0.002028
Emotions 0 1 0.5407 (0.007800) 0.0021 (0.01097); [0.1848]
No-course Baseline 0 1 0.5650 (0.008148)
Reasoning 0 1 0.5399 (0.008065)
Combo 0 1 0.5462 (0.007968)
Facts Baseline 1 0 0.6071 (0.008962) -0.087832
Emotions 1 0 0.5192 (0.008741) -0.0879 (0.01252); [ -7.0158]
No-course Baseline 1 0 0.6798 (0.008775)
Reasoning 1 0 0.5503 (0.009097)
Combo 1 0 0.5222 (0.009096)
Facts Baseline 1 1 0.4650 (0.008314) -0.111959
Emotions 1 1 0.3530 (0.007418) -0.1120 (0.01114); [-10.0482]
No-course Baseline 1 1 0.5461 (0.008271)
Reasoning 1 1 0.4040 (0.008156)
Combo 1 1 0.3715 (0.008052)


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.00000000000001265
Emotions 0 0 0.68882 (0.006114) 0.00595 (0.000000000000008011); [1.579]
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53864 (0.006739) 0.000000000000007078
Emotions 0 1 0.54067 (0.006114) 0.00203 (0.00005619); [0.000000000126]
No-course Baseline 0 1 0.56501 (0.006896)
Reasoning 0 1 0.53994 (0.00667)
Combo 0 1 0.54617 (0.006623)
Facts Baseline 1 0 0.60708 (0.006739) -0.09208
Emotions 1 0 0.51924 (0.006114) -0.08784 (0.01114); [-8.264]
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46499 (0.006739) -0.11568
Emotions 1 1 0.35303 (0.006114) -0.11196 (0.009407); [-12.3]
No-course Baseline 1 1 0.54607 (0.006896)
Reasoning 1 1 0.40404 (0.00667)
Combo 1 1 0.37146 (0.006623)


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68708 (0.007296) 0.0005690
Emotions 0 0 0.68691 (0.006623) -0.00017 (0.001213); [0.4692]
No-course Baseline 0 0 0.70681 (0.007465)
Reasoning 0 0 0.70467 (0.007186)
Combo 0 0 0.68609 (0.007109)
Facts Baseline 0 1 0.53759 (0.007252) 0.0023335
Emotions 0 1 0.54124 (0.00663) 0.00365 (0.001152); [2.025]
No-course Baseline 0 1 0.56465 (0.007482)
Reasoning 0 1 0.53678 (0.007188)
Combo 0 1 0.5456 (0.007157)
Facts Baseline 1 0 0.61224 (0.007296) -0.09317
Emotions 1 0 0.51718 (0.006623) -0.09506 (0.01081); [-8.621]
No-course Baseline 1 0 0.68323 (0.007465)
Reasoning 1 0 0.55133 (0.007186)
Combo 1 0 0.52308 (0.007109)
Facts Baseline 1 1 0.46504 (0.007252) -0.11731
Emotions 1 1 0.35181 (0.00663) -0.11323 (0.009289); [-12.63]
No-course Baseline 1 1 0.54795 (0.007482)
Reasoning 1 1 0.39859 (0.007188)
Combo 1 1 0.37069 (0.007157)


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68287 (0.006739)
Emotions 0 0 0.68882 (0.006114) 0.00595
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53798 (0.006743)
Emotions 0 1 0.54051 (0.006119) 0.00253
No-course Baseline 0 1 0.56442 (0.006913)
Reasoning 0 1 0.53984 (0.006692)
Combo 0 1 0.54628 (0.00664)
Facts Baseline 1 0 0.60708 (0.006739)
Emotions 1 0 0.51925 (0.006114) -0.08783
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46433 (0.006743)
Emotions 1 1 0.35288 (0.006119) -0.11145
No-course Baseline 1 1 0.54548 (0.006913)
Reasoning 1 1 0.40394 (0.006692)
Combo 1 1 0.37156 (0.00664)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68625 (0.007209)
Emotions 0 0 0.68537 (0.006579) -0.00088
No-course Baseline 0 0 0.70608 (0.007419)
Reasoning 0 0 0.70338 (0.007231)
Combo 0 0 0.68525 (0.007031)
Facts Baseline 0 1 0.53805 (0.007503)
Emotions 0 1 0.54073 (0.006932) 0.00268
No-course Baseline 0 1 0.56257 (0.007866)
Reasoning 0 1 0.53858 (0.007523)
Combo 0 1 0.54627 (0.007512)
Facts Baseline 1 0 0.61204 (0.007209)
Emotions 1 0 0.51555 (0.006579) -0.09649
No-course Baseline 1 0 0.68253 (0.007419)
Reasoning 1 0 0.55085 (0.007231)
Combo 1 0 0.52275 (0.007031)
Facts Baseline 1 1 0.46774 (0.007503)
Emotions 1 1 0.35023 (0.006932) -0.11751
No-course Baseline 1 1 0.54712 (0.007866)
Reasoning 1 1 0.40062 (0.007523)
Combo 1 1 0.36824 (0.007512)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68628 (0.007209) 0.0005690
Emotions 0 0 0.6854 (0.006579) -0.00088 (0.001213); [0.4692]
No-course Baseline 0 0 0.70612 (0.007419)
Reasoning 0 0 0.70341 (0.007231)
Combo 0 0 0.68528 (0.007031)
Facts Baseline 0 1 0.53803 (0.007503) 0.0019440
Emotions 0 1 0.54071 (0.006932) 0.00268 (0.001423); [1.366]
No-course Baseline 0 1 0.56255 (0.007866)
Reasoning 0 1 0.53857 (0.007523)
Combo 0 1 0.54625 (0.007512)
Facts Baseline 1 0 0.61207 (0.007209) -0.09317
Emotions 1 0 0.51558 (0.006579) -0.09649 (0.01081); [-8.621]
No-course Baseline 1 0 0.68256 (0.007419)
Reasoning 1 0 0.55088 (0.007231)
Combo 1 0 0.52278 (0.007031)
Facts Baseline 1 1 0.46772 (0.007503) -0.11988
Emotions 1 1 0.35021 (0.006932) -0.11751 (0.009208); [-13.02]
No-course Baseline 1 1 0.54711 (0.007866)
Reasoning 1 1 0.4006 (0.007523)
Combo 1 1 0.36822 (0.007512)





\[\text{Demographics + Sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.6829 (0.008087) 0.005948
Emotions 0 0 0.6888 (0.008097) 0.0059 (0.01144); [0.5198]
No-course Baseline 0 0 0.7041 (0.008371)
Reasoning 0 0 0.7037 (0.008294)
Combo 0 0 0.6864 (0.008359)
Facts Baseline 0 1 0.5386 (0.007712) 0.002028
Emotions 0 1 0.5407 (0.007800) 0.0021 (0.01097); [0.1848]
No-course Baseline 0 1 0.5650 (0.008148)
Reasoning 0 1 0.5399 (0.008065)
Combo 0 1 0.5462 (0.007968)
Facts Baseline 1 0 0.6071 (0.008962) -0.087832
Emotions 1 0 0.5192 (0.008741) -0.0879 (0.01252); [ -7.0158]
No-course Baseline 1 0 0.6798 (0.008775)
Reasoning 1 0 0.5503 (0.009097)
Combo 1 0 0.5222 (0.009096)
Facts Baseline 1 1 0.4650 (0.008314) -0.111959
Emotions 1 1 0.3530 (0.007418) -0.1120 (0.01114); [-10.0482]
No-course Baseline 1 1 0.5461 (0.008271)
Reasoning 1 1 0.4040 (0.008156)
Combo 1 1 0.3715 (0.008052)


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.00000000000001212
Emotions 0 0 0.68882 (0.006114) 0.00595 (0.000000000000007777); [1.558]
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53864 (0.006739) 0.000000000000008801
Emotions 0 1 0.54067 (0.006114) 0.00203 (0.00000000000001472); [0.598]
No-course Baseline 0 1 0.56501 (0.006896)
Reasoning 0 1 0.53994 (0.00667)
Combo 0 1 0.54617 (0.006623)
Facts Baseline 1 0 0.60708 (0.006739) -0.09329
Emotions 1 0 0.51924 (0.006114) -0.08784 (0.01102); [-8.466]
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46499 (0.006739) -0.11724
Emotions 1 1 0.35303 (0.006114) -0.11196 (0.009208); [-12.73]
No-course Baseline 1 1 0.54607 (0.006896)
Reasoning 1 1 0.40404 (0.00667)
Combo 1 1 0.37146 (0.006623)


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68708 (0.007296) 0.0005882
Emotions 0 0 0.68691 (0.006623) -0.00017 (0.001219); [0.4826]
No-course Baseline 0 0 0.70681 (0.007465)
Reasoning 0 0 0.70467 (0.007186)
Combo 0 0 0.68609 (0.007109)
Facts Baseline 0 1 0.53759 (0.007252) 0.0021004
Emotions 0 1 0.54124 (0.00663) 0.00365 (0.001151); [1.824]
No-course Baseline 0 1 0.56465 (0.007482)
Reasoning 0 1 0.53678 (0.007188)
Combo 0 1 0.5456 (0.007157)
Facts Baseline 1 0 0.61224 (0.007296) -0.09427
Emotions 1 0 0.51718 (0.006623) -0.09506 (0.01068); [-8.83]
No-course Baseline 1 0 0.68323 (0.007465)
Reasoning 1 0 0.55133 (0.007186)
Combo 1 0 0.52308 (0.007109)
Facts Baseline 1 1 0.46504 (0.007252) -0.11872
Emotions 1 1 0.35181 (0.00663) -0.11323 (0.009087); [-13.07]
No-course Baseline 1 1 0.54795 (0.007482)
Reasoning 1 1 0.39859 (0.007188)
Combo 1 1 0.37069 (0.007157)


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68287 (0.006739)
Emotions 0 0 0.68882 (0.006114) 0.00595
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53798 (0.006743)
Emotions 0 1 0.54051 (0.006119) 0.00253
No-course Baseline 0 1 0.56442 (0.006913)
Reasoning 0 1 0.53984 (0.006692)
Combo 0 1 0.54628 (0.00664)
Facts Baseline 1 0 0.60708 (0.006739)
Emotions 1 0 0.51925 (0.006114) -0.08783
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46433 (0.006743)
Emotions 1 1 0.35288 (0.006119) -0.11145
No-course Baseline 1 1 0.54548 (0.006913)
Reasoning 1 1 0.40394 (0.006692)
Combo 1 1 0.37156 (0.00664)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68625 (0.007209)
Emotions 0 0 0.68537 (0.006579) -0.00088
No-course Baseline 0 0 0.70608 (0.007419)
Reasoning 0 0 0.70338 (0.007231)
Combo 0 0 0.68525 (0.007031)
Facts Baseline 0 1 0.53805 (0.007503)
Emotions 0 1 0.54073 (0.006932) 0.00268
No-course Baseline 0 1 0.56257 (0.007866)
Reasoning 0 1 0.53858 (0.007523)
Combo 0 1 0.54627 (0.007512)
Facts Baseline 1 0 0.61204 (0.007209)
Emotions 1 0 0.51555 (0.006579) -0.09649
No-course Baseline 1 0 0.68253 (0.007419)
Reasoning 1 0 0.55085 (0.007231)
Combo 1 0 0.52275 (0.007031)
Facts Baseline 1 1 0.46774 (0.007503)
Emotions 1 1 0.35023 (0.006932) -0.11751
No-course Baseline 1 1 0.54712 (0.007866)
Reasoning 1 1 0.40062 (0.007523)
Combo 1 1 0.36824 (0.007512)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68628 (0.007209) 0.0005882
Emotions 0 0 0.6854 (0.006579) -0.00088 (0.001219); [0.4826]
No-course Baseline 0 0 0.70612 (0.007419)
Reasoning 0 0 0.70341 (0.007231)
Combo 0 0 0.68528 (0.007031)
Facts Baseline 0 1 0.53803 (0.007503) 0.0015879
Emotions 0 1 0.54071 (0.006932) 0.00268 (0.001417); [1.121]
No-course Baseline 0 1 0.56255 (0.007866)
Reasoning 0 1 0.53857 (0.007523)
Combo 0 1 0.54625 (0.007512)
Facts Baseline 1 0 0.61207 (0.007209) -0.09427
Emotions 1 0 0.51558 (0.006579) -0.09649 (0.01068); [-8.83]
No-course Baseline 1 0 0.68256 (0.007419)
Reasoning 1 0 0.55088 (0.007231)
Combo 1 0 0.52278 (0.007031)
Facts Baseline 1 1 0.46772 (0.007503) -0.12107
Emotions 1 1 0.35021 (0.006932) -0.11751 (0.008995); [-13.46]
No-course Baseline 1 1 0.54711 (0.007866)
Reasoning 1 1 0.4006 (0.007523)
Combo 1 1 0.36822 (0.007512)





\[\text{Demographics + Sharing rates + Tactic sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.6829 (0.008087) 0.005948
Emotions 0 0 0.6888 (0.008097) 0.0059 (0.01144); [0.5198]
No-course Baseline 0 0 0.7041 (0.008371)
Reasoning 0 0 0.7037 (0.008294)
Combo 0 0 0.6864 (0.008359)
Facts Baseline 0 1 0.5386 (0.007712) 0.002028
Emotions 0 1 0.5407 (0.007800) 0.0021 (0.01097); [0.1848]
No-course Baseline 0 1 0.5650 (0.008148)
Reasoning 0 1 0.5399 (0.008065)
Combo 0 1 0.5462 (0.007968)
Facts Baseline 1 0 0.6071 (0.008962) -0.087832
Emotions 1 0 0.5192 (0.008741) -0.0879 (0.01252); [ -7.0158]
No-course Baseline 1 0 0.6798 (0.008775)
Reasoning 1 0 0.5503 (0.009097)
Combo 1 0 0.5222 (0.009096)
Facts Baseline 1 1 0.4650 (0.008314) -0.111959
Emotions 1 1 0.3530 (0.007418) -0.1120 (0.01114); [-10.0482]
No-course Baseline 1 1 0.5461 (0.008271)
Reasoning 1 1 0.4040 (0.008156)
Combo 1 1 0.3715 (0.008052)


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.000000000000008093
Emotions 0 0 0.68882 (0.006114) 0.00595 (0.000000000000008429); [0.9601]
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53864 (0.006739) 0.00000000000001189
Emotions 0 1 0.54067 (0.006114) 0.00203 (0.0001024); [0.0000000001161]
No-course Baseline 0 1 0.56501 (0.006896)
Reasoning 0 1 0.53994 (0.00667)
Combo 0 1 0.54617 (0.006623)
Facts Baseline 1 0 0.60708 (0.006739) -0.09413
Emotions 1 0 0.51924 (0.006114) -0.08784 (0.011); [-8.554]
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46499 (0.006739) -0.11754
Emotions 1 1 0.35303 (0.006114) -0.11196 (0.009207); [-12.77]
No-course Baseline 1 1 0.54607 (0.006896)
Reasoning 1 1 0.40404 (0.00667)
Combo 1 1 0.37146 (0.006623)


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68708 (0.007296) 0.0005702
Emotions 0 0 0.68691 (0.006623) -0.00017 (0.001222); [0.4666]
No-course Baseline 0 0 0.70681 (0.007465)
Reasoning 0 0 0.70467 (0.007186)
Combo 0 0 0.68609 (0.007109)
Facts Baseline 0 1 0.53759 (0.007252) 0.0021652
Emotions 0 1 0.54124 (0.00663) 0.00365 (0.001164); [1.86]
No-course Baseline 0 1 0.56465 (0.007482)
Reasoning 0 1 0.53678 (0.007188)
Combo 0 1 0.5456 (0.007157)
Facts Baseline 1 0 0.61224 (0.007296) -0.09509
Emotions 1 0 0.51718 (0.006623) -0.09506 (0.01067); [-8.915]
No-course Baseline 1 0 0.68323 (0.007465)
Reasoning 1 0 0.55133 (0.007186)
Combo 1 0 0.52308 (0.007109)
Facts Baseline 1 1 0.46504 (0.007252) -0.11903
Emotions 1 1 0.35181 (0.00663) -0.11323 (0.009087); [-13.1]
No-course Baseline 1 1 0.54795 (0.007482)
Reasoning 1 1 0.39859 (0.007188)
Combo 1 1 0.37069 (0.007157)


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68287 (0.006739)
Emotions 0 0 0.68882 (0.006114) 0.00595
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53798 (0.006743)
Emotions 0 1 0.54051 (0.006119) 0.00253
No-course Baseline 0 1 0.56442 (0.006913)
Reasoning 0 1 0.53984 (0.006692)
Combo 0 1 0.54628 (0.00664)
Facts Baseline 1 0 0.60708 (0.006739)
Emotions 1 0 0.51925 (0.006114) -0.08783
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46433 (0.006743)
Emotions 1 1 0.35288 (0.006119) -0.11145
No-course Baseline 1 1 0.54548 (0.006913)
Reasoning 1 1 0.40394 (0.006692)
Combo 1 1 0.37156 (0.00664)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68625 (0.007209)
Emotions 0 0 0.68537 (0.006579) -0.00088
No-course Baseline 0 0 0.70608 (0.007419)
Reasoning 0 0 0.70338 (0.007231)
Combo 0 0 0.68525 (0.007031)
Facts Baseline 0 1 0.53805 (0.007503)
Emotions 0 1 0.54073 (0.006932) 0.00268
No-course Baseline 0 1 0.56257 (0.007866)
Reasoning 0 1 0.53858 (0.007523)
Combo 0 1 0.54627 (0.007512)
Facts Baseline 1 0 0.61204 (0.007209)
Emotions 1 0 0.51555 (0.006579) -0.09649
No-course Baseline 1 0 0.68253 (0.007419)
Reasoning 1 0 0.55085 (0.007231)
Combo 1 0 0.52275 (0.007031)
Facts Baseline 1 1 0.46774 (0.007503)
Emotions 1 1 0.35023 (0.006932) -0.11751
No-course Baseline 1 1 0.54712 (0.007866)
Reasoning 1 1 0.40062 (0.007523)
Combo 1 1 0.36824 (0.007512)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
Treatment Effect
Emotions vs. Facts
Facts Baseline 0 0 0.68628 (0.007209) 0.0005702
Emotions 0 0 0.6854 (0.006579) -0.00088 (0.001222); [0.4666]
No-course Baseline 0 0 0.70612 (0.007419)
Reasoning 0 0 0.70341 (0.007231)
Combo 0 0 0.68528 (0.007031)
Facts Baseline 0 1 0.53803 (0.007503) 0.0017194
Emotions 0 1 0.54071 (0.006932) 0.00268 (0.001422); [1.209]
No-course Baseline 0 1 0.56255 (0.007866)
Reasoning 0 1 0.53857 (0.007523)
Combo 0 1 0.54625 (0.007512)
Facts Baseline 1 0 0.61207 (0.007209) -0.09509
Emotions 1 0 0.51558 (0.006579) -0.09649 (0.01067); [-8.915]
No-course Baseline 1 0 0.68256 (0.007419)
Reasoning 1 0 0.55088 (0.007231)
Combo 1 0 0.52278 (0.007031)
Facts Baseline 1 1 0.46772 (0.007503) -0.12142
Emotions 1 1 0.35021 (0.006932) -0.11751 (0.008998); [-13.49]
No-course Baseline 1 1 0.54711 (0.007866)
Reasoning 1 1 0.4006 (0.007523)
Combo 1 1 0.36822 (0.007512)








Logistic

Baseline estimation

Below, we present the estimates based on 2 treatment arms: Facts Baseline and Emotions.


The sample includes all users who completed the post-survey and belong to the “Facts Baseline” (n = 1,790) or “Emotions course” (n = 1,836) treatment groups (n = 3,626). We consider all 9 posts in the pre-treatment period (“pre”) and all 9 posts in the post-treatment period (i.e., “post”).


# Define panel df with two treatment arms only
panel_2 <- panel %>% filter(treatment %in% c('Facts Baseline','Emotions'))
panel_2$treatment <- factor(panel_2$treatment, levels = c('Facts Baseline','Emotions'))
panel_2$emotions <- ifelse(panel_2$treatment == "Emotions",1,0)
# version 1: 2 treatment arms
formula_baseline_logit <- "share ~ treatment*post*post_is_misinfo"
baseline_logit <- glm(as.formula(formula_baseline_logit),panel_2, family = binomial('logit'))
baseline_logit_se <- (feglm(as.formula(formula_baseline_logit),panel_2, family = binomial('logit'), cluster = "user"))$se
# Calculate out-of-sample R2
BiocParallel::register(BiocParallel::MulticoreParam(workers = 8)) # define number of cores

if (!file.exists("R2oos_baseline_logit.rds")) {

# baseline
formula <- gsub("^share","",formula_baseline_logit)
X <- model.matrix(as.formula(formula), data = panel_2)
X <- X[, !(colnames(X) %in% "(Intercept)")]

# fit and prediction functions
fitFunLogit <- function(y, x){feglm.fit(y = y, x = cbind(1, x), family = binomial(link = "logit"), cluster = "user")}
predFunLogit <- function(mod, x) {cbind(1,x) %*% mod$coef}

R2oos_baseline_logit <- oosse::R2oosse(panel_2$share,
                          X[,-1],
                          fitFun = fitFunLogit,
                          predFun = predFunLogit,
                          methodMSE = "bootstrap",
                          nBootstraps = 100,
                          nBootstrapsCor = 25)
saveRDS(R2oos_baseline_logit,"R2oos_baseline_logit.rds")
} else {
  R2oos_baseline_logit <- readRDS("R2oos_baseline_logit.rds")
}

R2out <- as.numeric(R2oos_baseline_logit$R2[1])
# Print model
headers <- c("Share (binary indicator)")
model_list <- list(baseline_logit)
names <- unique(c(names(baseline_logit$coefficients)))
variable_labels_wide <- variable_mapping_long[names]

# keep variables
keep <- list("treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]")

# out-of-sample R2
if (any(ls() %in% "R2out")) {
    R2out <- c(R2out)
} else {
    R2out <- rep("",length(model_list))
}

# s.e.
standard_errors <- list(baseline_logit_se)
                        
# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("(1)"),
                      stars = c(0.20, 0.10, 0.02),
                      override.se = standard_errors,
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test. MSE for out-of-sample R$^2$ is calculated through a cross-validation process with 100 repetitions and 10 folds.",
                      caption = paste("Logit Regression:", headers, "vs. Treatment"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = rep("No",length(model_list)),
                                             "Fixed Effects" = rep("No",length(model_list)),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2out)
                                             ),
                      reorder.gof = c(6,7,5,8,9,10,1,2,3,4)
)
html_table
Logit Regression: Share (binary indicator) vs. Treatment
  Share (binary indicator)
  (1)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0880
  (0.0582)
Emotions x 1[Post-treatment] -0.3856***
  (0.0575)
Emotions x 1[Misinfo] -0.0194
  (0.0441)
AIC 87543.9346
BIC 87616.6247
Out-of-sample R2 -1.0971
Log Likelihood -43763.9673
Deviance 87527.9346
Num. obs. 65268
Fixed Effects No
Fixed Effects No
Covariates No
Clustered Std. Errors user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test. MSE for out-of-sample R\(^2\) is calculated through a cross-validation process with 100 repetitions and 10 folds.
# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
Click to view the full table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("(1)"),
                      stars = c(0.20, 0.10, 0.02),
                      override.se = standard_errors,
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test. MSE for out-of-sample R$^2$ is calculated through a cross-validation process with 10 folds.",
                      caption = paste("Logit Regression:", headers, "vs. Treatment"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.gof.rows = list("Fixed Effects" = rep("No",length(model_list)),
                                             "Fixed Effects" = rep("No",length(model_list)),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2out)
                                             ),
                      reorder.gof = c(6,7,5,8,9,10,1,2,3,4)
)
html_table
Logit Regression: Share (binary indicator) vs. Treatment
  Share (binary indicator)
  (1)
Facts Baseline 0.7670***
  (0.0373)
Emotions 0.0276
  (0.0531)
1[Post-treatment] -0.3319***
  (0.0391)
1[Misinfo] -0.6121***
  (0.0305)
Emotions x 1[Post-treatment] -0.3856***
  (0.0575)
Emotions x 1[Misinfo] -0.0194
  (0.0441)
1[Post-treatment] x 1[Misinfo] 0.0368
  (0.0407)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0880
  (0.0582)
AIC 87543.9346
BIC 87616.6247
Out-of-sample R2 -1.0971
Log Likelihood -43763.9673
Deviance 87527.9346
Num. obs. 65268
Fixed Effects No
Fixed Effects No
Covariates No
Clustered Std. Errors user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test. MSE for out-of-sample R\(^2\) is calculated through a cross-validation process with 10 folds.
cat('</details>')


Prediction

Standard errors of the share predicted value are estimated using the Delta method.

Treatment effects in the last column refer to estimated marginal means (EMMs, or least-squares means) for specified factor combinations (Post-treatment and Misinfo). Point estimates are reported in the upper cell and standard errors, clustered at the user level, reported in parentheses in the bottom cell. z-ratios are reported in brackets.

# Table with prediction values
treatmentLevels <- unique(panel_2$treatment)
predictorVariables <- expand.grid(treatment = treatmentLevels,
                                  post = c(0, 1),
                                  post_is_misinfo = c(0, 1))

predictions <- predict(baseline_logit, newdata = predictorVariables, type = "response", se.fit = TRUE)
prediction_df <- predictorVariables
prediction_df$prediction <- format(predictions$fit, digits = 4)
prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")

# calculate difference between Facts Baseline and all other treatments
prediction_df <- prediction_df %>%
  group_by(post,post_is_misinfo) %>%
  mutate(lag = ifelse(treatment == "Emotions",
                      prediction, NA)) %>%
  tidyr::fill(lag, .direction = "up") %>%
  ungroup() %>%
  mutate(te = ifelse(treatment == "Facts Baseline",
                     format(as.numeric(lag) - as.numeric(prediction), digits = 5), NA)) %>%
  select(-lag) %>%
  mutate(te = ifelse(is.na(te),"",te))

emm_res <- emmeans(baseline_logit, specs = pairwise ~ treatment | post * post_is_misinfo)
    contrast_res <- contrast(emm_res, method = "revpairwise")
    
    contrast_df <- as.data.frame(contrast_res) %>% select(post, post_is_misinfo, estimate, SE, z.ratio)
    contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))) %>%
      mutate(estimate = format(estimate, digits = 4)) %>%
      mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
      select(treatment, post, post_is_misinfo, estimate)
    
     prediction_df <- left_join(prediction_df, contrast_df, 
                            by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))

prediction_df <- prediction_df %>% arrange(post,post_is_misinfo)

knitr::kable(prediction_df, col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","log odds ratio<br>Emotions/Facts"))
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.0059 0.027609
Emotions 0 0 0.6888 (0.006238) (0.04131); [0.6683]
Facts Baseline 0 1 0.5386 (0.004810) 0.0021 0.008161
Emotions 0 1 0.5407 (0.004748) (0.02721); [0.3000]
Facts Baseline 1 0 0.6071 (0.006665) -0.0879 -0.358022
Emotions 1 0 0.5192 (0.006732) (0.03883); [ -9.2196]
Facts Baseline 1 1 0.4650 (0.004813) -0.1120 -0.465472
Emotions 1 1 0.3530 (0.004553) (0.02778); [-16.7557]



Click for All treatment arms
# version 2: all treatment arms
formula_baseline_all_logit <- "share ~ treatment*post*post_is_misinfo"
baseline_all_logit <- glm(as.formula(formula_baseline_all_logit),panel,family = binomial('logit'))
baseline_all_logit_se <- (feglm(as.formula(formula_baseline_all_logit),panel,family = binomial('logit'), cluster = "user"))$se
# Calculate out-of-sample R2
BiocParallel::register(BiocParallel::MulticoreParam(workers = 8)) # define number of cores

if (!file.exists("R2oos_baseline_all_logit.rds")) {

# baseline all treatments
formula <- gsub("^share","",formula_baseline_all_logit)
X <- model.matrix(as.formula(formula), data = panel)
X <- X[, !(colnames(X) %in% "(Intercept)")]

# fit and prediction functions
fitFunLogit <- function(y, x){feglm.fit(y = y, x = cbind(1, x), family = binomial(link = "logit"), cluster = "user")}
predFunLogit <- function(mod, x) {cbind(1,x) %*% mod$coef}

R2oos_baseline_all_logit <- oosse::R2oosse(panel$share,
                          X[,-1],
                          fitFun = fitFunLogit,
                          predFun = predFunLogit,
                          methodMSE = "bootstrap",
                          nBootstraps = 100,
                          nBootstrapsCor = 25)
saveRDS(R2oos_baseline_all_logit,"R2oos_baseline_all_logit.rds")
} else {
  R2oos_baseline_all_logit <- readRDS("R2oos_baseline_all_logit.rds")
}
R2out_all <- as.numeric(R2oos_baseline_all_logit$R2[1])

Baseline estimation


The sample includes all users who completed the post-survey (n = 8,684). We consider all 9 posts in the pre-treatment period (“pre”) and all 9 posts in the post-treatment period (i.e., “post”).


# Print model
headers <- c("Share (binary indicator)")
model_list <- list(baseline_all_logit)
names <- unique(c(names(baseline_all_logit$coefficients)))
variable_labels_wide <- variable_mapping_long[names]

# out-of-sample R2
if (any(ls() %in% "R2out_all")) {
    R2out_all <- c(R2out_all)
} else {
    R2out_all <- rep("",length(model_list))
}

# standard errors
standard_errors <- list(baseline_all_logit_se)

# keep variables
keep <- list("treatmentFacts Baseline:post:post_is_misinfo" = "Facts Baseline x 1[Post-treatment] x 1[Misinfo]",
             "treatmentNo-course Baseline:post_is_misinfo" = "No-course Baseline x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentReasoning:post:post_is_misinfo" = "Reasoning x 1[Post-treatment] x 1[Misinfo]",
             "treatmentCombo:post:post_is_misinfo" = "Combo x 1[Post-treatment] x 1[Misinfo]",
             
             "treatmentFacts Baseline:post" = "Facts Baseline x 1[Post-treatment]",
             "treatmentNo-course Baseline" = "No-course Baseline x 1[Post-treatment]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentReasoning:post" = "Reasoning x 1[Post-treatment]",
             "treatmentCombo:post" = "Combo x 1[Post-treatment]",
             
             "treatmentFacts Baseline:post_is_misinfo" = "Facts Baseline x 1[Misinfo]",
             "treatmentNo-course Baseline:post_is_misinfo" = "No-course Baseline x 1[Misinfo]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]",
             "treatmentReasoning:post_is_misinfo" = "Reasoning x 1[Misinfo]",
             "treatmentCombo:post_is_misinfo" = "Combo x 1[Misinfo]")

# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("(1)"),
                      stars = c(0.20, 0.10, 0.02),
                      override.se = standard_errors,
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Logit Regression:", headers, "vs. Treatment"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = rep("No",length(model_list)),
                                             "Fixed Effects" = rep("No",length(model_list)),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2out_all)
                                             ),
                      reorder.gof = c(6,7,5,8,9,10,1,2,3,4)
)
html_table
Logit Regression: Share (binary indicator) vs. Treatment
  Share (binary indicator)
  (1)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0066
  (0.0452)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0066
  (0.0452)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0880
  (0.0582)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0778
  (0.0596)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0536
  (0.0589)
No-course Baseline x 1[Post-treatment] 0.1001***
  (0.0548)
Emotions x 1[Post-treatment] -0.3856***
  (0.0575)
Reasoning x 1[Post-treatment] -0.3314***
  (0.0572)
Combo x 1[Post-treatment] -0.3624***
  (0.0567)
Emotions x 1[Misinfo] -0.0194
  (0.0441)
Reasoning x 1[Misinfo] -0.0930**
  (0.0449)
Combo x 1[Misinfo] 0.0140
  (0.0438)
AIC 209149.6024
BIC 209348.7946
Out-of-sample R2 -0.9923
Log Likelihood -104554.8012
Deviance 209109.6024
Num. obs. 156312
Fixed Effects No
Fixed Effects No
Covariates No
Clustered Std. Errors user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.
# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
Click to view the full table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("(1)"),
                      stars = c(0.20, 0.10, 0.02),
                      override.se = standard_errors,
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test. MSE for out-of-sample R$^2$ is calculated through a cross-validation process with 100 repetitions and 10 folds.",
                      caption = paste("Logit Regression:", headers, "vs. Treatment"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.gof.rows = list("Fixed Effects" = rep("No",length(model_list)),
                                             "Fixed Effects" = rep("No",length(model_list)),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2out_all)
                                             ),
                      reorder.gof = c(6,7,5,8,9,10,1,2,3,4)
)
html_table
Logit Regression: Share (binary indicator) vs. Treatment
  Share (binary indicator)
  (1)
Facts Baseline 0.7670***
  (0.0373)
No-course Baseline 0.1001***
  (0.0548)
Emotions 0.0276
  (0.0531)
Reasoning 0.0982**
  (0.0546)
Combo 0.0164
  (0.0539)
1[Post-treatment] -0.3319***
  (0.0391)
1[Misinfo] -0.6121***
  (0.0305)
No-course Baseline x 1[Post-treatment] 0.2176***
  (0.0572)
Emotions x 1[Post-treatment] -0.3856***
  (0.0575)
Reasoning x 1[Post-treatment] -0.3314***
  (0.0572)
Combo x 1[Post-treatment] -0.3624***
  (0.0567)
No-course Baseline x 1[Misinfo] 0.0066
  (0.0452)
Emotions x 1[Misinfo] -0.0194
  (0.0441)
Reasoning x 1[Misinfo] -0.0930**
  (0.0449)
Combo x 1[Misinfo] 0.0140
  (0.0438)
1[Post-treatment] x 1[Misinfo] 0.0368
  (0.0407)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0008
  (0.0611)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0880
  (0.0582)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0778
  (0.0596)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0536
  (0.0589)
AIC 209149.6024
BIC 209348.7946
Out-of-sample R2 -0.9923
Log Likelihood -104554.8012
Deviance 209109.6024
Num. obs. 156312
Fixed Effects No
Fixed Effects No
Covariates No
Clustered Std. Errors user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test. MSE for out-of-sample R\(^2\) is calculated through a cross-validation process with 100 repetitions and 10 folds.
cat('</details>')


Prediction

Standard errors of the share predicted value are estimated using the Delta method. Treatment effects standard errors are clustered at the user level and reported in parentheses. z-ratios are reported in brackets.

# Table with prediction values
treatmentLevels <- unique(panel$treatment)
predictorVariables <- expand.grid(treatment = treatmentLevels,
                                  post = c(0, 1),
                                  post_is_misinfo = c(0, 1))

predictions <- predict(baseline_all_logit, newdata = predictorVariables, type = "response", se.fit = TRUE)
prediction_df <- predictorVariables
prediction_df$prediction <- format(predictions$fit, digits = 4)
prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")

# calculate difference between Facts Baseline and all other treatments
prediction_df <- prediction_df %>%
  group_by(post,post_is_misinfo) %>%
  mutate(lag = ifelse(treatment == "Emotions",
                      prediction, NA)) %>%
  tidyr::fill(lag, .direction = "up") %>%
  ungroup() %>%
  mutate(te = ifelse(treatment == "Facts Baseline",
                     format(as.numeric(lag) - as.numeric(prediction), digits = 5), NA)) %>%
  select(-lag) %>%
  mutate(te = ifelse(is.na(te),"",te))

emm_res <- emmeans(baseline_all_logit, specs = pairwise ~ treatment | post * post_is_misinfo)
    contrast_res <- contrast(emm_res, method = "revpairwise")
    
    contrast_df <- as.data.frame(contrast_res) %>% 
      filter(contrast == "Emotions - Facts Baseline") %>%
      rename(treatment = contrast) %>%
      select(post, post_is_misinfo, estimate, SE, z.ratio, treatment)
    contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))) %>%
      mutate(estimate = format(estimate, digits = 4)) %>%
      mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
      select(treatment, post, post_is_misinfo, estimate)
    
     prediction_df <- left_join(prediction_df, contrast_df, 
                            by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo")) %>%
       mutate(estimate = ifelse(is.na(estimate),"",estimate))

prediction_df <- prediction_df %>% arrange(post,post_is_misinfo)

knitr::kable(prediction_df, col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","log odds ratio<br>Emotions/Facts"))
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.0059 0.027609
Emotions 0 0 0.6888 (0.006238) (0.04131); [0.6683]
No-course Baseline 0 0 0.7041 (0.006531)
Reasoning 0 0 0.7037 (0.006413)
Combo 0 0 0.6864 (0.006422)
Facts Baseline 0 1 0.5386 (0.004810) 0.0021 0.008161
Emotions 0 1 0.5407 (0.004748) (0.02721); [0.3000]
No-course Baseline 0 1 0.5650 (0.005016)
Reasoning 0 1 0.5399 (0.004949)
Combo 0 1 0.5462 (0.004873)
Facts Baseline 1 0 0.6071 (0.006665) -0.0879 -0.358022
Emotions 1 0 0.5192 (0.006732) (0.03883); [ -9.2196]
No-course Baseline 1 0 0.6798 (0.006676)
Reasoning 1 0 0.5503 (0.006986)
Combo 1 0 0.5222 (0.006914)
Facts Baseline 1 1 0.4650 (0.004813) -0.1120 -0.465472
Emotions 1 1 0.3530 (0.004553) (0.02778); [-16.7557]
No-course Baseline 1 1 0.5461 (0.005038)
Reasoning 1 1 0.4040 (0.004873)
Combo 1 1 0.3715 (0.004729)




Fixed effects

# version 1: 2 treatment arms
formula_fe1_logit <- "share ~ treatment*post*post_is_misinfo | user"
fe1_logit <- feglm(as.formula(formula_fe1_logit),panel_2, family = binomial(link = "logit"))

formula_fe2_logit <- "share ~ treatment*post*post_is_misinfo + factor(fact) | user"
fe2_logit <- feglm(as.formula(formula_fe2_logit),panel_2, family = binomial(link = "logit"))

formula_fe3_logit <- "share ~ treatment*post*post_is_misinfo + factor(type) | user"
fe3_logit <- feglm(as.formula(formula_fe3_logit),panel_2, family = binomial(link = "logit"))

formula_fe4_logit <- "share ~ treatment*post*post_is_misinfo + factor(fact)*factor(type) | user"
fe4_logit <- feglm(as.formula(formula_fe4_logit),panel_2, family = binomial(link = "logit"))

formula_fe5_logit <- "share ~ treatment*post*post_is_misinfo + factor(post_id) | user"
fe5_logit <- feglm(as.formula(formula_fe5_logit),panel_2, family = binomial(link = "logit"))


# Print model
headers <- c("Share (binary indicator)")
model_list <- list(baseline_logit,fe1_logit,fe2_logit,fe3_logit,fe4_logit,fe5_logit)
names <- unique(c(names(baseline_logit$coefficients),
                  names(fe1_logit$coefficients),
                  names(fe2_logit$coefficients),
                  names(fe3_logit$coefficients),
                  names(fe4_logit$coefficients),
                  names(fe5_logit$coefficients)))
variable_labels_wide <- variable_mapping_long[names]

# out-of-sample R2
if (any(ls() %in% "R2oos_fe_2treat_logit_all")) {
  if (length(R2oos_fe_2treat_logit_all)>0) {
    R2oos_fe_2treat_logit_all <- c(R2out,R2oos_fe_2treat_logit_all, rep("",length(model_list)-length(R2oos_fe_2treat_logit_all)-1))
  } else {
    R2oos_fe_2treat_logit_all <- rep("",length(model_list))
  }
} else {
    R2oos_fe_2treat_logit_all <- rep("",length(model_list))
}

# remove blankrows
coef_names <- names
matrix_coeff_na <- expand.grid(coef_name = coef_names, model = seq(length(model_list)))
matrix_coeff_na$var <- 0
matrix_coeff_na$var_na <- 0
for (m in 1:length(model_list)) {
  na_coeff <- names(model_list[[m]]$coefficients)[is.na(model_list[[m]]$coefficients)]
  #na_coeff <- names(model_list[[m]]$coefficients[,1])[is.na(model_list[[m]]$coefficients[,1])] # felm
  for (c in na_coeff) {
    matrix_coeff_na$var[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1 # 1 if variable is in the model (not all models have all variables)
    matrix_coeff_na$var_na[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1
  }
}
matrix_coeff_na <- matrix_coeff_na %>% group_by(coef_name) %>% mutate(var = sum(var), var_na = sum(var_na)) %>% distinct(coef_name,var,var_na)
rows_to_omit <- as.vector(unique(matrix_coeff_na$coef_name[matrix_coeff_na$var_na != 0])) # omit if NA in all models
rows_to_omit <- gsub("\\^\\s","^",paste0("^",rows_to_omit,"$", collapse = "|"))
rows_to_omit <- gsub("\\(","\\\\(",gsub("\\)","\\\\)",rows_to_omit))

# standard errors
standard_errors <- list(baseline_logit_se,fe1_logit$se,fe2_logit$se,fe3_logit$se,fe4_logit$se,fe5_logit$se)

# keep variables
keep <- list("treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]")

# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      override.se = standard_errors,
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_fe_2treat_logit_all)),
                      reorder.gof = c(8,6,7,9,10,11,5,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0880 -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0582) (0.0836) (0.0884) (0.0836) (0.0902) (0.0902)
Emotions x 1[Post-treatment] -0.3856*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0575) (0.0691) (0.0730) (0.0691) (0.0740) (0.0740)
Emotions x 1[Misinfo] -0.0194 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0441) (0.0605) (0.0638) (0.0606) (0.0650) (0.0650)
Log Likelihood -43763.9673 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
AIC 87543.9346          
BIC 87616.6247          
Deviance 87527.9346 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Num. obs. 65268 58068 58068 58068 58068 58068
Pseudo R2   0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates No No No No No No
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.
# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
Click to view the full table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      override.se = standard_errors,
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      omit.coef = rows_to_omit,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_fe_2treat_logit_all)),
                      reorder.gof = c(8,6,7,9,10,11,5,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.7670***          
  (0.0373)          
Emotions 0.0276          
  (0.0531)          
1[Post-treatment] -0.3319*** -0.5002*** -0.5601*** -0.5005*** -0.5646*** -0.5646***
  (0.0391) (0.0498) (0.0527) (0.0499) (0.0534) (0.0534)
1[Misinfo] -0.6121*** -0.9234*** -1.0451*** -0.6580*** -1.1149*** -3.1708***
  (0.0305) (0.0435) (0.0461) (36168.5464) (0.1288) (0.1297)
Emotions x 1[Post-treatment] -0.3856*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0575) (0.0691) (0.0730) (0.0691) (0.0740) (0.0740)
Emotions x 1[Misinfo] -0.0194 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0441) (0.0605) (0.0638) (0.0606) (0.0650) (0.0650)
1[Post-treatment] x 1[Misinfo] 0.0368 0.0492 0.0615 0.0485 0.0524 0.0524
  (0.0407) (0.0602) (0.0637) (0.0602) (0.0650) (0.0650)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0880 -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0582) (0.0836) (0.0884) (0.0836) (0.0902) (0.0902)
Post domain 2     -1.3255***   -1.3401***  
      (0.0567)   (0.1096)  
Post domain 3     -1.9197***   -2.2672***  
      (0.0580)   (0.1079)  
Post domain 4     -1.2883***   -1.9129***  
      (0.0566)   (0.1084)  
Post domain 5     0.4122***   -0.0798  
      (0.0589)   (0.1184)  
Post domain 6     0.1959***   0.5392***  
      (0.0581)   (0.1265)  
Post domain 7     -1.5826***   -1.5243***  
      (0.0571)   (0.1092)  
Post domain 8     -1.4424***   -0.9858***  
      (0.0567)   (0.1100)  
Post domain 9     0.3437***   -0.5000***  
      (0.0585)   (0.1136)  
Post domain 10     -0.4006***   -0.8357***  
      (0.0567)   (0.1115)  
Post domain 11     -1.0907***   -1.4147***  
      (0.0563)   (0.1090)  
Post domain 12     -0.7530***   -1.1001***  
      (0.0563)   (0.1106)  
Post domain 13     -1.0463***   -1.6287***  
      (0.0564)   (0.1089)  
Post domain 14     -1.8782***   -2.3481***  
      (0.0578)   (0.1093)  
Post domain 15     -1.2760***   -2.1274***  
      (0.0565)   (0.1096)  
1[Combo manipulation tactic]       -0.4163*** -0.2959**  
        (36168.5464) (0.1228)  
1[Emotions manipulation tactic]       -0.2120*** -0.6319***  
        (36168.5464) (0.1210)  
1[Reasoning manipulation tactic]       -0.1699***    
        (36168.5464)    
Post domain 2 x 1[Combo manipulation tactic]         -0.2510*  
          (0.1653)  
Post domain 3 x 1[Combo manipulation tactic]         0.4889***  
          (0.1655)  
Post domain 4 x 1[Combo manipulation tactic]         0.8316***  
          (0.1642)  
Post domain 5 x 1[Combo manipulation tactic]         0.6964***  
          (0.1714)  
Post domain 6 x 1[Combo manipulation tactic]         -2.4606***  
          (0.1794)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0567  
          (0.1649)  
Post domain 8 x 1[Combo manipulation tactic]         0.0368  
          (0.1642)  
Post domain 9 x 1[Combo manipulation tactic]         1.2625***  
          (0.1710)  
Post domain 10 x 1[Combo manipulation tactic]         0.2924**  
          (0.1650)  
Post domain 11 x 1[Combo manipulation tactic]         0.5696***  
          (0.1634)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0738  
          (0.1638)  
Post domain 13 x 1[Combo manipulation tactic]         0.4872***  
          (0.1637)  
Post domain 14 x 1[Combo manipulation tactic]         0.2920**  
          (0.1665)  
Post domain 15 x 1[Combo manipulation tactic]         0.8359***  
          (0.1631)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4438***  
          (0.1679)  
Post domain 3 x 1[Emotions manipulation tactic]         1.0575***  
          (0.1640)  
Post domain 4 x 1[Emotions manipulation tactic]         0.7557***  
          (0.1616)  
Post domain 5 x 1[Emotions manipulation tactic]         0.9877***  
          (0.1714)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9932***  
          (0.1831)  
Post domain 7 x 1[Emotions manipulation tactic]         0.2112  
          (0.1643)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.7904***  
          (0.1681)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2790***  
          (0.1655)  
Post domain 10 x 1[Emotions manipulation tactic]         0.9799***  
          (0.1633)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0184  
          (0.1637)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1203***  
          (0.1629)  
Post domain 13 x 1[Emotions manipulation tactic]         1.5807***  
          (0.1624)  
Post domain 14 x 1[Emotions manipulation tactic]         0.9710***  
          (0.1645)  
Post domain 15 x 1[Emotions manipulation tactic]         2.6319***  
          (0.1632)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.3677**  
          (0.1640)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.3345**  
          (0.1711)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.9799***  
          (0.1638)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.3120**  
          (0.1725)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3864**  
          (0.1830)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.7992***  
          (0.1690)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.8581***  
          (0.1750)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.9999***  
          (0.1714)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4521***  
          (0.1660)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.6336***  
          (0.1643)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2927**  
          (0.1653)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3094**  
          (0.1634)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.5483***  
          (0.1664)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0715  
          (0.1666)  
Post 2 indicator           -1.3401***
            (0.1096)
Post 3 indicator           -2.2672***
            (0.1079)
Post 4 indicator           -1.9129***
            (0.1084)
Post 5 indicator           -0.0798
            (0.1184)
Post 6 indicator           0.5392***
            (0.1265)
Post 7 indicator           -1.5243***
            (0.1092)
Post 8 indicator           -0.9858***
            (0.1100)
Post 9 indicator           -0.5000***
            (0.1136)
Post 10 indicator           -0.8357***
            (0.1115)
Post 11 indicator           -1.4147***
            (0.1090)
Post 12 indicator           -1.1001***
            (0.1106)
Post 13 indicator           -1.6287***
            (0.1089)
Post 14 indicator           -2.3481***
            (0.1093)
Post 15 indicator           -2.1274***
            (0.1096)
Post 16 indicator           1.7600***
            (0.1231)
Post 17 indicator           0.1690*
            (0.1254)
Post 18 indicator           -0.0183
            (0.1271)
Post 19 indicator           0.6788***
            (0.1248)
Post 20 indicator           2.3767***
            (0.1257)
Post 21 indicator           -0.1614*
            (0.1283)
Post 22 indicator           0.1790*
            (0.1252)
Post 23 indicator           0.8110***
            (0.1235)
Post 24 indicator           2.5226***
            (0.1296)
Post 25 indicator           1.2168***
            (0.1232)
Post 26 indicator           0.9150***
            (0.1235)
Post 27 indicator           0.5861***
            (0.1223)
Post 28 indicator           0.6185***
            (0.1237)
Post 29 indicator           -0.2961**
            (0.1271)
Post 30 indicator           0.4685***
            (0.1240)
Post 31 indicator           1.4240***
            (0.1212)
Post 32 indicator           -0.3599***
            (0.1303)
Post 33 indicator           0.2143**
            (0.1272)
Post 34 indicator           0.2669**
            (0.1232)
Post 35 indicator           2.3320***
            (0.1275)
Post 36 indicator           2.9565***
            (0.1355)
Post 37 indicator           0.1110
            (0.1261)
Post 38 indicator           -0.3521***
            (0.1303)
Post 39 indicator           2.2031***
            (0.1238)
Post 40 indicator           1.5682***
            (0.1228)
Post 41 indicator           -0.0090
            (0.1254)
Post 42 indicator           1.4442***
            (0.1231)
Post 43 indicator           1.3760***
            (0.1241)
Post 44 indicator           0.0469
            (0.1262)
Post 45 indicator           1.9285***
            (0.1254)
Post 46 indicator           2.0559***
            (0.1252)
Post 47 indicator           1.0835***
            (0.1224)
Post 48 indicator           -0.5459***
            (0.1330)
Post 49 indicator           1.1230***
            (0.1235)
Post 50 indicator           2.2882***
            (0.1257)
Post 51 indicator           2.9815***
            (0.1328)
Post 52 indicator           -0.2676**
            (0.1290)
Post 53 indicator           -0.7880***
            (0.1360)
Post 54 indicator           2.5558***
            (0.1286)
Post 55 indicator           1.6723***
            (0.1233)
Post 56 indicator           1.2748***
            (0.1232)
Post 57 indicator           1.2485***
            (0.1233)
Post 58 indicator           0.7366***
            (0.1219)
Post 59 indicator           0.2561**
            (0.1262)
Log Likelihood -43763.9673 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
AIC 87543.9346          
BIC 87616.6247          
Deviance 87527.9346 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Num. obs. 65268 58068 58068 58068 58068 58068
Pseudo R2   0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates No No No No No No
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.
cat('</details>')


Prediction

Standard errors of the share predicted value are estimated using the Delta method.

Treatment effects in the last column refer to estimated marginal means (EMMs, or least-squares means) for specified factor combinations (Post-treatment and Misinfo). Point estimates are reported in the upper cell and standard errors, clustered at the user level, reported in parentheses in the bottom cell. z-ratios are reported in brackets.

Treatment effects estimates for specifications that include Post-Tactic ID fixed effects are not reported since all tactics are misinformation.

# Models' predictions
models <- c("Model 1: Baseline",
            "Model 2: User ID FE",
            "Model 3: User ID FE + Post domain FE",
            "Model 4: User ID FE + Post tactic",
            "Model 5: User ID FE + Post domain x Post tactic",
            "Model 6: User ID FE + Post ID FE")
list_models <- list(baseline_logit,fe1_logit,fe2_logit,fe3_logit,fe4_logit,fe5_logit)
treatmentLevels <- unique(panel_2$treatment)

second_fixed_effects <- list("",
                             "",
                             c(fact = unique(panel_2$fact)),
                             c(fact = unique(panel_2$type)),
                             list(type = unique(panel_2$type),fact = unique(panel_2$fact)),
                             c(user = unique(panel_2$post_id)))

second_fixed_effects_name <- list("","","fact","type",c("type","fact"),"post_id")

second_fixed_effects_feglm <- c("share ~ treatment", 
                                "share ~ treatment",
                              "share ~ treatment + factor(fact)",
                              "share ~ treatment + factor(type)",
                              "share ~ treatment + factor(fact)*factor(type)",
                              "share ~ treatment + factor(post_id)")

for (m in 1:length(models)) {
  # output df
  prediction_df <- expand.grid(treatment = unique(panel_2$treatment),
                post = c(0, 1),
                post_is_misinfo = c(0, 1),
                prediction = NA,
                prediction_se = NA)
  
  for (treatment in unique(panel_2$treatment)) {
    for (post in c(0,1)) {
      for (misinfo in c(0,1)) {
        
        # Create new data
        # 1 vs. 2 fixed effects
        # type
        if (m %in% c(2,3,4,6)) {
          predictorVariables <- expand.grid(treatment = treatment,
                                            post = post,
                                            post_is_misinfo = misinfo,
                                            user = unique(panel_2$user[panel_2$treatment == treatment]),
                                            second_fixed_effects_name = second_fixed_effects[[m]])
        } 
        if (m %in% c(5)) {
          predictorVariables <- expand.grid(treatment = treatment,
                                            post = post,
                                            post_is_misinfo = misinfo,
                                            user = unique(panel_2$user[panel_2$treatment == treatment]),
                                            second_fixed_effects_name = second_fixed_effects[[m]][[1]],
                                            second_fixed_effects_name2 = second_fixed_effects[[m]][[2]])
        }
        
        
        if (m %in% c(2)) {
          predictorVariables <- predictorVariables %>% select(-second_fixed_effects_name)
        }
        if (m %in% c(3,4,6)) {
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name"] <- second_fixed_effects_name[m]
        } 
        if (m == 5) {
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name"] <- second_fixed_effects_name[[m]][1]
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name2"] <- second_fixed_effects_name[[m]][2]
        }
        
        # predicted value
        if (m != 1) {
  
        predicted_shares <- predict(list_models[[m]], newdata = predictorVariables)
        predictorVariables$prediction <- predicted_shares
          
        # mean of predicted value
        prediction_df$prediction[prediction_df$treatment == treatment & prediction_df$post == post & prediction_df$post_is_misinfo == misinfo] <- format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,mean)[,4], digits = 5)
        # se of predicted value
        prediction_df$prediction_se[prediction_df$treatment == treatment & prediction_df$post == post & prediction_df$post_is_misinfo == misinfo] <- paste0("(",format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,se_cont)[,4], digits = 4),")")
        
        }
      }
    }
  }
  
  # predicted value
  if (m == 1) {
    
    # Table with prediction values
    treatmentLevels <- unique(panel_2$treatment)
    predictorVariables <- expand.grid(treatment = treatmentLevels,
                                      post = c(0, 1),
                                      post_is_misinfo = c(0, 1))
    
    predictions <- predict(baseline_logit, newdata = predictorVariables, type = "response", se.fit = TRUE)
    prediction_df <- predictorVariables
    prediction_df$prediction <- format(predictions$fit, digits = 4)
    prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")
    
    
    emm_res <- emmeans(baseline_logit, specs = pairwise ~ treatment | post * post_is_misinfo)
    contrast_res <- contrast(emm_res, method = "revpairwise")
    
    contrast_df <- as.data.frame(contrast_res) %>% select(post, post_is_misinfo, estimate, SE, z.ratio)
    contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))) %>%
      mutate(estimate = format(estimate, digits = 4)) %>%
      mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
      select(treatment, post, post_is_misinfo, estimate)
    
     prediction_df <- left_join(prediction_df, contrast_df, 
                            by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    
  }
  
    # calculate difference between Facts Baseline and all other treatments
    prediction_df <- prediction_df %>%
    group_by(post,post_is_misinfo) %>%
    mutate(lag = ifelse(treatment == "Emotions",
                        prediction, NA)) %>%
    tidyr::fill(lag, .direction = "up") %>%
    ungroup() %>% 
      mutate(te = ifelse(treatment == "Facts Baseline",
                                     format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
      select(-lag) %>%
      mutate(te = ifelse(is.na(te),"",te))
  
    if (m %in% c(2,3,6)) {
     # predicted treatment effects
      contrast_df <- data.frame()
        for (p in c(0,1)) {
        for (mis in c(0,1)) {
          
          fixed_effect_model <- feglm(as.formula(second_fixed_effects_feglm[m]),panel_2 %>% filter(post == p & post_is_misinfo == mis), family = binomial(link = "logit"), cluster = "user")
          
          # obtain data frame with estimate, std error, and z value
          fixed_effect_model_df_add <- data.frame(
            treatment = unique(panel_2$treatment),
            estimate = format(coef(fixed_effect_model), digits = 4),
            SE = sqrt(diag(vcov(fixed_effect_model))),
            z.ratio = coef(fixed_effect_model) / sqrt(diag(vcov(fixed_effect_model))),
            post = p,
            post_is_misinfo = mis
          ) 
          # make rownames a column
          fixed_effect_model_df_add <- rownames_to_column(fixed_effect_model_df_add, var = "treatment2") %>% 
            filter(treatment == "Emotions" & treatment2 == "treatmentEmotions") %>% select(-treatment2) %>%
            mutate(zratio = paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))
          fixed_effect_model_df_add <- rbind(fixed_effect_model_df_add %>% mutate(treatment = "Facts Baseline"),fixed_effect_model_df_add %>% mutate(treatment = "Emotions")) %>%
            mutate(estimate = ifelse(treatment == "Emotions", zratio, estimate)) %>% 
            mutate(post = ifelse(post == 0,as.numeric(0),as.numeric(1)),
                   post_is_misinfo = ifelse(post_is_misinfo == 0,as.numeric(0),as.numeric(1))) %>%
            select(treatment, post, post_is_misinfo, estimate)
          contrast_df <- rbind(contrast_df, fixed_effect_model_df_add)
        }
        }
        
       prediction_df <- left_join(prediction_df, contrast_df, 
                                by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    }
    
    if (m %in% c(4,5)) {
      prediction_df$estimate <- ""
    }
    

    prediction_df <- prediction_df %>% select(treatment,post,post_is_misinfo,prediction,prediction_se,te,estimate)
    
    prediction_df <- prediction_df %>% arrange(post,post_is_misinfo)

  k <- knitr::kable(prediction_df, caption = models[m],
                         col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","log odds ratio<br>Emotions/Facts"))
  print(k)
}
Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) -0.0059 0.027609
Emotions 0 0 0.6888 (0.006238) (0.04131); [0.6683]
Facts Baseline 0 1 0.5386 (0.004810) -0.0021 0.008161
Emotions 0 1 0.5407 (0.004748) (0.02721); [0.3000]
Facts Baseline 1 0 0.6071 (0.006665) 0.0879 -0.358022
Emotions 1 0 0.5192 (0.006732) (0.03883); [ -9.2196]
Facts Baseline 1 1 0.4650 (0.004813) 0.1120 -0.465472
Emotions 1 1 0.3530 (0.004553) (0.02778); [-16.7557]
Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68925 (0.005604) -0.01342 0.02761
Emotions 0 0 0.70267 (0.005263) (0.05311); [0.5198]
Facts Baseline 0 1 0.52269 (0.00624) -0.01768 0.008161
Emotions 0 1 0.54037 (0.005841) (0.04415); [0.1849]
Facts Baseline 1 0 0.60172 (0.006054) 0.08481 -0.358
Emotions 1 0 0.51691 (0.005858) (0.05135); [-6.972]
Facts Baseline 1 1 0.43763 (0.006211) 0.10281 -0.4655
Emotions 1 1 0.33482 (0.005444) (0.0466); [-9.99]
Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69121 (0.00166) -0.00958 0.03113
Emotions 0 0 0.70079 (0.001567) (0.05517); [0.5643]
Facts Baseline 0 1 0.52177 (0.001855) -0.01927 0.02062
Emotions 0 1 0.54104 (0.001752) (0.04658); [0.4428]
Facts Baseline 1 0 0.60301 (0.001798) 0.08370 -0.38807
Emotions 1 0 0.51931 (0.001759) (0.05393); [-7.196]
Facts Baseline 1 1 0.43752 (0.001843) 0.10386 -0.5043
Emotions 1 1 0.33366 (0.001639) (0.04944); [-10.2]
Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.65503 (0.002921) -0.01387
Emotions 0 0 0.6689 (0.002743)
Facts Baseline 0 1 0.53518 (0.003128) -0.01777
Emotions 0 1 0.55295 (0.00293)
Facts Baseline 1 0 0.56467 (0.0031) 0.08605
Emotions 1 0 0.47862 (0.002942)
Facts Baseline 1 1 0.4501 (0.003131) 0.10351
Emotions 1 1 0.34659 (0.002766)
Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69229 (0.0008727) -0.00994
Emotions 0 0 0.70223 (0.0008224)
Facts Baseline 0 1 0.52038 (0.0009758) -0.01928
Emotions 0 1 0.53966 (0.0009235)
Facts Baseline 1 0 0.60788 (0.0009433) 0.08208
Emotions 1 0 0.5258 (0.0009261)
Facts Baseline 1 1 0.43821 (0.0009701) 0.10815
Emotions 1 1 0.33006 (0.0008621)
Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.85217 (0.0006642) -0.00605 0.03113
Emotions 0 0 0.85822 (0.0006231) (0.05517); [0.5643]
Facts Baseline 0 1 0.44451 (0.001027) -0.01704 0.0186
Emotions 0 1 0.46155 (0.0009845) (0.04755); [0.3911]
Facts Baseline 1 0 0.79877 (0.0007798) 0.05690 -0.38807
Emotions 1 0 0.74187 (0.0008368) (0.05393); [-7.196]
Facts Baseline 1 1 0.3698 (0.000989) 0.09526 -0.53448
Emotions 1 1 0.27454 (0.0008516) (0.05087); [-10.51]



Click for All treatment arms
# version 2: all treatment arms
formula_fe1_all_logit <- "share ~ treatment*post*post_is_misinfo | user"
fe1_all_logit <- feglm(as.formula(formula_fe1_all_logit),panel, family = binomial(link = "logit"))

formula_fe2_all_logit <- "share ~ treatment*post*post_is_misinfo + factor(fact) | user"
fe2_all_logit <- feglm(as.formula(formula_fe2_all_logit),panel, family = binomial(link = "logit"))

formula_fe3_all_logit <- "share ~ treatment*post*post_is_misinfo + factor(type) | user"
fe3_all_logit <- feglm(as.formula(formula_fe3_all_logit),panel, family = binomial(link = "logit"))

formula_fe4_all_logit <- "share ~ treatment*post*post_is_misinfo + factor(fact)*factor(type) | user"
fe4_all_logit <- feglm(as.formula(formula_fe4_all_logit),panel, family = binomial(link = "logit"))

formula_fe5_all_logit <- "share ~ treatment*post*post_is_misinfo + factor(post_id) | user"
fe5_all_logit <- feglm(as.formula(formula_fe5_all_logit),panel, family = binomial(link = "logit"))



The sample includes all users who completed the post-survey (n = 8,684). We consider all 9 posts in the pre-treatment period (“pre”) and all 9 posts in the post-treatment period (i.e., “post”).


# Print model
headers <- c("Share (binary indicator)")
model_list <- list(baseline_all_logit,fe1_all_logit,fe2_all_logit,fe3_all_logit,fe4_all_logit,fe5_all_logit)
names <- unique(c(names(baseline_all_logit$coefficients),
                  names(fe1_all_logit$coefficients),
                  names(fe2_all_logit$coefficients),
                  names(fe3_all_logit$coefficients),
                  names(fe4_all_logit$coefficients),
                  names(fe5_all_logit$coefficients)))
variable_labels_wide <- variable_mapping_long[names]

# out-of-sample R2
if (any(ls() %in% "R2oos_fe_alltreat_logit_all")) {
    R2oos_fe_alltreat_logit_all <- c(R2out_all,R2oos_fe_alltreat_logit_all)
} else {
    R2oos_fe_alltreat_logit_all <- rep("",length(model_list))
}

# remove blankrows
coef_names <- names
matrix_coeff_na <- expand.grid(coef_name = coef_names, model = seq(length(model_list)))
matrix_coeff_na$var <- 0
matrix_coeff_na$var_na <- 0
for (m in 1:length(model_list)) {
  na_coeff <- names(model_list[[m]]$coefficients)[is.na(model_list[[m]]$coefficients)]
  #na_coeff <- names(model_list[[m]]$coefficients[,1])[is.na(model_list[[m]]$coefficients[,1])] # felm
  for (c in na_coeff) {
    matrix_coeff_na$var[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1 # 1 if variable is in the model (not all models have all variables)
    matrix_coeff_na$var_na[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1
  }
}
matrix_coeff_na <- matrix_coeff_na %>% group_by(coef_name) %>% mutate(var = sum(var), var_na = sum(var_na)) %>% distinct(coef_name,var,var_na)
rows_to_omit <- as.vector(unique(matrix_coeff_na$coef_name[matrix_coeff_na$var_na != 0])) # omit if NA in all models
rows_to_omit <- gsub("\\^\\s","^",paste0("^",rows_to_omit,"$", collapse = "|"))
rows_to_omit <- gsub("\\(","\\\\(",gsub("\\)","\\\\)",rows_to_omit))

# standard errors
standard_errors <- list(baseline_all_logit$se,fe1_all_logit$se,fe2_all_logit$se,fe3_all_logit$se,fe4_all_logit$se,fe5_all_logit$se)

# keep variables
keep <- list("treatmentFacts Baseline:post:post_is_misinfo" = "Facts Baseline x 1[Post-treatment] x 1[Misinfo]",
             "treatmentNo-course Baseline:post_is_misinfo" = "No-course Baseline x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentReasoning:post:post_is_misinfo" = "Reasoning x 1[Post-treatment] x 1[Misinfo]",
             "treatmentCombo:post:post_is_misinfo" = "Combo x 1[Post-treatment] x 1[Misinfo]",
             
             "treatmentFacts Baseline:post" = "Facts Baseline x 1[Post-treatment]",
             "treatmentNo-course Baseline" = "No-course Baseline x 1[Post-treatment]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentReasoning:post" = "Reasoning x 1[Post-treatment]",
             "treatmentCombo:post" = "Combo x 1[Post-treatment]",
             
             "treatmentFacts Baseline:post_is_misinfo" = "Facts Baseline x 1[Misinfo]",
             "treatmentNo-course Baseline:post_is_misinfo" = "No-course Baseline x 1[Misinfo]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]",
             "treatmentReasoning:post_is_misinfo" = "Reasoning x 1[Misinfo]",
             "treatmentCombo:post_is_misinfo" = "Combo x 1[Misinfo]")

# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      override.se = standard_errors,
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_fe_alltreat_logit_all)),
                      reorder.gof = c(8,6,7,9,10,11,5,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0066 0.0182 0.0295 0.0185 0.0243 0.0243
  (0.0513) (0.0634) (0.0667) (0.0635) (0.0679) (0.0679)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0066 0.0182 0.0295 0.0185 0.0243 0.0243
  (0.0513) (0.0634) (0.0667) (0.0635) (0.0679) (0.0679)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0880 -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0688) (0.0836) (0.0881) (0.0836) (0.0898) (0.0898)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0778 0.1178* 0.0982 0.1172* 0.0620 0.0620
  (0.0703) (0.0861) (0.0908) (0.0862) (0.0925) (0.0925)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0536 -0.0845 -0.0937 -0.0854 -0.1563** -0.1563**
  (0.0696) (0.0855) (0.0901) (0.0855) (0.0918) (0.0918)
No-course Baseline x 1[Post-treatment] 0.1001***          
  (0.0429)          
Emotions x 1[Post-treatment] -0.3856*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0567) (0.0691) (0.0728) (0.0691) (0.0737) (0.0737)
Reasoning x 1[Post-treatment] -0.3314*** -0.4785*** -0.5282*** -0.4787*** -0.5422*** -0.5422***
  (0.0582) (0.0714) (0.0752) (0.0714) (0.0762) (0.0762)
Combo x 1[Post-treatment] -0.3624*** -0.5308*** -0.5848*** -0.5311*** -0.6072*** -0.6072***
  (0.0574) (0.0707) (0.0744) (0.0707) (0.0754) (0.0754)
Emotions x 1[Misinfo] -0.0194 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0495) (0.0605) (0.0637) (0.0606) (0.0648) (0.0648)
Reasoning x 1[Misinfo] -0.0930** -0.1165** -0.0821 -0.1164** -0.0846 -0.0846
  (0.0508) (0.0627) (0.0660) (0.0627) (0.0671) (0.0671)
Combo x 1[Misinfo] 0.0140 0.0352 0.0522 0.0354 0.0620 0.0620
  (0.0501) (0.0619) (0.0651) (0.0619) (0.0663) (0.0663)
Log Likelihood -104554.8012 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
AIC 209149.6024          
BIC 209348.7946          
Deviance 209109.6024 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Num. obs. 156312 137250 137250 137250 137250 137250
Pseudo R2   0.1384 0.2024 0.1393 0.2296 0.2296
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates No No No No No No
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.
# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
Click to view the full table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      override.se = standard_errors,
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects"),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      omit.coef = rows_to_omit,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = rep("No",length(model_list)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "\\textit{{Out-of-sample R}$^2$" = c(R2oos_fe_alltreat_logit_all)),
                      reorder.gof = c(8,6,7,9,10,11,5,1,2,3,4)
)
html_table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.7670***          
  (0.0293)          
No-course Baseline 0.1001***          
  (0.0429)          
Emotions 0.0276          
  (0.0413)          
Reasoning 0.0982**          
  (0.0425)          
Combo 0.0164          
  (0.0418)          
1[Post-treatment] -0.3319*** -0.5002*** -0.5575*** -0.5005*** -0.5596*** -0.5596***
  (0.0405) (0.0498) (0.0525) (0.0499) (0.0532) (0.0532)
1[Misinfo] -0.6121*** -0.9234*** -1.0396*** -0.8461*** -1.0772*** -3.0886***
  (0.0351) (0.0435) (0.0459) (0.0449) (0.0903) (0.0913)
No-course Baseline x 1[Post-treatment] 0.2176*** 0.3289*** 0.3843*** 0.3290*** 0.3850*** 0.3850***
  (0.0597) (0.0733) (0.0771) (0.0733) (0.0780) (0.0780)
Emotions x 1[Post-treatment] -0.3856*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0567) (0.0691) (0.0728) (0.0691) (0.0737) (0.0737)
Reasoning x 1[Post-treatment] -0.3314*** -0.4785*** -0.5282*** -0.4787*** -0.5422*** -0.5422***
  (0.0582) (0.0714) (0.0752) (0.0714) (0.0762) (0.0762)
Combo x 1[Post-treatment] -0.3624*** -0.5308*** -0.5848*** -0.5311*** -0.6072*** -0.6072***
  (0.0574) (0.0707) (0.0744) (0.0707) (0.0754) (0.0754)
No-course Baseline x 1[Misinfo] 0.0066 0.0182 0.0295 0.0185 0.0243 0.0243
  (0.0513) (0.0634) (0.0667) (0.0635) (0.0679) (0.0679)
Emotions x 1[Misinfo] -0.0194 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0495) (0.0605) (0.0637) (0.0606) (0.0648) (0.0648)
Reasoning x 1[Misinfo] -0.0930** -0.1165** -0.0821 -0.1164** -0.0846 -0.0846
  (0.0508) (0.0627) (0.0660) (0.0627) (0.0671) (0.0671)
Combo x 1[Misinfo] 0.0140 0.0352 0.0522 0.0354 0.0620 0.0620
  (0.0501) (0.0619) (0.0651) (0.0619) (0.0663) (0.0663)
1[Post-treatment] x 1[Misinfo] 0.0368 0.0492 0.0613 0.0485 0.0507 0.0507
  (0.0489) (0.0602) (0.0635) (0.0602) (0.0647) (0.0647)
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0008 0.0069 -0.0022 0.0073 0.0198 0.0198
  (0.0717) (0.0881) (0.0928) (0.0881) (0.0945) (0.0945)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0880 -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0688) (0.0836) (0.0881) (0.0836) (0.0898) (0.0898)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0778 0.1178* 0.0982 0.1172* 0.0620 0.0620
  (0.0703) (0.0861) (0.0908) (0.0862) (0.0925) (0.0925)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0536 -0.0845 -0.0937 -0.0854 -0.1563** -0.1563**
  (0.0696) (0.0855) (0.0901) (0.0855) (0.0918) (0.0918)
Post domain 2     -1.3458***   -1.3896***  
      (0.0369)   (0.0708)  
Post domain 3     -1.8926***   -2.2086***  
      (0.0376)   (0.0705)  
Post domain 4     -1.2128***   -1.7401***  
      (0.0368)   (0.0704)  
Post domain 5     0.4049***   0.0051  
      (0.0385)   (0.0773)  
Post domain 6     0.1237***   0.4527***  
      (0.0378)   (0.0803)  
Post domain 7     -1.5746***   -1.4228***  
      (0.0371)   (0.0705)  
Post domain 8     -1.4724***   -0.9538***  
      (0.0369)   (0.0716)  
Post domain 9     0.2728***   -0.5281***  
      (0.0382)   (0.0737)  
Post domain 10     -0.3969***   -0.8059***  
      (0.0370)   (0.0724)  
Post domain 11     -1.0747***   -1.3501***  
      (0.0367)   (0.0705)  
Post domain 12     -0.7213***   -1.0828***  
      (0.0367)   (0.0716)  
Post domain 13     -1.0425***   -1.6220***  
      (0.0367)   (0.0704)  
Post domain 14     -1.8560***   -2.2721***  
      (0.0376)   (0.0708)  
Post domain 15     -1.2523***   -2.0199***  
      (0.0368)   (0.0707)  
1[Combo manipulation tactic]       -0.2264*** -0.3419***  
        (0.0188) (0.0802)  
1[Emotions manipulation tactic]       -0.0068 -0.5416***  
        (0.0187) (0.0788)  
Post domain 2 x 1[Combo manipulation tactic]         -0.1530*  
          (0.1077)  
Post domain 3 x 1[Combo manipulation tactic]         0.4818***  
          (0.1074)  
Post domain 4 x 1[Combo manipulation tactic]         0.7230***  
          (0.1065)  
Post domain 5 x 1[Combo manipulation tactic]         0.6450***  
          (0.1126)  
Post domain 6 x 1[Combo manipulation tactic]         -2.2961***  
          (0.1154)  
Post domain 7 x 1[Combo manipulation tactic]         -0.1072  
          (0.1076)  
Post domain 8 x 1[Combo manipulation tactic]         0.0724  
          (0.1068)  
Post domain 9 x 1[Combo manipulation tactic]         1.1394***  
          (0.1101)  
Post domain 10 x 1[Combo manipulation tactic]         0.3736***  
          (0.1075)  
Post domain 11 x 1[Combo manipulation tactic]         0.6002***  
          (0.1063)  
Post domain 12 x 1[Combo manipulation tactic]         0.0418  
          (0.1069)  
Post domain 13 x 1[Combo manipulation tactic]         0.5858***  
          (0.1067)  
Post domain 14 x 1[Combo manipulation tactic]         0.3450***  
          (0.1086)  
Post domain 15 x 1[Combo manipulation tactic]         0.7389***  
          (0.1066)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4478***  
          (0.1086)  
Post domain 3 x 1[Emotions manipulation tactic]         0.9334***  
          (0.1066)  
Post domain 4 x 1[Emotions manipulation tactic]         0.5846***  
          (0.1055)  
Post domain 5 x 1[Emotions manipulation tactic]         0.8014***  
          (0.1117)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9194***  
          (0.1172)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0346  
          (0.1068)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.9456***  
          (0.1100)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2361***  
          (0.1085)  
Post domain 10 x 1[Emotions manipulation tactic]         0.8795***  
          (0.1065)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0799  
          (0.1062)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1423***  
          (0.1062)  
Post domain 13 x 1[Emotions manipulation tactic]         1.4266***  
          (0.1044)  
Post domain 14 x 1[Emotions manipulation tactic]         0.8221***  
          (0.1073)  
Post domain 15 x 1[Emotions manipulation tactic]         2.4403***  
          (0.1059)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.4651***  
          (0.1057)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.2843***  
          (0.1098)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.8423***  
          (0.1057)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.2026**  
          (0.1121)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3527***  
          (0.1174)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.8764***  
          (0.1090)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.9427***  
          (0.1128)  
Post domain 9 x 1[Reasoning manipulation tactic]         1.0028***  
          (0.1115)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4064***  
          (0.1076)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.5144***  
          (0.1063)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2580***  
          (0.1063)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3539***  
          (0.1060)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.4395***  
          (0.1069)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0085  
          (0.1077)  
Post 2 indicator           -1.3896***
            (0.0708)
Post 3 indicator           -2.2086***
            (0.0705)
Post 4 indicator           -1.7401***
            (0.0704)
Post 5 indicator           0.0051
            (0.0773)
Post 6 indicator           0.4527***
            (0.0803)
Post 7 indicator           -1.4228***
            (0.0705)
Post 8 indicator           -0.9538***
            (0.0716)
Post 9 indicator           -0.5281***
            (0.0737)
Post 10 indicator           -0.8059***
            (0.0724)
Post 11 indicator           -1.3501***
            (0.0705)
Post 12 indicator           -1.0828***
            (0.0716)
Post 13 indicator           -1.6220***
            (0.0704)
Post 14 indicator           -2.2721***
            (0.0708)
Post 15 indicator           -2.0199***
            (0.0707)
Post 16 indicator           1.6695***
            (0.0809)
Post 17 indicator           0.1269*
            (0.0815)
Post 18 indicator           -0.0573
            (0.0815)
Post 19 indicator           0.6525***
            (0.0802)
Post 20 indicator           2.3196***
            (0.0822)
Post 21 indicator           -0.1740**
            (0.0828)
Post 22 indicator           0.1395**
            (0.0816)
Post 23 indicator           0.7881***
            (0.0794)
Post 24 indicator           2.2808***
            (0.0823)
Post 25 indicator           1.2372***
            (0.0797)
Post 26 indicator           0.9195***
            (0.0800)
Post 27 indicator           0.6285***
            (0.0796)
Post 28 indicator           0.6333***
            (0.0805)
Post 29 indicator           -0.2576***
            (0.0826)
Post 30 indicator           0.3885***
            (0.0810)
Post 31 indicator           1.4698***
            (0.0795)
Post 32 indicator           -0.3676***
            (0.0839)
Post 33 indicator           0.1946***
            (0.0818)
Post 34 indicator           0.3143***
            (0.0803)
Post 35 indicator           2.2763***
            (0.0825)
Post 36 indicator           2.8419***
            (0.0871)
Post 37 indicator           0.0124
            (0.0819)
Post 38 indicator           -0.4296***
            (0.0851)
Post 39 indicator           2.1778***
            (0.0814)
Post 40 indicator           1.5434***
            (0.0798)
Post 41 indicator           0.0398
            (0.0810)
Post 42 indicator           1.5293***
            (0.0802)
Post 43 indicator           1.2744***
            (0.0789)
Post 44 indicator           0.0198
            (0.0824)
Post 45 indicator           1.8902***
            (0.0813)
Post 46 indicator           2.0114***
            (0.0810)
Post 47 indicator           1.0869***
            (0.0793)
Post 48 indicator           -0.4814***
            (0.0848)
Post 49 indicator           1.1137***
            (0.0797)
Post 50 indicator           2.2191***
            (0.0820)
Post 51 indicator           2.8168***
            (0.0864)
Post 52 indicator           -0.2878***
            (0.0836)
Post 53 indicator           -0.8851***
            (0.0876)
Post 54 indicator           2.4861***
            (0.0845)
Post 55 indicator           1.6118***
            (0.0804)
Post 56 indicator           1.1756***
            (0.0802)
Post 57 indicator           1.1865***
            (0.0794)
Post 58 indicator           0.7433***
            (0.0800)
Post 59 indicator           0.1789**
            (0.0811)
Log Likelihood -104554.8012 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
AIC 209149.6024          
BIC 209348.7946          
Deviance 209109.6024 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Num. obs. 156312 137250 137250 137250 137250 137250
Pseudo R2   0.1384 0.2024 0.1393 0.2296 0.2296
\textit{{Out-of-sample R}\(^2\)            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates No No No No No No
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.
cat('</details>')


Prediction

Standard errors of the share predicted value are estimated using the Delta method. Treatment effects standard errors are clustered at the user level and reported in parentheses. z-ratios are reported in brackets. Treatment effects estimates for specifications that include Post-Tactic ID fixed effects are not reported since all tactics are misinformation.

# Models' predictions
models <- c("Model 1: Baseline",
            "Model 2: User ID FE",
            "Model 3: User ID FE + Post domain FE",
            "Model 4: User ID FE + Post tactic",
            "Model 5: User ID FE + Post domain x Post tactic",
            "Model 6: User ID FE + Post ID FE")
list_models <- list(baseline_all_logit,fe1_all_logit,fe2_all_logit,fe3_all_logit,fe4_all_logit,fe5_all_logit)
treatmentLevels <- unique(panel$treatment)

second_fixed_effects <- list("",
                             "",
                             c(fact = unique(panel$fact)),
                             c(fact = unique(panel$type)),
                             list(type = unique(panel$type),fact = unique(panel$fact)),
                             c(user = unique(panel$post_id)))

second_fixed_effects_name <- list("","","fact","type",c("type","fact"),"post_id")

second_fixed_effects_feglm <- c("share ~ treatment", 
                                "share ~ treatment",
                              "share ~ treatment + factor(fact)",
                              "share ~ treatment + factor(type)",
                              "share ~ treatment + factor(fact)*factor(type)",
                              "share ~ treatment + factor(post_id)")

for (m in 1:length(models)) {
  # output df
  prediction_df <- expand.grid(treatment = unique(panel$treatment),
                post = c(0, 1),
                post_is_misinfo = c(0, 1),
                prediction = NA,
                prediction_se = NA)
  
  for (treatment in unique(panel$treatment)) {
    for (post in c(0,1)) {
      for (misinfo in c(0,1)) {
        
        # Create new data
        # 1 vs. 2 fixed effects
        # type
        if (m %in% c(2,3,4,6)) {
          predictorVariables <- expand.grid(treatment = treatment,
                                            post = post,
                                            post_is_misinfo = misinfo,
                                            user = unique(panel$user[panel$treatment == treatment]),
                                            second_fixed_effects_name = second_fixed_effects[[m]])
        } 
        if (m %in% c(5)) {
          predictorVariables <- expand.grid(treatment = treatment,
                                            post = post,
                                            post_is_misinfo = misinfo,
                                            user = unique(panel$user[panel$treatment == treatment]),
                                            second_fixed_effects_name = second_fixed_effects[[m]][[1]],
                                            second_fixed_effects_name2 = second_fixed_effects[[m]][[2]])
        }
        
        
        if (m %in% c(2)) {
          predictorVariables <- predictorVariables %>% select(-second_fixed_effects_name)
        }
        if (m %in% c(3,4,6)) {
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name"] <- second_fixed_effects_name[m]
        } 
        if (m == 5) {
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name"] <- second_fixed_effects_name[[m]][1]
          names(predictorVariables)[names(predictorVariables) == "second_fixed_effects_name2"] <- second_fixed_effects_name[[m]][2]
        }
        
        # predicted value
        if (m != 1) {
  
        predicted_shares <- predict(list_models[[m]], newdata = predictorVariables)
        predictorVariables$prediction <- predicted_shares
          
        # mean of predicted value
        prediction_df$prediction[prediction_df$treatment == treatment & prediction_df$post == post & prediction_df$post_is_misinfo == misinfo] <- format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,mean)[,4], digits = 5)
        # se of predicted value
        prediction_df$prediction_se[prediction_df$treatment == treatment & prediction_df$post == post & prediction_df$post_is_misinfo == misinfo] <- paste0("(",format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,se_cont)[,4], digits = 4),")")
        
        }
      }
    }
  }
  
  # predicted value
  if (m == 1) {
    
    # Table with prediction values
    treatmentLevels <- unique(panel$treatment)
    predictorVariables <- expand.grid(treatment = treatmentLevels,
                                      post = c(0, 1),
                                      post_is_misinfo = c(0, 1))
    
    predictions <- predict(baseline_all_logit, newdata = predictorVariables, type = "response", se.fit = TRUE)
    prediction_df <- predictorVariables
    prediction_df$prediction <- format(predictions$fit, digits = 4)
    prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")
    
    
    emm_res <- emmeans(baseline_all_logit, specs = pairwise ~ treatment | post * post_is_misinfo)
    contrast_res <- contrast(emm_res, method = "revpairwise")
    
    contrast_df <- as.data.frame(contrast_res) %>% filter(contrast == "Emotions - Facts Baseline") %>%
      select(post, post_is_misinfo, estimate, SE, z.ratio)
    contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))) %>%
      mutate(estimate = format(estimate, digits = 4)) %>%
      mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
      select(treatment, post, post_is_misinfo, estimate) %>%
      mutate(estimate = ifelse(is.na(estimate),"",estimate))
    
     prediction_df <- left_join(prediction_df, contrast_df, 
                            by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    
  }
  
    # calculate difference between Facts Baseline and all other treatments
    prediction_df <- prediction_df %>%
    group_by(post,post_is_misinfo) %>%
    mutate(lag = ifelse(treatment == "Emotions",
                        prediction, NA)) %>%
    tidyr::fill(lag, .direction = "up") %>%
    ungroup() %>% 
      mutate(te = ifelse(treatment == "Facts Baseline",
                                     format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
      select(-lag) %>%
      mutate(te = ifelse(is.na(te),"",te))
  
    if (m %in% c(2,3,6)) {
     # predicted treatment effects
      contrast_df <- data.frame()
        for (p in c(0,1)) {
        for (mis in c(0,1)) {
          
          fixed_effect_model <- feglm(as.formula(second_fixed_effects_feglm[m]),panel %>% filter(post == p & post_is_misinfo == mis), family = binomial(link = "logit"), cluster = "user")
          
          # obtain data frame with estimate, std error, and z value
          fixed_effect_model_df_add <- data.frame(
            treatment = c("No-course Baseline","Emotions","Reasoning","Combo"),
            estimate = format(coef(fixed_effect_model)[grepl("treatment",names(coef(fixed_effect_model)))], digits = 4),
            SE = sqrt(diag(vcov(fixed_effect_model)))[grepl("treatment",names(diag(vcov(fixed_effect_model))))],
            z.ratio = coef(fixed_effect_model)[grepl("treatment",names(coef(fixed_effect_model)))] / sqrt(diag(vcov(fixed_effect_model)))[grepl("treatment",names(diag(vcov(fixed_effect_model))))],
            post = p,
            post_is_misinfo = mis
          )
          # make rownames a column
          fixed_effect_model_df_add <- rownames_to_column(fixed_effect_model_df_add, var = "treatment2") %>% 
            filter(treatment == "Emotions" & treatment2 == "treatmentEmotions") %>% select(-treatment2) %>%
            mutate(zratio = paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))

          fixed_effect_model_df_add <- rbind(fixed_effect_model_df_add %>% mutate(treatment = "Facts Baseline"),fixed_effect_model_df_add %>% mutate(treatment = "Emotions")) %>%
            mutate(estimate = ifelse(treatment == "Emotions", zratio, estimate)) %>% 
            mutate(post = ifelse(post == 0,as.numeric(0),as.numeric(1)),
                   post_is_misinfo = ifelse(post_is_misinfo == 0,as.numeric(0),as.numeric(1))) %>%
            select(treatment, post, post_is_misinfo, estimate) %>%
            mutate(estimate = ifelse(is.na(estimate),"",estimate))
          
          contrast_df <- rbind(contrast_df, fixed_effect_model_df_add)
        }
        }
        
       prediction_df <- left_join(prediction_df, contrast_df, 
                                by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    }
    
    if (m %in% c(4,5)) {
      prediction_df$estimate <- ""
    }
    

    prediction_df <- prediction_df %>% select(treatment,post,post_is_misinfo,prediction,prediction_se,te,estimate)
    
    prediction_df <- prediction_df %>% arrange(post,post_is_misinfo) %>%
      mutate(estimate = ifelse(is.na(estimate),"",estimate))

  k <- knitr::kable(prediction_df, caption = models[m],
                         col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","log odds ratio<br>Emotions/Facts"))
  print(k)
}
Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) -0.0059 0.027609
Emotions 0 0 0.6888 (0.006238) (0.04131); [0.6683]
No-course Baseline 0 0 0.7041 (0.006531)
Reasoning 0 0 0.7037 (0.006413)
Combo 0 0 0.6864 (0.006422)
Facts Baseline 0 1 0.5386 (0.004810) -0.0021 0.008161
Emotions 0 1 0.5407 (0.004748) (0.02721); [0.3000]
No-course Baseline 0 1 0.5650 (0.005016)
Reasoning 0 1 0.5399 (0.004949)
Combo 0 1 0.5462 (0.004873)
Facts Baseline 1 0 0.6071 (0.006665) 0.0879 -0.358022
Emotions 1 0 0.5192 (0.006732) (0.03883); [ -9.2196]
No-course Baseline 1 0 0.6798 (0.006676)
Reasoning 1 0 0.5503 (0.006986)
Combo 1 0 0.5222 (0.006914)
Facts Baseline 1 1 0.4650 (0.004813) 0.1120 -0.465472
Emotions 1 1 0.3530 (0.004553) (0.02778); [-16.7557]
No-course Baseline 1 1 0.5461 (0.005038)
Reasoning 1 1 0.4040 (0.004873)
Combo 1 1 0.3715 (0.004729)
Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68925 (0.005604) -0.01342 0.02761
Emotions 0 0 0.70267 (0.005263) (0.05311); [0.5198]
No-course Baseline 0 0 0.70429 (0.005697)
Reasoning 0 0 0.72166 (0.005308)
Combo 0 0 0.69983 (0.005546)
Facts Baseline 0 1 0.52269 (0.00624) -0.01768 0.008161
Emotions 0 1 0.54037 (0.005841) (0.04415); [0.1849]
No-course Baseline 0 1 0.5404 (0.006335)
Reasoning 0 1 0.53448 (0.006122)
Combo 0 1 0.54118 (0.006203)
Facts Baseline 1 0 0.60172 (0.006054) 0.08481 -0.3580
Emotions 1 0 0.51691 (0.005858) (0.05135); [-6.972]
No-course Baseline 1 0 0.67559 (0.005877)
Reasoning 1 0 0.54632 (0.006106)
Combo 1 0 0.51409 (0.006231)
Facts Baseline 1 1 0.43763 (0.006211) 0.10281 -0.4655
Emotions 1 1 0.33482 (0.005444) (0.04659); [-9.99]
No-course Baseline 1 1 0.51809 (0.006354)
Reasoning 1 1 0.3792 (0.005923)
Combo 1 1 0.34352 (0.005854)
Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69117 (0.001652) -0.00973 0.03138
Emotions 0 0 0.7009 (0.001559) (0.05497); [0.5709]
No-course Baseline 0 0 0.704 (0.001697)
Reasoning 0 0 0.72003 (0.001587)
Combo 0 0 0.7001 (0.001636)
Facts Baseline 0 1 0.5218 (0.001844) -0.01924 0.02028
Emotions 0 1 0.54104 (0.001742) (0.0465); [0.4361]
No-course Baseline 0 1 0.53852 (0.001899)
Reasoning 0 1 0.53724 (0.001835)
Combo 0 1 0.54042 (0.001837)
Facts Baseline 1 0 0.60298 (0.001789) 0.08375 -0.3855
Emotions 1 0 0.51923 (0.001749) (0.05358); [-7.195]
No-course Baseline 1 0 0.67769 (0.001748)
Reasoning 1 0 0.54351 (0.001832)
Combo 1 0 0.51396 (0.001846)
Facts Baseline 1 1 0.43752 (0.001833) 0.10383 -0.5018
Emotions 1 1 0.33369 (0.001629) (0.0492); [-10.2]
No-course Baseline 1 1 0.51867 (0.001904)
Reasoning 1 1 0.378 (0.001778)
Combo 1 1 0.34425 (0.001736)
Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.67934 (0.002842) -0.01356
Emotions 0 0 0.6929 (0.002669)
No-course Baseline 0 0 0.69447 (0.002889)
Reasoning 0 0 0.71206 (0.002698)
Combo 0 0 0.69006 (0.002813)
Facts Baseline 0 1 0.52636 (0.003126) -0.01773
Emotions 0 1 0.54409 (0.002927)
No-course Baseline 0 1 0.54415 (0.003175)
Reasoning 0 1 0.53824 (0.003068)
Combo 0 1 0.54486 (0.003107)
Facts Baseline 1 0 0.59093 (0.003054) 0.08524
Emotions 1 0 0.50569 (0.002938)
No-course Baseline 1 0 0.66533 (0.002976)
Reasoning 1 0 0.53503 (0.00307)
Combo 1 0 0.50301 (0.003126)
Facts Baseline 1 1 0.44124 (0.003116) 0.10308
Emotions 1 1 0.33816 (0.002738)
No-course Baseline 1 1 0.52186 (0.003185)
Reasoning 1 1 0.38274 (0.002977)
Combo 1 1 0.34685 (0.002943)
Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68894 (0.0008706) -0.01016
Emotions 0 0 0.6991 (0.0008202)
No-course Baseline 0 0 0.70137 (0.0008962)
Reasoning 0 0 0.71754 (0.0008404)
Combo 0 0 0.69786 (0.0008633)
Facts Baseline 0 1 0.52146 (0.0009691) -0.01928
Emotions 0 1 0.54074 (0.0009167)
No-course Baseline 0 1 0.53655 (0.001002)
Reasoning 0 1 0.53674 (0.0009685)
Combo 0 1 0.54125 (0.0009662)
Facts Baseline 1 0 0.60441 (0.0009391) 0.08204
Emotions 1 0 0.52237 (0.0009199)
No-course Baseline 1 0 0.67592 (0.0009226)
Reasoning 1 0 0.54666 (0.000966)
Combo 1 0 0.51662 (0.0009707)
Facts Baseline 1 1 0.43918 (0.0009635) 0.10822
Emotions 1 1 0.33096 (0.0008554)
No-course Baseline 1 1 0.51929 (0.001005)
Reasoning 1 1 0.37521 (0.0009374)
Combo 1 1 0.33953 (0.0009105)
Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.8489 (0.0006644) -0.00631 0.03138
Emotions 0 0 0.85521 (0.000623) (0.05497); [0.5709]
No-course Baseline 0 0 0.85647 (0.0006846)
Reasoning 0 0 0.86734 (0.000623)
Combo 0 0 0.85431 (0.0006533)
Facts Baseline 0 1 0.44608 (0.00102) -0.01703 0.01916
Emotions 0 1 0.46311 (0.0009768) (0.04737); [0.4045]
No-course Baseline 0 1 0.45829 (0.001066)
Reasoning 0 1 0.45894 (0.001033)
Combo 0 1 0.46436 (0.001027)
Facts Baseline 1 0 0.79462 (0.0007794) 0.05764 -0.3855
Emotions 1 0 0.73698 (0.000835) (0.05358); [-7.195]
No-course Baseline 1 0 0.84125 (0.0007225)
Reasoning 1 0 0.75676 (0.0008513)
Combo 1 0 0.73151 (0.0008824)
Facts Baseline 1 1 0.37102 (0.0009821) 0.09562 -0.5277
Emotions 1 1 0.2754 (0.0008449) (0.05031); [-10.49]
No-course Baseline 1 1 0.44229 (0.001061)
Reasoning 1 1 0.31358 (0.0009399)
Combo 1 1 0.28317 (0.0008995)




Covariates

# version 1: 2 treatment arms

covariate_list <- c(demographics_demeaned_treatment,
                    sharing_demeaned_treatment,
                    sharing_tactic_demeaned_treatment,
                    demographics_sharing_demeaned_treatment,
                    all_covariates_demeaned_treatment)

cov_estimates_list <- list()

for (cov_list in covariate_list) {

# Demographics
formula_cov1_logit <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list)
cov1_logit <- feglm(as.formula(formula_cov1_logit),panel_2, family = binomial(link = "logit"))

formula_cov2_logit <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list," | user")
cov2_logit <- feglm(as.formula(formula_cov2_logit),panel_2, family = binomial(link = "logit"))

# Misinfo and Non-misinfo sharing rates
formula_cov3_logit <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact) "," + ",cov_list," | user")
cov3_logit <- feglm(as.formula(formula_cov3_logit),panel_2, family = binomial(link = "logit"))

# Misinfo, Non-misinfo, and Tactic sharing rates
formula_cov4_logit <- paste0("share ~ treatment*post*post_is_misinfo + factor(type) "," + ",cov_list," | user")
cov4_logit <- feglm(as.formula(formula_cov4_logit),panel_2, family = binomial(link = "logit"))

# Demographics and Misinfo and Non-misinfo sharing rates
formula_cov5_logit <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact)*factor(type) "," + ",cov_list," | user")
cov5_logit <- feglm(as.formula(formula_cov5_logit),panel_2, family = binomial(link = "logit"))

# Demographics, Misinfo and Non-misinfo sharing rates, and Tactic sharing rates
formula_cov6_logit <- paste0("share ~ treatment*post*post_is_misinfo + factor(post_id) "," + ",cov_list," | user")
cov6_logit <- feglm(as.formula(formula_cov6_logit),panel_2, family = binomial(link = "logit"))

cov_estimates_list[[length(cov_estimates_list) + 1]] <- list(cov1_logit,cov2_logit,cov3_logit,cov4_logit,cov5_logit,cov6_logit)
}


covariate_list_names <- c("Demographics",
                          "Sharing rates",
                          "Tactic sharing rates",
                          "Demographics + Sharing rates",
                          "Demographics + Sharing rates + Tactic sharing rates")

for (cov in seq(length(covariate_list))) {

# Print model
headers <- c("Share (binary indicator)")
model_list <- cov_estimates_list[[cov]]
names <- unique(c(names(cov_estimates_list[[cov]][[1]]$coefficients),
                  names(cov_estimates_list[[cov]][[2]]$coefficients),
                  names(cov_estimates_list[[cov]][[3]]$coefficients),
                  names(cov_estimates_list[[cov]][[4]]$coefficients),
                  names(cov_estimates_list[[cov]][[5]]$coefficients),
                  names(cov_estimates_list[[cov]][[6]]$coefficients)))
variable_labels_wide <- variable_mapping_long[names]

# remove blankrows
coef_names <- names
matrix_coeff_na <- expand.grid(coef_name = coef_names, model = seq(length(model_list)))
matrix_coeff_na$var <- 0
matrix_coeff_na$var_na <- 0
for (m in 1:length(model_list)) {
  na_coeff <- names(model_list[[m]]$coefficients)[is.na(model_list[[m]]$coefficients)]
  for (c in na_coeff) {
    matrix_coeff_na$var[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1 # 1 if variable is in the model (not all models have all variables)
    matrix_coeff_na$var_na[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1
  }
}
matrix_coeff_na <- matrix_coeff_na %>% group_by(coef_name) %>% mutate(var = sum(var), var_na = sum(var_na)) %>% distinct(coef_name,var,var_na)
rows_to_omit <- as.vector(unique(matrix_coeff_na$coef_name[matrix_coeff_na$var_na != 0])) # omit if NA in all models
rows_to_omit <- gsub("\\^\\s","^",paste0("^",rows_to_omit,"$", collapse = "|"))
rows_to_omit <- gsub("\\(","\\\\(",gsub("\\)","\\\\)",rows_to_omit))

# out-of-sample R2
if (any(ls() %in% "R2oos_cov_2treat_logit_list")) {
    R2oos_cov_2treat_logit_all <- c(R2oos_cov_2treat_logit_list[[cov]])
} else {
    R2oos_cov_2treat_logit_all <- rep("",length(model_list))
}

# keep variables
keep <- list("treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]")

# Print model name
cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))

# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects\n<br>Covariates:",covariate_list_names[cov]),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = c("",rep(covariate_list_names[cov],length(model_list)-1)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_cov_2treat_logit_all)),
                      reorder.gof = c(6,7,8,9,5,1,2,3,4)
)
cat(html_table)
cat("<br>")
                      
# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects\n<br>Covariates:",covariate_list_names[cov]),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      omit.coef = rows_to_omit,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = c("",rep(covariate_list_names[cov],length(model_list)-1)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_cov_2treat_logit_all)),
                      reorder.gof = c(6,7,8,9,5,1,2,3,4)
)
cat(html_table)
cat('</details>')
cat('<br>\n<br>\n<br>')
}
\[\text{Demographics}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0914* -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0704) (0.0857) (0.0897) (0.0858) (0.0915) (0.0915)
Emotions x 1[Post-treatment] -0.4006*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0581) (0.0839) (0.0904) (0.0840) (0.0921) (0.0921)
Emotions x 1[Misinfo] -0.0151 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0507) (0.0638) (0.0680) (0.0638) (0.0697) (0.0697)
Num. obs. 65268 58068 58068 58068 58068 58068
Deviance 84465.3730 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Log Likelihood -42232.6865 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
Pseudo R2 0.0639 0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics Demographics Demographics Demographics Demographics
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.8245***          
  (0.0302)          
Emotions 0.0005          
  (0.0424)          
1[Post-treatment] -0.3496*** -0.5002*** -0.5601*** -0.5005*** -0.5646*** -0.5646***
  (0.0416) (0.0589) (0.0634) (0.0589) (0.0645) (0.0645)
1[Misinfo] -0.6451*** -0.9234*** -1.0451*** -0.6580*** -1.1149*** -3.1708***
  (0.0361) (0.0453) (0.0487) (0.0266) (0.1374) (0.1367)
Age -0.0152          
  (0.0130)          
Man 0.0593***          
  (0.0118)          
Some college -0.0274**          
  (0.0147)          
Bachelor’s degree -0.0623***          
  (0.0148)          
Graduate degree -0.0465***          
  (0.0127)          
Married 0.0025          
  (0.0132)          
Unemployed -0.0678***          
  (0.0154)          
Employed -0.0396***          
  (0.0168)          
Mostly urban -0.1233***          
  (0.0140)          
Suburban -0.0765***          
  (0.0137)          
Christian 0.0387***          
  (0.0122)          
Attends religious services 0.0452***          
  (0.0119)          
Uses social media -0.0830***          
  (0.0111)          
Hours spent on Social Media 0.0327***          
  (0.0130)          
Social Media Share: 80-100% 0.3545***          
  (0.0148)          
Social Media Share: 60-80% 0.4825***          
  (0.0159)          
Social Media Share: 40-60% 0.4174***          
  (0.0164)          
Social Media Share: 20-40% 0.2228***          
  (0.0152)          
Passed attention check at pre-treatment -0.0945***          
  (0.0118)          
Emotions x 1[Post-treatment] -0.4006*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0581) (0.0839) (0.0904) (0.0840) (0.0921) (0.0921)
Emotions x 1[Misinfo] -0.0151 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0507) (0.0638) (0.0680) (0.0638) (0.0697) (0.0697)
1[Post-treatment] x 1[Misinfo] 0.0386 0.0492 0.0615 0.0485 0.0524 0.0524
  (0.0502) (0.0617) (0.0642) (0.0618) (0.0653) (0.0653)
Emotions x Age -0.0518***          
  (0.0196)          
Emotions x Man -0.0091          
  (0.0167)          
Emotions x Some college -0.0158          
  (0.0205)          
Emotions x Bachelor’s degree 0.0367**          
  (0.0206)          
Emotions x Graduate degree 0.0470***          
  (0.0169)          
Emotions x Married 0.0228          
  (0.0188)          
Emotions x Unemployed -0.0320*          
  (0.0216)          
Emotions x Employed -0.0835***          
  (0.0234)          
Emotions x Mostly urban 0.1246***          
  (0.0197)          
Emotions x Suburban 0.0657***          
  (0.0194)          
Emotions x Christian -0.0361**          
  (0.0174)          
Emotions x Attends religious services -0.0942***          
  (0.0173)          
Emotions x Uses social media 0.0238*          
  (0.0175)          
Emotions x Hours spent on Social Media -0.0555***          
  (0.0179)          
Emotions x Social Media Share: 80-100% -0.0325*          
  (0.0208)          
Emotions x Social Media Share: 60-80% -0.0176          
  (0.0228)          
Emotions x Social Media Share: 40-60% -0.0546***          
  (0.0233)          
Emotions x Social Media Share: 20-40% -0.0290*          
  (0.0217)          
Emotions x Passed attention check at pre-treatment -0.0182          
  (0.0167)          
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0914* -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0704) (0.0857) (0.0897) (0.0858) (0.0915) (0.0915)
Post domain 2     -1.3255***   -1.3401***  
      (0.0603)   (0.1192)  
Post domain 3     -1.9197***   -2.2672***  
      (0.0609)   (0.1177)  
Post domain 4     -1.2883***   -1.9129***  
      (0.0601)   (0.1187)  
Post domain 5     0.4122***   -0.0798  
      (0.0593)   (0.1262)  
Post domain 6     0.1959***   0.5392***  
      (0.0613)   (0.1363)  
Post domain 7     -1.5826***   -1.5243***  
      (0.0602)   (0.1183)  
Post domain 8     -1.4424***   -0.9858***  
      (0.0598)   (0.1199)  
Post domain 9     0.3437***   -0.5000***  
      (0.0605)   (0.1233)  
Post domain 10     -0.4006***   -0.8357***  
      (0.0581)   (0.1185)  
Post domain 11     -1.0907***   -1.4147***  
      (0.0605)   (0.1181)  
Post domain 12     -0.7530***   -1.1001***  
      (0.0578)   (0.1181)  
Post domain 13     -1.0463***   -1.6287***  
      (0.0591)   (0.1174)  
Post domain 14     -1.8782***   -2.3481***  
      (0.0631)   (0.1200)  
Post domain 15     -1.2760***   -2.1274***  
      (0.0590)   (0.1188)  
1[Combo manipulation tactic]       -0.4163*** -0.2959**  
        (0.0234) (0.1277)  
1[Emotions manipulation tactic]       -0.2120*** -0.6319***  
        (0.0312) (0.1279)  
1[Reasoning manipulation tactic]       -0.1699***    
        (0.0317)    
Post domain 2 x 1[Combo manipulation tactic]         -0.2510*  
          (0.1800)  
Post domain 3 x 1[Combo manipulation tactic]         0.4889***  
          (0.1724)  
Post domain 4 x 1[Combo manipulation tactic]         0.8316***  
          (0.1703)  
Post domain 5 x 1[Combo manipulation tactic]         0.6964***  
          (0.1824)  
Post domain 6 x 1[Combo manipulation tactic]         -2.4606***  
          (0.1888)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0567  
          (0.1748)  
Post domain 8 x 1[Combo manipulation tactic]         0.0368  
          (0.1767)  
Post domain 9 x 1[Combo manipulation tactic]         1.2625***  
          (0.1823)  
Post domain 10 x 1[Combo manipulation tactic]         0.2924**  
          (0.1725)  
Post domain 11 x 1[Combo manipulation tactic]         0.5696***  
          (0.1735)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0738  
          (0.1737)  
Post domain 13 x 1[Combo manipulation tactic]         0.4872***  
          (0.1721)  
Post domain 14 x 1[Combo manipulation tactic]         0.2920**  
          (0.1753)  
Post domain 15 x 1[Combo manipulation tactic]         0.8359***  
          (0.1715)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4438***  
          (0.1815)  
Post domain 3 x 1[Emotions manipulation tactic]         1.0575***  
          (0.1695)  
Post domain 4 x 1[Emotions manipulation tactic]         0.7557***  
          (0.1693)  
Post domain 5 x 1[Emotions manipulation tactic]         0.9877***  
          (0.1800)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9932***  
          (0.1963)  
Post domain 7 x 1[Emotions manipulation tactic]         0.2112  
          (0.1731)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.7904***  
          (0.1827)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2790***  
          (0.1780)  
Post domain 10 x 1[Emotions manipulation tactic]         0.9799***  
          (0.1691)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0184  
          (0.1746)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1203***  
          (0.1709)  
Post domain 13 x 1[Emotions manipulation tactic]         1.5807***  
          (0.1671)  
Post domain 14 x 1[Emotions manipulation tactic]         0.9710***  
          (0.1742)  
Post domain 15 x 1[Emotions manipulation tactic]         2.6319***  
          (0.1723)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.3677**  
          (0.1748)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.3345**  
          (0.1785)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.9799***  
          (0.1729)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.3120**  
          (0.1842)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3864**  
          (0.1975)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.7992***  
          (0.1759)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.8581***  
          (0.1873)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.9999***  
          (0.1838)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4521***  
          (0.1747)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.6336***  
          (0.1722)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2927**  
          (0.1730)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3094**  
          (0.1694)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.5483***  
          (0.1744)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0715  
          (0.1739)  
Post 2 indicator           -1.3401***
            (0.1192)
Post 3 indicator           -2.2672***
            (0.1177)
Post 4 indicator           -1.9129***
            (0.1187)
Post 5 indicator           -0.0798
            (0.1262)
Post 6 indicator           0.5392***
            (0.1363)
Post 7 indicator           -1.5243***
            (0.1183)
Post 8 indicator           -0.9858***
            (0.1199)
Post 9 indicator           -0.5000***
            (0.1233)
Post 10 indicator           -0.8357***
            (0.1185)
Post 11 indicator           -1.4147***
            (0.1181)
Post 12 indicator           -1.1001***
            (0.1181)
Post 13 indicator           -1.6287***
            (0.1174)
Post 14 indicator           -2.3481***
            (0.1200)
Post 15 indicator           -2.1274***
            (0.1188)
Post 16 indicator           1.7600***
            (0.1235)
Post 17 indicator           0.1690*
            (0.1305)
Post 18 indicator           -0.0183
            (0.1260)
Post 19 indicator           0.6788***
            (0.1237)
Post 20 indicator           2.3767***
            (0.1258)
Post 21 indicator           -0.1614*
            (0.1231)
Post 22 indicator           0.1790*
            (0.1245)
Post 23 indicator           0.8110***
            (0.1252)
Post 24 indicator           2.5226***
            (0.1322)
Post 25 indicator           1.2168***
            (0.1230)
Post 26 indicator           0.9150***
            (0.1271)
Post 27 indicator           0.5861***
            (0.1214)
Post 28 indicator           0.6185***
            (0.1237)
Post 29 indicator           -0.2961**
            (0.1281)
Post 30 indicator           0.4685***
            (0.1227)
Post 31 indicator           1.4240***
            (0.1231)
Post 32 indicator           -0.3599***
            (0.1332)
Post 33 indicator           0.2143**
            (0.1198)
Post 34 indicator           0.2669**
            (0.1192)
Post 35 indicator           2.3320***
            (0.1294)
Post 36 indicator           2.9565***
            (0.1412)
Post 37 indicator           0.1110
            (0.1242)
Post 38 indicator           -0.3521***
            (0.1324)
Post 39 indicator           2.2031***
            (0.1251)
Post 40 indicator           1.5682***
            (0.1241)
Post 41 indicator           -0.0090
            (0.1260)
Post 42 indicator           1.4442***
            (0.1245)
Post 43 indicator           1.3760***
            (0.1199)
Post 44 indicator           0.0469
            (0.1266)
Post 45 indicator           1.9285***
            (0.1259)
Post 46 indicator           2.0559***
            (0.1269)
Post 47 indicator           1.0835***
            (0.1221)
Post 48 indicator           -0.5459***
            (0.1312)
Post 49 indicator           1.1230***
            (0.1256)
Post 50 indicator           2.2882***
            (0.1289)
Post 51 indicator           2.9815***
            (0.1382)
Post 52 indicator           -0.2676**
            (0.1291)
Post 53 indicator           -0.7880***
            (0.1427)
Post 54 indicator           2.5558***
            (0.1290)
Post 55 indicator           1.6723***
            (0.1267)
Post 56 indicator           1.2748***
            (0.1267)
Post 57 indicator           1.2485***
            (0.1206)
Post 58 indicator           0.7366***
            (0.1200)
Post 59 indicator           0.2561**
            (0.1274)
Num. obs. 65268 58068 58068 58068 58068 58068
Deviance 84465.3730 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Log Likelihood -42232.6865 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
Pseudo R2 0.0639 0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics Demographics Demographics Demographics Demographics
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1042* -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0793) (0.0857) (0.0897) (0.0858) (0.0915) (0.0915)
Emotions x 1[Post-treatment] -0.4743*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0657) (0.0839) (0.0904) (0.0840) (0.0921) (0.0921)
Emotions x 1[Misinfo] 0.0236 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0575) (0.0638) (0.0680) (0.0638) (0.0697) (0.0697)
Num. obs. 65268 58068 58068 58068 58068 58068
Deviance 70340.4988 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Log Likelihood -35170.2494 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
Pseudo R2 0.2210 0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Sharing rates Sharing rates Sharing rates Sharing rates Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 1.0465***          
  (0.0347)          
Emotions -0.0305          
  (0.0482)          
1[Post-treatment] -0.4565*** -0.5002*** -0.5601*** -0.5005*** -0.5646*** -0.5646***
  (0.0476) (0.0589) (0.0634) (0.0589) (0.0645) (0.0645)
1[Misinfo] -0.8428*** -0.9234*** -1.0451*** -0.6580*** -1.1149*** -3.1708***
  (0.0414) (0.0453) (0.0487) (0.0266) (0.1374) (0.1367)
Avg. Sharing of Misinfo posts at pre-treatment 0.9274***          
  (0.0173)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.5397***          
  (0.0166)          
Emotions x 1[Post-treatment] -0.4743*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0657) (0.0839) (0.0904) (0.0840) (0.0921) (0.0921)
Emotions x 1[Misinfo] 0.0236 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0575) (0.0638) (0.0680) (0.0638) (0.0697) (0.0697)
1[Post-treatment] x 1[Misinfo] 0.0526 0.0492 0.0615 0.0485 0.0524 0.0524
  (0.0573) (0.0617) (0.0642) (0.0618) (0.0653) (0.0653)
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.1364***          
  (0.0234)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0649***          
  (0.0229)          
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1042* -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0793) (0.0857) (0.0897) (0.0858) (0.0915) (0.0915)
Post domain 2     -1.3255***   -1.3401***  
      (0.0603)   (0.1192)  
Post domain 3     -1.9197***   -2.2672***  
      (0.0609)   (0.1177)  
Post domain 4     -1.2883***   -1.9129***  
      (0.0601)   (0.1187)  
Post domain 5     0.4122***   -0.0798  
      (0.0593)   (0.1262)  
Post domain 6     0.1959***   0.5392***  
      (0.0613)   (0.1363)  
Post domain 7     -1.5826***   -1.5243***  
      (0.0602)   (0.1183)  
Post domain 8     -1.4424***   -0.9858***  
      (0.0598)   (0.1199)  
Post domain 9     0.3437***   -0.5000***  
      (0.0605)   (0.1233)  
Post domain 10     -0.4006***   -0.8357***  
      (0.0581)   (0.1185)  
Post domain 11     -1.0907***   -1.4147***  
      (0.0605)   (0.1181)  
Post domain 12     -0.7530***   -1.1001***  
      (0.0578)   (0.1181)  
Post domain 13     -1.0463***   -1.6287***  
      (0.0591)   (0.1174)  
Post domain 14     -1.8782***   -2.3481***  
      (0.0631)   (0.1200)  
Post domain 15     -1.2760***   -2.1274***  
      (0.0590)   (0.1188)  
1[Combo manipulation tactic]       -0.4163*** -0.2959**  
        (0.0234) (0.1277)  
1[Emotions manipulation tactic]       -0.2120*** -0.6319***  
        (0.0312) (0.1279)  
1[Reasoning manipulation tactic]       -0.1699***    
        (0.0317)    
Post domain 2 x 1[Combo manipulation tactic]         -0.2510*  
          (0.1800)  
Post domain 3 x 1[Combo manipulation tactic]         0.4889***  
          (0.1724)  
Post domain 4 x 1[Combo manipulation tactic]         0.8316***  
          (0.1703)  
Post domain 5 x 1[Combo manipulation tactic]         0.6964***  
          (0.1824)  
Post domain 6 x 1[Combo manipulation tactic]         -2.4606***  
          (0.1888)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0567  
          (0.1748)  
Post domain 8 x 1[Combo manipulation tactic]         0.0368  
          (0.1767)  
Post domain 9 x 1[Combo manipulation tactic]         1.2625***  
          (0.1823)  
Post domain 10 x 1[Combo manipulation tactic]         0.2924**  
          (0.1725)  
Post domain 11 x 1[Combo manipulation tactic]         0.5696***  
          (0.1735)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0738  
          (0.1737)  
Post domain 13 x 1[Combo manipulation tactic]         0.4872***  
          (0.1721)  
Post domain 14 x 1[Combo manipulation tactic]         0.2920**  
          (0.1753)  
Post domain 15 x 1[Combo manipulation tactic]         0.8359***  
          (0.1715)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4438***  
          (0.1815)  
Post domain 3 x 1[Emotions manipulation tactic]         1.0575***  
          (0.1695)  
Post domain 4 x 1[Emotions manipulation tactic]         0.7557***  
          (0.1693)  
Post domain 5 x 1[Emotions manipulation tactic]         0.9877***  
          (0.1800)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9932***  
          (0.1963)  
Post domain 7 x 1[Emotions manipulation tactic]         0.2112  
          (0.1731)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.7904***  
          (0.1827)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2790***  
          (0.1780)  
Post domain 10 x 1[Emotions manipulation tactic]         0.9799***  
          (0.1691)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0184  
          (0.1746)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1203***  
          (0.1709)  
Post domain 13 x 1[Emotions manipulation tactic]         1.5807***  
          (0.1671)  
Post domain 14 x 1[Emotions manipulation tactic]         0.9710***  
          (0.1742)  
Post domain 15 x 1[Emotions manipulation tactic]         2.6319***  
          (0.1723)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.3677**  
          (0.1748)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.3345**  
          (0.1785)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.9799***  
          (0.1729)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.3120**  
          (0.1842)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3864**  
          (0.1975)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.7992***  
          (0.1759)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.8581***  
          (0.1873)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.9999***  
          (0.1838)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4521***  
          (0.1747)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.6336***  
          (0.1722)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2927**  
          (0.1730)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3094**  
          (0.1694)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.5483***  
          (0.1744)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0715  
          (0.1739)  
Post 2 indicator           -1.3401***
            (0.1192)
Post 3 indicator           -2.2672***
            (0.1177)
Post 4 indicator           -1.9129***
            (0.1187)
Post 5 indicator           -0.0798
            (0.1262)
Post 6 indicator           0.5392***
            (0.1363)
Post 7 indicator           -1.5243***
            (0.1183)
Post 8 indicator           -0.9858***
            (0.1199)
Post 9 indicator           -0.5000***
            (0.1233)
Post 10 indicator           -0.8357***
            (0.1185)
Post 11 indicator           -1.4147***
            (0.1181)
Post 12 indicator           -1.1001***
            (0.1181)
Post 13 indicator           -1.6287***
            (0.1174)
Post 14 indicator           -2.3481***
            (0.1200)
Post 15 indicator           -2.1274***
            (0.1188)
Post 16 indicator           1.7600***
            (0.1235)
Post 17 indicator           0.1690*
            (0.1305)
Post 18 indicator           -0.0183
            (0.1260)
Post 19 indicator           0.6788***
            (0.1237)
Post 20 indicator           2.3767***
            (0.1258)
Post 21 indicator           -0.1614*
            (0.1231)
Post 22 indicator           0.1790*
            (0.1245)
Post 23 indicator           0.8110***
            (0.1252)
Post 24 indicator           2.5226***
            (0.1322)
Post 25 indicator           1.2168***
            (0.1230)
Post 26 indicator           0.9150***
            (0.1271)
Post 27 indicator           0.5861***
            (0.1214)
Post 28 indicator           0.6185***
            (0.1237)
Post 29 indicator           -0.2961**
            (0.1281)
Post 30 indicator           0.4685***
            (0.1227)
Post 31 indicator           1.4240***
            (0.1231)
Post 32 indicator           -0.3599***
            (0.1332)
Post 33 indicator           0.2143**
            (0.1198)
Post 34 indicator           0.2669**
            (0.1192)
Post 35 indicator           2.3320***
            (0.1294)
Post 36 indicator           2.9565***
            (0.1412)
Post 37 indicator           0.1110
            (0.1242)
Post 38 indicator           -0.3521***
            (0.1324)
Post 39 indicator           2.2031***
            (0.1251)
Post 40 indicator           1.5682***
            (0.1241)
Post 41 indicator           -0.0090
            (0.1260)
Post 42 indicator           1.4442***
            (0.1245)
Post 43 indicator           1.3760***
            (0.1199)
Post 44 indicator           0.0469
            (0.1266)
Post 45 indicator           1.9285***
            (0.1259)
Post 46 indicator           2.0559***
            (0.1269)
Post 47 indicator           1.0835***
            (0.1221)
Post 48 indicator           -0.5459***
            (0.1312)
Post 49 indicator           1.1230***
            (0.1256)
Post 50 indicator           2.2882***
            (0.1289)
Post 51 indicator           2.9815***
            (0.1382)
Post 52 indicator           -0.2676**
            (0.1291)
Post 53 indicator           -0.7880***
            (0.1427)
Post 54 indicator           2.5558***
            (0.1290)
Post 55 indicator           1.6723***
            (0.1267)
Post 56 indicator           1.2748***
            (0.1267)
Post 57 indicator           1.2485***
            (0.1206)
Post 58 indicator           0.7366***
            (0.1200)
Post 59 indicator           0.2561**
            (0.1274)
Num. obs. 65268 58068 58068 58068 58068 58068
Deviance 70340.4988 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Log Likelihood -35170.2494 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
Pseudo R2 0.2210 0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Sharing rates Sharing rates Sharing rates Sharing rates Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Tactic sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1038* -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0793) (0.0857) (0.0897) (0.0858) (0.0915) (0.0915)
Emotions x 1[Post-treatment] -0.4747*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0657) (0.0839) (0.0904) (0.0840) (0.0921) (0.0921)
Emotions x 1[Misinfo] 0.0233 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0575) (0.0638) (0.0680) (0.0638) (0.0697) (0.0697)
Num. obs. 65268 58068 58068 58068 58068 58068
Deviance 70333.2914 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Log Likelihood -35166.6457 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
Pseudo R2 0.2210 0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 1.0473***          
  (0.0347)          
Emotions -0.0323          
  (0.0482)          
1[Post-treatment] -0.4565*** -0.5002*** -0.5601*** -0.5005*** -0.5646*** -0.5646***
  (0.0476) (0.0589) (0.0634) (0.0589) (0.0645) (0.0645)
1[Misinfo] -0.8428*** -0.9234*** -1.0451*** -0.6580*** -1.1149*** -3.1708***
  (0.0414) (0.0453) (0.0487) (0.0266) (0.1374) (0.1367)
Avg. Sharing of Misinfo posts at pre-treatment 0.9365***          
  (0.0379)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.5408***          
  (0.0166)          
Emotions posts 0.0116          
  (0.0241)          
Reasoning posts -0.0236          
  (0.0237)          
Emotions x 1[Post-treatment] -0.4747*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0657) (0.0839) (0.0904) (0.0840) (0.0921) (0.0921)
Emotions x 1[Misinfo] 0.0233 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0575) (0.0638) (0.0680) (0.0638) (0.0697) (0.0697)
1[Post-treatment] x 1[Misinfo] 0.0526 0.0492 0.0615 0.0485 0.0524 0.0524
  (0.0573) (0.0617) (0.0642) (0.0618) (0.0653) (0.0653)
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.2211***          
  (0.0536)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0661***          
  (0.0229)          
Emotions x Emotions posts 0.0387          
  (0.0344)          
Emotions x Reasoning posts 0.0671**          
  (0.0341)          
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1038* -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0793) (0.0857) (0.0897) (0.0858) (0.0915) (0.0915)
Post domain 2     -1.3255***   -1.3401***  
      (0.0603)   (0.1192)  
Post domain 3     -1.9197***   -2.2672***  
      (0.0609)   (0.1177)  
Post domain 4     -1.2883***   -1.9129***  
      (0.0601)   (0.1187)  
Post domain 5     0.4122***   -0.0798  
      (0.0593)   (0.1262)  
Post domain 6     0.1959***   0.5392***  
      (0.0613)   (0.1363)  
Post domain 7     -1.5826***   -1.5243***  
      (0.0602)   (0.1183)  
Post domain 8     -1.4424***   -0.9858***  
      (0.0598)   (0.1199)  
Post domain 9     0.3437***   -0.5000***  
      (0.0605)   (0.1233)  
Post domain 10     -0.4006***   -0.8357***  
      (0.0581)   (0.1185)  
Post domain 11     -1.0907***   -1.4147***  
      (0.0605)   (0.1181)  
Post domain 12     -0.7530***   -1.1001***  
      (0.0578)   (0.1181)  
Post domain 13     -1.0463***   -1.6287***  
      (0.0591)   (0.1174)  
Post domain 14     -1.8782***   -2.3481***  
      (0.0631)   (0.1200)  
Post domain 15     -1.2760***   -2.1274***  
      (0.0590)   (0.1188)  
1[Combo manipulation tactic]       -0.4163*** -0.2959**  
        (0.0234) (0.1277)  
1[Emotions manipulation tactic]       -0.2120*** -0.6319***  
        (0.0312) (0.1279)  
1[Reasoning manipulation tactic]       -0.1699***    
        (0.0317)    
Post domain 2 x 1[Combo manipulation tactic]         -0.2510*  
          (0.1800)  
Post domain 3 x 1[Combo manipulation tactic]         0.4889***  
          (0.1724)  
Post domain 4 x 1[Combo manipulation tactic]         0.8316***  
          (0.1703)  
Post domain 5 x 1[Combo manipulation tactic]         0.6964***  
          (0.1824)  
Post domain 6 x 1[Combo manipulation tactic]         -2.4606***  
          (0.1888)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0567  
          (0.1748)  
Post domain 8 x 1[Combo manipulation tactic]         0.0368  
          (0.1767)  
Post domain 9 x 1[Combo manipulation tactic]         1.2625***  
          (0.1823)  
Post domain 10 x 1[Combo manipulation tactic]         0.2924**  
          (0.1725)  
Post domain 11 x 1[Combo manipulation tactic]         0.5696***  
          (0.1735)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0738  
          (0.1737)  
Post domain 13 x 1[Combo manipulation tactic]         0.4872***  
          (0.1721)  
Post domain 14 x 1[Combo manipulation tactic]         0.2920**  
          (0.1753)  
Post domain 15 x 1[Combo manipulation tactic]         0.8359***  
          (0.1715)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4438***  
          (0.1815)  
Post domain 3 x 1[Emotions manipulation tactic]         1.0575***  
          (0.1695)  
Post domain 4 x 1[Emotions manipulation tactic]         0.7557***  
          (0.1693)  
Post domain 5 x 1[Emotions manipulation tactic]         0.9877***  
          (0.1800)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9932***  
          (0.1963)  
Post domain 7 x 1[Emotions manipulation tactic]         0.2112  
          (0.1731)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.7904***  
          (0.1827)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2790***  
          (0.1780)  
Post domain 10 x 1[Emotions manipulation tactic]         0.9799***  
          (0.1691)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0184  
          (0.1746)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1203***  
          (0.1709)  
Post domain 13 x 1[Emotions manipulation tactic]         1.5807***  
          (0.1671)  
Post domain 14 x 1[Emotions manipulation tactic]         0.9710***  
          (0.1742)  
Post domain 15 x 1[Emotions manipulation tactic]         2.6319***  
          (0.1723)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.3677**  
          (0.1748)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.3345**  
          (0.1785)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.9799***  
          (0.1729)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.3120**  
          (0.1842)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3864**  
          (0.1975)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.7992***  
          (0.1759)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.8581***  
          (0.1873)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.9999***  
          (0.1838)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4521***  
          (0.1747)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.6336***  
          (0.1722)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2927**  
          (0.1730)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3094**  
          (0.1694)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.5483***  
          (0.1744)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0715  
          (0.1739)  
Post 2 indicator           -1.3401***
            (0.1192)
Post 3 indicator           -2.2672***
            (0.1177)
Post 4 indicator           -1.9129***
            (0.1187)
Post 5 indicator           -0.0798
            (0.1262)
Post 6 indicator           0.5392***
            (0.1363)
Post 7 indicator           -1.5243***
            (0.1183)
Post 8 indicator           -0.9858***
            (0.1199)
Post 9 indicator           -0.5000***
            (0.1233)
Post 10 indicator           -0.8357***
            (0.1185)
Post 11 indicator           -1.4147***
            (0.1181)
Post 12 indicator           -1.1001***
            (0.1181)
Post 13 indicator           -1.6287***
            (0.1174)
Post 14 indicator           -2.3481***
            (0.1200)
Post 15 indicator           -2.1274***
            (0.1188)
Post 16 indicator           1.7600***
            (0.1235)
Post 17 indicator           0.1690*
            (0.1305)
Post 18 indicator           -0.0183
            (0.1260)
Post 19 indicator           0.6788***
            (0.1237)
Post 20 indicator           2.3767***
            (0.1258)
Post 21 indicator           -0.1614*
            (0.1231)
Post 22 indicator           0.1790*
            (0.1245)
Post 23 indicator           0.8110***
            (0.1252)
Post 24 indicator           2.5226***
            (0.1322)
Post 25 indicator           1.2168***
            (0.1230)
Post 26 indicator           0.9150***
            (0.1271)
Post 27 indicator           0.5861***
            (0.1214)
Post 28 indicator           0.6185***
            (0.1237)
Post 29 indicator           -0.2961**
            (0.1281)
Post 30 indicator           0.4685***
            (0.1227)
Post 31 indicator           1.4240***
            (0.1231)
Post 32 indicator           -0.3599***
            (0.1332)
Post 33 indicator           0.2143**
            (0.1198)
Post 34 indicator           0.2669**
            (0.1192)
Post 35 indicator           2.3320***
            (0.1294)
Post 36 indicator           2.9565***
            (0.1412)
Post 37 indicator           0.1110
            (0.1242)
Post 38 indicator           -0.3521***
            (0.1324)
Post 39 indicator           2.2031***
            (0.1251)
Post 40 indicator           1.5682***
            (0.1241)
Post 41 indicator           -0.0090
            (0.1260)
Post 42 indicator           1.4442***
            (0.1245)
Post 43 indicator           1.3760***
            (0.1199)
Post 44 indicator           0.0469
            (0.1266)
Post 45 indicator           1.9285***
            (0.1259)
Post 46 indicator           2.0559***
            (0.1269)
Post 47 indicator           1.0835***
            (0.1221)
Post 48 indicator           -0.5459***
            (0.1312)
Post 49 indicator           1.1230***
            (0.1256)
Post 50 indicator           2.2882***
            (0.1289)
Post 51 indicator           2.9815***
            (0.1382)
Post 52 indicator           -0.2676**
            (0.1291)
Post 53 indicator           -0.7880***
            (0.1427)
Post 54 indicator           2.5558***
            (0.1290)
Post 55 indicator           1.6723***
            (0.1267)
Post 56 indicator           1.2748***
            (0.1267)
Post 57 indicator           1.2485***
            (0.1206)
Post 58 indicator           0.7366***
            (0.1200)
Post 59 indicator           0.2561**
            (0.1274)
Num. obs. 65268 58068 58068 58068 58068 58068
Deviance 70333.2914 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Log Likelihood -35166.6457 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
Pseudo R2 0.2210 0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Demographics + Sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1044* -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0795) (0.0857) (0.0897) (0.0858) (0.0915) (0.0915)
Emotions x 1[Post-treatment] -0.4777*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0659) (0.0839) (0.0904) (0.0840) (0.0921) (0.0921)
Emotions x 1[Misinfo] 0.0224 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0577) (0.0638) (0.0680) (0.0638) (0.0697) (0.0697)
Num. obs. 65268 58068 58068 58068 58068 58068
Deviance 70055.4124 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Log Likelihood -35027.7062 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
Pseudo R2 0.2234 0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 1.0563***          
  (0.0349)          
Emotions -0.0355          
  (0.0484)          
1[Post-treatment] -0.4587*** -0.5002*** -0.5601*** -0.5005*** -0.5646*** -0.5646***
  (0.0477) (0.0589) (0.0634) (0.0589) (0.0645) (0.0645)
1[Misinfo] -0.8466*** -0.9234*** -1.0451*** -0.6580*** -1.1149*** -3.1708***
  (0.0416) (0.0453) (0.0487) (0.0266) (0.1374) (0.1367)
Age -0.0316**          
  (0.0151)          
Man 0.0151          
  (0.0135)          
Some college -0.0110          
  (0.0168)          
Bachelor’s degree 0.0218*          
  (0.0170)          
Graduate degree -0.0412***          
  (0.0146)          
Married -0.0154          
  (0.0151)          
Unemployed -0.0280*          
  (0.0177)          
Employed -0.0483***          
  (0.0193)          
Mostly urban -0.0277**          
  (0.0161)          
Suburban -0.0285**          
  (0.0157)          
Christian 0.0142          
  (0.0138)          
Attends religious services 0.0051          
  (0.0139)          
Uses social media -0.0345***          
  (0.0123)          
Hours spent on Social Media 0.0297**          
  (0.0149)          
Social Media Share: 80-100% 0.0846***          
  (0.0174)          
Social Media Share: 60-80% 0.1020***          
  (0.0189)          
Social Media Share: 40-60% 0.0893***          
  (0.0192)          
Social Media Share: 20-40% 0.0480***          
  (0.0176)          
Passed attention check at pre-treatment -0.0276**          
  (0.0135)          
Avg. Sharing of Misinfo posts at pre-treatment 0.9020***          
  (0.0178)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.5294***          
  (0.0167)          
Emotions x 1[Post-treatment] -0.4777*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0659) (0.0839) (0.0904) (0.0840) (0.0921) (0.0921)
Emotions x 1[Misinfo] 0.0224 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0577) (0.0638) (0.0680) (0.0638) (0.0697) (0.0697)
1[Post-treatment] x 1[Misinfo] 0.0533 0.0492 0.0615 0.0485 0.0524 0.0524
  (0.0574) (0.0617) (0.0642) (0.0618) (0.0653) (0.0653)
Emotions x Age -0.0271          
  (0.0231)          
Emotions x Man 0.0319**          
  (0.0188)          
Emotions x Some college 0.0018          
  (0.0231)          
Emotions x Bachelor’s degree -0.0197          
  (0.0232)          
Emotions x Graduate degree 0.0484***          
  (0.0193)          
Emotions x Married -0.0250          
  (0.0212)          
Emotions x Unemployed -0.0060          
  (0.0244)          
Emotions x Employed 0.0147          
  (0.0266)          
Emotions x Mostly urban 0.0429**          
  (0.0222)          
Emotions x Suburban -0.0094          
  (0.0219)          
Emotions x Christian -0.0132          
  (0.0196)          
Emotions x Attends religious services -0.0395**          
  (0.0196)          
Emotions x Uses social media 0.0530***          
  (0.0197)          
Emotions x Hours spent on Social Media -0.0167          
  (0.0203)          
Emotions x Social Media Share: 80-100% -0.0054          
  (0.0241)          
Emotions x Social Media Share: 60-80% 0.0296          
  (0.0265)          
Emotions x Social Media Share: 40-60% -0.0100          
  (0.0269)          
Emotions x Social Media Share: 20-40% 0.0225          
  (0.0248)          
Emotions x Passed attention check at pre-treatment -0.0025          
  (0.0188)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.1443***          
  (0.0242)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0526**          
  (0.0231)          
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1044* -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0795) (0.0857) (0.0897) (0.0858) (0.0915) (0.0915)
Post domain 2     -1.3255***   -1.3401***  
      (0.0603)   (0.1192)  
Post domain 3     -1.9197***   -2.2672***  
      (0.0609)   (0.1177)  
Post domain 4     -1.2883***   -1.9129***  
      (0.0601)   (0.1187)  
Post domain 5     0.4122***   -0.0798  
      (0.0593)   (0.1262)  
Post domain 6     0.1959***   0.5392***  
      (0.0613)   (0.1363)  
Post domain 7     -1.5826***   -1.5243***  
      (0.0602)   (0.1183)  
Post domain 8     -1.4424***   -0.9858***  
      (0.0598)   (0.1199)  
Post domain 9     0.3437***   -0.5000***  
      (0.0605)   (0.1233)  
Post domain 10     -0.4006***   -0.8357***  
      (0.0581)   (0.1185)  
Post domain 11     -1.0907***   -1.4147***  
      (0.0605)   (0.1181)  
Post domain 12     -0.7530***   -1.1001***  
      (0.0578)   (0.1181)  
Post domain 13     -1.0463***   -1.6287***  
      (0.0591)   (0.1174)  
Post domain 14     -1.8782***   -2.3481***  
      (0.0631)   (0.1200)  
Post domain 15     -1.2760***   -2.1274***  
      (0.0590)   (0.1188)  
1[Combo manipulation tactic]       -0.4163*** -0.2959**  
        (0.0234) (0.1277)  
1[Emotions manipulation tactic]       -0.2120*** -0.6319***  
        (0.0312) (0.1279)  
1[Reasoning manipulation tactic]       -0.1699***    
        (0.0317)    
Post domain 2 x 1[Combo manipulation tactic]         -0.2510*  
          (0.1800)  
Post domain 3 x 1[Combo manipulation tactic]         0.4889***  
          (0.1724)  
Post domain 4 x 1[Combo manipulation tactic]         0.8316***  
          (0.1703)  
Post domain 5 x 1[Combo manipulation tactic]         0.6964***  
          (0.1824)  
Post domain 6 x 1[Combo manipulation tactic]         -2.4606***  
          (0.1888)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0567  
          (0.1748)  
Post domain 8 x 1[Combo manipulation tactic]         0.0368  
          (0.1767)  
Post domain 9 x 1[Combo manipulation tactic]         1.2625***  
          (0.1823)  
Post domain 10 x 1[Combo manipulation tactic]         0.2924**  
          (0.1725)  
Post domain 11 x 1[Combo manipulation tactic]         0.5696***  
          (0.1735)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0738  
          (0.1737)  
Post domain 13 x 1[Combo manipulation tactic]         0.4872***  
          (0.1721)  
Post domain 14 x 1[Combo manipulation tactic]         0.2920**  
          (0.1753)  
Post domain 15 x 1[Combo manipulation tactic]         0.8359***  
          (0.1715)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4438***  
          (0.1815)  
Post domain 3 x 1[Emotions manipulation tactic]         1.0575***  
          (0.1695)  
Post domain 4 x 1[Emotions manipulation tactic]         0.7557***  
          (0.1693)  
Post domain 5 x 1[Emotions manipulation tactic]         0.9877***  
          (0.1800)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9932***  
          (0.1963)  
Post domain 7 x 1[Emotions manipulation tactic]         0.2112  
          (0.1731)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.7904***  
          (0.1827)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2790***  
          (0.1780)  
Post domain 10 x 1[Emotions manipulation tactic]         0.9799***  
          (0.1691)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0184  
          (0.1746)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1203***  
          (0.1709)  
Post domain 13 x 1[Emotions manipulation tactic]         1.5807***  
          (0.1671)  
Post domain 14 x 1[Emotions manipulation tactic]         0.9710***  
          (0.1742)  
Post domain 15 x 1[Emotions manipulation tactic]         2.6319***  
          (0.1723)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.3677**  
          (0.1748)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.3345**  
          (0.1785)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.9799***  
          (0.1729)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.3120**  
          (0.1842)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3864**  
          (0.1975)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.7992***  
          (0.1759)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.8581***  
          (0.1873)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.9999***  
          (0.1838)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4521***  
          (0.1747)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.6336***  
          (0.1722)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2927**  
          (0.1730)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3094**  
          (0.1694)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.5483***  
          (0.1744)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0715  
          (0.1739)  
Post 2 indicator           -1.3401***
            (0.1192)
Post 3 indicator           -2.2672***
            (0.1177)
Post 4 indicator           -1.9129***
            (0.1187)
Post 5 indicator           -0.0798
            (0.1262)
Post 6 indicator           0.5392***
            (0.1363)
Post 7 indicator           -1.5243***
            (0.1183)
Post 8 indicator           -0.9858***
            (0.1199)
Post 9 indicator           -0.5000***
            (0.1233)
Post 10 indicator           -0.8357***
            (0.1185)
Post 11 indicator           -1.4147***
            (0.1181)
Post 12 indicator           -1.1001***
            (0.1181)
Post 13 indicator           -1.6287***
            (0.1174)
Post 14 indicator           -2.3481***
            (0.1200)
Post 15 indicator           -2.1274***
            (0.1188)
Post 16 indicator           1.7600***
            (0.1235)
Post 17 indicator           0.1690*
            (0.1305)
Post 18 indicator           -0.0183
            (0.1260)
Post 19 indicator           0.6788***
            (0.1237)
Post 20 indicator           2.3767***
            (0.1258)
Post 21 indicator           -0.1614*
            (0.1231)
Post 22 indicator           0.1790*
            (0.1245)
Post 23 indicator           0.8110***
            (0.1252)
Post 24 indicator           2.5226***
            (0.1322)
Post 25 indicator           1.2168***
            (0.1230)
Post 26 indicator           0.9150***
            (0.1271)
Post 27 indicator           0.5861***
            (0.1214)
Post 28 indicator           0.6185***
            (0.1237)
Post 29 indicator           -0.2961**
            (0.1281)
Post 30 indicator           0.4685***
            (0.1227)
Post 31 indicator           1.4240***
            (0.1231)
Post 32 indicator           -0.3599***
            (0.1332)
Post 33 indicator           0.2143**
            (0.1198)
Post 34 indicator           0.2669**
            (0.1192)
Post 35 indicator           2.3320***
            (0.1294)
Post 36 indicator           2.9565***
            (0.1412)
Post 37 indicator           0.1110
            (0.1242)
Post 38 indicator           -0.3521***
            (0.1324)
Post 39 indicator           2.2031***
            (0.1251)
Post 40 indicator           1.5682***
            (0.1241)
Post 41 indicator           -0.0090
            (0.1260)
Post 42 indicator           1.4442***
            (0.1245)
Post 43 indicator           1.3760***
            (0.1199)
Post 44 indicator           0.0469
            (0.1266)
Post 45 indicator           1.9285***
            (0.1259)
Post 46 indicator           2.0559***
            (0.1269)
Post 47 indicator           1.0835***
            (0.1221)
Post 48 indicator           -0.5459***
            (0.1312)
Post 49 indicator           1.1230***
            (0.1256)
Post 50 indicator           2.2882***
            (0.1289)
Post 51 indicator           2.9815***
            (0.1382)
Post 52 indicator           -0.2676**
            (0.1291)
Post 53 indicator           -0.7880***
            (0.1427)
Post 54 indicator           2.5558***
            (0.1290)
Post 55 indicator           1.6723***
            (0.1267)
Post 56 indicator           1.2748***
            (0.1267)
Post 57 indicator           1.2485***
            (0.1206)
Post 58 indicator           0.7366***
            (0.1200)
Post 59 indicator           0.2561**
            (0.1274)
Num. obs. 65268 58068 58068 58068 58068 58068
Deviance 70055.4124 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Log Likelihood -35027.7062 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
Pseudo R2 0.2234 0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Demographics + Sharing rates + Tactic sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates + Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1040* -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0795) (0.0857) (0.0897) (0.0858) (0.0915) (0.0915)
Emotions x 1[Post-treatment] -0.4780*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0659) (0.0839) (0.0904) (0.0840) (0.0921) (0.0921)
Emotions x 1[Misinfo] 0.0222 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0577) (0.0638) (0.0680) (0.0638) (0.0697) (0.0697)
Num. obs. 65268 58068 58068 58068 58068 58068
Deviance 70049.3792 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Log Likelihood -35024.6896 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
Pseudo R2 0.2233 0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates + Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 1.0571***          
  (0.0349)          
Emotions -0.0372          
  (0.0484)          
1[Post-treatment] -0.4587*** -0.5002*** -0.5601*** -0.5005*** -0.5646*** -0.5646***
  (0.0477) (0.0589) (0.0634) (0.0589) (0.0645) (0.0645)
1[Misinfo] -0.8466*** -0.9234*** -1.0451*** -0.6580*** -1.1149*** -3.1708***
  (0.0416) (0.0453) (0.0487) (0.0266) (0.1374) (0.1367)
Age -0.0315**          
  (0.0152)          
Man 0.0152          
  (0.0135)          
Some college -0.0104          
  (0.0168)          
Bachelor’s degree 0.0221*          
  (0.0170)          
Graduate degree -0.0415***          
  (0.0146)          
Married -0.0146          
  (0.0151)          
Unemployed -0.0281*          
  (0.0177)          
Employed -0.0491***          
  (0.0193)          
Mostly urban -0.0265**          
  (0.0161)          
Suburban -0.0280**          
  (0.0157)          
Christian 0.0137          
  (0.0138)          
Attends religious services 0.0052          
  (0.0139)          
Uses social media -0.0347***          
  (0.0123)          
Hours spent on Social Media 0.0304**          
  (0.0149)          
Social Media Share: 80-100% 0.0846***          
  (0.0174)          
Social Media Share: 60-80% 0.1021***          
  (0.0189)          
Social Media Share: 40-60% 0.0896***          
  (0.0192)          
Social Media Share: 20-40% 0.0480***          
  (0.0176)          
Passed attention check at pre-treatment -0.0272**          
  (0.0135)          
Avg. Sharing of Misinfo posts at pre-treatment 0.9030***          
  (0.0384)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.5304***          
  (0.0167)          
Emotions posts 0.0165          
  (0.0243)          
Reasoning posts -0.0183          
  (0.0238)          
Emotions x 1[Post-treatment] -0.4780*** -0.5257*** -0.5530*** -0.5260*** -0.5747*** -0.5747***
  (0.0659) (0.0839) (0.0904) (0.0840) (0.0921) (0.0921)
Emotions x 1[Misinfo] 0.0222 0.0199 0.0586 0.0201 0.0607 0.0607
  (0.0577) (0.0638) (0.0680) (0.0638) (0.0697) (0.0697)
1[Post-treatment] x 1[Misinfo] 0.0533 0.0492 0.0615 0.0485 0.0524 0.0524
  (0.0574) (0.0617) (0.0642) (0.0618) (0.0653) (0.0653)
Emotions x Age -0.0262          
  (0.0231)          
Emotions x Man 0.0308*          
  (0.0188)          
Emotions x Some college 0.0012          
  (0.0232)          
Emotions x Bachelor’s degree -0.0207          
  (0.0232)          
Emotions x Graduate degree 0.0486***          
  (0.0193)          
Emotions x Married -0.0266          
  (0.0212)          
Emotions x Unemployed -0.0072          
  (0.0244)          
Emotions x Employed 0.0150          
  (0.0266)          
Emotions x Mostly urban 0.0410**          
  (0.0222)          
Emotions x Suburban -0.0099          
  (0.0219)          
Emotions x Christian -0.0129          
  (0.0196)          
Emotions x Attends religious services -0.0397**          
  (0.0196)          
Emotions x Uses social media 0.0526***          
  (0.0197)          
Emotions x Hours spent on Social Media -0.0178          
  (0.0204)          
Emotions x Social Media Share: 80-100% -0.0057          
  (0.0241)          
Emotions x Social Media Share: 60-80% 0.0286          
  (0.0265)          
Emotions x Social Media Share: 40-60% -0.0123          
  (0.0269)          
Emotions x Social Media Share: 20-40% 0.0206          
  (0.0248)          
Emotions x Passed attention check at pre-treatment -0.0034          
  (0.0189)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.2131***          
  (0.0543)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0537**          
  (0.0231)          
Emotions x Emotions posts 0.0285          
  (0.0346)          
Emotions x Reasoning posts 0.0574**          
  (0.0344)          
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1040* -0.1220* -0.1895** -0.1231* -0.2363*** -0.2363***
  (0.0795) (0.0857) (0.0897) (0.0858) (0.0915) (0.0915)
Post domain 2     -1.3255***   -1.3401***  
      (0.0603)   (0.1192)  
Post domain 3     -1.9197***   -2.2672***  
      (0.0609)   (0.1177)  
Post domain 4     -1.2883***   -1.9129***  
      (0.0601)   (0.1187)  
Post domain 5     0.4122***   -0.0798  
      (0.0593)   (0.1262)  
Post domain 6     0.1959***   0.5392***  
      (0.0613)   (0.1363)  
Post domain 7     -1.5826***   -1.5243***  
      (0.0602)   (0.1183)  
Post domain 8     -1.4424***   -0.9858***  
      (0.0598)   (0.1199)  
Post domain 9     0.3437***   -0.5000***  
      (0.0605)   (0.1233)  
Post domain 10     -0.4006***   -0.8357***  
      (0.0581)   (0.1185)  
Post domain 11     -1.0907***   -1.4147***  
      (0.0605)   (0.1181)  
Post domain 12     -0.7530***   -1.1001***  
      (0.0578)   (0.1181)  
Post domain 13     -1.0463***   -1.6287***  
      (0.0591)   (0.1174)  
Post domain 14     -1.8782***   -2.3481***  
      (0.0631)   (0.1200)  
Post domain 15     -1.2760***   -2.1274***  
      (0.0590)   (0.1188)  
1[Combo manipulation tactic]       -0.4163*** -0.2959**  
        (0.0234) (0.1277)  
1[Emotions manipulation tactic]       -0.2120*** -0.6319***  
        (0.0312) (0.1279)  
1[Reasoning manipulation tactic]       -0.1699***    
        (0.0317)    
Post domain 2 x 1[Combo manipulation tactic]         -0.2510*  
          (0.1800)  
Post domain 3 x 1[Combo manipulation tactic]         0.4889***  
          (0.1724)  
Post domain 4 x 1[Combo manipulation tactic]         0.8316***  
          (0.1703)  
Post domain 5 x 1[Combo manipulation tactic]         0.6964***  
          (0.1824)  
Post domain 6 x 1[Combo manipulation tactic]         -2.4606***  
          (0.1888)  
Post domain 7 x 1[Combo manipulation tactic]         -0.0567  
          (0.1748)  
Post domain 8 x 1[Combo manipulation tactic]         0.0368  
          (0.1767)  
Post domain 9 x 1[Combo manipulation tactic]         1.2625***  
          (0.1823)  
Post domain 10 x 1[Combo manipulation tactic]         0.2924**  
          (0.1725)  
Post domain 11 x 1[Combo manipulation tactic]         0.5696***  
          (0.1735)  
Post domain 12 x 1[Combo manipulation tactic]         -0.0738  
          (0.1737)  
Post domain 13 x 1[Combo manipulation tactic]         0.4872***  
          (0.1721)  
Post domain 14 x 1[Combo manipulation tactic]         0.2920**  
          (0.1753)  
Post domain 15 x 1[Combo manipulation tactic]         0.8359***  
          (0.1715)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4438***  
          (0.1815)  
Post domain 3 x 1[Emotions manipulation tactic]         1.0575***  
          (0.1695)  
Post domain 4 x 1[Emotions manipulation tactic]         0.7557***  
          (0.1693)  
Post domain 5 x 1[Emotions manipulation tactic]         0.9877***  
          (0.1800)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9932***  
          (0.1963)  
Post domain 7 x 1[Emotions manipulation tactic]         0.2112  
          (0.1731)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.7904***  
          (0.1827)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2790***  
          (0.1780)  
Post domain 10 x 1[Emotions manipulation tactic]         0.9799***  
          (0.1691)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0184  
          (0.1746)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1203***  
          (0.1709)  
Post domain 13 x 1[Emotions manipulation tactic]         1.5807***  
          (0.1671)  
Post domain 14 x 1[Emotions manipulation tactic]         0.9710***  
          (0.1742)  
Post domain 15 x 1[Emotions manipulation tactic]         2.6319***  
          (0.1723)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.3677**  
          (0.1748)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.3345**  
          (0.1785)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.9799***  
          (0.1729)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.3120**  
          (0.1842)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3864**  
          (0.1975)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.7992***  
          (0.1759)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.8581***  
          (0.1873)  
Post domain 9 x 1[Reasoning manipulation tactic]         0.9999***  
          (0.1838)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4521***  
          (0.1747)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.6336***  
          (0.1722)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2927**  
          (0.1730)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3094**  
          (0.1694)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.5483***  
          (0.1744)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0715  
          (0.1739)  
Post 2 indicator           -1.3401***
            (0.1192)
Post 3 indicator           -2.2672***
            (0.1177)
Post 4 indicator           -1.9129***
            (0.1187)
Post 5 indicator           -0.0798
            (0.1262)
Post 6 indicator           0.5392***
            (0.1363)
Post 7 indicator           -1.5243***
            (0.1183)
Post 8 indicator           -0.9858***
            (0.1199)
Post 9 indicator           -0.5000***
            (0.1233)
Post 10 indicator           -0.8357***
            (0.1185)
Post 11 indicator           -1.4147***
            (0.1181)
Post 12 indicator           -1.1001***
            (0.1181)
Post 13 indicator           -1.6287***
            (0.1174)
Post 14 indicator           -2.3481***
            (0.1200)
Post 15 indicator           -2.1274***
            (0.1188)
Post 16 indicator           1.7600***
            (0.1235)
Post 17 indicator           0.1690*
            (0.1305)
Post 18 indicator           -0.0183
            (0.1260)
Post 19 indicator           0.6788***
            (0.1237)
Post 20 indicator           2.3767***
            (0.1258)
Post 21 indicator           -0.1614*
            (0.1231)
Post 22 indicator           0.1790*
            (0.1245)
Post 23 indicator           0.8110***
            (0.1252)
Post 24 indicator           2.5226***
            (0.1322)
Post 25 indicator           1.2168***
            (0.1230)
Post 26 indicator           0.9150***
            (0.1271)
Post 27 indicator           0.5861***
            (0.1214)
Post 28 indicator           0.6185***
            (0.1237)
Post 29 indicator           -0.2961**
            (0.1281)
Post 30 indicator           0.4685***
            (0.1227)
Post 31 indicator           1.4240***
            (0.1231)
Post 32 indicator           -0.3599***
            (0.1332)
Post 33 indicator           0.2143**
            (0.1198)
Post 34 indicator           0.2669**
            (0.1192)
Post 35 indicator           2.3320***
            (0.1294)
Post 36 indicator           2.9565***
            (0.1412)
Post 37 indicator           0.1110
            (0.1242)
Post 38 indicator           -0.3521***
            (0.1324)
Post 39 indicator           2.2031***
            (0.1251)
Post 40 indicator           1.5682***
            (0.1241)
Post 41 indicator           -0.0090
            (0.1260)
Post 42 indicator           1.4442***
            (0.1245)
Post 43 indicator           1.3760***
            (0.1199)
Post 44 indicator           0.0469
            (0.1266)
Post 45 indicator           1.9285***
            (0.1259)
Post 46 indicator           2.0559***
            (0.1269)
Post 47 indicator           1.0835***
            (0.1221)
Post 48 indicator           -0.5459***
            (0.1312)
Post 49 indicator           1.1230***
            (0.1256)
Post 50 indicator           2.2882***
            (0.1289)
Post 51 indicator           2.9815***
            (0.1382)
Post 52 indicator           -0.2676**
            (0.1291)
Post 53 indicator           -0.7880***
            (0.1427)
Post 54 indicator           2.5558***
            (0.1290)
Post 55 indicator           1.6723***
            (0.1267)
Post 56 indicator           1.2748***
            (0.1267)
Post 57 indicator           1.2485***
            (0.1206)
Post 58 indicator           0.7366***
            (0.1200)
Post 59 indicator           0.2561**
            (0.1274)
Num. obs. 65268 58068 58068 58068 58068 58068
Deviance 70049.3792 62633.2434 57225.1129 62550.9019 54895.4934 54895.4934
Log Likelihood -35024.6896 -31316.6217 -28612.5565 -31275.4510 -27447.7467 -27447.7467
Pseudo R2 0.2233 0.1412 0.2080 0.1421 0.2359 0.2359
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.





Prediction

Standard errors of the share predicted value are estimated using the Delta method.

Treatment effects in the last column refer to estimated marginal means (EMMs, or least-squares means) for specified factor combinations (Post-treatment and Misinfo). Point estimates are reported in the upper cell and standard errors, clustered at the user level, reported in parentheses in the bottom cell. z-ratios are reported in brackets.

Treatment effects estimates for specifications that include Post-Tactic ID fixed effects are not reported since all tactics are misinformation.

cov_feglm <- c(paste0("share ~ treatment"),
               paste0("share ~ treatment + ",demographics_demeaned_treatment),
               paste0("share ~ treatment + factor(fact) + ",sharing_demeaned_treatment),
               paste0("share ~ treatment + factor(type) + ",sharing_tactic_demeaned_treatment),
               paste0("share ~ treatment + factor(fact)*factor(type) + ",demographics_sharing_demeaned_treatment),
               paste0("share ~ treatment + factor(post_id) + ",all_covariates_demeaned_treatment))

if (file.exists("prediction_2treat_logit_df.rds")) {
  
  prediction_2treat_logit_df <- readRDS("prediction_2treat_logit_df.rds")
  
  counter <- 1
  
  for (cov in seq_along(covariate_list)) {
  
    list_models <- cov_estimates_list[[cov]]
  
    cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))
      
    for (m in 1:length(models)) {
      
      # obtain prediction_df
      prediction_df <- prediction_2treat_logit_df[[counter]]
      
      k <- knitr::kable(prediction_df, caption = models[m],
                           col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","log odds ratio<br>Emotions/Facts"))
      print(k)
      cat('<br>')
      
      counter <- counter + 1
      }
  
    cat('<br>\n<br>\n<br>')
  
  }
    
} else {

prediction_2treat_logit_df <- list()

for (cov in seq_along(covariate_list)) {
  
  list_models <- cov_estimates_list[[cov]]
  
  cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))
        
  for (m in 1:length(models)) {
    
    treatmentLevels <- unique(panel_2$treatment)
    posts <- c(0, 1)
    misinfos <- c(0, 1)
    
    prediction_df <- expand.grid(treatment = treatmentLevels, post = posts, post_is_misinfo = misinfos) %>%
      mutate(prediction = NA_real_, prediction_se = NA_real_)

    for (row in 1:nrow(prediction_df)) {
      
      treat <- prediction_df$treatment[row]
      post <- prediction_df$post[row]
      misinfo <- prediction_df$post_is_misinfo[row]
      
      # Filter the relevant data
      relevant_data <- panel_2 %>% 
        filter(row_number() %in% obs(list_models[[m]])) %>%
        filter(treatment == treat & post == post & post_is_misinfo == misinfo)

      # Prepare predictor variables based on model requirements
      predictorVariables <- relevant_data %>%
        distinct(user, .keep_all = TRUE) %>%
        group_by(user, type, fact, post_id) %>%
        summarise(age_cov = mean(age_cov, na.rm = TRUE),
                  gender_Man_cov = mean(gender_Man_cov, na.rm = TRUE),
                  education_Some_college_cov = mean(education_Some_college_cov, na.rm = TRUE),
                  education_Bachelor_degree_cov = mean(education_Bachelor_degree_cov, na.rm = TRUE),
                  education_Graduate_degree_cov = mean(education_Graduate_degree_cov, na.rm = TRUE),
                  marital_Married_or_in_a_domestic_partnership_cov = mean(marital_Married_or_in_a_domestic_partnership_cov, na.rm = TRUE),
                  employment_Unemployed_cov = mean(employment_Unemployed_cov, na.rm = TRUE),
                  employment_Employed_cov = mean(employment_Employed_cov, na.rm = TRUE),
                  location_Mostly_urban_cov = mean(location_Mostly_urban_cov, na.rm = TRUE),
                  location_Suburban_cov = mean(location_Suburban_cov, na.rm = TRUE),
                  religion_Christian_cov = mean(religion_Christian_cov, na.rm = TRUE),
                  religiosity_Attends_cov = mean(religiosity_Attends_cov, na.rm = TRUE),
                  social_media_bin_Yes_cov = mean(social_media_bin_Yes_cov, na.rm = TRUE),
                  social_media_hours_cov = mean(social_media_hours_cov, na.rm = TRUE),
                  att_check_pre_cov = mean(att_check_pre_cov, na.rm = TRUE),
                  social_media_share_80_100_cov = mean(social_media_share_80_100_cov, na.rm = TRUE),
                  social_media_share_60_80_cov = mean(social_media_share_60_80_cov, na.rm = TRUE),
                  social_media_share_40_60_cov = mean(social_media_share_40_60_cov, na.rm = TRUE),
                  social_media_share_20_40_cov = mean(social_media_share_20_40_cov, na.rm = TRUE),
                  misinfo_pre_cov = mean(misinfo_pre_cov, na.rm = TRUE),
                  base_rate_pre_cov = mean(base_rate_pre_cov, na.rm = TRUE),
                  emotions_pre_cov = mean(emotions_pre_cov, na.rm = TRUE),
                  reasoning_pre_cov = mean(reasoning_pre_cov, na.rm = TRUE),
                  combo_pre_cov = mean(combo_pre_cov, na.rm = TRUE)) %>% # now add the treatment and post variables and misinfo
        mutate(treatment = treat,
               post = post,
               post_is_misinfo = misinfo)
      
      
        # predicted value
        if (m != 1) {

        predicted_shares <- predict(list_models[[m]], newdata = predictorVariables)
        predictorVariables$prediction <- predicted_shares

        # mean of predicted value
        prediction_df$prediction[row] <- format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,mean)[,4], digits = 5)
        # se of predicted value
        prediction_df$prediction_se[row] <- paste0("(",format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,se_cont)[,4], digits = 4),")")
        
        }
      
    }

     # predicted value
    if (m == 1) {
      predictorVariables <- expand.grid(treatment = unique(panel_2$treatment),
                                            post = c(0,1),
                                            post_is_misinfo = c(0,1))
      predictions <- predict(baseline_logit, newdata = predictorVariables, type = "response", se.fit = TRUE)
      prediction_df <- predictorVariables
      prediction_df$prediction <- format(predictions$fit, digits = 4)
      prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")
      
      
    emm_res <- emmeans(baseline_logit, specs = pairwise ~ treatment | post * post_is_misinfo)
    contrast_res <- contrast(emm_res, method = "revpairwise")
    
    contrast_df <- as.data.frame(contrast_res) %>% select(post, post_is_misinfo, estimate, SE, z.ratio)
    contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))) %>%
      mutate(estimate = format(estimate, digits = 4)) %>%
      mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
      select(treatment, post, post_is_misinfo, estimate)
    
     prediction_df <- left_join(prediction_df, contrast_df, 
                            by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
      
    }

    # calculate difference between Facts Baseline and all other treatments
    prediction_df <- prediction_df %>%
    group_by(post,post_is_misinfo) %>%
    mutate(lag = ifelse(treatment == "Emotions",
                        prediction, NA)) %>%
    tidyr::fill(lag, .direction = "up") %>%
    ungroup() %>% 
      mutate(te = ifelse(treatment == "Facts Baseline",
                                     format(as.numeric(lag) - as.numeric(prediction), digits = 5), NA)) %>%
      select(-lag) %>%
      mutate(te = ifelse(is.na(te),"",te))
    
    
     if (m %in% c(2,3,6)) {
     # predicted treatment effects
      contrast_df <- data.frame()
        for (p in c(0,1)) {
        for (mis in c(0,1)) {
          
          cov_model <- feglm(as.formula(cov_feglm[m]),panel_2 %>% filter(post == p & post_is_misinfo == mis), family = binomial(link = "logit"), cluster = "user")
          
          # obtain data frame with estimate, std error, and z value
          cov_model_add <- data.frame(
            treatment = unique(panel_2$treatment),
            estimate = format(coef(cov_model), digits = 4),
            SE = sqrt(diag(vcov(cov_model))),
            z.ratio = coef(cov_model) / sqrt(diag(vcov(cov_model))),
            post = p,
            post_is_misinfo = mis
          ) 
          # make rownames a column
          cov_model_add <- rownames_to_column(cov_model_add, var = "treatment2") %>% 
            filter(treatment == "Emotions" & treatment2 == "treatmentEmotions") %>% 
            select(-treatment2) %>%
            mutate(zratio = paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))
          
          cov_model_add <- rbind(cov_model_add %>% 
            mutate(treatment = "Facts Baseline"),cov_model_add %>% 
            mutate(treatment = "Emotions")) %>%
            mutate(estimate = ifelse(treatment == "Emotions", zratio, estimate)) %>% 
            mutate(post = ifelse(post == 0,as.numeric(0),as.numeric(1)),
                   post_is_misinfo = ifelse(post_is_misinfo == 0,as.numeric(0),as.numeric(1))) %>%
            select(treatment, post, post_is_misinfo, estimate)
          contrast_df <- rbind(contrast_df, cov_model_add)
        }
        }
        
       prediction_df <- left_join(prediction_df, contrast_df, 
                                by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    }
    
    if (m %in% c(4,5)) {
      prediction_df$estimate <- ""
    }
    

    prediction_df <- prediction_df %>% select(treatment,post,post_is_misinfo,prediction,prediction_se,te,estimate)
    
    prediction_df <- prediction_df %>% arrange(post,post_is_misinfo)

    k <- knitr::kable(prediction_df, caption = models[m],
                           col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","log odds ratio<br>Emotions/Facts"))
    print(k)
    cat('<br>')

    prediction_2treat_logit_df[[length(prediction_2treat_logit_df) + 1]] <- prediction_df
  }
  cat('<br>\n<br>\n<br>')
}

saveRDS(prediction_2treat_logit_df, "prediction_2treat_logit_df.rds")

}

\[\text{Demographics}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.0059 0.027609
Emotions 0 0 0.6888 (0.006238) (0.04131); [0.6683]
Facts Baseline 0 1 0.5386 (0.004810) 0.0021 0.008161
Emotions 0 1 0.5407 (0.004748) (0.02721); [0.3000]
Facts Baseline 1 0 0.6071 (0.006665) -0.0879 -0.358022
Emotions 1 0 0.5192 (0.006732) (0.03883); [ -9.2196]
Facts Baseline 1 1 0.4650 (0.004813) -0.1120 -0.465472
Emotions 1 1 0.3530 (0.004553) (0.02778); [-16.7557]


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68925 (0.005604) 0.01342 0.002590
Emotions 0 0 0.70267 (0.005263) (0.05418); [0.0478]
Facts Baseline 0 1 0.52269 (0.00624) 0.01768 -0.013730
Emotions 0 1 0.54037 (0.005841) (0.04402); [-0.3119]
Facts Baseline 1 0 0.60172 (0.006054) -0.08481 -0.401041
Emotions 1 0 0.51691 (0.005858) (0.0522); [-7.683]
Facts Baseline 1 1 0.43763 (0.006211) -0.10281 -0.5110728
Emotions 1 1 0.33482 (0.005444) (0.0467); [-10.94]


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6932 (0.006456) 0.00759 0.005002
Emotions 0 0 0.70079 (0.005974) (0.03185); [0.157]
Facts Baseline 0 1 0.52286 (0.007215) 0.01568 0.02275
Emotions 0 1 0.53854 (0.006702) (0.01702); [1.337]
Facts Baseline 1 0 0.60565 (0.006988) -0.08874 -0.47956
Emotions 1 0 0.51691 (0.006733) (0.05551); [-8.64]
Facts Baseline 1 1 0.439 (0.007186) -0.10921 -0.5597
Emotions 1 1 0.32979 (0.006297) (0.04896); [-11.43]


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68926 (0.005609) 0.01342
Emotions 0 0 0.70268 (0.005268)
Facts Baseline 0 1 0.52206 (0.006247) 0.01865
Emotions 0 1 0.54071 (0.005857)
Facts Baseline 1 0 0.60174 (0.00606) -0.08482
Emotions 1 0 0.51692 (0.005863)
Facts Baseline 1 1 0.43688 (0.006215) -0.10195
Emotions 1 1 0.33493 (0.00545)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69277 (0.006585) 0.00548
Emotions 0 0 0.69825 (0.006183)
Facts Baseline 0 1 0.52407 (0.007618) 0.01378
Emotions 0 1 0.53785 (0.007158)
Facts Baseline 1 0 0.60601 (0.007116) -0.09149
Emotions 1 0 0.51452 (0.006926)
Facts Baseline 1 1 0.44265 (0.007596) -0.11419
Emotions 1 1 0.32846 (0.006672)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69277 (0.006585) 0.00548 0.0051957
Emotions 0 0 0.69825 (0.006183) (0.03257); [0.1595]
Facts Baseline 0 1 0.52407 (0.007618) 0.01378 0.0134475
Emotions 0 1 0.53785 (0.007158) (0.01939); [0.6937]
Facts Baseline 1 0 0.60601 (0.007116) -0.09149 -0.505778
Emotions 1 0 0.51452 (0.006926) (0.05559); [-9.098]
Facts Baseline 1 1 0.44265 (0.007596) -0.11419 -0.6307290
Emotions 1 1 0.32846 (0.006672) (0.05035); [-12.53]





\[\text{Sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.0059 0.027609
Emotions 0 0 0.6888 (0.006238) (0.04131); [0.6683]
Facts Baseline 0 1 0.5386 (0.004810) 0.0021 0.008161
Emotions 0 1 0.5407 (0.004748) (0.02721); [0.3000]
Facts Baseline 1 0 0.6071 (0.006665) -0.0879 -0.358022
Emotions 1 0 0.5192 (0.006732) (0.03883); [ -9.2196]
Facts Baseline 1 1 0.4650 (0.004813) -0.1120 -0.465472
Emotions 1 1 0.3530 (0.004553) (0.02778); [-16.7557]


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68925 (0.005604) 0.01342 0.002590
Emotions 0 0 0.70267 (0.005263) (0.05418); [0.0478]
Facts Baseline 0 1 0.52269 (0.00624) 0.01768 -0.013730
Emotions 0 1 0.54037 (0.005841) (0.04402); [-0.3119]
Facts Baseline 1 0 0.60172 (0.006054) -0.08481 -0.401041
Emotions 1 0 0.51691 (0.005858) (0.0522); [-7.683]
Facts Baseline 1 1 0.43763 (0.006211) -0.10281 -0.5110728
Emotions 1 1 0.33482 (0.005444) (0.0467); [-10.94]


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6932 (0.006456) 0.00759 0.005002
Emotions 0 0 0.70079 (0.005974) (0.03185); [0.157]
Facts Baseline 0 1 0.52286 (0.007215) 0.01568 0.02275
Emotions 0 1 0.53854 (0.006702) (0.01702); [1.337]
Facts Baseline 1 0 0.60565 (0.006988) -0.08874 -0.47956
Emotions 1 0 0.51691 (0.006733) (0.05551); [-8.64]
Facts Baseline 1 1 0.439 (0.007186) -0.10921 -0.5597
Emotions 1 1 0.32979 (0.006297) (0.04896); [-11.43]


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68926 (0.005609) 0.01342
Emotions 0 0 0.70268 (0.005268)
Facts Baseline 0 1 0.52206 (0.006247) 0.01865
Emotions 0 1 0.54071 (0.005857)
Facts Baseline 1 0 0.60174 (0.00606) -0.08482
Emotions 1 0 0.51692 (0.005863)
Facts Baseline 1 1 0.43688 (0.006215) -0.10195
Emotions 1 1 0.33493 (0.00545)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69277 (0.006585) 0.00548
Emotions 0 0 0.69825 (0.006183)
Facts Baseline 0 1 0.52407 (0.007618) 0.01378
Emotions 0 1 0.53785 (0.007158)
Facts Baseline 1 0 0.60601 (0.007116) -0.09149
Emotions 1 0 0.51452 (0.006926)
Facts Baseline 1 1 0.44265 (0.007596) -0.11419
Emotions 1 1 0.32846 (0.006672)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69277 (0.006585) 0.00548 0.0051957
Emotions 0 0 0.69825 (0.006183) (0.03257); [0.1595]
Facts Baseline 0 1 0.52407 (0.007618) 0.01378 0.0134475
Emotions 0 1 0.53785 (0.007158) (0.01939); [0.6937]
Facts Baseline 1 0 0.60601 (0.007116) -0.09149 -0.505778
Emotions 1 0 0.51452 (0.006926) (0.05559); [-9.098]
Facts Baseline 1 1 0.44265 (0.007596) -0.11419 -0.6307290
Emotions 1 1 0.32846 (0.006672) (0.05035); [-12.53]





\[\text{Tactic sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.0059 0.027609
Emotions 0 0 0.6888 (0.006238) (0.04131); [0.6683]
Facts Baseline 0 1 0.5386 (0.004810) 0.0021 0.008161
Emotions 0 1 0.5407 (0.004748) (0.02721); [0.3000]
Facts Baseline 1 0 0.6071 (0.006665) -0.0879 -0.358022
Emotions 1 0 0.5192 (0.006732) (0.03883); [ -9.2196]
Facts Baseline 1 1 0.4650 (0.004813) -0.1120 -0.465472
Emotions 1 1 0.3530 (0.004553) (0.02778); [-16.7557]


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68925 (0.005604) 0.01342 0.002590
Emotions 0 0 0.70267 (0.005263) (0.05418); [0.0478]
Facts Baseline 0 1 0.52269 (0.00624) 0.01768 -0.013730
Emotions 0 1 0.54037 (0.005841) (0.04402); [-0.3119]
Facts Baseline 1 0 0.60172 (0.006054) -0.08481 -0.401041
Emotions 1 0 0.51691 (0.005858) (0.0522); [-7.683]
Facts Baseline 1 1 0.43763 (0.006211) -0.10281 -0.5110728
Emotions 1 1 0.33482 (0.005444) (0.0467); [-10.94]


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6932 (0.006456) 0.00759 0.005002
Emotions 0 0 0.70079 (0.005974) (0.03185); [0.157]
Facts Baseline 0 1 0.52286 (0.007215) 0.01568 0.02275
Emotions 0 1 0.53854 (0.006702) (0.01702); [1.337]
Facts Baseline 1 0 0.60565 (0.006988) -0.08874 -0.47956
Emotions 1 0 0.51691 (0.006733) (0.05551); [-8.64]
Facts Baseline 1 1 0.439 (0.007186) -0.10921 -0.5597
Emotions 1 1 0.32979 (0.006297) (0.04896); [-11.43]


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68926 (0.005609) 0.01342
Emotions 0 0 0.70268 (0.005268)
Facts Baseline 0 1 0.52206 (0.006247) 0.01865
Emotions 0 1 0.54071 (0.005857)
Facts Baseline 1 0 0.60174 (0.00606) -0.08482
Emotions 1 0 0.51692 (0.005863)
Facts Baseline 1 1 0.43688 (0.006215) -0.10195
Emotions 1 1 0.33493 (0.00545)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69277 (0.006585) 0.00548
Emotions 0 0 0.69825 (0.006183)
Facts Baseline 0 1 0.52407 (0.007618) 0.01378
Emotions 0 1 0.53785 (0.007158)
Facts Baseline 1 0 0.60601 (0.007116) -0.09149
Emotions 1 0 0.51452 (0.006926)
Facts Baseline 1 1 0.44265 (0.007596) -0.11419
Emotions 1 1 0.32846 (0.006672)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69277 (0.006585) 0.00548 0.0051957
Emotions 0 0 0.69825 (0.006183) (0.03257); [0.1595]
Facts Baseline 0 1 0.52407 (0.007618) 0.01378 0.0134475
Emotions 0 1 0.53785 (0.007158) (0.01939); [0.6937]
Facts Baseline 1 0 0.60601 (0.007116) -0.09149 -0.505778
Emotions 1 0 0.51452 (0.006926) (0.05559); [-9.098]
Facts Baseline 1 1 0.44265 (0.007596) -0.11419 -0.6307290
Emotions 1 1 0.32846 (0.006672) (0.05035); [-12.53]





\[\text{Demographics + Sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.0059 0.027609
Emotions 0 0 0.6888 (0.006238) (0.04131); [0.6683]
Facts Baseline 0 1 0.5386 (0.004810) 0.0021 0.008161
Emotions 0 1 0.5407 (0.004748) (0.02721); [0.3000]
Facts Baseline 1 0 0.6071 (0.006665) -0.0879 -0.358022
Emotions 1 0 0.5192 (0.006732) (0.03883); [ -9.2196]
Facts Baseline 1 1 0.4650 (0.004813) -0.1120 -0.465472
Emotions 1 1 0.3530 (0.004553) (0.02778); [-16.7557]


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68925 (0.005604) 0.01342 0.002590
Emotions 0 0 0.70267 (0.005263) (0.05418); [0.0478]
Facts Baseline 0 1 0.52269 (0.00624) 0.01768 -0.013730
Emotions 0 1 0.54037 (0.005841) (0.04402); [-0.3119]
Facts Baseline 1 0 0.60172 (0.006054) -0.08481 -0.401041
Emotions 1 0 0.51691 (0.005858) (0.0522); [-7.683]
Facts Baseline 1 1 0.43763 (0.006211) -0.10281 -0.5110728
Emotions 1 1 0.33482 (0.005444) (0.0467); [-10.94]


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6932 (0.006456) 0.00759 0.005002
Emotions 0 0 0.70079 (0.005974) (0.03185); [0.157]
Facts Baseline 0 1 0.52286 (0.007215) 0.01568 0.02275
Emotions 0 1 0.53854 (0.006702) (0.01702); [1.337]
Facts Baseline 1 0 0.60565 (0.006988) -0.08874 -0.47956
Emotions 1 0 0.51691 (0.006733) (0.05551); [-8.64]
Facts Baseline 1 1 0.439 (0.007186) -0.10921 -0.5597
Emotions 1 1 0.32979 (0.006297) (0.04896); [-11.43]


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68926 (0.005609) 0.01342
Emotions 0 0 0.70268 (0.005268)
Facts Baseline 0 1 0.52206 (0.006247) 0.01865
Emotions 0 1 0.54071 (0.005857)
Facts Baseline 1 0 0.60174 (0.00606) -0.08482
Emotions 1 0 0.51692 (0.005863)
Facts Baseline 1 1 0.43688 (0.006215) -0.10195
Emotions 1 1 0.33493 (0.00545)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69277 (0.006585) 0.00548
Emotions 0 0 0.69825 (0.006183)
Facts Baseline 0 1 0.52407 (0.007618) 0.01378
Emotions 0 1 0.53785 (0.007158)
Facts Baseline 1 0 0.60601 (0.007116) -0.09149
Emotions 1 0 0.51452 (0.006926)
Facts Baseline 1 1 0.44265 (0.007596) -0.11419
Emotions 1 1 0.32846 (0.006672)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69277 (0.006585) 0.00548 0.0051957
Emotions 0 0 0.69825 (0.006183) (0.03257); [0.1595]
Facts Baseline 0 1 0.52407 (0.007618) 0.01378 0.0134475
Emotions 0 1 0.53785 (0.007158) (0.01939); [0.6937]
Facts Baseline 1 0 0.60601 (0.007116) -0.09149 -0.505778
Emotions 1 0 0.51452 (0.006926) (0.05559); [-9.098]
Facts Baseline 1 1 0.44265 (0.007596) -0.11419 -0.6307290
Emotions 1 1 0.32846 (0.006672) (0.05035); [-12.53]





\[\text{Demographics + Sharing rates + Tactic sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.0059 0.027609
Emotions 0 0 0.6888 (0.006238) (0.04131); [0.6683]
Facts Baseline 0 1 0.5386 (0.004810) 0.0021 0.008161
Emotions 0 1 0.5407 (0.004748) (0.02721); [0.3000]
Facts Baseline 1 0 0.6071 (0.006665) -0.0879 -0.358022
Emotions 1 0 0.5192 (0.006732) (0.03883); [ -9.2196]
Facts Baseline 1 1 0.4650 (0.004813) -0.1120 -0.465472
Emotions 1 1 0.3530 (0.004553) (0.02778); [-16.7557]


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68925 (0.005604) 0.01342 0.002590
Emotions 0 0 0.70267 (0.005263) (0.05418); [0.0478]
Facts Baseline 0 1 0.52269 (0.00624) 0.01768 -0.013730
Emotions 0 1 0.54037 (0.005841) (0.04402); [-0.3119]
Facts Baseline 1 0 0.60172 (0.006054) -0.08481 -0.401041
Emotions 1 0 0.51691 (0.005858) (0.0522); [-7.683]
Facts Baseline 1 1 0.43763 (0.006211) -0.10281 -0.5110728
Emotions 1 1 0.33482 (0.005444) (0.0467); [-10.94]


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6932 (0.006456) 0.00759 0.005002
Emotions 0 0 0.70079 (0.005974) (0.03185); [0.157]
Facts Baseline 0 1 0.52286 (0.007215) 0.01568 0.02275
Emotions 0 1 0.53854 (0.006702) (0.01702); [1.337]
Facts Baseline 1 0 0.60565 (0.006988) -0.08874 -0.47956
Emotions 1 0 0.51691 (0.006733) (0.05551); [-8.64]
Facts Baseline 1 1 0.439 (0.007186) -0.10921 -0.5597
Emotions 1 1 0.32979 (0.006297) (0.04896); [-11.43]


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68926 (0.005609) 0.01342
Emotions 0 0 0.70268 (0.005268)
Facts Baseline 0 1 0.52206 (0.006247) 0.01865
Emotions 0 1 0.54071 (0.005857)
Facts Baseline 1 0 0.60174 (0.00606) -0.08482
Emotions 1 0 0.51692 (0.005863)
Facts Baseline 1 1 0.43688 (0.006215) -0.10195
Emotions 1 1 0.33493 (0.00545)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69277 (0.006585) 0.00548
Emotions 0 0 0.69825 (0.006183)
Facts Baseline 0 1 0.52407 (0.007618) 0.01378
Emotions 0 1 0.53785 (0.007158)
Facts Baseline 1 0 0.60601 (0.007116) -0.09149
Emotions 1 0 0.51452 (0.006926)
Facts Baseline 1 1 0.44265 (0.007596) -0.11419
Emotions 1 1 0.32846 (0.006672)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.69277 (0.006585) 0.00548 0.0051957
Emotions 0 0 0.69825 (0.006183) (0.03257); [0.1595]
Facts Baseline 0 1 0.52407 (0.007618) 0.01378 0.0134475
Emotions 0 1 0.53785 (0.007158) (0.01939); [0.6937]
Facts Baseline 1 0 0.60601 (0.007116) -0.09149 -0.505778
Emotions 1 0 0.51452 (0.006926) (0.05559); [-9.098]
Facts Baseline 1 1 0.44265 (0.007596) -0.11419 -0.6307290
Emotions 1 1 0.32846 (0.006672) (0.05035); [-12.53]





Click for All treatment arms
# version 2: all treatment arms

covariate_list <- c(demographics_demeaned_treatment,
                    sharing_demeaned_treatment,
                    sharing_tactic_demeaned_treatment,
                    demographics_sharing_demeaned_treatment,
                    all_covariates_demeaned_treatment)

cov_estimates_list <- list()

for (cov_list in covariate_list) {

# Demographics
formula_cov1_logit <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list)
cov1_logit <- feglm(as.formula(formula_cov1_logit),panel, family = binomial(link = "logit"))

formula_cov2_logit <- paste0("share ~ treatment*post*post_is_misinfo "," + ",cov_list," | user")
cov2_logit <- feglm(as.formula(formula_cov2_logit),panel, family = binomial(link = "logit"))

# Misinfo and Non-misinfo sharing rates
formula_cov3_logit <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact) "," + ",cov_list," | user")
cov3_logit <- feglm(as.formula(formula_cov3_logit),panel, family = binomial(link = "logit"))

# Misinfo, Non-misinfo, and Tactic sharing rates
formula_cov4_logit <- paste0("share ~ treatment*post*post_is_misinfo + factor(type) "," + ",cov_list," | user")
cov4_logit <- feglm(as.formula(formula_cov4_logit),panel, family = binomial(link = "logit"))

# Demographics and Misinfo and Non-misinfo sharing rates
formula_cov5_logit <- paste0("share ~ treatment*post*post_is_misinfo + factor(fact)*factor(type) "," + ",cov_list," | user")
cov5_logit <- feglm(as.formula(formula_cov5_logit),panel, family = binomial(link = "logit"))

# Demographics, Misinfo and Non-misinfo sharing rates, and Tactic sharing rates
formula_cov6_logit <- paste0("share ~ treatment*post*post_is_misinfo + factor(post_id) "," + ",cov_list," | user")
cov6_logit <- feglm(as.formula(formula_cov6_logit),panel, family = binomial(link = "logit"))

cov_estimates_list[[length(cov_estimates_list) + 1]] <- list(cov1_logit,cov2_logit,cov3_logit,cov4_logit,cov5_logit,cov6_logit)
}


covariate_list_names <- c("Demographics",
                          "Sharing rates",
                          "Tactic sharing rates",
                          "Demographics + Sharing rates",
                          "Demographics + Sharing rates + Tactic sharing rates")

for (cov in seq(length(covariate_list))) {

# Print model
headers <- c("Share (binary indicator)")
model_list <- cov_estimates_list[[cov]]
names <- unique(c(names(cov_estimates_list[[cov]][[1]]$coefficients),
                  names(cov_estimates_list[[cov]][[2]]$coefficients),
                  names(cov_estimates_list[[cov]][[3]]$coefficients),
                  names(cov_estimates_list[[cov]][[4]]$coefficients),
                  names(cov_estimates_list[[cov]][[5]]$coefficients),
                  names(cov_estimates_list[[cov]][[6]]$coefficients)))
variable_labels_wide <- variable_mapping_long[names]

# remove blankrows
coef_names <- names
matrix_coeff_na <- expand.grid(coef_name = coef_names, model = seq(length(model_list)))
matrix_coeff_na$var <- 0
matrix_coeff_na$var_na <- 0
for (m in 1:length(model_list)) {
  na_coeff <- names(model_list[[m]]$coefficients)[is.na(model_list[[m]]$coefficients)]
  for (c in na_coeff) {
    matrix_coeff_na$var[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1 # 1 if variable is in the model (not all models have all variables)
    matrix_coeff_na$var_na[matrix_coeff_na$coef_name == c & matrix_coeff_na$model == m] <- 1
  }
}
matrix_coeff_na <- matrix_coeff_na %>% group_by(coef_name) %>% mutate(var = sum(var), var_na = sum(var_na)) %>% distinct(coef_name,var,var_na)
rows_to_omit <- as.vector(unique(matrix_coeff_na$coef_name[matrix_coeff_na$var_na != 0])) # omit if NA in all models
rows_to_omit <- gsub("\\^\\s","^",paste0("^",rows_to_omit,"$", collapse = "|"))
rows_to_omit <- gsub("\\(","\\\\(",gsub("\\)","\\\\)",rows_to_omit))

# keep variables
keep <- list("treatmentEmotions:post:post_is_misinfo" = "Emotions x 1[Post-treatment] x 1[Misinfo]",
             "treatmentEmotions:post" = "Emotions x 1[Post-treatment]",
             "treatmentEmotions:post_is_misinfo" = "Emotions x 1[Misinfo]")

# out-of-sample R2
if (any(ls() %in% "R2oos_cov_alltreat_logit_list")) {
    R2oos_cov_alltreat_logit_all <- c(R2oos_cov_alltreat_logit_list[[cov]])
} else {
    R2oos_cov_alltreat_logit_all <- rep("",length(model_list))
}

# Print model name
cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))

# Short table
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects\n<br>Covariates:",covariate_list_names[cov]),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      custom.coef.map = keep,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = c("",rep(covariate_list_names[cov],length(model_list)-1)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_cov_alltreat_logit_all)),
                      reorder.gof = c(6,7,8,9,5,1,2,3,4)
)
cat(html_table)
cat("<br>")

# Full table (all independent variables)

cat('<details>')
cat('<summary>Click to view the full table</summary>')
html_table <- texreg::htmlreg(model_list,
                      custom.header = list("Share (binary indicator)" = 1:length(model_list)),
                      custom.model.names = c("Baseline<br>(1)",
                                             "User ID FE<br>(2)",
                                             "User ID FE +<br>Post domain FE<br>(3)",
                                             "User ID FE +<br>Post tactic FE<br>(4)",
                                             "User ID FE +<br>Post domain x Post tactic<br>(5)",
                                             "User ID FE +<br>Post ID FE<br>(6)"),
                      stars = c(0.20, 0.10, 0.02),
                      custom.note = "Significance levels: \\*p<0.10, \\*\\*p<0.05, \\*\\*\\*p<0.01 one-sided test.",
                      caption = paste("Linear Regression:", headers, "vs. Treatment for different set of fixed effects\n<br>Covariates:",covariate_list_names[cov]),
                      caption.above = TRUE,
                      doctype = FALSE,
                      html.tag = FALSE,
                      table.tag = FALSE,
                      single.row = FALSE,
                      include.groups = FALSE,
                      digits = 4,
                      custom.coef.names = variable_labels_wide,
                      omit.coef = rows_to_omit,
                      custom.gof.rows = list("Fixed Effects" = c("",rep("user",length(model_list)-1)),
                                             "Fixed Effects" = c("","","Domain","Tactic","Domain x Tactic","Post ID"),
                                             "Covariates" = c("",rep(covariate_list_names[cov],length(model_list)-1)),
                                             "Clustered Std. Errors" = rep("user",length(model_list)),
                                             "Out-of-sample R<sup>2</sup>" = c(R2oos_cov_alltreat_logit_all)),
                      reorder.gof = c(6,7,8,9,5,1,2,3,4)
)
cat(html_table)
cat('</details>')
cat('<br>\n<br>\n<br>')
}
\[\text{Demographics}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0914* -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0704) (0.0857) (0.0893) (0.0857) (0.0907) (0.0907)
Emotions x 1[Post-treatment] -0.4006*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0581) (0.0839) (0.0900) (0.0840) (0.0914) (0.0914)
Emotions x 1[Misinfo] -0.0151 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0507) (0.0638) (0.0677) (0.0638) (0.0692) (0.0692)
Num. obs. 156312 137250 137250 137250 137250 137250
Deviance 202191.4106 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Log Likelihood -101095.7053 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
Pseudo R2 0.0625 0.1384 0.2024 0.1393 0.2296 0.2296
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics Demographics Demographics Demographics Demographics
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 0.8245***          
  (0.0302)          
No-course Baseline 0.0747**          
  (0.0441)          
Emotions 0.0005          
  (0.0424)          
Reasoning 0.0663*          
  (0.0436)          
Combo -0.0111          
  (0.0429)          
1[Post-treatment] -0.3496*** -0.5002*** -0.5575*** -0.5005*** -0.5596*** -0.5596***
  (0.0416) (0.0589) (0.0631) (0.0589) (0.0639) (0.0639)
1[Misinfo] -0.6451*** -0.9234*** -1.0396*** -0.8461*** -1.0772*** -3.0886***
  (0.0361) (0.0453) (0.0483) (0.0464) (0.0958) (0.0973)
Age -0.0152          
  (0.0130)          
Man 0.0593***          
  (0.0118)          
Some college -0.0274**          
  (0.0147)          
Bachelor’s degree -0.0623***          
  (0.0148)          
Graduate degree -0.0465***          
  (0.0127)          
Married 0.0025          
  (0.0132)          
Unemployed -0.0678***          
  (0.0154)          
Employed -0.0396***          
  (0.0168)          
Mostly urban -0.1233***          
  (0.0140)          
Suburban -0.0765***          
  (0.0137)          
Christian 0.0387***          
  (0.0122)          
Attends religious services 0.0452***          
  (0.0119)          
Uses social media -0.0830***          
  (0.0111)          
Hours spent on Social Media 0.0327***          
  (0.0130)          
Social Media Share: 80-100% 0.3545***          
  (0.0148)          
Social Media Share: 60-80% 0.4825***          
  (0.0159)          
Social Media Share: 40-60% 0.4174***          
  (0.0164)          
Social Media Share: 20-40% 0.2228***          
  (0.0152)          
Passed attention check at pre-treatment -0.0945***          
  (0.0118)          
No-course Baseline x 1[Post-treatment] 0.2300*** 0.3289*** 0.3843*** 0.3290*** 0.3850*** 0.3850***
  (0.0612) (0.0859) (0.0921) (0.0859) (0.0937) (0.0937)
Emotions x 1[Post-treatment] -0.4006*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0581) (0.0839) (0.0900) (0.0840) (0.0914) (0.0914)
Reasoning x 1[Post-treatment] -0.3426*** -0.4785*** -0.5282*** -0.4787*** -0.5422*** -0.5422***
  (0.0596) (0.0848) (0.0910) (0.0848) (0.0922) (0.0922)
Combo x 1[Post-treatment] -0.3731*** -0.5308*** -0.5848*** -0.5311*** -0.6072*** -0.6072***
  (0.0588) (0.0845) (0.0911) (0.0846) (0.0924) (0.0924)
No-course Baseline x 1[Misinfo] 0.0101 0.0182 0.0295 0.0185 0.0243 0.0243
  (0.0526) (0.0668) (0.0708) (0.0668) (0.0722) (0.0722)
Emotions x 1[Misinfo] -0.0151 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0507) (0.0638) (0.0677) (0.0638) (0.0692) (0.0692)
Reasoning x 1[Misinfo] -0.0907** -0.1165** -0.0821 -0.1164** -0.0846 -0.0846
  (0.0520) (0.0657) (0.0695) (0.0657) (0.0710) (0.0710)
Combo x 1[Misinfo] 0.0227 0.0352 0.0522 0.0354 0.0620 0.0620
  (0.0513) (0.0645) (0.0687) (0.0646) (0.0703) (0.0703)
1[Post-treatment] x 1[Misinfo] 0.0386 0.0492 0.0613 0.0485 0.0507 0.0507
  (0.0502) (0.0617) (0.0640) (0.0618) (0.0648) (0.0648)
No-course Baseline x Age -0.0225          
  (0.0184)          
Emotions x Age -0.0518***          
  (0.0196)          
Reasoning x Age -0.0309*          
  (0.0192)          
Combo x Age 0.0023          
  (0.0189)          
No-course Baseline x Man -0.1019***          
  (0.0174)          
Emotions x Man -0.0091          
  (0.0167)          
Reasoning x Man -0.0143          
  (0.0169)          
Combo x Man -0.0260*          
  (0.0169)          
No-course Baseline x Some college 0.0082          
  (0.0209)          
Emotions x Some college -0.0158          
  (0.0205)          
Reasoning x Some college -0.0429**          
  (0.0208)          
Combo x Some college 0.0058          
  (0.0208)          
No-course Baseline x Bachelor’s degree 0.0757***          
  (0.0211)          
Emotions x Bachelor’s degree 0.0367**          
  (0.0206)          
Reasoning x Bachelor’s degree -0.0113          
  (0.0210)          
Combo x Bachelor’s degree -0.0213          
  (0.0209)          
No-course Baseline x Graduate degree 0.0544***          
  (0.0187)          
Emotions x Graduate degree 0.0470***          
  (0.0169)          
Reasoning x Graduate degree 0.0650***          
  (0.0191)          
Combo x Graduate degree 0.0714***          
  (0.0167)          
No-course Baseline x Married 0.0364**          
  (0.0195)          
Emotions x Married 0.0228          
  (0.0188)          
Reasoning x Married 0.0045          
  (0.0194)          
Combo x Married -0.0335**          
  (0.0192)          
No-course Baseline x Unemployed 0.0217          
  (0.0221)          
Emotions x Unemployed -0.0320*          
  (0.0216)          
Reasoning x Unemployed 0.0428**          
  (0.0218)          
Combo x Unemployed 0.0055          
  (0.0219)          
No-course Baseline x Employed -0.0170          
  (0.0242)          
Emotions x Employed -0.0835***          
  (0.0234)          
Reasoning x Employed -0.0076          
  (0.0242)          
Combo x Employed -0.0044          
  (0.0236)          
No-course Baseline x Mostly urban 0.1288***          
  (0.0202)          
Emotions x Mostly urban 0.1246***          
  (0.0197)          
Reasoning x Mostly urban 0.0276*          
  (0.0202)          
Combo x Mostly urban 0.0930***          
  (0.0198)          
No-course Baseline x Suburban 0.0180          
  (0.0198)          
Emotions x Suburban 0.0657***          
  (0.0194)          
Reasoning x Suburban 0.0177          
  (0.0196)          
Combo x Suburban 0.0490***          
  (0.0195)          
No-course Baseline x Christian -0.0510***          
  (0.0170)          
Emotions x Christian -0.0361**          
  (0.0174)          
Reasoning x Christian -0.0346**          
  (0.0178)          
Combo x Christian -0.0112          
  (0.0173)          
No-course Baseline x Attends religious services -0.0547***          
  (0.0166)          
Emotions x Attends religious services -0.0942***          
  (0.0173)          
Reasoning x Attends religious services -0.0332**          
  (0.0176)          
Combo x Attends religious services -0.0647***          
  (0.0174)          
No-course Baseline x Uses social media 0.0664***          
  (0.0155)          
Emotions x Uses social media 0.0238*          
  (0.0175)          
Reasoning x Uses social media 0.0490***          
  (0.0159)          
Combo x Uses social media 0.0160          
  (0.0182)          
No-course Baseline x Hours spent on Social Media -0.0615***          
  (0.0181)          
Emotions x Hours spent on Social Media -0.0555***          
  (0.0179)          
Reasoning x Hours spent on Social Media 0.0167          
  (0.0184)          
Combo x Hours spent on Social Media -0.0883***          
  (0.0178)          
No-course Baseline x Social Media Share: 80-100% -0.0318*          
  (0.0209)          
Emotions x Social Media Share: 80-100% -0.0325*          
  (0.0208)          
Reasoning x Social Media Share: 80-100% 0.0080          
  (0.0209)          
Combo x Social Media Share: 80-100% -0.0488***          
  (0.0206)          
No-course Baseline x Social Media Share: 60-80% -0.0074          
  (0.0237)          
Emotions x Social Media Share: 60-80% -0.0176          
  (0.0228)          
Reasoning x Social Media Share: 60-80% -0.0390**          
  (0.0233)          
Combo x Social Media Share: 60-80% -0.0399**          
  (0.0231)          
No-course Baseline x Social Media Share: 40-60% -0.0256          
  (0.0237)          
Emotions x Social Media Share: 40-60% -0.0546***          
  (0.0233)          
Reasoning x Social Media Share: 40-60% -0.0227          
  (0.0240)          
Combo x Social Media Share: 40-60% -0.0781***          
  (0.0235)          
No-course Baseline x Social Media Share: 20-40% -0.0569***          
  (0.0220)          
Emotions x Social Media Share: 20-40% -0.0290*          
  (0.0217)          
Reasoning x Social Media Share: 20-40% -0.0152          
  (0.0222)          
Combo x Social Media Share: 20-40% -0.0408**          
  (0.0220)          
No-course Baseline x Passed attention check at pre-treatment -0.0655***          
  (0.0172)          
Emotions x Passed attention check at pre-treatment -0.0182          
  (0.0167)          
Reasoning x Passed attention check at pre-treatment 0.0498***          
  (0.0170)          
Combo x Passed attention check at pre-treatment -0.0344**          
  (0.0168)          
No-course Baseline x 1[Post-treatment] x 1[Misinfo] 0.0004 0.0069 -0.0022 0.0073 0.0198 0.0198
  (0.0735) (0.0921) (0.0958) (0.0921) (0.0971) (0.0971)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.0914* -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0704) (0.0857) (0.0893) (0.0857) (0.0907) (0.0907)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.0810 0.1178* 0.0982 0.1172* 0.0620 0.0620
  (0.0720) (0.0892) (0.0922) (0.0893) (0.0935) (0.0935)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0558 -0.0845 -0.0937 -0.0854 -0.1563** -0.1563**
  (0.0712) (0.0887) (0.0924) (0.0887) (0.0940) (0.0940)
Post domain 2     -1.3458***   -1.3896***  
      (0.0391)   (0.0766)  
Post domain 3     -1.8926***   -2.2086***  
      (0.0389)   (0.0755)  
Post domain 4     -1.2128***   -1.7401***  
      (0.0384)   (0.0763)  
Post domain 5     0.4049***   0.0051  
      (0.0388)   (0.0820)  
Post domain 6     0.1237***   0.4527***  
      (0.0395)   (0.0844)  
Post domain 7     -1.5746***   -1.4228***  
      (0.0388)   (0.0752)  
Post domain 8     -1.4724***   -0.9538***  
      (0.0391)   (0.0779)  
Post domain 9     0.2728***   -0.5281***  
      (0.0392)   (0.0788)  
Post domain 10     -0.3969***   -0.8059***  
      (0.0377)   (0.0763)  
Post domain 11     -1.0747***   -1.3501***  
      (0.0388)   (0.0756)  
Post domain 12     -0.7213***   -1.0828***  
      (0.0372)   (0.0758)  
Post domain 13     -1.0425***   -1.6220***  
      (0.0378)   (0.0743)  
Post domain 14     -1.8560***   -2.2721***  
      (0.0403)   (0.0771)  
Post domain 15     -1.2523***   -2.0199***  
      (0.0381)   (0.0749)  
1[Combo manipulation tactic]       -0.2264*** -0.3419***  
        (0.0187) (0.0832)  
1[Emotions manipulation tactic]       -0.0068 -0.5416***  
        (0.0184) (0.0822)  
Post domain 2 x 1[Combo manipulation tactic]         -0.1530*  
          (0.1163)  
Post domain 3 x 1[Combo manipulation tactic]         0.4818***  
          (0.1123)  
Post domain 4 x 1[Combo manipulation tactic]         0.7230***  
          (0.1104)  
Post domain 5 x 1[Combo manipulation tactic]         0.6450***  
          (0.1186)  
Post domain 6 x 1[Combo manipulation tactic]         -2.2961***  
          (0.1206)  
Post domain 7 x 1[Combo manipulation tactic]         -0.1072  
          (0.1122)  
Post domain 8 x 1[Combo manipulation tactic]         0.0724  
          (0.1141)  
Post domain 9 x 1[Combo manipulation tactic]         1.1394***  
          (0.1160)  
Post domain 10 x 1[Combo manipulation tactic]         0.3736***  
          (0.1122)  
Post domain 11 x 1[Combo manipulation tactic]         0.6002***  
          (0.1113)  
Post domain 12 x 1[Combo manipulation tactic]         0.0418  
          (0.1136)  
Post domain 13 x 1[Combo manipulation tactic]         0.5858***  
          (0.1106)  
Post domain 14 x 1[Combo manipulation tactic]         0.3450***  
          (0.1139)  
Post domain 15 x 1[Combo manipulation tactic]         0.7389***  
          (0.1105)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4478***  
          (0.1167)  
Post domain 3 x 1[Emotions manipulation tactic]         0.9334***  
          (0.1107)  
Post domain 4 x 1[Emotions manipulation tactic]         0.5846***  
          (0.1097)  
Post domain 5 x 1[Emotions manipulation tactic]         0.8014***  
          (0.1170)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9194***  
          (0.1236)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0346  
          (0.1108)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.9456***  
          (0.1172)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2361***  
          (0.1149)  
Post domain 10 x 1[Emotions manipulation tactic]         0.8795***  
          (0.1109)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0799  
          (0.1124)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1423***  
          (0.1105)  
Post domain 13 x 1[Emotions manipulation tactic]         1.4266***  
          (0.1071)  
Post domain 14 x 1[Emotions manipulation tactic]         0.8221***  
          (0.1124)  
Post domain 15 x 1[Emotions manipulation tactic]         2.4403***  
          (0.1113)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.4651***  
          (0.1126)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.2843***  
          (0.1157)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.8423***  
          (0.1111)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.2026**  
          (0.1188)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3527***  
          (0.1241)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.8764***  
          (0.1125)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.9427***  
          (0.1203)  
Post domain 9 x 1[Reasoning manipulation tactic]         1.0028***  
          (0.1186)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4064***  
          (0.1125)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.5144***  
          (0.1124)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2580***  
          (0.1107)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3539***  
          (0.1101)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.4395***  
          (0.1117)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0085  
          (0.1116)  
Post 2 indicator           -1.3896***
            (0.0766)
Post 3 indicator           -2.2086***
            (0.0755)
Post 4 indicator           -1.7401***
            (0.0763)
Post 5 indicator           0.0051
            (0.0820)
Post 6 indicator           0.4527***
            (0.0844)
Post 7 indicator           -1.4228***
            (0.0752)
Post 8 indicator           -0.9538***
            (0.0779)
Post 9 indicator           -0.5281***
            (0.0788)
Post 10 indicator           -0.8059***
            (0.0763)
Post 11 indicator           -1.3501***
            (0.0756)
Post 12 indicator           -1.0828***
            (0.0758)
Post 13 indicator           -1.6220***
            (0.0743)
Post 14 indicator           -2.2721***
            (0.0771)
Post 15 indicator           -2.0199***
            (0.0749)
Post 16 indicator           1.6695***
            (0.0824)
Post 17 indicator           0.1269*
            (0.0846)
Post 18 indicator           -0.0573
            (0.0815)
Post 19 indicator           0.6525***
            (0.0790)
Post 20 indicator           2.3196***
            (0.0838)
Post 21 indicator           -0.1740**
            (0.0827)
Post 22 indicator           0.1395**
            (0.0819)
Post 23 indicator           0.7881***
            (0.0812)
Post 24 indicator           2.2808***
            (0.0839)
Post 25 indicator           1.2372***
            (0.0799)
Post 26 indicator           0.9195***
            (0.0829)
Post 27 indicator           0.6285***
            (0.0802)
Post 28 indicator           0.6333***
            (0.0813)
Post 29 indicator           -0.2576***
            (0.0832)
Post 30 indicator           0.3885***
            (0.0809)
Post 31 indicator           1.4698***
            (0.0799)
Post 32 indicator           -0.3676***
            (0.0867)
Post 33 indicator           0.1946***
            (0.0794)
Post 34 indicator           0.3143***
            (0.0795)
Post 35 indicator           2.2763***
            (0.0839)
Post 36 indicator           2.8419***
            (0.0910)
Post 37 indicator           0.0124
            (0.0810)
Post 38 indicator           -0.4296***
            (0.0859)
Post 39 indicator           2.1778***
            (0.0835)
Post 40 indicator           1.5434***
            (0.0810)
Post 41 indicator           0.0398
            (0.0829)
Post 42 indicator           1.5293***
            (0.0807)
Post 43 indicator           1.2744***
            (0.0780)
Post 44 indicator           0.0198
            (0.0829)
Post 45 indicator           1.8902***
            (0.0825)
Post 46 indicator           2.0114***
            (0.0830)
Post 47 indicator           1.0869***
            (0.0811)
Post 48 indicator           -0.4814***
            (0.0840)
Post 49 indicator           1.1137***
            (0.0820)
Post 50 indicator           2.2191***
            (0.0846)
Post 51 indicator           2.8168***
            (0.0890)
Post 52 indicator           -0.2878***
            (0.0832)
Post 53 indicator           -0.8851***
            (0.0926)
Post 54 indicator           2.4861***
            (0.0862)
Post 55 indicator           1.6118***
            (0.0820)
Post 56 indicator           1.1756***
            (0.0838)
Post 57 indicator           1.1865***
            (0.0791)
Post 58 indicator           0.7433***
            (0.0798)
Post 59 indicator           0.1789**
            (0.0816)
Num. obs. 156312 137250 137250 137250 137250 137250
Deviance 202191.4106 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Log Likelihood -101095.7053 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
Pseudo R2 0.0625 0.1384 0.2024 0.1393 0.2296 0.2296
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics Demographics Demographics Demographics Demographics
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1042* -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0793) (0.0857) (0.0893) (0.0857) (0.0907) (0.0907)
Emotions x 1[Post-treatment] -0.4743*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0657) (0.0839) (0.0900) (0.0840) (0.0914) (0.0914)
Emotions x 1[Misinfo] 0.0236 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0575) (0.0638) (0.0677) (0.0638) (0.0692) (0.0692)
Num. obs. 156312 137250 137250 137250 137250 137250
Deviance 166604.6384 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Log Likelihood -83302.3192 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
Pseudo R2 0.2281 0.1384 0.2024 0.1393 0.2296 0.2296
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Sharing rates Sharing rates Sharing rates Sharing rates Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 1.0465***          
  (0.0347)          
No-course Baseline 0.0168          
  (0.0508)          
Emotions -0.0305          
  (0.0482)          
Reasoning 0.0736*          
  (0.0500)          
Combo -0.0193          
  (0.0493)          
1[Post-treatment] -0.4565*** -0.5002*** -0.5575*** -0.5005*** -0.5596*** -0.5596***
  (0.0476) (0.0589) (0.0631) (0.0589) (0.0639) (0.0639)
1[Misinfo] -0.8428*** -0.9234*** -1.0396*** -0.8461*** -1.0772*** -3.0886***
  (0.0414) (0.0453) (0.0483) (0.0464) (0.0958) (0.0973)
Avg. Sharing of Misinfo posts at pre-treatment 0.9274***          
  (0.0173)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.5397***          
  (0.0166)          
No-course Baseline x 1[Post-treatment] 0.2988*** 0.3289*** 0.3843*** 0.3290*** 0.3850*** 0.3850***
  (0.0701) (0.0859) (0.0921) (0.0859) (0.0937) (0.0937)
Emotions x 1[Post-treatment] -0.4743*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0657) (0.0839) (0.0900) (0.0840) (0.0914) (0.0914)
Reasoning x 1[Post-treatment] -0.4360*** -0.4785*** -0.5282*** -0.4787*** -0.5422*** -0.5422***
  (0.0680) (0.0848) (0.0910) (0.0848) (0.0922) (0.0922)
Combo x 1[Post-treatment] -0.4866*** -0.5308*** -0.5848*** -0.5311*** -0.6072*** -0.6072***
  (0.0673) (0.0845) (0.0911) (0.0846) (0.0924) (0.0924)
No-course Baseline x 1[Misinfo] 0.0059 0.0182 0.0295 0.0185 0.0243 0.0243
  (0.0606) (0.0668) (0.0708) (0.0668) (0.0722) (0.0722)
Emotions x 1[Misinfo] 0.0236 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0575) (0.0638) (0.0677) (0.0638) (0.0692) (0.0692)
Reasoning x 1[Misinfo] -0.1060** -0.1165** -0.0821 -0.1164** -0.0846 -0.0846
  (0.0596) (0.0657) (0.0695) (0.0657) (0.0710) (0.0710)
Combo x 1[Misinfo] 0.0302 0.0352 0.0522 0.0354 0.0620 0.0620
  (0.0589) (0.0645) (0.0687) (0.0646) (0.0703) (0.0703)
1[Post-treatment] x 1[Misinfo] 0.0526 0.0492 0.0613 0.0485 0.0507 0.0507
  (0.0573) (0.0617) (0.0640) (0.0618) (0.0648) (0.0648)
No-course Baseline x Avg. Sharing of Misinfo posts at pre-treatment 0.0346*          
  (0.0249)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.1364***          
  (0.0234)          
Reasoning x Avg. Sharing of Misinfo posts at pre-treatment -0.0396*          
  (0.0243)          
Combo x Avg. Sharing of Misinfo posts at pre-treatment -0.0622***          
  (0.0243)          
No-course Baseline x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0299          
  (0.0239)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0649***          
  (0.0229)          
Reasoning x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0375*          
  (0.0238)          
Combo x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0233          
  (0.0236)          
No-course Baseline x 1[Post-treatment] x 1[Misinfo] -0.0005 0.0069 -0.0022 0.0073 0.0198 0.0198
  (0.0841) (0.0921) (0.0958) (0.0921) (0.0971) (0.0971)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1042* -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0793) (0.0857) (0.0893) (0.0857) (0.0907) (0.0907)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.1105* 0.1178* 0.0982 0.1172* 0.0620 0.0620
  (0.0818) (0.0892) (0.0922) (0.0893) (0.0935) (0.0935)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0578 -0.0845 -0.0937 -0.0854 -0.1563** -0.1563**
  (0.0811) (0.0887) (0.0924) (0.0887) (0.0940) (0.0940)
Post domain 2     -1.3458***   -1.3896***  
      (0.0391)   (0.0766)  
Post domain 3     -1.8926***   -2.2086***  
      (0.0389)   (0.0755)  
Post domain 4     -1.2128***   -1.7401***  
      (0.0384)   (0.0763)  
Post domain 5     0.4049***   0.0051  
      (0.0388)   (0.0820)  
Post domain 6     0.1237***   0.4527***  
      (0.0395)   (0.0844)  
Post domain 7     -1.5746***   -1.4228***  
      (0.0388)   (0.0752)  
Post domain 8     -1.4724***   -0.9538***  
      (0.0391)   (0.0779)  
Post domain 9     0.2728***   -0.5281***  
      (0.0392)   (0.0788)  
Post domain 10     -0.3969***   -0.8059***  
      (0.0377)   (0.0763)  
Post domain 11     -1.0747***   -1.3501***  
      (0.0388)   (0.0756)  
Post domain 12     -0.7213***   -1.0828***  
      (0.0372)   (0.0758)  
Post domain 13     -1.0425***   -1.6220***  
      (0.0378)   (0.0743)  
Post domain 14     -1.8560***   -2.2721***  
      (0.0403)   (0.0771)  
Post domain 15     -1.2523***   -2.0199***  
      (0.0381)   (0.0749)  
1[Combo manipulation tactic]       -0.2264*** -0.3419***  
        (0.0187) (0.0832)  
1[Emotions manipulation tactic]       -0.0068 -0.5416***  
        (0.0184) (0.0822)  
Post domain 2 x 1[Combo manipulation tactic]         -0.1530*  
          (0.1163)  
Post domain 3 x 1[Combo manipulation tactic]         0.4818***  
          (0.1123)  
Post domain 4 x 1[Combo manipulation tactic]         0.7230***  
          (0.1104)  
Post domain 5 x 1[Combo manipulation tactic]         0.6450***  
          (0.1186)  
Post domain 6 x 1[Combo manipulation tactic]         -2.2961***  
          (0.1206)  
Post domain 7 x 1[Combo manipulation tactic]         -0.1072  
          (0.1122)  
Post domain 8 x 1[Combo manipulation tactic]         0.0724  
          (0.1141)  
Post domain 9 x 1[Combo manipulation tactic]         1.1394***  
          (0.1160)  
Post domain 10 x 1[Combo manipulation tactic]         0.3736***  
          (0.1122)  
Post domain 11 x 1[Combo manipulation tactic]         0.6002***  
          (0.1113)  
Post domain 12 x 1[Combo manipulation tactic]         0.0418  
          (0.1136)  
Post domain 13 x 1[Combo manipulation tactic]         0.5858***  
          (0.1106)  
Post domain 14 x 1[Combo manipulation tactic]         0.3450***  
          (0.1139)  
Post domain 15 x 1[Combo manipulation tactic]         0.7389***  
          (0.1105)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4478***  
          (0.1167)  
Post domain 3 x 1[Emotions manipulation tactic]         0.9334***  
          (0.1107)  
Post domain 4 x 1[Emotions manipulation tactic]         0.5846***  
          (0.1097)  
Post domain 5 x 1[Emotions manipulation tactic]         0.8014***  
          (0.1170)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9194***  
          (0.1236)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0346  
          (0.1108)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.9456***  
          (0.1172)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2361***  
          (0.1149)  
Post domain 10 x 1[Emotions manipulation tactic]         0.8795***  
          (0.1109)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0799  
          (0.1124)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1423***  
          (0.1105)  
Post domain 13 x 1[Emotions manipulation tactic]         1.4266***  
          (0.1071)  
Post domain 14 x 1[Emotions manipulation tactic]         0.8221***  
          (0.1124)  
Post domain 15 x 1[Emotions manipulation tactic]         2.4403***  
          (0.1113)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.4651***  
          (0.1126)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.2843***  
          (0.1157)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.8423***  
          (0.1111)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.2026**  
          (0.1188)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3527***  
          (0.1241)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.8764***  
          (0.1125)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.9427***  
          (0.1203)  
Post domain 9 x 1[Reasoning manipulation tactic]         1.0028***  
          (0.1186)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4064***  
          (0.1125)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.5144***  
          (0.1124)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2580***  
          (0.1107)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3539***  
          (0.1101)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.4395***  
          (0.1117)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0085  
          (0.1116)  
Post 2 indicator           -1.3896***
            (0.0766)
Post 3 indicator           -2.2086***
            (0.0755)
Post 4 indicator           -1.7401***
            (0.0763)
Post 5 indicator           0.0051
            (0.0820)
Post 6 indicator           0.4527***
            (0.0844)
Post 7 indicator           -1.4228***
            (0.0752)
Post 8 indicator           -0.9538***
            (0.0779)
Post 9 indicator           -0.5281***
            (0.0788)
Post 10 indicator           -0.8059***
            (0.0763)
Post 11 indicator           -1.3501***
            (0.0756)
Post 12 indicator           -1.0828***
            (0.0758)
Post 13 indicator           -1.6220***
            (0.0743)
Post 14 indicator           -2.2721***
            (0.0771)
Post 15 indicator           -2.0199***
            (0.0749)
Post 16 indicator           1.6695***
            (0.0824)
Post 17 indicator           0.1269*
            (0.0846)
Post 18 indicator           -0.0573
            (0.0815)
Post 19 indicator           0.6525***
            (0.0790)
Post 20 indicator           2.3196***
            (0.0838)
Post 21 indicator           -0.1740**
            (0.0827)
Post 22 indicator           0.1395**
            (0.0819)
Post 23 indicator           0.7881***
            (0.0812)
Post 24 indicator           2.2808***
            (0.0839)
Post 25 indicator           1.2372***
            (0.0799)
Post 26 indicator           0.9195***
            (0.0829)
Post 27 indicator           0.6285***
            (0.0802)
Post 28 indicator           0.6333***
            (0.0813)
Post 29 indicator           -0.2576***
            (0.0832)
Post 30 indicator           0.3885***
            (0.0809)
Post 31 indicator           1.4698***
            (0.0799)
Post 32 indicator           -0.3676***
            (0.0867)
Post 33 indicator           0.1946***
            (0.0794)
Post 34 indicator           0.3143***
            (0.0795)
Post 35 indicator           2.2763***
            (0.0839)
Post 36 indicator           2.8419***
            (0.0910)
Post 37 indicator           0.0124
            (0.0810)
Post 38 indicator           -0.4296***
            (0.0859)
Post 39 indicator           2.1778***
            (0.0835)
Post 40 indicator           1.5434***
            (0.0810)
Post 41 indicator           0.0398
            (0.0829)
Post 42 indicator           1.5293***
            (0.0807)
Post 43 indicator           1.2744***
            (0.0780)
Post 44 indicator           0.0198
            (0.0829)
Post 45 indicator           1.8902***
            (0.0825)
Post 46 indicator           2.0114***
            (0.0830)
Post 47 indicator           1.0869***
            (0.0811)
Post 48 indicator           -0.4814***
            (0.0840)
Post 49 indicator           1.1137***
            (0.0820)
Post 50 indicator           2.2191***
            (0.0846)
Post 51 indicator           2.8168***
            (0.0890)
Post 52 indicator           -0.2878***
            (0.0832)
Post 53 indicator           -0.8851***
            (0.0926)
Post 54 indicator           2.4861***
            (0.0862)
Post 55 indicator           1.6118***
            (0.0820)
Post 56 indicator           1.1756***
            (0.0838)
Post 57 indicator           1.1865***
            (0.0791)
Post 58 indicator           0.7433***
            (0.0798)
Post 59 indicator           0.1789**
            (0.0816)
Num. obs. 156312 137250 137250 137250 137250 137250
Deviance 166604.6384 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Log Likelihood -83302.3192 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
Pseudo R2 0.2281 0.1384 0.2024 0.1393 0.2296 0.2296
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Sharing rates Sharing rates Sharing rates Sharing rates Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Tactic sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1038* -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0793) (0.0857) (0.0893) (0.0857) (0.0907) (0.0907)
Emotions x 1[Post-treatment] -0.4747*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0657) (0.0839) (0.0900) (0.0840) (0.0914) (0.0914)
Emotions x 1[Misinfo] 0.0233 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0575) (0.0638) (0.0677) (0.0638) (0.0692) (0.0692)
Num. obs. 156312 137250 137250 137250 137250 137250
Deviance 166585.4008 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Log Likelihood -83292.7004 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
Pseudo R2 0.2281 0.1384 0.2024 0.1393 0.2296 0.2296
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 1.0473***          
  (0.0348)          
No-course Baseline 0.0159          
  (0.0508)          
Emotions -0.0323          
  (0.0482)          
Reasoning 0.0722*          
  (0.0500)          
Combo -0.0200          
  (0.0494)          
1[Post-treatment] -0.4565*** -0.5002*** -0.5575*** -0.5005*** -0.5596*** -0.5596***
  (0.0476) (0.0589) (0.0631) (0.0589) (0.0639) (0.0639)
1[Misinfo] -0.8428*** -0.9234*** -1.0396*** -0.8461*** -1.0772*** -3.0886***
  (0.0414) (0.0453) (0.0483) (0.0464) (0.0958) (0.0973)
Avg. Sharing of Misinfo posts at pre-treatment 0.9365***          
  (0.0379)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.5408***          
  (0.0166)          
Emotions posts 0.0116          
  (0.0241)          
Reasoning posts -0.0236          
  (0.0237)          
No-course Baseline x 1[Post-treatment] 0.2988*** 0.3289*** 0.3843*** 0.3290*** 0.3850*** 0.3850***
  (0.0701) (0.0859) (0.0921) (0.0859) (0.0937) (0.0937)
Emotions x 1[Post-treatment] -0.4747*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0657) (0.0839) (0.0900) (0.0840) (0.0914) (0.0914)
Reasoning x 1[Post-treatment] -0.4364*** -0.4785*** -0.5282*** -0.4787*** -0.5422*** -0.5422***
  (0.0680) (0.0848) (0.0910) (0.0848) (0.0922) (0.0922)
Combo x 1[Post-treatment] -0.4866*** -0.5308*** -0.5848*** -0.5311*** -0.6072*** -0.6072***
  (0.0674) (0.0845) (0.0911) (0.0846) (0.0924) (0.0924)
No-course Baseline x 1[Misinfo] 0.0058 0.0182 0.0295 0.0185 0.0243 0.0243
  (0.0606) (0.0668) (0.0708) (0.0668) (0.0722) (0.0722)
Emotions x 1[Misinfo] 0.0233 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0575) (0.0638) (0.0677) (0.0638) (0.0692) (0.0692)
Reasoning x 1[Misinfo] -0.1063** -0.1165** -0.0821 -0.1164** -0.0846 -0.0846
  (0.0596) (0.0657) (0.0695) (0.0657) (0.0710) (0.0710)
Combo x 1[Misinfo] 0.0303 0.0352 0.0522 0.0354 0.0620 0.0620
  (0.0589) (0.0645) (0.0687) (0.0646) (0.0703) (0.0703)
1[Post-treatment] x 1[Misinfo] 0.0526 0.0492 0.0613 0.0485 0.0507 0.0507
  (0.0573) (0.0617) (0.0640) (0.0618) (0.0648) (0.0648)
No-course Baseline x Avg. Sharing of Misinfo posts at pre-treatment 0.0243          
  (0.0550)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.2211***          
  (0.0536)          
Reasoning x Avg. Sharing of Misinfo posts at pre-treatment 0.0061          
  (0.0542)          
Combo x Avg. Sharing of Misinfo posts at pre-treatment 16.7667          
  (164617.3440)          
No-course Baseline x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0315*          
  (0.0239)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0661***          
  (0.0229)          
Reasoning x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0397**          
  (0.0239)          
Combo x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0243          
  (0.0237)          
No-course Baseline x Emotions posts 0.0015          
  (0.0349)          
Emotions x Emotions posts 0.0387          
  (0.0344)          
Reasoning x Emotions posts -0.0139          
  (0.0349)          
Combo x Emotions posts -6.9119          
  (67270.8308)          
No-course Baseline x Reasoning posts 0.0123          
  (0.0348)          
Emotions x Reasoning posts 0.0671**          
  (0.0341)          
Reasoning x Reasoning posts -0.0414          
  (0.0339)          
Combo x Reasoning posts -6.7738          
  (66632.5497)          
Combo x Combo posts -6.9652          
  (67995.6434)          
No-course Baseline x 1[Post-treatment] x 1[Misinfo] -0.0004 0.0069 -0.0022 0.0073 0.0198 0.0198
  (0.0841) (0.0921) (0.0958) (0.0921) (0.0971) (0.0971)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1038* -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0793) (0.0857) (0.0893) (0.0857) (0.0907) (0.0907)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.1106* 0.1178* 0.0982 0.1172* 0.0620 0.0620
  (0.0818) (0.0892) (0.0922) (0.0893) (0.0935) (0.0935)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0579 -0.0845 -0.0937 -0.0854 -0.1563** -0.1563**
  (0.0811) (0.0887) (0.0924) (0.0887) (0.0940) (0.0940)
Post domain 2     -1.3458***   -1.3896***  
      (0.0391)   (0.0766)  
Post domain 3     -1.8926***   -2.2086***  
      (0.0389)   (0.0755)  
Post domain 4     -1.2128***   -1.7401***  
      (0.0384)   (0.0763)  
Post domain 5     0.4049***   0.0051  
      (0.0388)   (0.0820)  
Post domain 6     0.1237***   0.4527***  
      (0.0395)   (0.0844)  
Post domain 7     -1.5746***   -1.4228***  
      (0.0388)   (0.0752)  
Post domain 8     -1.4724***   -0.9538***  
      (0.0391)   (0.0779)  
Post domain 9     0.2728***   -0.5281***  
      (0.0392)   (0.0788)  
Post domain 10     -0.3969***   -0.8059***  
      (0.0377)   (0.0763)  
Post domain 11     -1.0747***   -1.3501***  
      (0.0388)   (0.0756)  
Post domain 12     -0.7213***   -1.0828***  
      (0.0372)   (0.0758)  
Post domain 13     -1.0425***   -1.6220***  
      (0.0378)   (0.0743)  
Post domain 14     -1.8560***   -2.2721***  
      (0.0403)   (0.0771)  
Post domain 15     -1.2523***   -2.0199***  
      (0.0381)   (0.0749)  
1[Combo manipulation tactic]       -0.2264*** -0.3419***  
        (0.0187) (0.0832)  
1[Emotions manipulation tactic]       -0.0068 -0.5416***  
        (0.0184) (0.0822)  
Post domain 2 x 1[Combo manipulation tactic]         -0.1530*  
          (0.1163)  
Post domain 3 x 1[Combo manipulation tactic]         0.4818***  
          (0.1123)  
Post domain 4 x 1[Combo manipulation tactic]         0.7230***  
          (0.1104)  
Post domain 5 x 1[Combo manipulation tactic]         0.6450***  
          (0.1186)  
Post domain 6 x 1[Combo manipulation tactic]         -2.2961***  
          (0.1206)  
Post domain 7 x 1[Combo manipulation tactic]         -0.1072  
          (0.1122)  
Post domain 8 x 1[Combo manipulation tactic]         0.0724  
          (0.1141)  
Post domain 9 x 1[Combo manipulation tactic]         1.1394***  
          (0.1160)  
Post domain 10 x 1[Combo manipulation tactic]         0.3736***  
          (0.1122)  
Post domain 11 x 1[Combo manipulation tactic]         0.6002***  
          (0.1113)  
Post domain 12 x 1[Combo manipulation tactic]         0.0418  
          (0.1136)  
Post domain 13 x 1[Combo manipulation tactic]         0.5858***  
          (0.1106)  
Post domain 14 x 1[Combo manipulation tactic]         0.3450***  
          (0.1139)  
Post domain 15 x 1[Combo manipulation tactic]         0.7389***  
          (0.1105)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4478***  
          (0.1167)  
Post domain 3 x 1[Emotions manipulation tactic]         0.9334***  
          (0.1107)  
Post domain 4 x 1[Emotions manipulation tactic]         0.5846***  
          (0.1097)  
Post domain 5 x 1[Emotions manipulation tactic]         0.8014***  
          (0.1170)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9194***  
          (0.1236)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0346  
          (0.1108)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.9456***  
          (0.1172)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2361***  
          (0.1149)  
Post domain 10 x 1[Emotions manipulation tactic]         0.8795***  
          (0.1109)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0799  
          (0.1124)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1423***  
          (0.1105)  
Post domain 13 x 1[Emotions manipulation tactic]         1.4266***  
          (0.1071)  
Post domain 14 x 1[Emotions manipulation tactic]         0.8221***  
          (0.1124)  
Post domain 15 x 1[Emotions manipulation tactic]         2.4403***  
          (0.1113)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.4651***  
          (0.1126)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.2843***  
          (0.1157)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.8423***  
          (0.1111)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.2026**  
          (0.1188)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3527***  
          (0.1241)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.8764***  
          (0.1125)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.9427***  
          (0.1203)  
Post domain 9 x 1[Reasoning manipulation tactic]         1.0028***  
          (0.1186)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4064***  
          (0.1125)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.5144***  
          (0.1124)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2580***  
          (0.1107)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3539***  
          (0.1101)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.4395***  
          (0.1117)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0085  
          (0.1116)  
Post 2 indicator           -1.3896***
            (0.0766)
Post 3 indicator           -2.2086***
            (0.0755)
Post 4 indicator           -1.7401***
            (0.0763)
Post 5 indicator           0.0051
            (0.0820)
Post 6 indicator           0.4527***
            (0.0844)
Post 7 indicator           -1.4228***
            (0.0752)
Post 8 indicator           -0.9538***
            (0.0779)
Post 9 indicator           -0.5281***
            (0.0788)
Post 10 indicator           -0.8059***
            (0.0763)
Post 11 indicator           -1.3501***
            (0.0756)
Post 12 indicator           -1.0828***
            (0.0758)
Post 13 indicator           -1.6220***
            (0.0743)
Post 14 indicator           -2.2721***
            (0.0771)
Post 15 indicator           -2.0199***
            (0.0749)
Post 16 indicator           1.6695***
            (0.0824)
Post 17 indicator           0.1269*
            (0.0846)
Post 18 indicator           -0.0573
            (0.0815)
Post 19 indicator           0.6525***
            (0.0790)
Post 20 indicator           2.3196***
            (0.0838)
Post 21 indicator           -0.1740**
            (0.0827)
Post 22 indicator           0.1395**
            (0.0819)
Post 23 indicator           0.7881***
            (0.0812)
Post 24 indicator           2.2808***
            (0.0839)
Post 25 indicator           1.2372***
            (0.0799)
Post 26 indicator           0.9195***
            (0.0829)
Post 27 indicator           0.6285***
            (0.0802)
Post 28 indicator           0.6333***
            (0.0813)
Post 29 indicator           -0.2576***
            (0.0832)
Post 30 indicator           0.3885***
            (0.0809)
Post 31 indicator           1.4698***
            (0.0799)
Post 32 indicator           -0.3676***
            (0.0867)
Post 33 indicator           0.1946***
            (0.0794)
Post 34 indicator           0.3143***
            (0.0795)
Post 35 indicator           2.2763***
            (0.0839)
Post 36 indicator           2.8419***
            (0.0910)
Post 37 indicator           0.0124
            (0.0810)
Post 38 indicator           -0.4296***
            (0.0859)
Post 39 indicator           2.1778***
            (0.0835)
Post 40 indicator           1.5434***
            (0.0810)
Post 41 indicator           0.0398
            (0.0829)
Post 42 indicator           1.5293***
            (0.0807)
Post 43 indicator           1.2744***
            (0.0780)
Post 44 indicator           0.0198
            (0.0829)
Post 45 indicator           1.8902***
            (0.0825)
Post 46 indicator           2.0114***
            (0.0830)
Post 47 indicator           1.0869***
            (0.0811)
Post 48 indicator           -0.4814***
            (0.0840)
Post 49 indicator           1.1137***
            (0.0820)
Post 50 indicator           2.2191***
            (0.0846)
Post 51 indicator           2.8168***
            (0.0890)
Post 52 indicator           -0.2878***
            (0.0832)
Post 53 indicator           -0.8851***
            (0.0926)
Post 54 indicator           2.4861***
            (0.0862)
Post 55 indicator           1.6118***
            (0.0820)
Post 56 indicator           1.1756***
            (0.0838)
Post 57 indicator           1.1865***
            (0.0791)
Post 58 indicator           0.7433***
            (0.0798)
Post 59 indicator           0.1789**
            (0.0816)
Num. obs. 156312 137250 137250 137250 137250 137250
Deviance 166585.4008 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Log Likelihood -83292.7004 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
Pseudo R2 0.2281 0.1384 0.2024 0.1393 0.2296 0.2296
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Demographics + Sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1044* -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0795) (0.0857) (0.0893) (0.0857) (0.0907) (0.0907)
Emotions x 1[Post-treatment] -0.4777*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0659) (0.0839) (0.0900) (0.0840) (0.0914) (0.0914)
Emotions x 1[Misinfo] 0.0224 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0577) (0.0638) (0.0677) (0.0638) (0.0692) (0.0692)
Num. obs. 156312 137250 137250 137250 137250 137250
Deviance 166019.7932 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Log Likelihood -83009.8966 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
Pseudo R2 0.2300 0.1384 0.2024 0.1393 0.2296 0.2296
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 1.0563***          
  (0.0349)          
No-course Baseline 0.0062          
  (0.0510)          
Emotions -0.0355          
  (0.0484)          
Reasoning 0.0638          
  (0.0502)          
Combo -0.0269          
  (0.0495)          
1[Post-treatment] -0.4587*** -0.5002*** -0.5575*** -0.5005*** -0.5596*** -0.5596***
  (0.0477) (0.0589) (0.0631) (0.0589) (0.0639) (0.0639)
1[Misinfo] -0.8466*** -0.9234*** -1.0396*** -0.8461*** -1.0772*** -3.0886***
  (0.0416) (0.0453) (0.0483) (0.0464) (0.0958) (0.0973)
Age -0.0316**          
  (0.0151)          
Man 0.0151          
  (0.0135)          
Some college -0.0110          
  (0.0168)          
Bachelor’s degree 0.0218*          
  (0.0170)          
Graduate degree -0.0412***          
  (0.0146)          
Married -0.0154          
  (0.0151)          
Unemployed -0.0280*          
  (0.0177)          
Employed -0.0483***          
  (0.0193)          
Mostly urban -0.0277**          
  (0.0161)          
Suburban -0.0285**          
  (0.0157)          
Christian 0.0142          
  (0.0138)          
Attends religious services 0.0051          
  (0.0139)          
Uses social media -0.0345***          
  (0.0123)          
Hours spent on Social Media 0.0297**          
  (0.0149)          
Social Media Share: 80-100% 0.0846***          
  (0.0174)          
Social Media Share: 60-80% 0.1020***          
  (0.0189)          
Social Media Share: 40-60% 0.0893***          
  (0.0192)          
Social Media Share: 20-40% 0.0480***          
  (0.0176)          
Passed attention check at pre-treatment -0.0276**          
  (0.0135)          
Avg. Sharing of Misinfo posts at pre-treatment 0.9020***          
  (0.0178)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.5294***          
  (0.0167)          
No-course Baseline x 1[Post-treatment] 0.3006*** 0.3289*** 0.3843*** 0.3290*** 0.3850*** 0.3850***
  (0.0703) (0.0859) (0.0921) (0.0859) (0.0937) (0.0937)
Emotions x 1[Post-treatment] -0.4777*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0659) (0.0839) (0.0900) (0.0840) (0.0914) (0.0914)
Reasoning x 1[Post-treatment] -0.4372*** -0.4785*** -0.5282*** -0.4787*** -0.5422*** -0.5422***
  (0.0682) (0.0848) (0.0910) (0.0848) (0.0922) (0.0922)
Combo x 1[Post-treatment] -0.4875*** -0.5308*** -0.5848*** -0.5311*** -0.6072*** -0.6072***
  (0.0675) (0.0845) (0.0911) (0.0846) (0.0924) (0.0924)
No-course Baseline x 1[Misinfo] 0.0073 0.0182 0.0295 0.0185 0.0243 0.0243
  (0.0607) (0.0668) (0.0708) (0.0668) (0.0722) (0.0722)
Emotions x 1[Misinfo] 0.0224 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0577) (0.0638) (0.0677) (0.0638) (0.0692) (0.0692)
Reasoning x 1[Misinfo] -0.1057** -0.1165** -0.0821 -0.1164** -0.0846 -0.0846
  (0.0597) (0.0657) (0.0695) (0.0657) (0.0710) (0.0710)
Combo x 1[Misinfo] 0.0314 0.0352 0.0522 0.0354 0.0620 0.0620
  (0.0590) (0.0645) (0.0687) (0.0646) (0.0703) (0.0703)
1[Post-treatment] x 1[Misinfo] 0.0533 0.0492 0.0613 0.0485 0.0507 0.0507
  (0.0574) (0.0617) (0.0640) (0.0618) (0.0648) (0.0648)
No-course Baseline x Age 0.0023          
  (0.0209)          
Emotions x Age -0.0271          
  (0.0231)          
Reasoning x Age -0.0179          
  (0.0221)          
Combo x Age -0.0044          
  (0.0215)          
No-course Baseline x Man -0.0354**          
  (0.0199)          
Emotions x Man 0.0319**          
  (0.0188)          
Reasoning x Man -0.0325**          
  (0.0193)          
Combo x Man 0.0220          
  (0.0192)          
No-course Baseline x Some college -0.0076          
  (0.0240)          
Emotions x Some college 0.0018          
  (0.0231)          
Reasoning x Some college -0.0029          
  (0.0237)          
Combo x Some college -0.0127          
  (0.0237)          
No-course Baseline x Bachelor’s degree -0.0243          
  (0.0243)          
Emotions x Bachelor’s degree -0.0197          
  (0.0232)          
Reasoning x Bachelor’s degree -0.0456**          
  (0.0239)          
Combo x Bachelor’s degree -0.0497**          
  (0.0238)          
No-course Baseline x Graduate degree 0.0144          
  (0.0214)          
Emotions x Graduate degree 0.0484***          
  (0.0193)          
Reasoning x Graduate degree 0.0047          
  (0.0212)          
Combo x Graduate degree 0.0493***          
  (0.0190)          
No-course Baseline x Married 0.0077          
  (0.0223)          
Emotions x Married -0.0250          
  (0.0212)          
Reasoning x Married 0.0117          
  (0.0220)          
Combo x Married -0.0264          
  (0.0218)          
No-course Baseline x Unemployed 0.0119          
  (0.0254)          
Emotions x Unemployed -0.0060          
  (0.0244)          
Reasoning x Unemployed 0.0328*          
  (0.0250)          
Combo x Unemployed 0.0133          
  (0.0250)          
No-course Baseline x Employed 0.0059          
  (0.0278)          
Emotions x Employed 0.0147          
  (0.0266)          
Reasoning x Employed 0.0225          
  (0.0276)          
Combo x Employed 0.0136          
  (0.0269)          
No-course Baseline x Mostly urban 0.0390**          
  (0.0231)          
Emotions x Mostly urban 0.0429**          
  (0.0222)          
Reasoning x Mostly urban -0.0104          
  (0.0230)          
Combo x Mostly urban 0.0587***          
  (0.0225)          
No-course Baseline x Suburban 0.0165          
  (0.0228)          
Emotions x Suburban -0.0094          
  (0.0219)          
Reasoning x Suburban -0.0220          
  (0.0223)          
Combo x Suburban 0.0543***          
  (0.0223)          
No-course Baseline x Christian -0.0412**          
  (0.0195)          
Emotions x Christian -0.0132          
  (0.0196)          
Reasoning x Christian 0.0204          
  (0.0202)          
Combo x Christian -0.0188          
  (0.0198)          
No-course Baseline x Attends religious services -0.0079          
  (0.0193)          
Emotions x Attends religious services -0.0395**          
  (0.0196)          
Reasoning x Attends religious services -0.0192          
  (0.0202)          
Combo x Attends religious services -0.0142          
  (0.0201)          
No-course Baseline x Uses social media 0.0360**          
  (0.0190)          
Emotions x Uses social media 0.0530***          
  (0.0197)          
Reasoning x Uses social media 0.0406**          
  (0.0180)          
Combo x Uses social media 0.0305*          
  (0.0203)          
No-course Baseline x Hours spent on Social Media -0.0381**          
  (0.0207)          
Emotions x Hours spent on Social Media -0.0167          
  (0.0203)          
Reasoning x Hours spent on Social Media 0.0015          
  (0.0210)          
Combo x Hours spent on Social Media -0.0640***          
  (0.0203)          
No-course Baseline x Social Media Share: 80-100% -0.0005          
  (0.0247)          
Emotions x Social Media Share: 80-100% -0.0054          
  (0.0241)          
Reasoning x Social Media Share: 80-100% -0.0018          
  (0.0244)          
Combo x Social Media Share: 80-100% -0.0085          
  (0.0241)          
No-course Baseline x Social Media Share: 60-80% -0.0288          
  (0.0279)          
Emotions x Social Media Share: 60-80% 0.0296          
  (0.0265)          
Reasoning x Social Media Share: 60-80% -0.0010          
  (0.0274)          
Combo x Social Media Share: 60-80% 0.0020          
  (0.0270)          
No-course Baseline x Social Media Share: 40-60% -0.0405*          
  (0.0278)          
Emotions x Social Media Share: 40-60% -0.0100          
  (0.0269)          
Reasoning x Social Media Share: 40-60% -0.0329          
  (0.0280)          
Combo x Social Media Share: 40-60% -0.0237          
  (0.0274)          
No-course Baseline x Social Media Share: 20-40% -0.0228          
  (0.0255)          
Emotions x Social Media Share: 20-40% 0.0225          
  (0.0248)          
Reasoning x Social Media Share: 20-40% -0.0249          
  (0.0256)          
Combo x Social Media Share: 20-40% -0.0272          
  (0.0254)          
No-course Baseline x Passed attention check at pre-treatment -0.0408**          
  (0.0198)          
Emotions x Passed attention check at pre-treatment -0.0025          
  (0.0188)          
Reasoning x Passed attention check at pre-treatment 0.0044          
  (0.0193)          
Combo x Passed attention check at pre-treatment 0.0429**          
  (0.0193)          
No-course Baseline x Avg. Sharing of Misinfo posts at pre-treatment 0.0305          
  (0.0258)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -0.1443***          
  (0.0242)          
Reasoning x Avg. Sharing of Misinfo posts at pre-treatment -0.0344*          
  (0.0250)          
Combo x Avg. Sharing of Misinfo posts at pre-treatment -0.0531**          
  (0.0251)          
No-course Baseline x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0188          
  (0.0241)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0526**          
  (0.0231)          
Reasoning x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0347*          
  (0.0241)          
Combo x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0167          
  (0.0238)          
No-course Baseline x 1[Post-treatment] x 1[Misinfo] -0.0011 0.0069 -0.0022 0.0073 0.0198 0.0198
  (0.0843) (0.0921) (0.0958) (0.0921) (0.0971) (0.0971)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1044* -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0795) (0.0857) (0.0893) (0.0857) (0.0907) (0.0907)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.1100* 0.1178* 0.0982 0.1172* 0.0620 0.0620
  (0.0820) (0.0892) (0.0922) (0.0893) (0.0935) (0.0935)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0589 -0.0845 -0.0937 -0.0854 -0.1563** -0.1563**
  (0.0813) (0.0887) (0.0924) (0.0887) (0.0940) (0.0940)
Post domain 2     -1.3458***   -1.3896***  
      (0.0391)   (0.0766)  
Post domain 3     -1.8926***   -2.2086***  
      (0.0389)   (0.0755)  
Post domain 4     -1.2128***   -1.7401***  
      (0.0384)   (0.0763)  
Post domain 5     0.4049***   0.0051  
      (0.0388)   (0.0820)  
Post domain 6     0.1237***   0.4527***  
      (0.0395)   (0.0844)  
Post domain 7     -1.5746***   -1.4228***  
      (0.0388)   (0.0752)  
Post domain 8     -1.4724***   -0.9538***  
      (0.0391)   (0.0779)  
Post domain 9     0.2728***   -0.5281***  
      (0.0392)   (0.0788)  
Post domain 10     -0.3969***   -0.8059***  
      (0.0377)   (0.0763)  
Post domain 11     -1.0747***   -1.3501***  
      (0.0388)   (0.0756)  
Post domain 12     -0.7213***   -1.0828***  
      (0.0372)   (0.0758)  
Post domain 13     -1.0425***   -1.6220***  
      (0.0378)   (0.0743)  
Post domain 14     -1.8560***   -2.2721***  
      (0.0403)   (0.0771)  
Post domain 15     -1.2523***   -2.0199***  
      (0.0381)   (0.0749)  
1[Combo manipulation tactic]       -0.2264*** -0.3419***  
        (0.0187) (0.0832)  
1[Emotions manipulation tactic]       -0.0068 -0.5416***  
        (0.0184) (0.0822)  
Post domain 2 x 1[Combo manipulation tactic]         -0.1530*  
          (0.1163)  
Post domain 3 x 1[Combo manipulation tactic]         0.4818***  
          (0.1123)  
Post domain 4 x 1[Combo manipulation tactic]         0.7230***  
          (0.1104)  
Post domain 5 x 1[Combo manipulation tactic]         0.6450***  
          (0.1186)  
Post domain 6 x 1[Combo manipulation tactic]         -2.2961***  
          (0.1206)  
Post domain 7 x 1[Combo manipulation tactic]         -0.1072  
          (0.1122)  
Post domain 8 x 1[Combo manipulation tactic]         0.0724  
          (0.1141)  
Post domain 9 x 1[Combo manipulation tactic]         1.1394***  
          (0.1160)  
Post domain 10 x 1[Combo manipulation tactic]         0.3736***  
          (0.1122)  
Post domain 11 x 1[Combo manipulation tactic]         0.6002***  
          (0.1113)  
Post domain 12 x 1[Combo manipulation tactic]         0.0418  
          (0.1136)  
Post domain 13 x 1[Combo manipulation tactic]         0.5858***  
          (0.1106)  
Post domain 14 x 1[Combo manipulation tactic]         0.3450***  
          (0.1139)  
Post domain 15 x 1[Combo manipulation tactic]         0.7389***  
          (0.1105)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4478***  
          (0.1167)  
Post domain 3 x 1[Emotions manipulation tactic]         0.9334***  
          (0.1107)  
Post domain 4 x 1[Emotions manipulation tactic]         0.5846***  
          (0.1097)  
Post domain 5 x 1[Emotions manipulation tactic]         0.8014***  
          (0.1170)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9194***  
          (0.1236)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0346  
          (0.1108)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.9456***  
          (0.1172)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2361***  
          (0.1149)  
Post domain 10 x 1[Emotions manipulation tactic]         0.8795***  
          (0.1109)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0799  
          (0.1124)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1423***  
          (0.1105)  
Post domain 13 x 1[Emotions manipulation tactic]         1.4266***  
          (0.1071)  
Post domain 14 x 1[Emotions manipulation tactic]         0.8221***  
          (0.1124)  
Post domain 15 x 1[Emotions manipulation tactic]         2.4403***  
          (0.1113)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.4651***  
          (0.1126)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.2843***  
          (0.1157)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.8423***  
          (0.1111)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.2026**  
          (0.1188)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3527***  
          (0.1241)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.8764***  
          (0.1125)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.9427***  
          (0.1203)  
Post domain 9 x 1[Reasoning manipulation tactic]         1.0028***  
          (0.1186)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4064***  
          (0.1125)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.5144***  
          (0.1124)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2580***  
          (0.1107)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3539***  
          (0.1101)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.4395***  
          (0.1117)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0085  
          (0.1116)  
Post 2 indicator           -1.3896***
            (0.0766)
Post 3 indicator           -2.2086***
            (0.0755)
Post 4 indicator           -1.7401***
            (0.0763)
Post 5 indicator           0.0051
            (0.0820)
Post 6 indicator           0.4527***
            (0.0844)
Post 7 indicator           -1.4228***
            (0.0752)
Post 8 indicator           -0.9538***
            (0.0779)
Post 9 indicator           -0.5281***
            (0.0788)
Post 10 indicator           -0.8059***
            (0.0763)
Post 11 indicator           -1.3501***
            (0.0756)
Post 12 indicator           -1.0828***
            (0.0758)
Post 13 indicator           -1.6220***
            (0.0743)
Post 14 indicator           -2.2721***
            (0.0771)
Post 15 indicator           -2.0199***
            (0.0749)
Post 16 indicator           1.6695***
            (0.0824)
Post 17 indicator           0.1269*
            (0.0846)
Post 18 indicator           -0.0573
            (0.0815)
Post 19 indicator           0.6525***
            (0.0790)
Post 20 indicator           2.3196***
            (0.0838)
Post 21 indicator           -0.1740**
            (0.0827)
Post 22 indicator           0.1395**
            (0.0819)
Post 23 indicator           0.7881***
            (0.0812)
Post 24 indicator           2.2808***
            (0.0839)
Post 25 indicator           1.2372***
            (0.0799)
Post 26 indicator           0.9195***
            (0.0829)
Post 27 indicator           0.6285***
            (0.0802)
Post 28 indicator           0.6333***
            (0.0813)
Post 29 indicator           -0.2576***
            (0.0832)
Post 30 indicator           0.3885***
            (0.0809)
Post 31 indicator           1.4698***
            (0.0799)
Post 32 indicator           -0.3676***
            (0.0867)
Post 33 indicator           0.1946***
            (0.0794)
Post 34 indicator           0.3143***
            (0.0795)
Post 35 indicator           2.2763***
            (0.0839)
Post 36 indicator           2.8419***
            (0.0910)
Post 37 indicator           0.0124
            (0.0810)
Post 38 indicator           -0.4296***
            (0.0859)
Post 39 indicator           2.1778***
            (0.0835)
Post 40 indicator           1.5434***
            (0.0810)
Post 41 indicator           0.0398
            (0.0829)
Post 42 indicator           1.5293***
            (0.0807)
Post 43 indicator           1.2744***
            (0.0780)
Post 44 indicator           0.0198
            (0.0829)
Post 45 indicator           1.8902***
            (0.0825)
Post 46 indicator           2.0114***
            (0.0830)
Post 47 indicator           1.0869***
            (0.0811)
Post 48 indicator           -0.4814***
            (0.0840)
Post 49 indicator           1.1137***
            (0.0820)
Post 50 indicator           2.2191***
            (0.0846)
Post 51 indicator           2.8168***
            (0.0890)
Post 52 indicator           -0.2878***
            (0.0832)
Post 53 indicator           -0.8851***
            (0.0926)
Post 54 indicator           2.4861***
            (0.0862)
Post 55 indicator           1.6118***
            (0.0820)
Post 56 indicator           1.1756***
            (0.0838)
Post 57 indicator           1.1865***
            (0.0791)
Post 58 indicator           0.7433***
            (0.0798)
Post 59 indicator           0.1789**
            (0.0816)
Num. obs. 156312 137250 137250 137250 137250 137250
Deviance 166019.7932 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Log Likelihood -83009.8966 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
Pseudo R2 0.2300 0.1384 0.2024 0.1393 0.2296 0.2296
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates Demographics + Sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.



\[\text{Demographics + Sharing rates + Tactic sharing rates}\]
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates + Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1040* -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0795) (0.0857) (0.0893) (0.0857) (0.0907) (0.0907)
Emotions x 1[Post-treatment] -0.4780*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0659) (0.0839) (0.0900) (0.0840) (0.0914) (0.0914)
Emotions x 1[Misinfo] 0.0222 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0577) (0.0638) (0.0677) (0.0638) (0.0692) (0.0692)
Num. obs. 156312 137250 137250 137250 137250 137250
Deviance 166005.0252 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Log Likelihood -83002.5126 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
Pseudo R2 0.2299 0.1384 0.2024 0.1393 0.2296 0.2296
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.

Click to view the full table
Linear Regression: Share (binary indicator) vs. Treatment for different set of fixed effects
Covariates: Demographics + Sharing rates + Tactic sharing rates
  Share (binary indicator)
  Baseline
(1)
User ID FE
(2)
User ID FE +
Post domain FE
(3)
User ID FE +
Post tactic FE
(4)
User ID FE +
Post domain x Post tactic
(5)
User ID FE +
Post ID FE
(6)
Facts Baseline 1.0571***          
  (0.0349)          
No-course Baseline 0.0053          
  (0.0510)          
Emotions -0.0372          
  (0.0484)          
Reasoning 0.0624          
  (0.0502)          
Combo -0.0276          
  (0.0495)          
1[Post-treatment] -0.4587*** -0.5002*** -0.5575*** -0.5005*** -0.5596*** -0.5596***
  (0.0477) (0.0589) (0.0631) (0.0589) (0.0639) (0.0639)
1[Misinfo] -0.8466*** -0.9234*** -1.0396*** -0.8461*** -1.0772*** -3.0886***
  (0.0416) (0.0453) (0.0483) (0.0464) (0.0958) (0.0973)
Age -0.0315**          
  (0.0152)          
Man 0.0152          
  (0.0135)          
Some college -0.0104          
  (0.0168)          
Bachelor’s degree 0.0221*          
  (0.0170)          
Graduate degree -0.0415***          
  (0.0146)          
Married -0.0146          
  (0.0151)          
Unemployed -0.0281*          
  (0.0177)          
Employed -0.0491***          
  (0.0193)          
Mostly urban -0.0265**          
  (0.0161)          
Suburban -0.0280**          
  (0.0157)          
Christian 0.0137          
  (0.0138)          
Attends religious services 0.0052          
  (0.0139)          
Uses social media -0.0347***          
  (0.0123)          
Hours spent on Social Media 0.0304**          
  (0.0149)          
Social Media Share: 80-100% 0.0846***          
  (0.0174)          
Social Media Share: 60-80% 0.1021***          
  (0.0189)          
Social Media Share: 40-60% 0.0896***          
  (0.0192)          
Social Media Share: 20-40% 0.0480***          
  (0.0176)          
Passed attention check at pre-treatment -0.0272**          
  (0.0135)          
Avg. Sharing of Misinfo posts at pre-treatment 0.9030***          
  (0.0384)          
Avg. Sharing of Non-misinfo posts at pre-treatment 0.5304***          
  (0.0167)          
Emotions posts 0.0165          
  (0.0243)          
Reasoning posts -0.0183          
  (0.0238)          
No-course Baseline x 1[Post-treatment] 0.3006*** 0.3289*** 0.3843*** 0.3290*** 0.3850*** 0.3850***
  (0.0703) (0.0859) (0.0921) (0.0859) (0.0937) (0.0937)
Emotions x 1[Post-treatment] -0.4780*** -0.5257*** -0.5516*** -0.5260*** -0.5707*** -0.5707***
  (0.0659) (0.0839) (0.0900) (0.0840) (0.0914) (0.0914)
Reasoning x 1[Post-treatment] -0.4374*** -0.4785*** -0.5282*** -0.4787*** -0.5422*** -0.5422***
  (0.0682) (0.0848) (0.0910) (0.0848) (0.0922) (0.0922)
Combo x 1[Post-treatment] -0.4875*** -0.5308*** -0.5848*** -0.5311*** -0.6072*** -0.6072***
  (0.0675) (0.0845) (0.0911) (0.0846) (0.0924) (0.0924)
No-course Baseline x 1[Misinfo] 0.0072 0.0182 0.0295 0.0185 0.0243 0.0243
  (0.0607) (0.0668) (0.0708) (0.0668) (0.0722) (0.0722)
Emotions x 1[Misinfo] 0.0222 0.0199 0.0571 0.0201 0.0588 0.0588
  (0.0577) (0.0638) (0.0677) (0.0638) (0.0692) (0.0692)
Reasoning x 1[Misinfo] -0.1060** -0.1165** -0.0821 -0.1164** -0.0846 -0.0846
  (0.0597) (0.0657) (0.0695) (0.0657) (0.0710) (0.0710)
Combo x 1[Misinfo] 0.0315 0.0352 0.0522 0.0354 0.0620 0.0620
  (0.0590) (0.0645) (0.0687) (0.0646) (0.0703) (0.0703)
1[Post-treatment] x 1[Misinfo] 0.0533 0.0492 0.0613 0.0485 0.0507 0.0507
  (0.0574) (0.0617) (0.0640) (0.0618) (0.0648) (0.0648)
No-course Baseline x Age 0.0022          
  (0.0209)          
Emotions x Age -0.0262          
  (0.0231)          
Reasoning x Age -0.0172          
  (0.0221)          
Combo x Age -0.0048          
  (0.0215)          
No-course Baseline x Man -0.0351**          
  (0.0199)          
Emotions x Man 0.0308*          
  (0.0188)          
Reasoning x Man -0.0324**          
  (0.0193)          
Combo x Man 0.0217          
  (0.0192)          
No-course Baseline x Some college -0.0081          
  (0.0240)          
Emotions x Some college 0.0012          
  (0.0232)          
Reasoning x Some college -0.0030          
  (0.0237)          
Combo x Some college -0.0134          
  (0.0237)          
No-course Baseline x Bachelor’s degree -0.0248          
  (0.0243)          
Emotions x Bachelor’s degree -0.0207          
  (0.0232)          
Reasoning x Bachelor’s degree -0.0446**          
  (0.0240)          
Combo x Bachelor’s degree -0.0491**          
  (0.0239)          
No-course Baseline x Graduate degree 0.0137          
  (0.0214)          
Emotions x Graduate degree 0.0486***          
  (0.0193)          
Reasoning x Graduate degree 0.0054          
  (0.0212)          
Combo x Graduate degree 0.0496***          
  (0.0190)          
No-course Baseline x Married 0.0067          
  (0.0223)          
Emotions x Married -0.0266          
  (0.0212)          
Reasoning x Married 0.0103          
  (0.0220)          
Combo x Married -0.0268          
  (0.0219)          
No-course Baseline x Unemployed 0.0121          
  (0.0254)          
Emotions x Unemployed -0.0072          
  (0.0244)          
Reasoning x Unemployed 0.0330*          
  (0.0250)          
Combo x Unemployed 0.0134          
  (0.0250)          
No-course Baseline x Employed 0.0071          
  (0.0278)          
Emotions x Employed 0.0150          
  (0.0266)          
Reasoning x Employed 0.0241          
  (0.0276)          
Combo x Employed 0.0140          
  (0.0269)          
No-course Baseline x Mostly urban 0.0380*          
  (0.0231)          
Emotions x Mostly urban 0.0410**          
  (0.0222)          
Reasoning x Mostly urban -0.0113          
  (0.0230)          
Combo x Mostly urban 0.0572***          
  (0.0226)          
No-course Baseline x Suburban 0.0160          
  (0.0228)          
Emotions x Suburban -0.0099          
  (0.0219)          
Reasoning x Suburban -0.0218          
  (0.0223)          
Combo x Suburban 0.0534***          
  (0.0223)          
No-course Baseline x Christian -0.0407**          
  (0.0195)          
Emotions x Christian -0.0129          
  (0.0196)          
Reasoning x Christian 0.0216          
  (0.0202)          
Combo x Christian -0.0182          
  (0.0198)          
No-course Baseline x Attends religious services -0.0076          
  (0.0193)          
Emotions x Attends religious services -0.0397**          
  (0.0196)          
Reasoning x Attends religious services -0.0201          
  (0.0203)          
Combo x Attends religious services -0.0145          
  (0.0201)          
No-course Baseline x Uses social media 0.0360**          
  (0.0190)          
Emotions x Uses social media 0.0526***          
  (0.0197)          
Reasoning x Uses social media 0.0401**          
  (0.0180)          
Combo x Uses social media 0.0305*          
  (0.0203)          
No-course Baseline x Hours spent on Social Media -0.0388**          
  (0.0207)          
Emotions x Hours spent on Social Media -0.0178          
  (0.0204)          
Reasoning x Hours spent on Social Media 0.0010          
  (0.0210)          
Combo x Hours spent on Social Media -0.0647***          
  (0.0203)          
No-course Baseline x Social Media Share: 80-100% -0.0008          
  (0.0247)          
Emotions x Social Media Share: 80-100% -0.0057          
  (0.0241)          
Reasoning x Social Media Share: 80-100% -0.0015          
  (0.0244)          
Combo x Social Media Share: 80-100% -0.0084          
  (0.0241)          
No-course Baseline x Social Media Share: 60-80% -0.0289          
  (0.0279)          
Emotions x Social Media Share: 60-80% 0.0286          
  (0.0265)          
Reasoning x Social Media Share: 60-80% -0.0028          
  (0.0274)          
Combo x Social Media Share: 60-80% 0.0016          
  (0.0270)          
No-course Baseline x Social Media Share: 40-60% -0.0416*          
  (0.0278)          
Emotions x Social Media Share: 40-60% -0.0123          
  (0.0269)          
Reasoning x Social Media Share: 40-60% -0.0336          
  (0.0280)          
Combo x Social Media Share: 40-60% -0.0246          
  (0.0274)          
No-course Baseline x Social Media Share: 20-40% -0.0226          
  (0.0255)          
Emotions x Social Media Share: 20-40% 0.0206          
  (0.0248)          
Reasoning x Social Media Share: 20-40% -0.0257          
  (0.0256)          
Combo x Social Media Share: 20-40% -0.0274          
  (0.0254)          
No-course Baseline x Passed attention check at pre-treatment -0.0410**          
  (0.0198)          
Emotions x Passed attention check at pre-treatment -0.0034          
  (0.0189)          
Reasoning x Passed attention check at pre-treatment 0.0056          
  (0.0193)          
Combo x Passed attention check at pre-treatment 0.0421**          
  (0.0193)          
No-course Baseline x Avg. Sharing of Misinfo posts at pre-treatment -0.3381          
  (109778.9211)          
Emotions x Avg. Sharing of Misinfo posts at pre-treatment -1.4409          
  (122450.7479)          
Reasoning x Avg. Sharing of Misinfo posts at pre-treatment 0.0129          
  (0.0548)          
Combo x Avg. Sharing of Misinfo posts at pre-treatment -0.8856          
  (115784.0494)          
No-course Baseline x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0201          
  (0.0241)          
Emotions x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0537**          
  (0.0231)          
Reasoning x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0364*          
  (0.0241)          
Combo x Avg. Sharing of Non-misinfo posts at pre-treatment -0.0175          
  (0.0238)          
No-course Baseline x Emotions posts 0.1433          
  (44861.1249)          
Emotions x Emotions posts 0.5209          
  (50039.4633)          
Reasoning x Emotions posts -0.0201          
  (0.0351)          
Combo x Emotions posts 0.3052          
  (47315.1189)          
No-course Baseline x Reasoning posts 0.1558          
  (44435.4722)          
Emotions x Reasoning posts 0.5377          
  (49564.6774)          
Reasoning x Reasoning posts -0.0373          
  (0.0342)          
Combo x Reasoning posts 0.3688          
  (46866.1821)          
No-course Baseline x Combo posts 0.1426          
  (45344.4831)          
Emotions x Combo posts 0.5060          
  (50578.6158)          
Combo x Combo posts 0.3537          
  (47824.9178)          
No-course Baseline x 1[Post-treatment] x 1[Misinfo] -0.0011 0.0069 -0.0022 0.0073 0.0198 0.0198
  (0.0843) (0.0921) (0.0958) (0.0921) (0.0971) (0.0971)
Emotions x 1[Post-treatment] x 1[Misinfo] -0.1040* -0.1220* -0.1864** -0.1231* -0.2332*** -0.2332***
  (0.0795) (0.0857) (0.0893) (0.0857) (0.0907) (0.0907)
Reasoning x 1[Post-treatment] x 1[Misinfo] 0.1100* 0.1178* 0.0982 0.1172* 0.0620 0.0620
  (0.0820) (0.0892) (0.0922) (0.0893) (0.0935) (0.0935)
Combo x 1[Post-treatment] x 1[Misinfo] -0.0590 -0.0845 -0.0937 -0.0854 -0.1563** -0.1563**
  (0.0813) (0.0887) (0.0924) (0.0887) (0.0940) (0.0940)
Post domain 2     -1.3458***   -1.3896***  
      (0.0391)   (0.0766)  
Post domain 3     -1.8926***   -2.2086***  
      (0.0389)   (0.0755)  
Post domain 4     -1.2128***   -1.7401***  
      (0.0384)   (0.0763)  
Post domain 5     0.4049***   0.0051  
      (0.0388)   (0.0820)  
Post domain 6     0.1237***   0.4527***  
      (0.0395)   (0.0844)  
Post domain 7     -1.5746***   -1.4228***  
      (0.0388)   (0.0752)  
Post domain 8     -1.4724***   -0.9538***  
      (0.0391)   (0.0779)  
Post domain 9     0.2728***   -0.5281***  
      (0.0392)   (0.0788)  
Post domain 10     -0.3969***   -0.8059***  
      (0.0377)   (0.0763)  
Post domain 11     -1.0747***   -1.3501***  
      (0.0388)   (0.0756)  
Post domain 12     -0.7213***   -1.0828***  
      (0.0372)   (0.0758)  
Post domain 13     -1.0425***   -1.6220***  
      (0.0378)   (0.0743)  
Post domain 14     -1.8560***   -2.2721***  
      (0.0403)   (0.0771)  
Post domain 15     -1.2523***   -2.0199***  
      (0.0381)   (0.0749)  
1[Combo manipulation tactic]       -0.2264*** -0.3419***  
        (0.0187) (0.0832)  
1[Emotions manipulation tactic]       -0.0068 -0.5416***  
        (0.0184) (0.0822)  
Post domain 2 x 1[Combo manipulation tactic]         -0.1530*  
          (0.1163)  
Post domain 3 x 1[Combo manipulation tactic]         0.4818***  
          (0.1123)  
Post domain 4 x 1[Combo manipulation tactic]         0.7230***  
          (0.1104)  
Post domain 5 x 1[Combo manipulation tactic]         0.6450***  
          (0.1186)  
Post domain 6 x 1[Combo manipulation tactic]         -2.2961***  
          (0.1206)  
Post domain 7 x 1[Combo manipulation tactic]         -0.1072  
          (0.1122)  
Post domain 8 x 1[Combo manipulation tactic]         0.0724  
          (0.1141)  
Post domain 9 x 1[Combo manipulation tactic]         1.1394***  
          (0.1160)  
Post domain 10 x 1[Combo manipulation tactic]         0.3736***  
          (0.1122)  
Post domain 11 x 1[Combo manipulation tactic]         0.6002***  
          (0.1113)  
Post domain 12 x 1[Combo manipulation tactic]         0.0418  
          (0.1136)  
Post domain 13 x 1[Combo manipulation tactic]         0.5858***  
          (0.1106)  
Post domain 14 x 1[Combo manipulation tactic]         0.3450***  
          (0.1139)  
Post domain 15 x 1[Combo manipulation tactic]         0.7389***  
          (0.1105)  
Post domain 2 x 1[Emotions manipulation tactic]         -0.4478***  
          (0.1167)  
Post domain 3 x 1[Emotions manipulation tactic]         0.9334***  
          (0.1107)  
Post domain 4 x 1[Emotions manipulation tactic]         0.5846***  
          (0.1097)  
Post domain 5 x 1[Emotions manipulation tactic]         0.8014***  
          (0.1170)  
Post domain 6 x 1[Emotions manipulation tactic]         0.9194***  
          (0.1236)  
Post domain 7 x 1[Emotions manipulation tactic]         -0.0346  
          (0.1108)  
Post domain 8 x 1[Emotions manipulation tactic]         -0.9456***  
          (0.1172)  
Post domain 9 x 1[Emotions manipulation tactic]         1.2361***  
          (0.1149)  
Post domain 10 x 1[Emotions manipulation tactic]         0.8795***  
          (0.1109)  
Post domain 11 x 1[Emotions manipulation tactic]         -0.0799  
          (0.1124)  
Post domain 12 x 1[Emotions manipulation tactic]         1.1423***  
          (0.1105)  
Post domain 13 x 1[Emotions manipulation tactic]         1.4266***  
          (0.1071)  
Post domain 14 x 1[Emotions manipulation tactic]         0.8221***  
          (0.1124)  
Post domain 15 x 1[Emotions manipulation tactic]         2.4403***  
          (0.1113)  
Post domain 2 x 1[Reasoning manipulation tactic]         0.4651***  
          (0.1126)  
Post domain 3 x 1[Reasoning manipulation tactic]         -0.2843***  
          (0.1157)  
Post domain 4 x 1[Reasoning manipulation tactic]         0.8423***  
          (0.1111)  
Post domain 5 x 1[Reasoning manipulation tactic]         0.2026**  
          (0.1188)  
Post domain 6 x 1[Reasoning manipulation tactic]         0.3527***  
          (0.1241)  
Post domain 7 x 1[Reasoning manipulation tactic]         -0.8764***  
          (0.1125)  
Post domain 8 x 1[Reasoning manipulation tactic]         -1.9427***  
          (0.1203)  
Post domain 9 x 1[Reasoning manipulation tactic]         1.0028***  
          (0.1186)  
Post domain 10 x 1[Reasoning manipulation tactic]         0.4064***  
          (0.1125)  
Post domain 11 x 1[Reasoning manipulation tactic]         0.5144***  
          (0.1124)  
Post domain 12 x 1[Reasoning manipulation tactic]         0.2580***  
          (0.1107)  
Post domain 13 x 1[Reasoning manipulation tactic]         0.3539***  
          (0.1101)  
Post domain 14 x 1[Reasoning manipulation tactic]         0.4395***  
          (0.1117)  
Post domain 15 x 1[Reasoning manipulation tactic]         0.0085  
          (0.1116)  
Post 2 indicator           -1.3896***
            (0.0766)
Post 3 indicator           -2.2086***
            (0.0755)
Post 4 indicator           -1.7401***
            (0.0763)
Post 5 indicator           0.0051
            (0.0820)
Post 6 indicator           0.4527***
            (0.0844)
Post 7 indicator           -1.4228***
            (0.0752)
Post 8 indicator           -0.9538***
            (0.0779)
Post 9 indicator           -0.5281***
            (0.0788)
Post 10 indicator           -0.8059***
            (0.0763)
Post 11 indicator           -1.3501***
            (0.0756)
Post 12 indicator           -1.0828***
            (0.0758)
Post 13 indicator           -1.6220***
            (0.0743)
Post 14 indicator           -2.2721***
            (0.0771)
Post 15 indicator           -2.0199***
            (0.0749)
Post 16 indicator           1.6695***
            (0.0824)
Post 17 indicator           0.1269*
            (0.0846)
Post 18 indicator           -0.0573
            (0.0815)
Post 19 indicator           0.6525***
            (0.0790)
Post 20 indicator           2.3196***
            (0.0838)
Post 21 indicator           -0.1740**
            (0.0827)
Post 22 indicator           0.1395**
            (0.0819)
Post 23 indicator           0.7881***
            (0.0812)
Post 24 indicator           2.2808***
            (0.0839)
Post 25 indicator           1.2372***
            (0.0799)
Post 26 indicator           0.9195***
            (0.0829)
Post 27 indicator           0.6285***
            (0.0802)
Post 28 indicator           0.6333***
            (0.0813)
Post 29 indicator           -0.2576***
            (0.0832)
Post 30 indicator           0.3885***
            (0.0809)
Post 31 indicator           1.4698***
            (0.0799)
Post 32 indicator           -0.3676***
            (0.0867)
Post 33 indicator           0.1946***
            (0.0794)
Post 34 indicator           0.3143***
            (0.0795)
Post 35 indicator           2.2763***
            (0.0839)
Post 36 indicator           2.8419***
            (0.0910)
Post 37 indicator           0.0124
            (0.0810)
Post 38 indicator           -0.4296***
            (0.0859)
Post 39 indicator           2.1778***
            (0.0835)
Post 40 indicator           1.5434***
            (0.0810)
Post 41 indicator           0.0398
            (0.0829)
Post 42 indicator           1.5293***
            (0.0807)
Post 43 indicator           1.2744***
            (0.0780)
Post 44 indicator           0.0198
            (0.0829)
Post 45 indicator           1.8902***
            (0.0825)
Post 46 indicator           2.0114***
            (0.0830)
Post 47 indicator           1.0869***
            (0.0811)
Post 48 indicator           -0.4814***
            (0.0840)
Post 49 indicator           1.1137***
            (0.0820)
Post 50 indicator           2.2191***
            (0.0846)
Post 51 indicator           2.8168***
            (0.0890)
Post 52 indicator           -0.2878***
            (0.0832)
Post 53 indicator           -0.8851***
            (0.0926)
Post 54 indicator           2.4861***
            (0.0862)
Post 55 indicator           1.6118***
            (0.0820)
Post 56 indicator           1.1756***
            (0.0838)
Post 57 indicator           1.1865***
            (0.0791)
Post 58 indicator           0.7433***
            (0.0798)
Post 59 indicator           0.1789**
            (0.0816)
Num. obs. 156312 137250 137250 137250 137250 137250
Deviance 166005.0252 148402.7617 136205.4546 148215.0340 130957.8466 130957.8466
Log Likelihood -83002.5126 -74201.3809 -68102.7273 -74107.5170 -65478.9233 -65478.9233
Pseudo R2 0.2299 0.1384 0.2024 0.1393 0.2296 0.2296
Out-of-sample R2            
Fixed Effects   user user user user user
Fixed Effects     Domain Tactic Domain x Tactic Post ID
Covariates   Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates Demographics + Sharing rates + Tactic sharing rates
Clustered Std. Errors user user user user user user
Significance levels: *p<0.10, **p<0.05, ***p<0.01 one-sided test.





Prediction

Standard errors of the share predicted value are estimated using the Delta method. Treatment effects standard errors are clustered at the user level and reported in parentheses. z-ratios are reported in brackets. Treatment effects estimates for specifications that include Post-Tactic ID fixed effects are not reported since all tactics are misinformation.

cov_feglm <- c(paste0("share ~ treatment"),
               paste0("share ~ treatment + ",demographics_demeaned_treatment),
               paste0("share ~ treatment + factor(fact) + ",sharing_demeaned_treatment),
               paste0("share ~ treatment + factor(type) + ",sharing_tactic_demeaned_treatment),
               paste0("share ~ treatment + factor(fact)*factor(type) + ",demographics_sharing_demeaned_treatment),
               paste0("share ~ treatment + factor(post_id) + ",all_covariates_demeaned_treatment))

if (file.exists("prediction_alltreat_logit_df.rds")) {
  prediction_alltreat_logit_df <- readRDS("prediction_alltreat_logit_df.rds")
  
  counter <- 1
  
  for (cov in seq_along(covariate_list)) {
    
    list_models <- cov_estimates_list[[cov]]
  
    cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))
    
    for (m in 1:length(models)) {
      
      # obtain prediction_df
      prediction_df <- prediction_alltreat_logit_df[[counter]]
      
      k <- knitr::kable(prediction_df, caption = models[m],
                           col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","log odds ratio<br>Emotions/Facts"))
      print(k)
      cat('<br>')
      
      counter <- counter + 1
      }
  
    cat('<br>\n<br>\n<br>')
      
  }
  
} else {

prediction_alltreat_logit_df <- list()

for (cov in seq_along(covariate_list)) {
  
  list_models <- cov_estimates_list[[cov]]
  
  cat(paste0("$$\\text{",covariate_list_names[cov],"}$$"))
  
  for (m in 1:length(models)) {
    
    treatmentLevels <- unique(panel$treatment)
    posts <- c(0, 1)
    misinfos <- c(0, 1)
    
    prediction_df <- expand.grid(treatment = treatmentLevels, post = posts, post_is_misinfo = misinfos) %>%
      mutate(prediction = NA_real_, prediction_se = NA_real_)

    for (row in 1:nrow(prediction_df)) {
      
      treat <- as.character(prediction_df$treatment[row])
      post <- prediction_df$post[row]
      misinfo <- prediction_df$post_is_misinfo[row]
      
      # Filter the relevant data
      relevant_data <- panel %>% 
        filter(row_number() %in% obs(list_models[[m]])) %>%
        filter(treatment == treat & post == post & post_is_misinfo == misinfo)

      # Prepare predictor variables based on model requirements
      predictorVariables <- relevant_data %>%
        distinct(user, .keep_all = TRUE) %>%
        group_by(user, type, fact, post_id) %>%
        summarise(age_cov = mean(age_cov, na.rm = TRUE),
                  gender_Man_cov = mean(gender_Man_cov, na.rm = TRUE),
                  education_Some_college_cov = mean(education_Some_college_cov, na.rm = TRUE),
                  education_Bachelor_degree_cov = mean(education_Bachelor_degree_cov, na.rm = TRUE),
                  education_Graduate_degree_cov = mean(education_Graduate_degree_cov, na.rm = TRUE),
                  marital_Married_or_in_a_domestic_partnership_cov = mean(marital_Married_or_in_a_domestic_partnership_cov, na.rm = TRUE),
                  employment_Unemployed_cov = mean(employment_Unemployed_cov, na.rm = TRUE),
                  employment_Employed_cov = mean(employment_Employed_cov, na.rm = TRUE),
                  location_Mostly_urban_cov = mean(location_Mostly_urban_cov, na.rm = TRUE),
                  location_Suburban_cov = mean(location_Suburban_cov, na.rm = TRUE),
                  religion_Christian_cov = mean(religion_Christian_cov, na.rm = TRUE),
                  religiosity_Attends_cov = mean(religiosity_Attends_cov, na.rm = TRUE),
                  social_media_bin_Yes_cov = mean(social_media_bin_Yes_cov, na.rm = TRUE),
                  social_media_hours_cov = mean(social_media_hours_cov, na.rm = TRUE),
                  att_check_pre_cov = mean(att_check_pre_cov, na.rm = TRUE),
                  social_media_share_80_100_cov = mean(social_media_share_80_100_cov, na.rm = TRUE),
                  social_media_share_60_80_cov = mean(social_media_share_60_80_cov, na.rm = TRUE),
                  social_media_share_40_60_cov = mean(social_media_share_40_60_cov, na.rm = TRUE),
                  social_media_share_20_40_cov = mean(social_media_share_20_40_cov, na.rm = TRUE),
                  misinfo_pre_cov = mean(misinfo_pre_cov, na.rm = TRUE),
                  base_rate_pre_cov = mean(base_rate_pre_cov, na.rm = TRUE),
                  emotions_pre_cov = mean(emotions_pre_cov, na.rm = TRUE),
                  reasoning_pre_cov = mean(reasoning_pre_cov, na.rm = TRUE),
                  combo_pre_cov = mean(combo_pre_cov, na.rm = TRUE)) %>% # now add the treatment and post variables and misinfo
        mutate(treatment = treat,
               post = post,
               post_is_misinfo = misinfo)
      
      
        # predicted value
        if (m != 1) {

        predicted_shares <- predict(list_models[[m]], newdata = predictorVariables)
        predictorVariables$prediction <- predicted_shares

        # mean of predicted value
        prediction_df$prediction[row] <- format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,mean)[,4], digits = 5)
        # se of predicted value
        prediction_df$prediction_se[row] <- paste0("(",format(aggregate(prediction~treatment*post*post_is_misinfo,predictorVariables,se_cont)[,4], digits = 4),")")
        
        }
      
    }

    
     # predicted value
    if (m == 1) {
      predictorVariables <- expand.grid(treatment = unique(panel$treatment),
                                            post = c(0,1),
                                            post_is_misinfo = c(0,1))
      predictions <- predict(baseline_all_logit, newdata = predictorVariables, type = "response", se.fit = TRUE)
      prediction_df <- predictorVariables
      prediction_df$prediction <- format(predictions$fit, digits = 4)
      prediction_df$prediction_se <- paste0("(",format(predictions$se.fit, digits = 4),")")
      
    
      emm_res <- emmeans(baseline_all_logit, specs = pairwise ~ treatment | post * post_is_misinfo)
      contrast_res <- contrast(emm_res, method = "revpairwise")
      
      contrast_df <- as.data.frame(contrast_res) %>% filter(contrast == "Emotions - Facts Baseline") %>%
      select(post, post_is_misinfo, estimate, SE, z.ratio)
      contrast_df <- rbind(contrast_df %>% mutate(treatment = "Facts Baseline"),contrast_df %>% mutate(treatment = "Emotions")) %>% mutate(se_tratio = gsub("\\[\\s ","\\[",paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))) %>%
      mutate(estimate = format(estimate, digits = 4)) %>%
      mutate(estimate = ifelse(treatment == "Emotions", se_tratio, estimate)) %>%
      select(treatment, post, post_is_misinfo, estimate) %>%
      mutate(estimate = ifelse(is.na(estimate),"",estimate))
    
      prediction_df <- left_join(prediction_df, contrast_df, 
                            by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    }
    

    # calculate difference between Facts Baseline and all other treatments
    prediction_df <- prediction_df %>%
    group_by(post,post_is_misinfo) %>%
    mutate(lag = ifelse(treatment == "Emotions",
                        prediction, NA)) %>%
    tidyr::fill(lag, .direction = "up") %>%
    ungroup() %>% 
      mutate(te = ifelse(treatment == "Facts Baseline",
                                     format(as.numeric(prediction) - as.numeric(lag), digits = 5), NA)) %>%
      select(-lag) %>%
      mutate(te = ifelse(is.na(te),"",te))
    
    
      if (m %in% c(2,3,6)) {
     # predicted treatment effects
      contrast_df <- data.frame()
        for (p in c(0,1)) {
        for (mis in c(0,1)) {
          
          cov_model <- feglm(as.formula(cov_feglm[m]),panel %>% filter(post == p & post_is_misinfo == mis), family = binomial(link = "logit"), cluster = "user")
          
          # obtain data frame with estimate, std error, and z value
          cov_model_df_add <- data.frame(
            treatment = c("No-course Baseline","Emotions","Reasoning","Combo"),
            estimate = format(coef(cov_model)[grepl("treatment",names(coef(cov_model)))], digits = 4),
            SE = sqrt(diag(vcov(cov_model)))[grepl("treatment",names(diag(vcov(cov_model))))],
            z.ratio = coef(cov_model)[grepl("treatment",names(coef(cov_model)))] / sqrt(diag(vcov(cov_model)))[grepl("treatment",names(diag(vcov(cov_model))))],
            post = p,
            post_is_misinfo = mis
          )
          # make rownames a column
          cov_model_df_add <- rownames_to_column(cov_model_df_add, var = "treatment2") %>% 
            filter(treatment == "Emotions" & treatment2 == "treatmentEmotions") %>% select(-treatment2) %>%
            mutate(zratio = paste0("(",format(SE, digits = 4),"); [",format(z.ratio, digits = 4),"]"))

          cov_model_df_add <- rbind(cov_model_df_add %>% mutate(treatment = "Facts Baseline"),cov_model_df_add %>% mutate(treatment = "Emotions")) %>%
            mutate(estimate = ifelse(treatment == "Emotions", zratio, estimate)) %>% 
            mutate(post = ifelse(post == 0,as.numeric(0),as.numeric(1)),
                   post_is_misinfo = ifelse(post_is_misinfo == 0,as.numeric(0),as.numeric(1))) %>%
            select(treatment, post, post_is_misinfo, estimate) %>%
            mutate(estimate = ifelse(is.na(estimate),"",estimate))
          
          contrast_df <- rbind(contrast_df, cov_model_df_add)
        }
        }
        
       prediction_df <- left_join(prediction_df, contrast_df, 
                                by = c("treatment" = "treatment", "post" = "post", "post_is_misinfo" = "post_is_misinfo"))
    }
    
    if (m %in% c(4,5)) {
      prediction_df$estimate <- ""
    }
    

    prediction_df <- prediction_df %>% select(treatment,post,post_is_misinfo,prediction,prediction_se,te,estimate)
    
    prediction_df <- prediction_df %>% arrange(post,post_is_misinfo) %>%
      mutate(estimate = ifelse(is.na(estimate),"",estimate))

    k <- knitr::kable(prediction_df, caption = models[m],
                           col.names = c("Treatment","Post-treatment","1[Misinfo]","Predicted value<br>1[Share]","Prediction<br>Std. errors","Diff. in Predicted values<br>Emotions vs. Facts","log odds ratio<br>Emotions/Facts"))
    print(k)
    cat('<br>')
      
    prediction_alltreat_logit_df[[length(prediction_alltreat_logit_df) + 1]] <- prediction_df
  }
  cat('<br>\n<br>')
}

saveRDS(prediction_alltreat_logit_df, "prediction_alltreat_logit_df.rds")

}

\[\text{Demographics}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.027609
Emotions 0 0 0.6888 (0.006238) 0.0059 (0.04131); [0.6683]
No-course Baseline 0 0 0.7041 (0.006531)
Reasoning 0 0 0.7037 (0.006413)
Combo 0 0 0.6864 (0.006422)
Facts Baseline 0 1 0.5386 (0.004810) 0.008161
Emotions 0 1 0.5407 (0.004748) 0.0021 (0.02721); [0.3000]
No-course Baseline 0 1 0.5650 (0.005016)
Reasoning 0 1 0.5399 (0.004949)
Combo 0 1 0.5462 (0.004873)
Facts Baseline 1 0 0.6071 (0.006665) -0.358022
Emotions 1 0 0.5192 (0.006732) -0.0879 (0.03883); [ -9.2196]
No-course Baseline 1 0 0.6798 (0.006676)
Reasoning 1 0 0.5503 (0.006986)
Combo 1 0 0.5222 (0.006914)
Facts Baseline 1 1 0.4650 (0.004813) -0.465472
Emotions 1 1 0.3530 (0.004553) -0.1120 (0.02778); [-16.7557]
No-course Baseline 1 1 0.5461 (0.005038)
Reasoning 1 1 0.4040 (0.004873)
Combo 1 1 0.3715 (0.004729)


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.002590
Emotions 0 0 0.68882 (0.006114) 0.00595 (0.05418); [0.0478]
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53864 (0.006739) -0.013730
Emotions 0 1 0.54067 (0.006114) 0.00203 (0.04402); [-0.3119]
No-course Baseline 0 1 0.56501 (0.006896)
Reasoning 0 1 0.53994 (0.00667)
Combo 0 1 0.54617 (0.006623)
Facts Baseline 1 0 0.60708 (0.006739) -0.401041
Emotions 1 0 0.51924 (0.006114) -0.08784 (0.0522); [-7.683]
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46499 (0.006739) -0.5110728
Emotions 1 1 0.35303 (0.006114) -0.11196 (0.0467); [-10.94]
No-course Baseline 1 1 0.54607 (0.006896)
Reasoning 1 1 0.40404 (0.00667)
Combo 1 1 0.37146 (0.006623)


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68708 (0.007296) 0.0055615
Emotions 0 0 0.68691 (0.006623) -0.00017 (0.03105); [0.1791]
No-course Baseline 0 0 0.70681 (0.007465)
Reasoning 0 0 0.70467 (0.007186)
Combo 0 0 0.68609 (0.007109)
Facts Baseline 0 1 0.53759 (0.007252) 0.0222133
Emotions 0 1 0.54124 (0.00663) 0.00365 (0.01701); [1.306]
No-course Baseline 0 1 0.56465 (0.007482)
Reasoning 0 1 0.53678 (0.007188)
Combo 0 1 0.5456 (0.007157)
Facts Baseline 1 0 0.61224 (0.007296) -0.47662
Emotions 1 0 0.51718 (0.006623) -0.09506 (0.05522); [-8.631]
No-course Baseline 1 0 0.68323 (0.007465)
Reasoning 1 0 0.55133 (0.007186)
Combo 1 0 0.52308 (0.007109)
Facts Baseline 1 1 0.46504 (0.007252) -0.557139
Emotions 1 1 0.35181 (0.00663) -0.11323 (0.04873); [-11.43]
No-course Baseline 1 1 0.54795 (0.007482)
Reasoning 1 1 0.39859 (0.007188)
Combo 1 1 0.37069 (0.007157)


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68287 (0.006739)
Emotions 0 0 0.68882 (0.006114) 0.00595
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53798 (0.006743)
Emotions 0 1 0.54051 (0.006119) 0.00253
No-course Baseline 0 1 0.56442 (0.006913)
Reasoning 0 1 0.53984 (0.006692)
Combo 0 1 0.54628 (0.00664)
Facts Baseline 1 0 0.60708 (0.006739)
Emotions 1 0 0.51925 (0.006114) -0.08783
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46433 (0.006743)
Emotions 1 1 0.35288 (0.006119) -0.11145
No-course Baseline 1 1 0.54548 (0.006913)
Reasoning 1 1 0.40394 (0.006692)
Combo 1 1 0.37156 (0.00664)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68625 (0.007209)
Emotions 0 0 0.68537 (0.006579) -0.00088
No-course Baseline 0 0 0.70608 (0.007419)
Reasoning 0 0 0.70338 (0.007231)
Combo 0 0 0.68525 (0.007031)
Facts Baseline 0 1 0.53805 (0.007503)
Emotions 0 1 0.54073 (0.006932) 0.00268
No-course Baseline 0 1 0.56257 (0.007866)
Reasoning 0 1 0.53858 (0.007523)
Combo 0 1 0.54627 (0.007512)
Facts Baseline 1 0 0.61204 (0.007209)
Emotions 1 0 0.51555 (0.006579) -0.09649
No-course Baseline 1 0 0.68253 (0.007419)
Reasoning 1 0 0.55085 (0.007231)
Combo 1 0 0.52275 (0.007031)
Facts Baseline 1 1 0.46774 (0.007503)
Emotions 1 1 0.35023 (0.006932) -0.11751
No-course Baseline 1 1 0.54712 (0.007866)
Reasoning 1 1 0.40062 (0.007523)
Combo 1 1 0.36824 (0.007512)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68628 (0.007209) 0.0058603
Emotions 0 0 0.6854 (0.006579) -0.00088 (0.03174); [0.1846]
No-course Baseline 0 0 0.70612 (0.007419)
Reasoning 0 0 0.70341 (0.007231)
Combo 0 0 0.68528 (0.007031)
Facts Baseline 0 1 0.53803 (0.007503) 0.0141366
Emotions 0 1 0.54071 (0.006932) 0.00268 (0.01931); [0.732]
No-course Baseline 0 1 0.56255 (0.007866)
Reasoning 0 1 0.53857 (0.007523)
Combo 0 1 0.54625 (0.007512)
Facts Baseline 1 0 0.61207 (0.007209) -0.502190
Emotions 1 0 0.51558 (0.006579) -0.09649 (0.05525); [-9.089]
No-course Baseline 1 0 0.68256 (0.007419)
Reasoning 1 0 0.55088 (0.007231)
Combo 1 0 0.52278 (0.007031)
Facts Baseline 1 1 0.46772 (0.007503) -0.6220643
Emotions 1 1 0.35021 (0.006932) -0.11751 (0.04981); [-12.49]
No-course Baseline 1 1 0.54711 (0.007866)
Reasoning 1 1 0.4006 (0.007523)
Combo 1 1 0.36822 (0.007512)





\[\text{Sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.027609
Emotions 0 0 0.6888 (0.006238) 0.0059 (0.04131); [0.6683]
No-course Baseline 0 0 0.7041 (0.006531)
Reasoning 0 0 0.7037 (0.006413)
Combo 0 0 0.6864 (0.006422)
Facts Baseline 0 1 0.5386 (0.004810) 0.008161
Emotions 0 1 0.5407 (0.004748) 0.0021 (0.02721); [0.3000]
No-course Baseline 0 1 0.5650 (0.005016)
Reasoning 0 1 0.5399 (0.004949)
Combo 0 1 0.5462 (0.004873)
Facts Baseline 1 0 0.6071 (0.006665) -0.358022
Emotions 1 0 0.5192 (0.006732) -0.0879 (0.03883); [ -9.2196]
No-course Baseline 1 0 0.6798 (0.006676)
Reasoning 1 0 0.5503 (0.006986)
Combo 1 0 0.5222 (0.006914)
Facts Baseline 1 1 0.4650 (0.004813) -0.465472
Emotions 1 1 0.3530 (0.004553) -0.1120 (0.02778); [-16.7557]
No-course Baseline 1 1 0.5461 (0.005038)
Reasoning 1 1 0.4040 (0.004873)
Combo 1 1 0.3715 (0.004729)


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.002590
Emotions 0 0 0.68882 (0.006114) 0.00595 (0.05418); [0.0478]
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53864 (0.006739) -0.013730
Emotions 0 1 0.54067 (0.006114) 0.00203 (0.04402); [-0.3119]
No-course Baseline 0 1 0.56501 (0.006896)
Reasoning 0 1 0.53994 (0.00667)
Combo 0 1 0.54617 (0.006623)
Facts Baseline 1 0 0.60708 (0.006739) -0.401041
Emotions 1 0 0.51924 (0.006114) -0.08784 (0.0522); [-7.683]
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46499 (0.006739) -0.5110728
Emotions 1 1 0.35303 (0.006114) -0.11196 (0.0467); [-10.94]
No-course Baseline 1 1 0.54607 (0.006896)
Reasoning 1 1 0.40404 (0.00667)
Combo 1 1 0.37146 (0.006623)


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68708 (0.007296) 0.0055615
Emotions 0 0 0.68691 (0.006623) -0.00017 (0.03105); [0.1791]
No-course Baseline 0 0 0.70681 (0.007465)
Reasoning 0 0 0.70467 (0.007186)
Combo 0 0 0.68609 (0.007109)
Facts Baseline 0 1 0.53759 (0.007252) 0.0222133
Emotions 0 1 0.54124 (0.00663) 0.00365 (0.01701); [1.306]
No-course Baseline 0 1 0.56465 (0.007482)
Reasoning 0 1 0.53678 (0.007188)
Combo 0 1 0.5456 (0.007157)
Facts Baseline 1 0 0.61224 (0.007296) -0.47662
Emotions 1 0 0.51718 (0.006623) -0.09506 (0.05522); [-8.631]
No-course Baseline 1 0 0.68323 (0.007465)
Reasoning 1 0 0.55133 (0.007186)
Combo 1 0 0.52308 (0.007109)
Facts Baseline 1 1 0.46504 (0.007252) -0.557139
Emotions 1 1 0.35181 (0.00663) -0.11323 (0.04873); [-11.43]
No-course Baseline 1 1 0.54795 (0.007482)
Reasoning 1 1 0.39859 (0.007188)
Combo 1 1 0.37069 (0.007157)


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68287 (0.006739)
Emotions 0 0 0.68882 (0.006114) 0.00595
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53798 (0.006743)
Emotions 0 1 0.54051 (0.006119) 0.00253
No-course Baseline 0 1 0.56442 (0.006913)
Reasoning 0 1 0.53984 (0.006692)
Combo 0 1 0.54628 (0.00664)
Facts Baseline 1 0 0.60708 (0.006739)
Emotions 1 0 0.51925 (0.006114) -0.08783
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46433 (0.006743)
Emotions 1 1 0.35288 (0.006119) -0.11145
No-course Baseline 1 1 0.54548 (0.006913)
Reasoning 1 1 0.40394 (0.006692)
Combo 1 1 0.37156 (0.00664)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68625 (0.007209)
Emotions 0 0 0.68537 (0.006579) -0.00088
No-course Baseline 0 0 0.70608 (0.007419)
Reasoning 0 0 0.70338 (0.007231)
Combo 0 0 0.68525 (0.007031)
Facts Baseline 0 1 0.53805 (0.007503)
Emotions 0 1 0.54073 (0.006932) 0.00268
No-course Baseline 0 1 0.56257 (0.007866)
Reasoning 0 1 0.53858 (0.007523)
Combo 0 1 0.54627 (0.007512)
Facts Baseline 1 0 0.61204 (0.007209)
Emotions 1 0 0.51555 (0.006579) -0.09649
No-course Baseline 1 0 0.68253 (0.007419)
Reasoning 1 0 0.55085 (0.007231)
Combo 1 0 0.52275 (0.007031)
Facts Baseline 1 1 0.46774 (0.007503)
Emotions 1 1 0.35023 (0.006932) -0.11751
No-course Baseline 1 1 0.54712 (0.007866)
Reasoning 1 1 0.40062 (0.007523)
Combo 1 1 0.36824 (0.007512)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68628 (0.007209) 0.0058603
Emotions 0 0 0.6854 (0.006579) -0.00088 (0.03174); [0.1846]
No-course Baseline 0 0 0.70612 (0.007419)
Reasoning 0 0 0.70341 (0.007231)
Combo 0 0 0.68528 (0.007031)
Facts Baseline 0 1 0.53803 (0.007503) 0.0141366
Emotions 0 1 0.54071 (0.006932) 0.00268 (0.01931); [0.732]
No-course Baseline 0 1 0.56255 (0.007866)
Reasoning 0 1 0.53857 (0.007523)
Combo 0 1 0.54625 (0.007512)
Facts Baseline 1 0 0.61207 (0.007209) -0.502190
Emotions 1 0 0.51558 (0.006579) -0.09649 (0.05525); [-9.089]
No-course Baseline 1 0 0.68256 (0.007419)
Reasoning 1 0 0.55088 (0.007231)
Combo 1 0 0.52278 (0.007031)
Facts Baseline 1 1 0.46772 (0.007503) -0.6220643
Emotions 1 1 0.35021 (0.006932) -0.11751 (0.04981); [-12.49]
No-course Baseline 1 1 0.54711 (0.007866)
Reasoning 1 1 0.4006 (0.007523)
Combo 1 1 0.36822 (0.007512)





\[\text{Tactic sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.027609
Emotions 0 0 0.6888 (0.006238) 0.0059 (0.04131); [0.6683]
No-course Baseline 0 0 0.7041 (0.006531)
Reasoning 0 0 0.7037 (0.006413)
Combo 0 0 0.6864 (0.006422)
Facts Baseline 0 1 0.5386 (0.004810) 0.008161
Emotions 0 1 0.5407 (0.004748) 0.0021 (0.02721); [0.3000]
No-course Baseline 0 1 0.5650 (0.005016)
Reasoning 0 1 0.5399 (0.004949)
Combo 0 1 0.5462 (0.004873)
Facts Baseline 1 0 0.6071 (0.006665) -0.358022
Emotions 1 0 0.5192 (0.006732) -0.0879 (0.03883); [ -9.2196]
No-course Baseline 1 0 0.6798 (0.006676)
Reasoning 1 0 0.5503 (0.006986)
Combo 1 0 0.5222 (0.006914)
Facts Baseline 1 1 0.4650 (0.004813) -0.465472
Emotions 1 1 0.3530 (0.004553) -0.1120 (0.02778); [-16.7557]
No-course Baseline 1 1 0.5461 (0.005038)
Reasoning 1 1 0.4040 (0.004873)
Combo 1 1 0.3715 (0.004729)


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.002590
Emotions 0 0 0.68882 (0.006114) 0.00595 (0.05418); [0.0478]
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53864 (0.006739) -0.013730
Emotions 0 1 0.54067 (0.006114) 0.00203 (0.04402); [-0.3119]
No-course Baseline 0 1 0.56501 (0.006896)
Reasoning 0 1 0.53994 (0.00667)
Combo 0 1 0.54617 (0.006623)
Facts Baseline 1 0 0.60708 (0.006739) -0.401041
Emotions 1 0 0.51924 (0.006114) -0.08784 (0.0522); [-7.683]
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46499 (0.006739) -0.5110728
Emotions 1 1 0.35303 (0.006114) -0.11196 (0.0467); [-10.94]
No-course Baseline 1 1 0.54607 (0.006896)
Reasoning 1 1 0.40404 (0.00667)
Combo 1 1 0.37146 (0.006623)


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68708 (0.007296) 0.0055615
Emotions 0 0 0.68691 (0.006623) -0.00017 (0.03105); [0.1791]
No-course Baseline 0 0 0.70681 (0.007465)
Reasoning 0 0 0.70467 (0.007186)
Combo 0 0 0.68609 (0.007109)
Facts Baseline 0 1 0.53759 (0.007252) 0.0222133
Emotions 0 1 0.54124 (0.00663) 0.00365 (0.01701); [1.306]
No-course Baseline 0 1 0.56465 (0.007482)
Reasoning 0 1 0.53678 (0.007188)
Combo 0 1 0.5456 (0.007157)
Facts Baseline 1 0 0.61224 (0.007296) -0.47662
Emotions 1 0 0.51718 (0.006623) -0.09506 (0.05522); [-8.631]
No-course Baseline 1 0 0.68323 (0.007465)
Reasoning 1 0 0.55133 (0.007186)
Combo 1 0 0.52308 (0.007109)
Facts Baseline 1 1 0.46504 (0.007252) -0.557139
Emotions 1 1 0.35181 (0.00663) -0.11323 (0.04873); [-11.43]
No-course Baseline 1 1 0.54795 (0.007482)
Reasoning 1 1 0.39859 (0.007188)
Combo 1 1 0.37069 (0.007157)


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68287 (0.006739)
Emotions 0 0 0.68882 (0.006114) 0.00595
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53798 (0.006743)
Emotions 0 1 0.54051 (0.006119) 0.00253
No-course Baseline 0 1 0.56442 (0.006913)
Reasoning 0 1 0.53984 (0.006692)
Combo 0 1 0.54628 (0.00664)
Facts Baseline 1 0 0.60708 (0.006739)
Emotions 1 0 0.51925 (0.006114) -0.08783
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46433 (0.006743)
Emotions 1 1 0.35288 (0.006119) -0.11145
No-course Baseline 1 1 0.54548 (0.006913)
Reasoning 1 1 0.40394 (0.006692)
Combo 1 1 0.37156 (0.00664)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68625 (0.007209)
Emotions 0 0 0.68537 (0.006579) -0.00088
No-course Baseline 0 0 0.70608 (0.007419)
Reasoning 0 0 0.70338 (0.007231)
Combo 0 0 0.68525 (0.007031)
Facts Baseline 0 1 0.53805 (0.007503)
Emotions 0 1 0.54073 (0.006932) 0.00268
No-course Baseline 0 1 0.56257 (0.007866)
Reasoning 0 1 0.53858 (0.007523)
Combo 0 1 0.54627 (0.007512)
Facts Baseline 1 0 0.61204 (0.007209)
Emotions 1 0 0.51555 (0.006579) -0.09649
No-course Baseline 1 0 0.68253 (0.007419)
Reasoning 1 0 0.55085 (0.007231)
Combo 1 0 0.52275 (0.007031)
Facts Baseline 1 1 0.46774 (0.007503)
Emotions 1 1 0.35023 (0.006932) -0.11751
No-course Baseline 1 1 0.54712 (0.007866)
Reasoning 1 1 0.40062 (0.007523)
Combo 1 1 0.36824 (0.007512)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68628 (0.007209) 0.0058603
Emotions 0 0 0.6854 (0.006579) -0.00088 (0.03174); [0.1846]
No-course Baseline 0 0 0.70612 (0.007419)
Reasoning 0 0 0.70341 (0.007231)
Combo 0 0 0.68528 (0.007031)
Facts Baseline 0 1 0.53803 (0.007503) 0.0141366
Emotions 0 1 0.54071 (0.006932) 0.00268 (0.01931); [0.732]
No-course Baseline 0 1 0.56255 (0.007866)
Reasoning 0 1 0.53857 (0.007523)
Combo 0 1 0.54625 (0.007512)
Facts Baseline 1 0 0.61207 (0.007209) -0.502190
Emotions 1 0 0.51558 (0.006579) -0.09649 (0.05525); [-9.089]
No-course Baseline 1 0 0.68256 (0.007419)
Reasoning 1 0 0.55088 (0.007231)
Combo 1 0 0.52278 (0.007031)
Facts Baseline 1 1 0.46772 (0.007503) -0.6220643
Emotions 1 1 0.35021 (0.006932) -0.11751 (0.04981); [-12.49]
No-course Baseline 1 1 0.54711 (0.007866)
Reasoning 1 1 0.4006 (0.007523)
Combo 1 1 0.36822 (0.007512)





\[\text{Demographics + Sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.027609
Emotions 0 0 0.6888 (0.006238) 0.0059 (0.04131); [0.6683]
No-course Baseline 0 0 0.7041 (0.006531)
Reasoning 0 0 0.7037 (0.006413)
Combo 0 0 0.6864 (0.006422)
Facts Baseline 0 1 0.5386 (0.004810) 0.008161
Emotions 0 1 0.5407 (0.004748) 0.0021 (0.02721); [0.3000]
No-course Baseline 0 1 0.5650 (0.005016)
Reasoning 0 1 0.5399 (0.004949)
Combo 0 1 0.5462 (0.004873)
Facts Baseline 1 0 0.6071 (0.006665) -0.358022
Emotions 1 0 0.5192 (0.006732) -0.0879 (0.03883); [ -9.2196]
No-course Baseline 1 0 0.6798 (0.006676)
Reasoning 1 0 0.5503 (0.006986)
Combo 1 0 0.5222 (0.006914)
Facts Baseline 1 1 0.4650 (0.004813) -0.465472
Emotions 1 1 0.3530 (0.004553) -0.1120 (0.02778); [-16.7557]
No-course Baseline 1 1 0.5461 (0.005038)
Reasoning 1 1 0.4040 (0.004873)
Combo 1 1 0.3715 (0.004729)


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.002590
Emotions 0 0 0.68882 (0.006114) 0.00595 (0.05418); [0.0478]
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53864 (0.006739) -0.013730
Emotions 0 1 0.54067 (0.006114) 0.00203 (0.04402); [-0.3119]
No-course Baseline 0 1 0.56501 (0.006896)
Reasoning 0 1 0.53994 (0.00667)
Combo 0 1 0.54617 (0.006623)
Facts Baseline 1 0 0.60708 (0.006739) -0.401041
Emotions 1 0 0.51924 (0.006114) -0.08784 (0.0522); [-7.683]
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46499 (0.006739) -0.5110728
Emotions 1 1 0.35303 (0.006114) -0.11196 (0.0467); [-10.94]
No-course Baseline 1 1 0.54607 (0.006896)
Reasoning 1 1 0.40404 (0.00667)
Combo 1 1 0.37146 (0.006623)


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68708 (0.007296) 0.0055615
Emotions 0 0 0.68691 (0.006623) -0.00017 (0.03105); [0.1791]
No-course Baseline 0 0 0.70681 (0.007465)
Reasoning 0 0 0.70467 (0.007186)
Combo 0 0 0.68609 (0.007109)
Facts Baseline 0 1 0.53759 (0.007252) 0.0222133
Emotions 0 1 0.54124 (0.00663) 0.00365 (0.01701); [1.306]
No-course Baseline 0 1 0.56465 (0.007482)
Reasoning 0 1 0.53678 (0.007188)
Combo 0 1 0.5456 (0.007157)
Facts Baseline 1 0 0.61224 (0.007296) -0.47662
Emotions 1 0 0.51718 (0.006623) -0.09506 (0.05522); [-8.631]
No-course Baseline 1 0 0.68323 (0.007465)
Reasoning 1 0 0.55133 (0.007186)
Combo 1 0 0.52308 (0.007109)
Facts Baseline 1 1 0.46504 (0.007252) -0.557139
Emotions 1 1 0.35181 (0.00663) -0.11323 (0.04873); [-11.43]
No-course Baseline 1 1 0.54795 (0.007482)
Reasoning 1 1 0.39859 (0.007188)
Combo 1 1 0.37069 (0.007157)


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68287 (0.006739)
Emotions 0 0 0.68882 (0.006114) 0.00595
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53798 (0.006743)
Emotions 0 1 0.54051 (0.006119) 0.00253
No-course Baseline 0 1 0.56442 (0.006913)
Reasoning 0 1 0.53984 (0.006692)
Combo 0 1 0.54628 (0.00664)
Facts Baseline 1 0 0.60708 (0.006739)
Emotions 1 0 0.51925 (0.006114) -0.08783
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46433 (0.006743)
Emotions 1 1 0.35288 (0.006119) -0.11145
No-course Baseline 1 1 0.54548 (0.006913)
Reasoning 1 1 0.40394 (0.006692)
Combo 1 1 0.37156 (0.00664)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68625 (0.007209)
Emotions 0 0 0.68537 (0.006579) -0.00088
No-course Baseline 0 0 0.70608 (0.007419)
Reasoning 0 0 0.70338 (0.007231)
Combo 0 0 0.68525 (0.007031)
Facts Baseline 0 1 0.53805 (0.007503)
Emotions 0 1 0.54073 (0.006932) 0.00268
No-course Baseline 0 1 0.56257 (0.007866)
Reasoning 0 1 0.53858 (0.007523)
Combo 0 1 0.54627 (0.007512)
Facts Baseline 1 0 0.61204 (0.007209)
Emotions 1 0 0.51555 (0.006579) -0.09649
No-course Baseline 1 0 0.68253 (0.007419)
Reasoning 1 0 0.55085 (0.007231)
Combo 1 0 0.52275 (0.007031)
Facts Baseline 1 1 0.46774 (0.007503)
Emotions 1 1 0.35023 (0.006932) -0.11751
No-course Baseline 1 1 0.54712 (0.007866)
Reasoning 1 1 0.40062 (0.007523)
Combo 1 1 0.36824 (0.007512)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68628 (0.007209) 0.0058603
Emotions 0 0 0.6854 (0.006579) -0.00088 (0.03174); [0.1846]
No-course Baseline 0 0 0.70612 (0.007419)
Reasoning 0 0 0.70341 (0.007231)
Combo 0 0 0.68528 (0.007031)
Facts Baseline 0 1 0.53803 (0.007503) 0.0141366
Emotions 0 1 0.54071 (0.006932) 0.00268 (0.01931); [0.732]
No-course Baseline 0 1 0.56255 (0.007866)
Reasoning 0 1 0.53857 (0.007523)
Combo 0 1 0.54625 (0.007512)
Facts Baseline 1 0 0.61207 (0.007209) -0.502190
Emotions 1 0 0.51558 (0.006579) -0.09649 (0.05525); [-9.089]
No-course Baseline 1 0 0.68256 (0.007419)
Reasoning 1 0 0.55088 (0.007231)
Combo 1 0 0.52278 (0.007031)
Facts Baseline 1 1 0.46772 (0.007503) -0.6220643
Emotions 1 1 0.35021 (0.006932) -0.11751 (0.04981); [-12.49]
No-course Baseline 1 1 0.54711 (0.007866)
Reasoning 1 1 0.4006 (0.007523)
Combo 1 1 0.36822 (0.007512)





\[\text{Demographics + Sharing rates + Tactic sharing rates}\]

Model 1: Baseline
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.6829 (0.006350) 0.027609
Emotions 0 0 0.6888 (0.006238) 0.0059 (0.04131); [0.6683]
No-course Baseline 0 0 0.7041 (0.006531)
Reasoning 0 0 0.7037 (0.006413)
Combo 0 0 0.6864 (0.006422)
Facts Baseline 0 1 0.5386 (0.004810) 0.008161
Emotions 0 1 0.5407 (0.004748) 0.0021 (0.02721); [0.3000]
No-course Baseline 0 1 0.5650 (0.005016)
Reasoning 0 1 0.5399 (0.004949)
Combo 0 1 0.5462 (0.004873)
Facts Baseline 1 0 0.6071 (0.006665) -0.358022
Emotions 1 0 0.5192 (0.006732) -0.0879 (0.03883); [ -9.2196]
No-course Baseline 1 0 0.6798 (0.006676)
Reasoning 1 0 0.5503 (0.006986)
Combo 1 0 0.5222 (0.006914)
Facts Baseline 1 1 0.4650 (0.004813) -0.465472
Emotions 1 1 0.3530 (0.004553) -0.1120 (0.02778); [-16.7557]
No-course Baseline 1 1 0.5461 (0.005038)
Reasoning 1 1 0.4040 (0.004873)
Combo 1 1 0.3715 (0.004729)


Model 2: User ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68287 (0.006739) 0.002590
Emotions 0 0 0.68882 (0.006114) 0.00595 (0.05418); [0.0478]
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53864 (0.006739) -0.013730
Emotions 0 1 0.54067 (0.006114) 0.00203 (0.04402); [-0.3119]
No-course Baseline 0 1 0.56501 (0.006896)
Reasoning 0 1 0.53994 (0.00667)
Combo 0 1 0.54617 (0.006623)
Facts Baseline 1 0 0.60708 (0.006739) -0.401041
Emotions 1 0 0.51924 (0.006114) -0.08784 (0.0522); [-7.683]
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46499 (0.006739) -0.5110728
Emotions 1 1 0.35303 (0.006114) -0.11196 (0.0467); [-10.94]
No-course Baseline 1 1 0.54607 (0.006896)
Reasoning 1 1 0.40404 (0.00667)
Combo 1 1 0.37146 (0.006623)


Model 3: User ID FE + Post domain FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68708 (0.007296) 0.0055615
Emotions 0 0 0.68691 (0.006623) -0.00017 (0.03105); [0.1791]
No-course Baseline 0 0 0.70681 (0.007465)
Reasoning 0 0 0.70467 (0.007186)
Combo 0 0 0.68609 (0.007109)
Facts Baseline 0 1 0.53759 (0.007252) 0.0222133
Emotions 0 1 0.54124 (0.00663) 0.00365 (0.01701); [1.306]
No-course Baseline 0 1 0.56465 (0.007482)
Reasoning 0 1 0.53678 (0.007188)
Combo 0 1 0.5456 (0.007157)
Facts Baseline 1 0 0.61224 (0.007296) -0.47662
Emotions 1 0 0.51718 (0.006623) -0.09506 (0.05522); [-8.631]
No-course Baseline 1 0 0.68323 (0.007465)
Reasoning 1 0 0.55133 (0.007186)
Combo 1 0 0.52308 (0.007109)
Facts Baseline 1 1 0.46504 (0.007252) -0.557139
Emotions 1 1 0.35181 (0.00663) -0.11323 (0.04873); [-11.43]
No-course Baseline 1 1 0.54795 (0.007482)
Reasoning 1 1 0.39859 (0.007188)
Combo 1 1 0.37069 (0.007157)


Model 4: User ID FE + Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68287 (0.006739)
Emotions 0 0 0.68882 (0.006114) 0.00595
No-course Baseline 0 0 0.70414 (0.006896)
Reasoning 0 0 0.70375 (0.00667)
Combo 0 0 0.6864 (0.006623)
Facts Baseline 0 1 0.53798 (0.006743)
Emotions 0 1 0.54051 (0.006119) 0.00253
No-course Baseline 0 1 0.56442 (0.006913)
Reasoning 0 1 0.53984 (0.006692)
Combo 0 1 0.54628 (0.00664)
Facts Baseline 1 0 0.60708 (0.006739)
Emotions 1 0 0.51925 (0.006114) -0.08783
No-course Baseline 1 0 0.67977 (0.006896)
Reasoning 1 0 0.5503 (0.00667)
Combo 1 0 0.52222 (0.006623)
Facts Baseline 1 1 0.46433 (0.006743)
Emotions 1 1 0.35288 (0.006119) -0.11145
No-course Baseline 1 1 0.54548 (0.006913)
Reasoning 1 1 0.40394 (0.006692)
Combo 1 1 0.37156 (0.00664)


Model 5: User ID FE + Post domain x Post tactic
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68625 (0.007209)
Emotions 0 0 0.68537 (0.006579) -0.00088
No-course Baseline 0 0 0.70608 (0.007419)
Reasoning 0 0 0.70338 (0.007231)
Combo 0 0 0.68525 (0.007031)
Facts Baseline 0 1 0.53805 (0.007503)
Emotions 0 1 0.54073 (0.006932) 0.00268
No-course Baseline 0 1 0.56257 (0.007866)
Reasoning 0 1 0.53858 (0.007523)
Combo 0 1 0.54627 (0.007512)
Facts Baseline 1 0 0.61204 (0.007209)
Emotions 1 0 0.51555 (0.006579) -0.09649
No-course Baseline 1 0 0.68253 (0.007419)
Reasoning 1 0 0.55085 (0.007231)
Combo 1 0 0.52275 (0.007031)
Facts Baseline 1 1 0.46774 (0.007503)
Emotions 1 1 0.35023 (0.006932) -0.11751
No-course Baseline 1 1 0.54712 (0.007866)
Reasoning 1 1 0.40062 (0.007523)
Combo 1 1 0.36824 (0.007512)


Model 6: User ID FE + Post ID FE
Treatment Post-treatment 1[Misinfo] Predicted value
1[Share]
Prediction
Std. errors
Diff. in Predicted values
Emotions vs. Facts
log odds ratio
Emotions/Facts
Facts Baseline 0 0 0.68628 (0.007209) 0.0058603
Emotions 0 0 0.6854 (0.006579) -0.00088 (0.03174); [0.1846]
No-course Baseline 0 0 0.70612 (0.007419)
Reasoning 0 0 0.70341 (0.007231)
Combo 0 0 0.68528 (0.007031)
Facts Baseline 0 1 0.53803 (0.007503) 0.0141366
Emotions 0 1 0.54071 (0.006932) 0.00268 (0.01931); [0.732]
No-course Baseline 0 1 0.56255 (0.007866)
Reasoning 0 1 0.53857 (0.007523)
Combo 0 1 0.54625 (0.007512)
Facts Baseline 1 0 0.61207 (0.007209) -0.502190
Emotions 1 0 0.51558 (0.006579) -0.09649 (0.05525); [-9.089]
No-course Baseline 1 0 0.68256 (0.007419)
Reasoning 1 0 0.55088 (0.007231)
Combo 1 0 0.52278 (0.007031)
Facts Baseline 1 1 0.46772 (0.007503) -0.6220643
Emotions 1 1 0.35021 (0.006932) -0.11751 (0.04981); [-12.49]
No-course Baseline 1 1 0.54711 (0.007866)
Reasoning 1 1 0.4006 (0.007523)
Combo 1 1 0.36822 (0.007512)