我已经弄清楚如何对数据框中的多个变量运行 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
您可以从
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')
这对我很有帮助,谢谢!
现在我想使用函数 Tukey.HSD 运行 Tukey 测试,但我不断收到错误: UseMethod("TukeyHSD") 中的错误: 没有适用于“TukeyHSD”的方法应用于“列表”类的对象
如有任何帮助,我们将不胜感激!