我的原始数据是宽格式,如表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
答案 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