Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 具有双向方差分析p值的汇总表(平均值和标准误差)_R_Anova_Gtsummary - Fatal编程技术网

R 具有双向方差分析p值的汇总表(平均值和标准误差)

R 具有双向方差分析p值的汇总表(平均值和标准误差),r,anova,gtsummary,R,Anova,Gtsummary,我试图制作一个表格,输出一项大型研究的汇总统计数据,我们通常通过双向方差分析进行分析,考察两个变量的主要影响以及相互作用 我想要一种快速运行统计数据的方法,并以易于阅读的格式输出它们,如果有好的格式,那就更好了 我已经能够获得双向方差分析输出,并且我还使用gtsummary软件包和tbl_summary制作了一个表格。但是,我不知道如何按多个变量分组。我的解决方案是创建一个新变量,将两个自变量组合在一起,将数据分成正确的组 可复制的例子如下 我想知道是否有一种方法可以用我现有的平均值(sem)输

我试图制作一个表格,输出一项大型研究的汇总统计数据,我们通常通过双向方差分析进行分析,考察两个变量的主要影响以及相互作用

我想要一种快速运行统计数据的方法,并以易于阅读的格式输出它们,如果有好的格式,那就更好了

我已经能够获得双向方差分析输出,并且我还使用gtsummary软件包和
tbl_summary
制作了一个表格。但是,我不知道如何按多个变量分组。我的解决方案是创建一个新变量,将两个自变量组合在一起,将数据分成正确的组

可复制的例子如下

我想知道是否有一种方法可以用我现有的平均值(sem)输出制作一个表格,但要得到我的双向方差分析结果(也粘贴在下面)。在这个泰坦尼克号的例子中,我想用一个列来表示P值,表示“Sex”的主要效果,下一个列表示P值的主要效果,然后是P值,表示交互作用

有什么想法吗

library(titanic)
library(tidyverse)
library(gtsummary)
library(plotrix) #has a std.error function


##I really want to look at a 2-way anova, looking for the p-value for Sex, Embarked, and their interaction.
#This code just allows me to make a table with the 4 columns I want, but of course it now won't do the correct stats.
df <- titanic_train %>%
  filter(Embarked != "C" &  Embarked != "") %>%
  mutate(grp = paste(Sex, Embarked)) #add a new column that combines Sex & Pclass

#code to make my table 
  
table1 <- df %>%  
  select(grp, Age, Fare, Survived) %>%
  tbl_summary(
    by = grp,  ##can't figure out a way to put 2 variables here (Sex & Embarked)
    missing = "ifany", 
    statistic = all_continuous() ~ "{mean} ({std.error})",
    digits = all_continuous() ~ 1) %>% #this puts 1 decimal place for all values
   modify_header(stat_by = md("**{level}**<br>N =  {n}")) %>%
  bold_labels() %>%
  modify_spanning_header(all_stat_cols() ~ "**These are the Columns I Want**") %>%
  add_p(test = everything() ~ "aov",  ##This is a 1-way ANOVA, but I need 2 variables
  )

table1

#these are the p-values I want in my table:
two_way_anova_age <- aov(Age ~ Sex * Embarked, data = df)
summary(two_way_anova_age)

two_way_anova_fare <- aov(Fare ~ Sex * Embarked, data = df)
summary(two_way_anova_fare)

two_way_anova_surv <- aov(Survived ~ Sex * Embarked, data = df)
summary(two_way_anova_surv)
图书馆(泰坦尼克号)
图书馆(tidyverse)
图书馆(摘要)
库(plotrix)#具有标准错误功能
##我真的想看一个双因素方差分析,寻找性的p值,以及它们之间的相互作用。
#这段代码只允许我创建一个包含我想要的4列的表,但是现在它当然不能进行正确的统计。
df%
过滤器(已装载!=“C”和已装载!=“C”)%>%
mutate(grp=paste(Sex,desk))#添加一个结合Sex和Pclass的新列
#代码来制作我的桌子
表1%
选择(grp、年龄、票价、存活率)%>%
tbl_摘要(
by=grp,##想不出在这里放置两个变量的方法(Sex和Sex)
missing=“ifany”,
statistic=all_continuous()~“{mean}({std.error})”,
digits=all_continuous()~1)%>%#这将所有值放在小数点后1位
修改_头(stat_by=md(“**{level}**
N={N}”))%>% 粗体标签()%>% 修改标题(所有列都是我想要的列**”)%>% 这是一个单因素方差分析,但我需要两个变量 ) 表1 #以下是我希望在表中显示的p值:
双向方差分析年龄以下是如何将结果合并到汇总表中

库(gtsummary)
图书馆(泰坦尼克号)
图书馆(tidyverse)
库(plotrix)#具有标准错误功能
包装版本(“gtsummary”)
#> [1] '1.4.0'
#创建较小版本的数据集
df%
选择(性别、乘车、年龄、车费)%>%
过滤器(已装载!=“”)#删除空装载状态
#首先,编写一个小函数来获取表中的双向方差分析p值
#函数以获取tibble中的双向ANOVA p值
双向p%
as.formula()%>%
aov(数据=df)%>%
扫帚::整洁()%>%
选择(术语,p.value)%>%
过滤器(完整。案例(%)%%>%
pivot\u更宽(名称\u from=term,值\u from=p.value)%>%
变异(
变量=.env$变量,
row_type=“标签”
)
}
#将所有结果添加到单个表中(将在下一步与gtsummary表合并)
双向结果:2 x 5
#>性别`性别:性别`可变行类型
#>                                
#>1 0.00823 3.97e-1 0.611年龄标签
#>2 0.0000000191 4.27e-16 0.0958票价标签
待定%
tbl_地层(
阶层=性别,
.tbl_乐趣=
约x%>%
tbl_摘要(
由,
missing=“否”,
statistic=all_continuous()~“{mean}({std.error})”,
数字=一切()~1
) %>%
修改\u头(所有\u stat\u cols()~“**{level}**”)
) %>%
#将双向方差分析结果合并到tbl_汇总表中
修改表格体(
约x%>%
左联合(
双向结果,
by=c(“变量”、“行类型”)
)
) %>%
#默认情况下,新列是隐藏的,请添加标题以取消隐藏它们
修改标题(列表)(
性别~“**性别**”,
上船~“**上船**”,
`性别:登船`~“**性别*登船**”
)) %>%
#向分析结果添加跨越标头
修改标题(c(性别,登船,`性别:登船')~“**双向方差分析p值**”)%>%
#使用pvalue格式化函数格式化p值
修改_fmt_fun(c(Sex,mounted,`Sex:mounted`)~style\u pvalue)%>%
#更新脚注,使其更美观
修改脚注(所有统计数据()~“平均值(SE)”)


由(v1.0.0)于2021年3月27日创建

这看起来很棒。我直接复制粘贴代码;使用
remotes::install_github(“ddsjoberg/gtsummary”)
安装,检查了软件包版本(get 1.3.7.9010),但我在“找不到”tbl_strata和“声音找不到”modify_fmt_fun这两个方面都出现了错误。你能再次检查安装开发版本时没有出现错误吗?重新启动R并尝试从新会话安装。好的,成功了,谢谢!我不得不使用
remotes::install_github(“ddsjoberg/gtsummary”,force=TRUE)
——我认为这是唯一的区别。太好了,这是一张可爱的桌子!下一个问题,如果有人能帮忙的话——我现在正试图将这个(或类似的)转换为ANOVA输出,以循环大约100列,并将所有内容都放在一个表中。有办法做到这一点吗?在上面的例子中,我可以通过数字
df%select(Sex,indocated,(1:10))%%>%select(!(“Name”|“Ticket”))%%>%filter(indocated!=“”)来选择列,删除空的装载状态
——问题是如何在bind_rows部分类似地执行此操作。老实说,其实并不需要这一个是美丽的-可以只是通过循环一堆2路anovas和导出到CSV