天天看點

非癌症也能看風險,R語言單因素logistic回歸

作者:雲生信學生物資訊學

爾雲間 一個專門做科研的團隊

原創 小果 生信果

非癌症也能看風險,R語言單因素logistic回歸

小雲今天接觸到了非癌症的分析,癌症分析有癌症分析的方法,非癌症也有非癌症的分析方法,小雲找了個代碼,可以做非癌症的單因素分析,我們一起來看看吧。

非癌症也能看風險,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
#檢視結果           
非癌症也能看風險,R語言單因素logistic回歸

#這就是結果了,我們可以看到,這裡的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) #整理成資料框           
非癌症也能看風險,R語言單因素logistic回歸

最後得到的結果就是這樣的,有了這些資料,我們就可以去畫森林圖了。

好了,小夥伴們,今天的主要内容就是這些了,小雲覺得這個分析方法還是挺實用的,小夥伴們有什麼需要分享和讨論的都可以來找小雲啊,小雲非常高興和大家交流。

繼續閱讀