第29天 线性回归分析的快速成文法
在第28讲,我们介绍了利用tableone开展生存分析,快速形成文章,不知道看完之后有什么样的感受? R语言原来可以这么简单地帮助我们。今天我们在我们贯穿始终的数据库elder1、elder2进行线性分析。
一、准备工作
首先我们将导入数据
t1<-read.csv("elder1.csv")
t2<-read.csv("elder2.csv")
可以查看数据
str(t1)
str(t2)
再则我们启动重要的数据包dplyr
library(dplyr)
现在我们通过dplyr的join函数把两个数据库进行合并
tt<-inner_join(t1,t2,by="ID")
str(tt)
合并产生的数据库我们把它保存起来,这样下次我们可以再利用。
write.csv(tt,file ="tt.csv")
然后,当然 要导入tableone与broom包备用
library(tableone)
library(broom)
二、本讲的案例
我们还是按照第25讲的案例,分别探讨影响自评健康的因素,自评健康在数据库中的变量为health, 影响因素包括血压、血糖、体重指数、性别、户籍、文化程度、婚姻状况、生活方式、睡眠。
虽然这个案例非常烂,但是很容易理解。到底对于老年而言,什么因素对健康自评影响最大呢?由于我们的结局health为定量数据,且研究因素很多,一般我们会开展线性回归分析,而且是逐步回归分析方法。当然在回归分析之前,也要做一些其它工作,才能形成一片论文。
具体的统计分析策略包括
1) 开展统计描述 描述人群的基本特征
2) 进行差异性比较,筛选P值较小者纳入回归分析模型(P<0.2)
3)开展多因素线性回归分析
三、进行数据整理
数据整理工作并非什么新鲜事,但是却是最重要的
1.新变量产生
#利用dplyr包mutute语句产生新变量体重指数bmi
tt<-mutate(tt, bmi=weight/(height^2)*10000)
2.变量的转换
变量转换的内容很多,对于 研究因素为定量的变量,可以直接作为定量纳入回归分析,也可以进行分组转换,这里转成二分类或者多分类。部分程序如下。
血糖的转换
tt$sugar1<-ifelse(tt$sugar>7.0,1,0)
bmi的转换
> tt$ bmi1 [tt$ bmi <=18.5]<-1
> tt$bmi1[is.na(tt$ bmi)==T]<-NA
> tt$bmi1[tt$ bmi >=28]<-4
> tt$ bmi1 [tt$ bmi >=24 & tt$ bmi <28]<-3
> tt$ bmi1 [tt$ bmi >=18.5 & tt$ bmi <24]<-2
> tt$ bmi1 [tt$ bmi <=18.5]<-1
> tt$bmi1[is.na(tt$ bmi)==T]<-NA
> table(tt$bmi1)
1 2 3 4
血压的转换
> tt$pressure [tt$SBP>=140 | tt$DBP>=90]<-1
> tt$pressure [tt$SBP< 140 & tt$DBP< 90]<-0
> table(tt$pressure)
0 1
2514 1517
分类变量的转换
又比如我们对income的变量进行进一步的归类,本例是8类的分组变成3组。
> tt$income1<-tt$income
> tt$income1[tt$income>=6]<-3
> tt$income1[tt$income>=3 & tt$income<=5]<-2
> tt$income1[tt$income<=2]<-1
> table(tt$income1)
1 2 3
%1 1098 288
3.变量批量因子化
# 把所有该纳为因子的但还没有的统一转为因子(分组变量)
varsToFactor <- c("sex","huji","education","marriage","income1","smoking","drinking","exercise","sleep","sugar1","pressure","bmi1")
tt[varsToFactor] <- lapply(tt[varsToFactor], factor)
str(tt)
4.部分变量需要对照组进行重新设置,bmi1、marriage
tt$marriage<-factor(tt$marriage, levels = c(2,1,3,4,5))
tt$bmi1<-factor(tt$bmi1, levels = c(2,1,3,4))
5.剔除缺失记录
tt1<-na.omit(tt) # 剔除缺失值的记录
注意:这是为了操作方便采用的简单粗暴的方法,实际R语言运作中,可以采用更温和的方法来处理。
四、影响自评的健康的影响因素研究
现在结合R语言、tableone包开展线性回归三行成文章。
1. 不同人群自评健康得分的差异性比较
Tableone 目前无法直接有函数搞定定量数据的差异性,但郑老师有办法,我们先搞个自编函数吧
function1<-function(x,y,z){
table2<-c(1:6)
dim(table2)<-c(3,2)
for (i in 1 :length(y)){
tableOne <- CreateTableOne(vars = x, strata = y[i],data = z)
table1<-print(tableOne,showAllLevels = TRUE)
tx<-t(table1)
table2<-rbind(table2,tx)
}
return(table2)
}
现在就可以了, 这结果是国内首创哦!
tx<-function1(c("health"),c("sex","huji","education1","marriage","income1","smoking","drinking","exercise","sugar1","pressure","bmi1"),tt1)
write.csv(tx,file="tablexx.csv") #形成统计分析的excel表
2.线性回归分析
我们构建tt1数据中有一个health变量,这是患者健康自评得分,为定量数据,我们可以开展健康自评的影响因素研究。多因素线性回归利用自带函数lm( )函数构建
lm.log<-lm(health~pressure+sugar1+bmi1+sex+huji+education1+marriage+income1+smoking+drinking+exercise ,data = tt1)
lm.step<-step(lm.log)
table31<-ShowRegTable(lm.step, exp = FALSE, digits = 2, pDigits = 3,
printToggle = TRUE, quote = FALSE, ciFun = confint)
table32<-tidy(lm.step)
table3<-cbind(table31,table32) #table31 table32是两个结果,现在合并成一个总表
write.csv(table3,file="table3.csv") # 数据导出
上述两表就是利用tableone快速形成的表格,你看还不错吧!
更多阅读
1.给所有R语言初学者的几点建议 | 写在R语言公益培训班顺利结束后
2.“30天学会R语言”系列推文开启:一起来关注学习吧
3.【资源**】精选R语言入门学习资源:视频+文档,初学者者必备!
相关知识
轻医美市场快速增长,监管下的医疗美容需回归“医疗本质”
羊水监测护垫法快速诊断胎膜早破的可行性分析研究
人体成分分析实验报告.pptx
医疗美容市场快速扩容:回归医疗本质,完善人才建设
1分钟减肥法 快速恢复魔鬼曲线
2023 年全国健身市场回归,健身行业发展潜力巨大
医美消费应回归理性
人体成分分析仪
雅思大作文范文分析
如何进行健康快速减肥?..
网址: 三行情书:线性回归分析快速成文法 https://m.trfsz.com/newsview215160.html