传统的答案是:
macc <- melt(acc, id.var="Degrees")
lm(value ~ Degrees + variable, macc)
anova(lm(value ~ Degrees + variable, macc))
剩下的就是构建对结果的正确描述。(请注意,我使用“+”而不是“*”)。使用交互模型构建饱和模型(没有残差的模型)时,您会得到近乎完美的答案:
anova(lm(value ~ Degrees * variable, macc))
您可以将 Degrees 或 MPH 变量中的一个或两个编码为数字并获得一个不饱和模型。但它仍然会增加描述结果的复杂性。
acc <- data.frame(Degrees = c(5,8,10), MPH10=c(0.35, 0.37, 0.32),
MPH25=c(0.19, 0.28, 0.30), MPH40=c(0.14, 0.19, 0.29), MPH55=c(0.10, 0.19, 0.23))
macc <- melt(acc, id.var="Degrees")
anova(lm(value ~ Degrees * variable, macc))
使用 sub 从字符变量中删除“MPH”。我认为有必要使用as.numeric(as.character())
我认为的因子变量,但是该sub
操作显然剥离了因子属性并且仅使用as.numeric
就足够了。
macc$speed <- as.numeric(sub("MPH", "", macc$variable))
anova(lm(value ~ Degrees + speed, macc))
# output omitted
anova(lm(value ~ Degrees * speed, macc))
#-------------------
Analysis of Variance Table
Response: value
Df Sum Sq Mean Sq F value Pr(>F)
Degrees 1 0.016827 0.016827 16.904 0.003384 **
speed 1 0.048735 0.048735 48.959 0.000113 ***
Degrees:speed 1 0.006367 0.006367 6.396 0.035309 *
Residuals 8 0.007963 0.000995
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1