还在手动做描述统计和单因素分析?这个方法不错

文摘   科学   2024-05-07 21:11   湖南  
由于微信推送机制的变化,建议大家将公众号标记为星标,如此才能及时收到我们的更新,同时也希望大家能帮忙点点赞和转发,你们的支持是我们前进的重要动力来源,谢谢!
护理统计随笔平台的内容现在已经非常丰富,很多方面都有涉及到,如果你觉得你没有看到往期的相关文章,不妨打开公众号的菜单页,在各级目录中查找你想要的内容。


对于我们这类“科研人”来说,写论文时最痛苦的莫过于数据分析以及图表的绘制,比如说写一份中文调查分析类论文,最常见的套路莫过于先来一次单因素分析,再做一次多因素分析,在此之前可能还需要绘制一张基线表(一般资料/一般特征表)。
简单的还好,无非用Stata、Spss等软件操作一番就ok了,统计分析思路和原理是非常简单的。变量一多就不好说了,谁也不希望十几个甚至几十个变量一个个去做吧?
2024年了,在AI迅猛发展的今天,已经出现了很多辅助/智能工具。当然了,本期内容并不涉及这些。R语言圈子内部一些统计学专家开发了不少让人眼前一亮的工具,可以帮我们轻松解决基线表之类的“顽疾”。例如大名鼎鼎的R包:tableone。
不过今天的主角不是它,是另一份笔者非常喜欢的R包:autoReg。下面用两个简单的例子进行介绍。
例一:分类变量
导入必要的包:
# 安装autoReg# install.packages("devtools")# devtools::install_github("cardiomoon/autoReg")
library(autoReg)library(tidyverse)library(rrtable)
导入数据,这是一份笔者从kaggel上下载而来的泰坦尼克号乘客生存资料(生存或死亡)。本次,简单选取几个有意思的变量来模拟一份二分类资料的基线表制作和回归分析过程。
# 导入数据,后台回复“泰坦尼克”即可获取data = read_csv('train.csv')
# 选取几个变量,并对分类变量进行因子化varname = colnames(data)data = data %>% select(Survived,Pclass,Sex,Age,SibSp,Embarked) %>% mutate( across(c('Survived','Pclass','Sex','Embarked'),factor) )str(data)
数据一览(变量含义不重要,survived表示是否存活):

绘制基线表(也就是常见的table1)
# 绘制基线表gaze(Survived~.,data=data)

gaze函数可以很容易地为几个变量按组生成描述性统计表。原理是:根据这些变量的性质,采用不同的描述性统计方法(t检验、方差分析、Kruskal-Wallis、卡方检验、Fisher’s 检验)
可以将基线表存为word文档:
gaze(Survived~.,data=data) %>% table2docx()
用广义线性模型(logistic回归)进行分析,寻找影响是否存活的因素:
# 广义线性模型fit1 = glm(Survived~.,data = data, family="binomial")
# 制作回归分析表autoReg(fit1)%>% myft()

在表格内增加单因素结果:
# “先单后多”,默认p<0.2的进入多因素分析之中myft()表示以图片形式输出
autoReg(fit1,uni=T)%>% myft()

如果不做筛选(将变量全部选入多因素分析),修改阈值=1:
autoReg(fit1, uni=TRUE,threshold=1) %>% myft()

其实还可以一键绘制参数森林图(例如OR\RR\HR),但是本次(笔者写本篇稿件时)运行报错,难道是因为更新到了最新版(0.34版本)的原因?如果是这样需要等待作者修复。
# 不运行# 绘制森林图,报错,可能是个bug,等作者修复# modelPlot(fit1)
此外,该包可以自动实现逐步回归分析,这里不演示了,推荐去看R包作者给出的帮助文档,非常详尽。
例二、连续结局变量
library(moonBook) 
# 基线表gaze(sex~.,data=acs) %>% myft()
# 分层gaze(sex+Dx~.,data=acs) %>% myft()

# 多元线性回归fit2=lm(mpg~wt*hp*am,data=mtcars)
# 输出单变量分析结果autoReg(fit2,uni=TRUE, threshold=0.2) %>% myft()
函数是一样的,仅仅是做回归分析时有些变量。

三、小结、局限与建议
的确是个很不错的工具,对于我这种“偷懒”型科研选手来说,极大地提升了我的工作效率,可能平时需要1~2个小时才能完成的工作,现在竟然可以将时间控制在几分钟。
但是,这里泼个冷水:
1、此工具不输出检验统计量值(国内杂志社一般是要求这个的);
2、回归分析中的单因素分析底层是用lm和glm实现的,也就是说它对变量的筛选选并不是我们国内常见的先用t检验、卡方检验、单因素方差、非参等方法进行差异性检验,再纳入有意义的变量。而是采用了sci常用的变量筛选方法:直接用线性回归或logistic回归(单次仅纳入一个变量)实现的“先单后多”。这个并不是说不好,见仁见智,看自己需求。
读到这里了,不妨点个赞?感谢您的支持^_^


小提醒:笔者水平有限,上述内容如有不当之处,还望海涵。如果你在科研学习中遇到了疑问,恰好也想跟网友们交流,可以加入我们建立的“护理科研交流群”。这是一个完全自由、开放、免费、没有套路的纯交流群。加群方式:后台私信关键词“加群”。

参考文献:

Moon K (2023). autoReg: Automatic Linear and Logistic Regression and Survival Analysis. R package version 0.3.4, https://cardiomoon.github.io/autoReg/, https://github.com/cardiomoon/autoReg.

封面和正文图片来自软件输出结果,本文仅供学习、分享使用,如有侵权,请联系我们删除,谢谢。

护理统计随笔
专注护理科研设计和统计分析。别人不会告诉你的干货,可以来这里找!
 最新文章