"可变长度不同"简单方差分析中的错误

时间:2016-05-06 16:40:39

标签: r lm anova

我无休止地搜索我的问题的解决方案无济于事。我正在对组内相关进行简单的计算,在这种情况下,这是对遗传性的估计。我希望能够重复超过12,000个个体基因的计算。这是我用来使事情发挥作用的小数据框架:

Strain_ID   ENS001  ENS056  ENS058
5   3.06928082  3.038645597 2.985282543
5   2.868997097 2.666932055 2.793392732
5   3.235929871 2.90516985  2.630776507
7   3.002625449 2.868878032 2.363580624
7   3.150054756 2.881093606 2.474916595
7   3.138522184 2.693864389 2.490961619

其中Strain_ID是一个因子,ENS *是个体基因的标识符。 df被称为" h2_saline"。当我运行以下内容时,我得到了适当的答案:

exp.lm <- lm(ENS001 ~ Strain_ID, data = h2_saline)
library(car)
Anova(exp.lm)
Var.within <- Anova(exp.lm)["Residuals", "Sum Sq"]
Var.between <- Anova(exp.lm)["Strain_ID", "Sum Sq"]
h2 <- (Var.between - Var.within) / (Var.between + (2 * Var.within))

这是:

> Var.within
[1] 0.08095382
> Var.between
[1] 0.002281289
> h2
[1] -0.4791586

(注意:如果您有兴趣,请参阅http://jeromyanglim.blogspot.com/2013/12/using-r-to-replicate-common-spss.html了解使用汽车套餐的理由。)

但是,当我使用一个变量(&#34; x&#34;)来获取每个列标题的值以便我可以遍历df中的每一列时,我收到一条错误消息。例如:

assign("x", "ENS056")

exp.lm <- lm(x ~ Strain_ID, data = h2_saline)
library(car)
Anova(exp.lm)
Var.within <- Anova(exp.lm)["Residuals", "Sum Sq"]
Var.between <- Anova(exp.lm)["Strain_ID", "Sum Sq"]
h2 <- (Var.between - Var.within) / (Var.between + (2 * Var.within))

我得到了这个输出:

> assign("x", "ENS056")
> 
> exp.lm <- lm(x ~ Strain_ID, data = h2_saline)
Error in model.frame.default(formula = x ~ Strain_ID, data=h2_saline,    : 
  variable lengths differ (found for 'Strain_ID')
> library(car)
> Anova(exp.lm)
Anova Table (Type II tests)

Response: ENS001
            Sum Sq Df F value Pr(>F)
Strain_ID 0.002281  1  0.1127 0.7539
Residuals 0.080954  4               
> Var.within <- Anova(exp.lm)["Residuals", "Sum Sq"]
> Var.between <- Anova(exp.lm)["Strain_ID", "Sum Sq"]
> h2 <- (Var.between - Var.within) / (Var.between + (2 * Var.within))
> 

正如您所看到的,它输出了我明确输入的第一个变量的结果,而不是我想要的df中的下一列。我已经尝试过分配&#34; ENS056&#34;以各种方式,仍然得到相同的结果。

非常感谢任何帮助。

0 个答案:

没有答案