2 路 Anova 循环并导出到 CSV 或 Excel 表

问题描述 投票:0回答:2

我已经弄清楚如何对数据框中的多个变量运行 2 路方差分析,但不确定如何将其转换为可以轻松导出到 csv 文件或 Excel 的格式。理想情况下,我希望它的格式为数百个因变量中的每一个都位于其自己的行中,并带有 pVaules 和 Fvalues

我使用泰坦尼克号数据集做了一个例子。在本例中,我已将 Sex & Embarked 设置为我的分类变量,并希望将

Sex
Embarked
和 ~
Interaction
效果的输出以某种方式保存到文件中。我愿意接受有关如何输出此值的建议 - 只是希望能够轻松识别哪些值是重要的,理想情况下每个因变量都在其自己的行上。

library(titanic)
library(tidyverse)

df1 <- 
  titanic_train %>%
  select(Sex, Embarked, (1:10)) %>%
  select(!("Name" | "Ticket")) %>%
  filter(Embarked != "") # deleting empty Embarked status
names(df1)

df1$Sex<- factor(df1$Sex)
df1$Embarked <-factor(df1$Embarked)

#store all formulae in a list
formulae <- lapply(colnames(df1)[3:ncol(df1)], function(x) as.formula(paste0(x, " ~ Sex * Embarked")))

#go through list and run aov()
results <- lapply(formulae, function(x) summary(aov(x, data = df1)))
names(results) <- format(formulae)
results
r loops lapply anova
2个回答
1
投票

您可以从

summary
中提取相关统计数据,或者将模型存储在列表中并使用
broom::tidy
将所有统计数据集中到一个数据框中。使用
map
函数在模型列表上运行它。

library(purrr)
library(broom)

results <- lapply(formulae, function(x) aov(x, data = df1))
names(results) <- format(formulae)
data <- map_df(results, tidy, .id = 'formulae')
data

# A tibble: 28 x 7
#   formulae       term       df    sumsq  meansq statistic   p.value
#   <chr>          <chr>   <dbl>    <dbl>   <dbl>     <dbl>     <dbl>
# 1 PassengerId ~… Sex         1  1.09e+5 1.09e+5     1.65   1.99e- 1
# 2 PassengerId ~… Embark…     2  5.50e+4 2.75e+4     0.416  6.60e- 1
# 3 PassengerId ~… Sex:Em…     2  7.73e+4 3.86e+4     0.584  5.58e- 1
# 4 PassengerId ~… Residu…   883  5.84e+7 6.61e+4    NA     NA       
# 5 Survived ~ Se… Sex         1  6.16e+1 6.16e+1   376.     4.44e-70
# 6 Survived ~ Se… Embark…     2  3.32e+0 1.66e+0    10.1    4.39e- 5
# 7 Survived ~ Se… Sex:Em…     2  4.85e-1 2.43e-1     1.48   2.28e- 1
# 8 Survived ~ Se… Residu…   883  1.45e+2 1.64e-1    NA     NA       
# 9 Pclass ~ Sex … Sex         1  1.01e+1 1.01e+1    16.2    6.12e- 5
#10 Pclass ~ Sex … Embark…     2  5.83e+1 2.91e+1    46.8    4.74e-20
# … with 18 more rows

data
写入 csv。

write_csv(data, 'data.csv')

0
投票

这对我很有帮助,谢谢!

现在我想使用函数 Tukey.HSD 运行 Tukey 测试,但我不断收到错误: UseMethod("TukeyHSD") 中的错误: 没有适用于“TukeyHSD”的方法应用于“列表”类的对象

如有任何帮助,我们将不胜感激!

© www.soinside.com 2019 - 2024. All rights reserved.