library(foreign) #载入外部数据需要应用此包
library(rms)#做列线图需要用的包
mydata<-read.table("2020090873.csv",header=T,sep = ",")
读取当前目录文件,CSV文件分割为",",标题为真,第一行设定为标题
str(mydata)
展示数据集的结构
mydata$MVI<-factor(mydata$MVI,labels=c("M1","M2","M3"))
mydata$preHBeAg<-factor(mydata$preHBeAg,labels=c("negative","positive"))
mydata$diameter5<-factor(mydata$diameter5,labels=c("≤5",">5"))
mydata$Multiple.shots<-factor(mydata$Multiple.shots,labels=c("Single","Multiple"))
mydata$Satellite<-factor(mydata$Satellite,labels=c("no","yes"))
mydata$Serosa<-factor(mydata$Serosa,labels=c("no","yes"))
把需要应用的分类变量设定哑变量并设定为无序多分类变量,原则上二分类变量无序上述改变,但改变后后续列线图会同时显示lable的名称。AFP值取了自然对数为底的对数,对其进行正太化,此处未显示
str(mydata)
再次展示数据集的结构,注意确定为因子变量的变量名称变化
attach(mydata)
把数据集加载入当前环境中
dev = mydata[mydata$devlopval==0,]
根据devlopval拆分为建模集
vad = mydata[mydata$devlopval==1,]
根据devlopval拆分为验证集
dd<-datadist(dev)
options(datadist='dd')
以上两行命令对数据打包
fit.dev<-lrm(team~LnAFP+preHBeAg +diameter5+Multiple.shots+Serosa+MVI+Satellite,data=dev,x=T,y=T)
构建Logstic回归模型,team为因变量,~后7个为自变量,data选择建模集,x=t和y=t的意思为在自变量及因变量出现缺失值时候的处理方式,数据集无缺失。
fit.dev
展示模型
参数比较重要的有C指数,大于0.7证明模型区分度可以,最好大于0.8,R2大于0.1认为模型还可以。另外每个变量的P值也可以看到。
nom.dev<- nomogram(fit.dev, fun=plogis,fun.at=c(.001, .01, .05, seq(.1,.9, by=.1), .95, .99, .999),lp=F, funlabel="Probability of early recurrence")
fit.dev为构建的列线图,fun=plogis为逻辑回归定义的把线性预测值lp转换成分数的方法,fun.at后为列线图刻度的画法,lp=F为不画出线性预测值,funlabel为图片标签
plot(nom.dev)
打印出列线图