You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中计算个体内每日情绪的平均自相关系数

解决方案:个体每日情绪自相关系数计算

第一步:构造符合场景的模拟数据

先构建和你场景匹配的多层数据(个体-日期-时序情绪值),方便后续测试:

set.seed(123)
library(tibble)
sim_data <- tibble(
  id = rep(1:5, each = 3*24),  # 5个个体,每个个体3天,每天24条小时级情绪记录
  date = rep(rep(seq.Date(as.Date("2024-01-01"), as.Date("2024-01-03"), by = "day"), each = 24), 5),
  mood = rnorm(5*3*24, mean = 5, sd = 1) + 
    rep(rnorm(5, 0, 0.5), each = 3*24) +  # 个体间固定差异
    rep(rep(rnorm(15, 0, 0.3), each = 24), 1)  # 个体内每日波动差异
)

方案一:dplyr + purrr 手动实现(稳定可控)

这种方式无需依赖quest包,自定义逻辑更灵活,避免适配问题:

library(dplyr)
library(purrr)

# 1. 按个体+日期分组,嵌套每日数据;2. 计算每组lag=1的自相关;3. 求个体的每日自相关平均值
final_result <- sim_data %>%
  group_by(id, date) %>%
  nest() %>%
  mutate(
    daily_acf = map_dbl(data, ~ {
      # 计算lag=1的自相关,跳过NA,不输出绘图
      acf_res <- acf(.x$mood, lag.max = 1, plot = FALSE, na.action = na.pass)
      acf_res$acf[2]  # 提取lag=1的自相关值(acf结果中第2位对应lag=1)
    })
  ) %>%
  ungroup() %>%
  group_by(id) %>%
  summarise(avg_daily_acf = mean(daily_acf, na.rm = TRUE))

# 查看结果
print(final_result)

方案二:调整quest::auto_by的用法(适配原思路)

如果坚持使用quest包,问题大概率是分组变量或函数返回值格式不匹配,调整如下:

library(quest)
library(tidyr)

# 创建个体+日期的组合分组变量,确保auto_by能识别独立的每日组
sim_data <- sim_data %>%
  mutate(id_date = paste(id, date, sep = "_"))

# 使用auto_by计算每个(id,date)组的自相关系数
group_acf <- auto_by(
  data = sim_data,
  by = "id_date",
  # 自定义函数必须返回单个数值,避免结构报错
  FUN = function(x) acf(x$mood, lag.max = 1, plot = FALSE, na.action = na.pass)$acf[2],
  out.type = "tibble"  # 指定输出为tibble,方便后续处理
)

# 拆分分组变量,计算个体的每日自相关平均值
final_result <- group_acf %>%
  separate(id_date, into = c("id", "date"), sep = "_", convert = TRUE) %>%
  group_by(id) %>%
  summarise(avg_daily_acf = mean(FUN.out, na.rm = TRUE))

print(final_result)

关键注意事项

  • 若数据存在NA值,务必在acf()中设置na.action = na.pass或na.action = na.omit,避免中断计算
  • 若需要计算多阶自相关(如lag=1到3),可修改lag.max参数后取对应位置的平均值
  • quest::auto_by要求FUN返回单个值,若返回向量或列表会触发结构不匹配报错

内容的提问来源于stack exchange,提问作者maddhatt1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:47:17