Методы информационного анализа текста (syllabus) 2025/Урок 2

Материал из Поле цифровой дидактики
# ============================================================================
# ЗАНЯТИЕ: Анализ временных рядов в R с использованием SmallGroupDiscuss
# Автор: Евгений Патаракин
# Дата: ноябрь 2025
# ============================================================================

# ====================
# 1. НАСТРОЙКА РАБОЧЕЙ СРЕДЫ
# ====================

# Показать текущую рабочую директорию
getwd()

library(tidyverse)    
library(ggplot2)
library(forecast)
library(nlstools) 


# Посмотреть содержимое текущей директории
list.files()


data <- read_csv2("sm_discussion/discussion01.csv")
head(data)
str(data)

data <- data %>% select(-placeholder)


summary_stats <- data %>%
  select(-Time) %>%
  summarise_all(list(mean = mean, sd = sd, min = min, max = max))

print(summary_stats)

# Визуализация
# Переводим данные в формат long для ggplot
data_long <- data %>%
  pivot_longer(-Time, names_to = "Participant", values_to = "Activity")

# График активности по времени
ggplot(data_long, aes(x = Time, y = Activity, color = Participant)) +
  geom_line() +
  labs(title = "Временные ряды активности участников",
       x = "Время (тик)", y = "Активность") +
  theme_minimal()

# Временной ряд одного участника
participant_ts <- ts(data$Эльза) 

# Построение графика автокорреляции
acf(participant_ts, main = "Автокорреляция активности Эльзы")


tick <- data$Time
activity <- data$Эльза

model <- lm(activity ~ tick)

summary(model)

# График с регрессией
ggplot(data, aes(x = Time, y = Эльза)) +
  geom_point() +
  geom_smooth(method = "lm", col = "red") +
  labs(title = "Линейный тренд активности Эльзы",
       x = "Время", y = "Активность")


### ANOVA

# ANOVA по активности в конце серии (последний тик)
final_tick <- tail(data$Time, 1)
final_activity <- data %>% filter(Time == final_tick) %>% select(-Time) %>%
  pivot_longer(everything(), names_to = "Participant", values_to = "Activity")

anova_result <- aov(Activity ~ Participant, data = final_activity)
summary(anova_result)


# ====================================================================