非癌症也能看风险,R语言单因素logistic回归
尔云间 一个专门做科研的团队

小云今天接触到了非癌症的分析,癌症分析有癌症分析的方法,非癌症也有非癌症的分析方法,小云找了个代码,可以做非癌症的单因素分析,我们一起来看看吧。

代码如下:
data=read.table("D:/非酒精脂肪肝与肝癌/诊断模型/单因素.txt",header = T,row.names = 1,sep "\t") #读取数据
#这里说一下读取的数据,第一列为样本名,第二列为分组,一般是二分组,也就是患病与正常。后面的各列就是各基因的表达量
View(data) #查看数据
library(gtsummary) #启动程序包
glm1<- glm(group==1~UBE2T,
family = binomial,
data = data)
res<-tbl_regression(glm1,
exponentiate=T)
#先来计算一个基因试一下
Res
#查看结果

#这就是结果了,我们可以看到,这里的P值是0.005,说明这个基因和我们的分组是密切相关的,OR就是风险率,这里的风险率是4.34,而范围是1.59-12.6.
Uni_glm_model=function(x){ #写循环函数
FML=as.formula(paste0("group==1~",x)) #构筑分析
glm1<- glm(FML,family = binomial,data = data) #单因素分析
glm2=summary(glm1) #处理分析结果
OR=round(exp(coef(glm1)),2) #提取风险率
SE=glm2$coefficients[,2]
CI5=round(exp(coef(glm1)-1.96*SE),2) #计算风险率范围
CI95=round(exp(coef(glm1)+1.96*SE),2)
CI=paste0(CI5,"-",CI95)
P=round(glm2$coefficients[,4],4) #提取P值,保留4位小数
Uni_glm_model <- data.frame("characteristics"=x,
"OR"=OR,
"CI"=CI,
"p"=P)[-1,]
return(Uni_glm_model)
}
variable.names=colnames(data)[c(2:26)] #把要分析的基因放进去
Uni_glm=lapply(variable.names,Uni_glm_model) #应用函数
library(plyr) #启动程序包
Uni_glm=ldply(Uni_glm,data.frame) #整理成数据框

最后得到的结果就是这样的,有了这些数据,我们就可以去画森林图了。
好了,小伙伴们,今天的主要内容就是这些了,小云觉得这个分析方法还是挺实用的,小伙伴们有什么需要分享和讨论的都可以来找小云啊,小云非常高兴和大家交流。
