0

我尝试使用 manova() 并且似乎无法获得正确的编程。我以这种方式尝试过(在另一篇文章中):

R 错误消息中的 manova:“dimnames”[1] 的长度不等于数组范围

文本问题与踏板旋转和作为加速度预测因子的初始速度有关。

这是数据:

acc <- data.frame(Degrees = c("d5","d8","d10"), 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))

ACC

acc
  Degrees MPH10 MPH25 MPH40 MPH55
1     5  0.35  0.19  0.14  0.10
2     8  0.37  0.28  0.19  0.19
3     10  0.32  0.30  0.29  0.23

不知道下一步该做什么。

4

1 回答 1

2

传统的答案是:

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 
于 2011-12-18T14:07:33.387 回答