The Elaboration Likelihood Model theory is an opportunity to observe how persuasive messaging works or why it sometimes does not. Messages can follow either the central route or the peripheral route. Persuasive messages following the central route are full of high-quality information; yet they are challenging to absorb. If a person is motivated and able to understand the information, it can lead to a change in attitude. If the person isn’t motivated or able to understand the information, the message will follow the peripheral route.
Based on the theory, if a motivated participant involved in a research study puts effort into browsing a website and can process high-quality information about the potential benefits of legalizing recreational marijuana, their attitude about being indifferent on the matter may change.
Therefore, leading to more participants voting in favor of legalization rather than being opposed, undecided, or declining to answer.
Motivated participants who viewed “high-quality” persuasive information about the benefits of legalizing recreational marijuana in Tennessee on a made-up organization’s website for extended periods of time will vote in favor of legalizing marijuana. Participants who spent less time reviewing the information were more likely to be opposed, undecided, or not bother to answer.
200 research participants, who had no strong opinions for or against legalizing recreational marijuana use, were asked to spend 30 minutes letting an eye tracker watch them browse a realistic-looking website for a made-up organization advocating to legalize recreational marijuana use in Tennessee.
The tracker recorded how much time participants spent looking at “high quality” persuasive information, like summaries of medical studies and information from medical experts; rather than peripheral cues on the sites, like endorsements by celebrities and images.
The dependent variable in the analysis was a categorical measure of whether participants favored (1) or opposed (0) legalizing recreational marijuana in Tennessee. Participants who were undecided or who declined to answer were also coded as 0. The independent variable was continuous, indicating the amount of time, in minutes, that the respondent spent looking at “high-quality” persuasive information arguing for the legalization of recreational marijuana use in Tennessee.
A logistic regression test was used to determine the probability of someone voting in favor of legalization based on the number of minutes spent browsing high-quality information.
The graphs below summarize the association between the dependent and independent variables. The logistic regression results are shown as well.
Logistic Regression Results | ||||
Odds Ratios with 95% Confidence Intervals | ||||
term | Odds_Ratio | CI_Lower | CI_Upper | P_Value |
---|---|---|---|---|
(Intercept) | 0.099 | 0.044 | 0.205 | 0.0000 |
IV | 1.167 | 1.116 | 1.227 | 0.0000 |
Linearity of the Logit Test (Box-Tidwell) | |||
Interaction term indicates violation if significant | |||
term | Estimate | Std_Error | P_Value |
---|---|---|---|
(Intercept) | −2.566 | 1.100 | 0.0196 |
IV | 0.262 | 0.290 | 0.3657 |
IV_log | −0.032 | 0.078 | 0.6869 |
Inflection Point of Logistic Curve | |
Value of IV where predicted probability = 0.50 | |
Probability | Inflection_Point |
---|---|
0.5 | 14.965 |
The results supported the hypothesis. The probability of more motivated participants voting in favor increased the longer they browsed the website. People who spent 15 minutes or more looking at the high-quality information were more likely to be in favor of legalizing recreational marijuana use in Tennessee. The logistic regression test found the association to be statistically significant.
# ------------------------------
# Install and load required packages
# ------------------------------
if (!require("tidyverse")) install.packages("tidyverse")
if (!require("gt")) install.packages("gt")
if (!require("gtExtras")) install.packages("gtExtras")
if (!require("plotly")) install.packages("plotly")
library(ggplot2)
library(dplyr)
library(gt)
library(gtExtras)
library(plotly)
# ------------------------------
# Read the data
# ------------------------------
mydata <- read.csv("ELM.csv") # <-- EDIT filename
# ################################################
# # (Optional) Remove specific case(es)s by row number
# ################################################
# # Example: remove rows 10 and 25
# rows_to_remove <- c(10, 25) # Edit and uncomment this line
# mydata <- mydata[-rows_to_remove, ] # Uncomment this line
# Specify dependent (DV) and independent (IV) variables
mydata$DV <- mydata$Favor_1 # <-- EDIT DV column
mydata$IV <- mydata$Minutes # <-- EDIT IV column
# Ensure DV is binary numeric (0/1)
mydata$DV <- as.numeric(as.character(mydata$DV))
# ------------------------------
# Logistic regression plot
# ------------------------------
logit_plot <- ggplot(mydata, aes(x = IV, y = DV)) +
geom_point(alpha = 0.5) + # scatterplot of observed data
geom_smooth(method = "glm",
method.args = list(family = "binomial"),
se = FALSE,
color = "#1f78b4") +
labs(title = "Logistic Regression Curve",
x = "Independent Variable (IV)",
y = "Dependent Variable (DV)")
logit_plotly <- ggplotly(logit_plot)
# ------------------------------
# Run logistic regression
# ------------------------------
options(scipen = 999)
log.ed <- glm(DV ~ IV, data = mydata, family = "binomial")
# Extract coefficients and odds ratios
results <- broom::tidy(log.ed, conf.int = TRUE, exponentiate = TRUE) %>%
select(term, estimate, conf.low, conf.high, p.value) %>%
rename(Odds_Ratio = estimate,
CI_Lower = conf.low,
CI_Upper = conf.high,
P_Value = p.value)
# Display results as a nice gt table
results_table <- results %>%
gt() %>%
fmt_number(columns = c(Odds_Ratio, CI_Lower, CI_Upper), decimals = 3) %>%
fmt_number(columns = P_Value, decimals = 4) %>%
tab_header(
title = "Logistic Regression Results",
subtitle = "Odds Ratios with 95% Confidence Intervals"
)
# ------------------------------
# Check linearity of the logit (Box-Tidwell test)
# ------------------------------
# (Assumes IV > 0; shift IV if needed)
mydata$IV_log <- mydata$IV * log(mydata$IV)
linearity_test <- glm(DV ~ IV + IV_log, data = mydata, family = "binomial")
linearity_results <- broom::tidy(linearity_test) %>%
select(term, estimate, std.error, p.value) %>%
rename(Estimate = estimate,
Std_Error = std.error,
P_Value = p.value)
linearity_table <- linearity_results %>%
gt() %>%
fmt_number(columns = c(Estimate, Std_Error), decimals = 3) %>%
fmt_number(columns = P_Value, decimals = 4) %>%
tab_header(
title = "Linearity of the Logit Test (Box-Tidwell)",
subtitle = "Interaction term indicates violation if significant"
)
# ------------------------------
# Calculate the inflection point (p = .50)
# ------------------------------
p <- 0.50
Inflection_point <- (log(p/(1-p)) - coef(log.ed)[1]) / coef(log.ed)[2]
inflection_table <- tibble(
Probability = 0.5,
Inflection_Point = Inflection_point
) %>%
gt() %>%
fmt_number(columns = Inflection_Point, decimals = 3) %>%
tab_header(
title = "Inflection Point of Logistic Curve",
subtitle = "Value of IV where predicted probability = 0.50"
)
# ------------------------------
# Outputs
# ------------------------------
# Interactive plot
logit_plotly
# Tables
results_table
linearity_table
inflection_table