【问题标题】:Can not figure out Two-factor anova without replication in R如果没有在 R 中复制,就无法计算出二因子方差分析
【发布时间】:2011-12-18 01:46:54
【问题描述】:

我尝试使用 manova(),但似乎无法正确编程。我尝试过这种方式(在另一篇文章中):

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

不知道下一步该做什么。

【问题讨论】:

  • 我认为你没有为这个明显的作业问题提供整个设置。在我看来,Degrees 和 MPH 列都是预测变量。
  • 进一步提示:如果您没有复制功能,请不要使用 Manova。你可能应该看看 reshape2 包在将宽格式数据集变成长格式数据集的方式中可以提供什么。 (您应该编辑您的问题,而不是发布更多问题。)
  • 是的,使用旧的介绍来统计数据的文本来学习 R。我对 R 中的编程一无所知,只是想学习它。是的,两者都是预测因子,我想对其进行双因子方差分析。文本设置了一个表格,就像上面的data.frame一样,只是不知道在R中做什么,文本使用minitab和excel......感谢reshape2包的建议,我会看看。
  • 加载reshape2后试试这个:macc &lt;- melt(acc, id.var="Degrees", value="accel")`
  • 谢谢,我还在搞砸。只是设法将行移动到列中,将列移动到行中.....我跑了:anova(lm(value ~ degree * variable, macc)

标签: r anova two-way


【解决方案1】:

传统的答案是:

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 

【讨论】:

  • 是的,发现我的错误。无复制使用“+”,复制使用“*”。所以你原来的融化仍然有效。但感谢您的彻底回答。
猜你喜欢
  • 2013-10-08
  • 1970-01-01
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
  • 2017-05-14
相关资源
最近更新 更多