当因变量也就是响应变量为二分类变量或者多分类变量时,Logistic回归分析是非常有用的分析方法。
logistic回归通常用来预测因变量发生的概率,以及分析影响因变量的因素
首先进行相关性分析:(1)可以分析各个变量之间的相关性 分析共线性分析;(2)分析自变量与因变量的相关性 初步分析可能的影响因素,相关性分析方法详见:逆风成长:R语言 相关性分析常用函数
进一步进行Logistic回归分析,具体分析与因变量相关的影响因素
基本概念:logit(P/1-P)=ax1+bx2+cX3(R输入:fit<-glm(y~x1+x2+x3,data=mydat,family=binomial()))即在Logistic回归中,响应变量是Y=1的对数优势比(log);
回归系数(coefficients)含义是当其他预测变量不变时,一单位预测变量的变化可引起的响应变量对数优势比的变化,由于对数优势比解释性差,可对结果进行指数化,odd_ratio<-exp(coef(fit1)) ,进一步通过confint()获得系数的置信区间:bb<-exp(confint(fit1))
##################logistic regression ##############
library('Hmisc')
library('rms')
fit1<-glm(ctDNA~pressure+D_top,data=mydat,family=binomial())###logistic回归
summary(fit1)
x<-summary(fit1)
odd_ratio<-exp(coef(fit1)) ###########Odd ratio 优势比即
bb<-exp(confint(fit1))#####odd ratio 95% CI 优势比的95% CI
combine<-cbind(x$coefficients,odd_ratio,bb)##合并回归系数 优势比 95% CI p值等等
write.table(combine,file="result.csv",sep = ",")
通过循环计算一系列自变量与响应变量的关系(单因素分析)
file_path <- ''
setwd(file_path)
file <- "aa.xlsx"
############ R packages ############
library(openxlsx)
library('Hmisc')
library('rms')
mydat <- read.xlsx(file,colNames = T, sheet = 1)
result<-c()
newdat<-c()
for (i in 2:ncol(mydat)){
ab<-c(1,i) ##选择纳入变量 因变量需在第一列
newdat<-mydat[,ab]
fit<-glm(ctDNA~.,data=newdat,family=binomial())
summary(fit)
x<-summary(fit)
odd_ratio<-exp(coef(fit)) ###########Odd ratio 优势比即
bb<-exp(confint(fit))#####odd ratio 95% CI 优势比的95% CI
combine<-cbind(x$coefficients,odd_ratio,bb)##合并回归系数 优势比 95% CI p值等等
result<-rbind(result,combine)
}
write.table(result,file="logistic_result.csv",sep = ",")
使用predict()函数可以观察某个预测变量在各个水平对结果概率的影响,具体的操作是创建一个包含感兴趣的预测变量值的虚拟数据集,然后使用predict函数,具体的代码如下:
mydat$prob<-predict(fit1,newdata=mydat,type="response") ####分析预测效率 可以新建一个数据集 也可以直接用原先的数据集mydat 结果输出检出概率 自己计算灵敏度等信息
选择最佳的回归模型。尝试获取一个回归方程时,实际上面临对于多个可能的模型如何选择的问题。是不是所有的变量都纳入?还是去掉对于预测贡献不显著的变量?是否需要添加交互项等提高拟合度?最终的回归模型面临预测精度和模型简洁度的调和问题。
方法(1)可以利用anova()函数比较两个嵌套模型的拟合优度:注意anova()函数仅能用于嵌套模型,即一个模型的项包含另一个模型所有项。可以分析两个模型的差异,具体使用:
anova(fit1,fit2) #fit1和fit2分别为2个模型
方法2,可以利用赤池指数AIC预测模型,它考虑了模型统计的拟合度以及用来拟合的参数数目,AIC较小的模型需要优先选择,AIC不需要嵌套模型,具体使用:
AIC(fit1,fit2)
以上是针对模型较少的时候的比较方法,当模型较多时,可以通过变量的筛选,分析最佳的模型。
变