d = data.frame(
Temperature = c(rep("Cool", 6), rep("Warm", 6)),
Bact = c(rep("Bact 1", 2), rep("Bact 2", 2), rep("Bact 3", 2), rep("Bact 1", 2), rep("Bact 2", 2), rep("Bact 3", 2)),
Time = c(15.23,14.32,14.77,15.12,14.05,15.48,14.13,16.13,16.44,14.82,17.96,16.65)
)
我自己创建了一个双向ANOVA的小数据框架 . 我想通过执行双向ANOVA模型
summary(aov(Time~Bact*Temperature, data=d))
时间是因变量,而Bact和温度是两个分类独立变量 .
我想学习并证明ANOVA也可以用线性回归模型完成,而不是以ANOVA方式进行 . 我想将我的数据转换为虚拟变量并对其执行线性回归 . 我希望我能恢复相同的结果 . 虚拟变量还将包括Bact和温度之间的相互作用 .
问题是,我不知道如何将我的数据帧转换为虚拟变量,以便它可以在lm()函数中使用 .
2 回答
lm()
将为您创建虚拟变量 . 无需自己创建它们:Edit
如果你想在
lm()
的引擎下同行,你可以看到model.matrix(m)
的设计矩阵我也和你做同样的事情 . 我希望能够控制住,所以每当我有时间,我都会用以下方法自行设计假人:
这是:
因此,您只需要对因子(温度,温度)进行虚拟化,以便以下过程有效:
然后运行模型:
输出: