首页 > 资讯 > 三行情书:线性回归分析快速成文法

三行情书:线性回归分析快速成文法

第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