美文网首页
04-Logistic回归

04-Logistic回归

作者: 译文达练 | 来源:发表于2021-08-25 20:41 被阅读0次
image.png
#分类变量(非正态分布):广义线性模型
#相关性不能告知因果关系,也不能预测曲线关系
#相关系数r越小,线性关系越弱
library(rcompanion)
library(rms)
library(ResourceSelection)
library(VGAM)
library(magrittr)

Framingham <- read.csv(file = "R语言入门必学 资料/2.20.Framingham.csv")
any(is.na(Framingham)) #anyNA(Framingham) 判断是否有缺失
Framingham <- na.exclude(Framingham) #剔除缺失值

Framingham$sex <- factor(Framingham$sex)
attach(Framingham)

1 经典Logistic回归(二项分类)

1.1 建模

mod1 <- glm(chdfate~sex, family = binomial(link = "logit"))
#单因素 
#family指定概率分布的类型 binomial:二项分布; logit: logistic回归
#得到AIC值

glm(chdfate~sex,family = gaussian())
#线性正态分布,等价于lm()

summary(mod1)
#得到P 

mod2 <- glm(chdfate~.,data = Framingham,family = binomial())
summary(mod2)

mod3 <- glm(chdfate~.,data = Framingham[,-3],family=binomial()) #去掉第3列的因素

anova(mod2,mod3,test = "Chisq") 
#返回模型的方差分析表
#比较两个模型是否显著差异

1.2 逐步法筛选自变量

  mod.none <- glm(chdfate~1,family = binomial)
  mod.full <- glm(chdfate~.,data = Framingham,family = binomial())
  step(mod.none,scope = formula(mod.full),direction = "both",trace = F) %>% summary()

1.3 模型提供的信息

OR

##OR:比值比,疾病与暴露之间关联强度指标
exp(coef(mod3))
#coef()提取模型系数,coefficients(r2?)
#exp():计算e的幂
nagelkerke(mod3)
#计算r2(拟合优度)
#最大似然检验的p值(Likelihood.ratio.test):p<0.05:与空模型相比,有显著性差异
hoslem.test(chdfate,fitted(mod3))
#计算P值(观察值/因变量,fitted预测值:各个样本为阳性结果的概率?)
#P>0.05,观察值与预测值没有差异,模型预测得好

1.4 作图

列线图

ddist <- datadist(Framingham)
options(datadist="ddist")
#把数据的基本统计特征放在拟合模型中
mod4 <- lrm(chdfate ~sex + sbp+scl+age+bmi,data = Framingham)
#nomogram输入模式
#除此之外,仍用glm(),lrm()结果难读懂
mod4$coefficients
nom <- nomogram(mod4,fun=plogis, funlabel = "CHD Fate", lp=F)
plot(nom)

矫正曲线

mod4 <- lrm(chdfate ~sex + sbp+scl+age+bmi,data = Framingham,x=T,y=T)
#x,y:保存自变量矩阵和因变量  mod4$x,mod4$y

cal <- rms::calibrate(mod4, method="boot",B=1000, bw =T,rule="p",sls = 0.05)
#rule:p值作为判断准则;aic:aic作为准则
plot(cal)
#apparent 自己做的模型,实线是bootstrap预测的模型

2 多分类logistic回归

##例子:好 中 差
Framingham$scl.f <- cut(scl,quantile(scl),labels = c("A","B","C","D"),ordered_result = T, include.lowest = T)
#ordered_result:有序变量
#include.lowest:闭区间
attach(Framingham)

mod.p <- vglm(scl.f~sex+sbp+age+bmi,family = cumulative(reverse=T,parallel = T))
#reverse=F:计算样本落在小于等于某一层的概率
#各自变量的斜率不变,parallel=T

summary(mod.p)

2.2 平行性检验

mod.np <- vglm(scl.f~sex+sbp+age+bmi,family = cumulative(reverse=T,parallel = F))
lrtest(mod.p,mod.np)
#p>0.05,表示符合平行假设

mod.n <- vglm(scl.f~1,family = cumulative(reverse=T,parallel = F))
lrtest(mod.p,mod.n)
#检测跟空模型是否有差异

#若p<0.05, ....

相关文章

  • 04-Logistic回归

    1 经典Logistic回归(二项分类) 1.1 建模 1.2 逐步法筛选自变量 1.3 模型提供的信息 OR 1...

  • 机器学习实战-04-Logistic回归

    一、Logistic回归介绍   回归算法有很多,比如:线性回归、Logistic回归、多项式回归、逐步回归、岭回...

  • ElasticNet回归的python实现及与岭回归、lasso

    ElasticNet回归与岭回归、Lasso回归ElasticNet回归也叫弹性网络回归,是岭回归和Lasso回归...

  • 宁静致远

    回归自然回归宁静回归身体回归爱回归初心回归灵魂。2019.2.8(初四)西院跑步

  • 👼

    回归宁静 回归(初)爱 回归初心 回归良知 回归光明 回归希望 回归发展 积极保持乐观无限回到最初(小时候)自己 ...

  • 与世界对话与自己对话的过程-自信坚信慷慨勇敢-坚信我🐼

    “放弃” 并回归自己回归自然回归爱回归初心回归大道 如果没有生存与发展那么就回归初心回归爱 接受改变(超越)离开(...

  • 机器学习day7-逻辑回归问题

    逻辑回归 逻辑回归,是最常见最基础的模型。 逻辑回归与线性回归 逻辑回归处理的是分类问题,线性回归处理回归问题。两...

  • 赵培山:古圣冢林与古圣园林

    打造海岱岱蒙大文化圈 回归大济宁,回归皋陶,回归伯益,回归少皞,回归太昊,回归舜帝的父母,回归始祖文化,回归有文献...

  • 机器学习算法总结

    回归算法 线性回归算法: 支持向量机&向前逐步回归&惩罚线性回归(岭回归/套索回归/ElasticNet/最小角度...

  • 回归日

    回归自己,回归本真,回归于爱。

网友评论

      本文标题:04-Logistic回归

      本文链接:https://www.haomeiwen.com/subject/lcpeiltx.html