大家好,我是阿琛。在日常的临床工作以及研究中,对于某个疾病,无论是肿瘤研究,还是非肿瘤研究,我们常听到患者提出这样的问题,“我的检查结果是这样的,那么最终患病的概率有多少,生存情况又是怎样的呢”。当然,生信分析,作为医学研究的三大主线之一,亦是如此,最终的结局无外乎两种,一是发病率是多少,二是预后生存情况如何。
基于Logistic回归的列线图
1. 引用R包
#install.packages('rms')
library(rms) #引用rms包
setwd('C:\Users\000\Desktop\09_Nomogram') #设置工作目录
rt <- read.table('Log.txt',header=T,sep=' ') #读取数据
head(rt) #查看数据集rt
rt$Age <- factor(rt$Age,labels=c('<60','>=60'))
rt$Gender <- factor(rt$Gender,labels=c('No','Yes'))
rt$BMI <- factor(rt$BMI,labels=c('0','1','2'))
rt$Education <- factor(rt$Education,labels=c('Primary','Secondary','Higher'))
rt$Alcohol <- factor(rt$Alcohol,labels=c('No','Yes'))随后,使用datadist()函数将数据打包ddist <- datadist(rt) #使用函数datadist()将数据打包
options(datadist = 'ddist')
fit <- lrm(Status~Age + Gender + BMI + Education + Alcohol, data=rt, x=T, y=T)
#利用lrm()函数对模型进行拟合
fit #查看模型拟合结果
nom<- nomogram(fit, fun=plogis,
fun.at=c(0.0001,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,0.9999),
lp=F,
funlabel='Risk of hypertension') #构建Nomogram图
plot(nom) #输出Nomogram图
基于Cox回归的列线图
library(rms)
library(foreign)
library(survival)
setwd('C:\Users\000\Desktop\09_Nomogram') #设置工作目录
rt2 <- read.table('Cox.txt',header=T,sep=' ') #读取数据
head(rt2) #查看数据集rt2
rt2$gender <- factor(rt2$gender,labels=c('F', 'M'))
rt2$stage <- factor(rt2$stage,labels=c('Stage1', 'Stage2', 'Stage3', 'Stage4'))
rt2$T <- factor(rt2$T,labels=c('T1', 'T2', 'T3', 'T4'))
rt2$M <- factor(rt2$M,labels=c('M0', 'M1'))
rt2$N <- factor(rt2$N,labels=c('N0', 'N1', 'N2', 'N3'))
rt2$risk <- factor(rt2$risk,labels=c('low', 'high'))
ddist <- datadist(rt2) #使用函数datadist()将数据打包
options(datadist='ddist')
f <- cph(Surv(futime, fustat) ~gender + stage +T + M + N + risk,
x=T, y=T, surv=T,
data=rt2, time.inc=1)
surv <- Survival(f)
nom2 <- nomogram(f,
fun=list(function(x) surv(1, x), function(x) surv(2, x), function(x) surv(3, x)),
lp=F,
funlabel=c('1-year survival', '2-year survival', '3-year survival'),
maxscale=100,fun.at=c(0.99, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3,0.2,0.1,0.05)) #构建Nomogram图
plot(nom2) #输出Nomogram图
联系客服