不能R中

问题描述:

我尝试使用不复制弄清楚双因素方差分析方差分析()和似乎无法得到我尝试了这种方式的正确程序(在不同的岗位)。不能R中

manova in R error message: length of 'dimnames' [1] not equal to array extent

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

这里是数据:

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 

不知道下一步怎么办。

+0

我不认为你给这个明显的家庭作业问题的整个设置。在我看来,Degrees和MPH列都是预测指标。 – 2011-12-18 02:23:32

+0

更多提示:如果您没有复制,请不要使用Manova。你也许应该看看reshape2软件包能够将宽格式数据集制作成长格式数据集。 (你应该编辑你的问题,而不是张贴更多的问题。) – 2011-12-18 02:32:07

+0

是的,使用一个旧的介绍来统计文本的数据来学习R.我不知道R中的编程,只是试图学习它。是的,两者都是预测因素,我想在它上面运行一个双因子anova。文本有一个表,就像上面的data.frame一样,只是不知道在R中做什么,文本使用minitab和excel ...感谢reshape2包的建议,我会给它看看。 – Travis 2011-12-18 03:37:37

传统的答案是:

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 
+0

是的,发现我的错误。没有复制使用'+'复制使用'*'。所以你原来的融化仍然工作,但谢谢你的彻底答案。 – Travis 2011-12-28 06:38:18