循环的单向方差分析:如何通过数据框的多列启动
Posted
技术标签:
【中文标题】循环的单向方差分析:如何通过数据框的多列启动【英文标题】:One-way ANOVA for loop: how do I initiate through multiple colums of a dataframe 【发布时间】:2022-01-17 01:40:08 【问题描述】:我想运行 1000 多个不同的单向方差分析
我想看看单个 mirroRNA 的读取次数是否在四个不同组之间发生变化。我希望从 1000 多个 miRNA 中的每一个中提取。
我的 tibble 数据框如下所示:
我有 4 个组(YC、OC、YH、OH),每列都有不同的 miRNA。
enter image description here 我尝试了一个 for 循环,我希望 R 通过该循环遍历 miRNA 的名称,然后总结 ANOVA 表和 TukeyHSD 测试:
for(i in 2:ncol(test))
column<-names(test[i])AVz<-summary(aov(test[,i]~Group,data =
test))tk<-TukeyHSD((aov(test[,i]~Group,data =
test)))print(column)print(AVz)print(tk)
但这不起作用:
Error: unexpected symbol in "for(i in 2:ncol(test))column<-names(test[i])AVz"
【问题讨论】:
我认为你不能在这里应用方差分析,因为 miRNA 计数通常不是正态分布的。您对计数使用了哪种标准化方法? 【参考方案1】:如果你想运行aov
,你可以使用cbind
formula <- as.formula(paste0("cbind(", paste(names(iris)[-5], collapse = ","), ") ~ Species"))
fit <- aov(formula, data=iris)
summary(fit)
Response Sepal.Length :
Df Sum Sq Mean Sq F value Pr(>F)
Species 2 63.212 31.606 119.26 < 2.2e-16 ***
Residuals 147 38.956 0.265
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Response Sepal.Width :
Df Sum Sq Mean Sq F value Pr(>F)
Species 2 11.345 5.6725 49.16 < 2.2e-16 ***
Residuals 147 16.962 0.1154
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Response Petal.Length :
Df Sum Sq Mean Sq F value Pr(>F)
Species 2 437.10 218.551 1180.2 < 2.2e-16 ***
Residuals 147 27.22 0.185
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Response Petal.Width :
Df Sum Sq Mean Sq F value Pr(>F)
Species 2 80.413 40.207 960.01 < 2.2e-16 ***
Residuals 147 6.157 0.042
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
【讨论】:
以上是关于循环的单向方差分析:如何通过数据框的多列启动的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用lmPerm包应用于线性模型的置换方法(置换检验permutation tests)在同一数据集上使用单向协方差分析(one-way ANCOVA)使用aovp函数的置换检验单向协方差
R语言单向多元方差分析MANOVA(one-way MANOVA)实战:multivariate analysis of variance
python 的哪个统计模块支持单向方差分析和事后测试(Tukey、Scheffe 或其他)?