122 lines
3.8 KiB
Plaintext
122 lines
3.8 KiB
Plaintext
---
|
|
title: "Mixed ANOVA Analysis for Domain Means"
|
|
author: "Irina"
|
|
date: "`r Sys.Date()`"
|
|
output:
|
|
html_document:
|
|
toc: true
|
|
toc_float: true
|
|
code_folding: hide
|
|
theme: flatly
|
|
highlight: tango
|
|
fig_width: 10
|
|
fig_height: 6
|
|
---
|
|
|
|
```{r setup, include=FALSE}
|
|
knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE)
|
|
```
|
|
|
|
# Introduction
|
|
|
|
This analysis examines domain-level differences in mean scores across time periods using a mixed ANOVA design. The analysis focuses on four domains (Preferences, Personality, Values, Life) across two time periods (Past, Future) with a between-subjects factor (TEMPORAL_DO).
|
|
|
|
# Data Preparation and Setup
|
|
|
|
```{r libraries}
|
|
library(tidyverse)
|
|
library(ez)
|
|
library(car)
|
|
library(nortest) # For normality tests
|
|
library(emmeans) # For post-hoc comparisons
|
|
library(purrr) # For map functions
|
|
library(effsize) # For Cohen's d calculations
|
|
library(ggplot2) # For plotting
|
|
|
|
options(scipen = 999)
|
|
options(contrasts = c("contr.sum", "contr.poly"))
|
|
|
|
setwd("C:/Users/irina/Documents/DND/EOHI/eohi1")
|
|
```
|
|
|
|
```{r data-loading}
|
|
# Read the data
|
|
data <- read.csv("exp1.csv")
|
|
|
|
required_vars <- c("NPast_mean_pref", "NPast_mean_pers", "NPast_mean_val", "NPast_mean_life",
|
|
"NFut_mean_pref", "NFut_mean_pers", "NFut_mean_val", "NFut_mean_life")
|
|
|
|
# Define domain mapping
|
|
domain_mapping <- data.frame(
|
|
variable = c("NPast_mean_pref", "NPast_mean_pers", "NPast_mean_val", "NPast_mean_life",
|
|
"NFut_mean_pref", "NFut_mean_pers", "NFut_mean_val", "NFut_mean_life"),
|
|
time = c(rep("Past", 4), rep("Future", 4)),
|
|
domain = rep(c("Preferences", "Personality", "Values", "Life"), 2),
|
|
stringsAsFactors = FALSE
|
|
)
|
|
```
|
|
|
|
```{r data-reshaping}
|
|
long_data <- data %>%
|
|
select(pID, ResponseId, TEMPORAL_DO, all_of(required_vars)) %>%
|
|
pivot_longer(
|
|
cols = all_of(required_vars),
|
|
names_to = "variable",
|
|
values_to = "MEAN_DIFFERENCE"
|
|
) %>%
|
|
left_join(domain_mapping, by = "variable") %>%
|
|
# Convert to factors with proper levels (note: columns are 'time' and 'domain' from mapping)
|
|
mutate(
|
|
TIME = factor(time, levels = c("Past", "Future")),
|
|
DOMAIN = factor(domain, levels = c("Preferences", "Personality", "Values", "Life")),
|
|
pID = as.factor(pID),
|
|
TEMPORAL_DO = as.factor(TEMPORAL_DO)
|
|
) %>%
|
|
# Select final columns and remove any rows with missing values
|
|
select(pID, ResponseId, TEMPORAL_DO, TIME, DOMAIN, MEAN_DIFFERENCE) %>%
|
|
filter(!is.na(MEAN_DIFFERENCE))
|
|
|
|
# Create clean dataset for analysis (fixing the reference issue)
|
|
long_data_clean <- long_data
|
|
```
|
|
|
|
# Descriptive Statistics
|
|
|
|
## Overall Descriptive Statistics by TIME and DOMAIN
|
|
|
|
```{r descriptive-stats}
|
|
desc_stats <- long_data %>%
|
|
group_by(TIME, DOMAIN) %>%
|
|
summarise(
|
|
n = n(),
|
|
mean = round(mean(MEAN_DIFFERENCE, na.rm = TRUE), 5),
|
|
variance = round(var(MEAN_DIFFERENCE, na.rm = TRUE), 5),
|
|
sd = round(sd(MEAN_DIFFERENCE, na.rm = TRUE), 5),
|
|
median = round(median(MEAN_DIFFERENCE, na.rm = TRUE), 5),
|
|
q1 = round(quantile(MEAN_DIFFERENCE, 0.25, na.rm = TRUE), 5),
|
|
q3 = round(quantile(MEAN_DIFFERENCE, 0.75, na.rm = TRUE), 5),
|
|
min = round(min(MEAN_DIFFERENCE, na.rm = TRUE), 5),
|
|
max = round(max(MEAN_DIFFERENCE, na.rm = TRUE), 5),
|
|
.groups = 'drop'
|
|
)
|
|
|
|
print(desc_stats)
|
|
```
|
|
|
|
## Descriptive Statistics by Between-Subjects Factors
|
|
|
|
```{r descriptive-stats-temporal}
|
|
desc_stats_by_temporal <- long_data %>%
|
|
group_by(TEMPORAL_DO, TIME, DOMAIN) %>%
|
|
summarise(
|
|
n = n(),
|
|
mean = round(mean(MEAN_DIFFERENCE, na.rm = TRUE), 5),
|
|
variance = round(var(MEAN_DIFFERENCE, na.rm = TRUE), 5),
|
|
sd = round(sd(MEAN_DIFFERENCE, na.rm = TRUE), 5),
|
|
.groups = 'drop'
|
|
)
|
|
|
|
print(desc_stats_by_temporal)
|
|
```
|
|
|