使用宽数据表格式的ANOVA

时间:2016-06-20 01:20:04

标签: r reshape reshape2 anova tidyr

我的原始数据是宽格式,如表A 中所示。

让我们说我想研究那些经历过不同服兵役的退伍军人是否患有不同程度的抑郁症。

我决定对 Depression_Score 作为标准对数据进行单向ANOVA测试,并且 值班服务 '作为因素。我知道我可以将数据重新整形为长格式,如表B ,然后运行ANOVA。

以下是我的问题:是否可以直接在表A 上运行ANOVA测试,而无需将数据重新整理为表B

如果是,那么我将使用哪些R命令对其进行编程?

表A:

ArmyVet_ID  Served_WW2  Served_KoreanWar    Served_VietnamWar   Depression_Score
110001          1              0                    0                3
110002          1              0                    0                1
110004          0              1                    0                4
110005          0              1                    0                3
110009          0              0                    1                7
110010          0              0                    1                5

表B:

ArmyVet_ID    Served            Depression_Score
110001          WW2                    3
110002          WW2                    1
110004          KoreanWar              4
110005          KoreanWar              3
110009          VietnamWar             7
110010          VietnamWar             5

1 个答案:

答案 0 :(得分:1)

如果您删除其中一列并将其反馈到as.matrix,则可以获得与传递合并因子相同的结果:

anova(lm(Depression_Score ~ as.matrix(A[3:4]), data=A))
#Analysis of Variance Table
#
#Response: Depression_Score
#                  Df Sum Sq Mean Sq F value Pr(>F)
#as.matrix(A[3:4])  2 16.333  8.1667  5.4444 0.1004
#Residuals          3  4.500  1.5000 

与示例中的表B的因子结果相比较:

anova(lm(Depression_Score ~ I(factor(c(1,1,2,2,3,3))), data=A))
#Analysis of Variance Table
#
#Response: Depression_Score
#                               Df Sum Sq Mean Sq F value Pr(>F)
#I(factor(c(1, 1, 2, 2, 3, 3)))  2 16.333  8.1667  5.4444 0.1004
#Residuals                       3  4.500  1.5000