爾雲間 一個專門做科研的團隊
原創 小果 生信果
小雲今天接觸到了非癌症的分析,癌症分析有癌症分析的方法,非癌症也有非癌症的分析方法,小雲找了個代碼,可以做非癌症的單因素分析,我們一起來看看吧。
代碼如下
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) #整理成資料框
最後得到的結果就是這樣的,有了這些資料,我們就可以去畫森林圖了。
好了,小夥伴們,今天的主要内容就是這些了,小雲覺得這個分析方法還是挺實用的,小夥伴們有什麼需要分享和讨論的都可以來找小雲啊,小雲非常高興和大家交流。