Обычный ответ будет:
macc <- melt(acc, id.var="Degrees")
lm(value ~ Degrees + variable, macc)
anova(lm(value ~ Degrees + variable, macc))
И все, что остается, - это составить правильное описание результатов. (Обратите внимание, что я использовал «+» вместо «*»). Вы получаете почти идеальный ответ при построении насыщенной модели (без остатков) при использовании модели взаимодействия:
anova(lm(value ~ Degrees * variable, macc))
Вы могли бы закодировать одну или обе переменные в градусах или 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