【问题标题】:Performing MANOVA on tidy data in R在 R 中对整洁的数据执行 MANOVA
【发布时间】:2018-10-07 19:54:27
【问题描述】:

我正在尝试在看起来有点像以下的整洁数据框上执行 MANOVA。 “id”是指参与者编号。自变量是“init_cont”(值为 I 或 K)和“family”(值为 C、S 或 D),构成 2x3 设计。 “qnumber”栏是指参与者回答的问题数量,每个参与者回答3个问题。 “价值”是每个参与者对特定问题的回答。

id  init_cont  family  qnumber  value
1   I          C       1        3.5
1   I          C       2        2
1   I          C       3        4
2   K          C       1        2
2   K          C       2        5
2   K          C       3        3
3   K          S       1        4.5
3   K          S       2        5
3   K          S       3        3
4   K          D       1        1
4   K          D       2        7.5
4   K          D       3        3

对我来说,对这些数据执行 MANOVA 的最佳方法是什么?我对自变量之间的相互作用以及它们如何影响三个问题中的每一个问题的“价值”感兴趣。如果相关,我的实际数据集有 14 个不同的问题。

我曾考虑按以下格式重新组织数据,但我不确定如何在 R 中执行此操作。每个新列中“值”后面的数字来自“qnumber”。

id  init_cont  family  value1  value2  value3
1   I          C       3.5     2       4
2   K          C       2       5       3
3   K          S       4.5     5       3
4   K          D       1       7.5     3

【问题讨论】:

  • 这里有 2 个问题。第一个(如何最好地执行 MANOVA)更适合交叉验证:stats.stackexchange.com。我强烈建议你去那里询问 MANOVA,你会得到很好的答案。

标签: r tidyverse manova


【解决方案1】:

dplyr::spread 轻松解决了您问题的第一部分。

df %>% spread(qnumber, value)
#   id init_cont family   1   2 3
# 1  1         I      C 3.5 2.0 4
# 2  2         K      C 2.0 5.0 3
# 3  3         K      S 4.5 5.0 3
# 4  4         K      D 1.0 7.5 3

这是可重现的数据。

t <- 'id  init_cont  family  qnumber  value
1   I          C       1        3.5
1   I          C       2        2
1   I          C       3        4
2   K          C       1        2
2   K          C       2        5
2   K          C       3        3
3   K          S       1        4.5
3   K          S       2        5
3   K          S       3        3
4   K          D       1        1
4   K          D       2        7.5
4   K          D       3        3'

df <- read.table(text = t, header = TRUE)

【讨论】:

  • 传播不起作用。它不会像您在此处显示的那样为每个 id # 创建 1 行。这个问题概述了我在“传播”方面遇到的麻烦:stackoverflow.com/questions/50055417/…
  • @melbez,它适用于您提供的数据集,除非您没有提供足够的信息让我们复制您的问题。确保在使用 spread 之前进行的每个分组都有 ungroup()ed。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-04
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多