In Elaboration Likelihood Model of Persuasion theory, a change in attitude stems from central or peripheral cognitive processing of the persuasive information. Moreover, a person’s level of involvement — which means how much a person cares about or is motivated by a topic — influences whether their attitude on the topic is more affected by the central processing route or the peripheral processing route. If a person favors the central route, the attitudes they form have more staying power, or in other words, those attitudes tend to endure over a longer period of time.
People who spend more time exposed to high-quality, central processing style information are more likely to favor the legalization of recreational use of marijuana in Tennessee and retain this attitude for longer.
For this analysis and investigation, 200 research participants 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. All 200 had indicated on a questionnaire administered ahead of time that they had no strong opinions for or against legalizing recreational marijuana use.
In reality, the eye tracker recorded how much of the allotted 30 minutes respondents spent looking at “high-quality” persuasive information on the site in favor of legalizing recreational marijuana (summaries of medical studies, information from medical experts, incarceration statistics, tax revenue projections, etc.) rather than peripheral cues on the site (endorsements by celebrities, images, etc.).
A month later, all 200 research participants were contacted and asked whether they favored or opposed legalizing recreational marijuana use for medical purposes.
The dependent variable in this study was categorical with only two categories: the participants either favored or did not favor the legalization. The independent variable — the amount of minutes they spent reviewing the central processing information — is continuous.
As such, a logistic regression test is the ideal way to analyze whether the hypothesis is supported by the data.
As part of the logistic regression analysis, a curve plot and three tables were produced from the data using R code in R Studio.
The Logistic Regression Curve graph shows a visual representation of a positive probability of joining the “legalization” at every level of the total minutes spent watching central processing, or “high quality” information.
The Logistic Regression Results table shows a P Value of less than .05, which indicates that the correlation is statistically significant and not the result of randomness. The table also shows an IV Odd Ratio of 1.167, which because it is greater than 1, indicates a positive relationship each time the independent variable increases by one step.
The Linearity of the Logit Test (Box-Tidwell) table, shows a P-Value at IV Log as .6869, which indicates the data meets a key assumption for logistical regression because the value is greater than .05.
The Inflection Point of Logistic Curve chart shows the inflection point of 14.965, which marks the number of minutes of high quality material watched when a participant’s attitude would switch from not favoring to favoring legalization.
The results of this data analysis support the hypothesis. The probability of favoring the legalization of recreational marijuana use in Tennessee increased depending on the number of minutes spent watching or reviewing high quality information and materials supporting the legalization. In particular, those who spent more than about 15 minutes reviewing this material were more likely to support the legalization. The fact that participants retained this attitude a month after reviewing the material, supports that this topic was one of high involvement and the participants were motivated, able, and preferred the central processing route of the Elaboration Likelihood Model of Persuasion.
| 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 |
# ------------------------------
# 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