Cultivation theory predicts that repeated media exposure shapes how humans perceive their lives. Gerbner’s theory is a gradual process focused on television and digital environments in the late 90s. Smartphones are now the common media and news source, which has developed excessive screen time usage. Screen time leads to high levels of stress and anxiety. This will begin to make people feel unhappy with less in-person social interaction. In contrast, less frequent smartphone users are not as exposed to these issues.
We predict that people who spend more time on their phones each week will report greater unhappiness on a 50-point scale than those who spend less time on their phones.
Participants completed an online survey that measured unhappiness on a 50-point continuous scale, with higher scores indicating greater unhappiness. The primary predictor was weekly screen time, recorded from participants’ phone usage reports and expressed in total hours per week (range = 0–112, M = 50, SD = 7). Linear regression was used to examine whether weekly screen time predicted unhappiness scores. Demographic and lifestyle variables, including age, gender, sleep, and exercise, were collected as controls to account for potential confounding factors.
A linear regression was conducted to examine whether weekly screen time predicted unhappiness on a 50-point scale. The R-squared shown for us was 0.3203, which shows a weak positive correlation between the two variables. The scores ranged from 10 to 40 and averaged around 20 to 30 hours. The positive model does prove that with each hour of screen time, unhappiness develops more.Â
While this model does prove our hypothesis, it is important to note that many other life factors can determine unhappiness. A study that represents offline support and dairy stressors as well would be important, and understanding the full picture on a scale.
Leverage estimates for 10 largest outliers | |
Row # | Leverage |
---|---|
164 | 0.0303 |
360 | 0.0199 |
359 | 0.0190 |
371 | 0.0178 |
72 | 0.0170 |
265 | 0.0164 |
201 | 0.0152 |
392 | 0.0151 |
97 | 0.0151 |
44 | 0.0149 |
Regression Analysis Results | ||||
Coefficient Estimates | ||||
Term | Estimate | Std. Error | t | p-value |
---|---|---|---|---|
(Intercept) | 3.9888 | 1.5531 | 2.5683 | 0.0106 |
IV | 0.4206 | 0.0307 | 13.6953 | 0.0000 |
Model Fit Statistics | |||||
Overall Regression Performance | |||||
R-squared | Adj. R-squared | F-statistic | df (model) | df (residual) | Residual Std. Error |
---|---|---|---|---|---|
0.3203 | 0.3186 | 187.5609 | 1.0000 | 398.0000 | 4.1619 |
##################################################
# 1. Install and load required packages
##################################################
if (!require("tidyverse")) install.packages("tidyverse")
if (!require("gt")) install.packages("gt")
if (!require("gtExtras")) install.packages("gtExtras")
library(tidyverse)
library(gt)
library(gtExtras)
##################################################
# 2. Read in the dataset
##################################################
# Replace "YOURFILENAME.csv" with the actual filename
mydata <- read.csv("RegressionData.csv")
# ################################################
# # (Optional) 2b. Remove specific cases 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
##################################################
# 3. Define dependent variable (DV) and independent variable (IV)
##################################################
# Replace YOURDVNAME and YOURIVNAME with actual column names
mydata$DV <- mydata$Unhappiness
mydata$IV <- mydata$Hours
##################################################
# 4. Explore distributions of DV and IV
##################################################
# Make a histogram for DV
DVGraph <- ggplot(mydata, aes(x = DV)) +
geom_histogram(color = "black", fill = "#1f78b4")
# Make a histogram for IV
IVGraph <- ggplot(mydata, aes(x = IV)) +
geom_histogram(color = "black", fill = "#1f78b4")
##################################################
# 5. Fit and summarize initial regression model
##################################################
# Suppress scientific notation
options(scipen = 999)
# Fit model
myreg <- lm(DV ~ IV, data = mydata)
# Model summary
summary(myreg)
##################################################
# 6. Visualize regression and check for bivariate outliers
##################################################
# Create scatterplot with regression line as a ggplot object
RegressionPlot <- ggplot(mydata, aes(x = IV, y = DV)) +
geom_point(color = "#1f78b4") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(
title = "Scatterplot of DV vs IV with Regression Line",
x = "Independent Variable (IV)",
y = "Dependent Variable (DV)"
) +
theme_minimal()
##################################################
# 7. Check for potential outliers (high leverage points)
##################################################
# Calculate leverage values
hat_vals <- hatvalues(myreg)
# Rule of thumb: leverage > 2 * (number of predictors + 1) / n may be influential
threshold <- 2 * (length(coef(myreg)) / nrow(mydata))
# Create table showing 10 largest leverage values
outliers <- data.frame(
Obs = 1:nrow(mydata),
Leverage = hatvalues(myreg)
) %>%
arrange(desc(Leverage)) %>%
slice_head(n = 10)
# Format as a gt table
outliers_table <- outliers %>%
gt() %>%
tab_header(
title = "Leverage estimates for 10 largest outliers"
) %>%
cols_label(
Obs = "Row #",
Leverage = "Leverage"
) %>%
fmt_number(
columns = Leverage,
decimals = 4
)
##################################################
# 8. Create nicely formatted regression results tables
##################################################
# --- Coefficient-level results ---
reg_results <- as.data.frame(coef(summary(myreg))) %>%
tibble::rownames_to_column("Term") %>%
rename(
Estimate = Estimate,
`Std. Error` = `Std. Error`,
t = `t value`,
`p-value` = `Pr(>|t|)`
)
reg_table <- reg_results %>%
gt() %>%
tab_header(
title = "Regression Analysis Results",
subtitle = "Coefficient Estimates"
) %>%
fmt_number(
columns = c(Estimate, `Std. Error`, t, `p-value`),
decimals = 4
)
# --- Model fit statistics ---
reg_summary <- summary(myreg)
fit_stats <- tibble::tibble(
`R-squared` = reg_summary$r.squared,
`Adj. R-squared` = reg_summary$adj.r.squared,
`F-statistic` = reg_summary$fstatistic[1],
`df (model)` = reg_summary$fstatistic[2],
`df (residual)` = reg_summary$fstatistic[3],
`Residual Std. Error` = reg_summary$sigma
)
fit_table <- fit_stats %>%
gt() %>%
tab_header(
title = "Model Fit Statistics",
subtitle = "Overall Regression Performance"
) %>%
fmt_number(
columns = everything(),
decimals = 4
)
##################################################
# 9. Final print of key graphics and tables
##################################################
DVGraph
IVGraph
RegressionPlot
outliers_table
reg_table
fit_table