logistic回归 简介_Logistic回归(一)nomogram

7db6136f434288af5c61a801c599edde.png

线性回归是十分好用的一种方法,然而在某些方面也存在一定的局限性,比如当因变量为分类变量时,使用线性回归就不是很恰当了,且纳入线性回归的变量需要满足符合正态分布的前提,否则对模型的结果也会产生影响。为了解决这些问题,统计学家们在线性模型的基础上了扩展出了GLM(广义线性模型)的概念,最早在1972年Nelder与Wedderburn首次于Journal of Royal Statistical Society上发表了关于广义线性模型的论文。本期对广义线性模型中的logistic回归略作介绍。

  • 数据集简介
  • 拟合模型
  • Nomogram
  • 模型的验证
  • 写在最后

数据集简介

采用Kaggle竞赛中的Titanic数据集来进行演示

Titanic: Machine Learning from Disaster​www.kaggle.com


数据集包含以下变量

survival	#是否幸存	0 = No, 1 = Yes
pclass	        #仓位等级	1 = 1st, 2 = 2nd, 3 = 3rd
sex             #性别
Age	        #年级	
sibsp    	#船上的亲人或配偶数量	
parch    	#船上的父母或子女数量
ticket   	#票号	
fare	        #船票价格	
cabin	        #房间号	
embarked	#登船港口   C = Cherbourg, Q = Queenstown, S = Southampton

首先导入数据集并观察数据集是否存在缺失情况

titanic <- read.csv("train.csv")
library(VIM)
aggr(titanic,prop = FALSE,numbers = TRUE)
titanic <- na.omit(titanic)

6146abaf32d4fe4fae448b7d7579bdec.png

我们发现变量age存在一定的缺失,在这里为了方便直接删除掉存在缺失值的观测
ps.实际操作时要按实际情况对缺失值处理不同的处理方法

train <- titanic[1:642,]
test <- titanic[642:714,]

将数据集分为十份,取其中九份来拟合模型,一份来作为模型的外部验证集。

拟合模型

初步尝试一下拟合

fit1 <- glm(Survived~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked,data = train,family = "binomial")
fit2 <- step(fit1)
summary(fit2)

得到结果如下

Call:
glm(formula = Survived ~ Pclass + Sex + Age + SibSp, family = "binomial", 
    data = train)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.7728  -0.6471  -0.3902   0.6312   2.4287  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept)  4.282754   0.468506   9.141  < 2e-16 ***
Pclass2     -1.352993   0.296999  -4.556 5.23e-06 ***
Pclass3     -2.593091   0.296790  -8.737  < 2e-16 ***
Sexmale     -2.593756   0.225920 -11.481  < 2e-16 ***
Age         -0.044252   0.008515  -5.197 2.03e-07 ***
SibSp       -0.371656   0.126608  -2.935  0.00333 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 868.93  on 641  degrees of freedom
Residual deviance: 579.15  on 636  degrees of freedom
AIC: 591.15

Number of Fisher Scoring iterations: 5

回归结果显示,仓位等级、性别、年龄、船上的亲人或配偶数量与生存与否之间的关联存在统计学意义(p<0.05)。
接下来计算OR值,看看关联的大小

> 1/exp(coef(fit2))
(Intercept)     Pclass2     Pclass3     Sexmale         Age       SibSp 
 0.01380459  3.86898628 13.37103765 13.37993171  1.04524579  1.45013415

结果显示,一等舱乘客生存下来的概率是二等舱乘客的3.869倍,三等舱乘客的13.371倍,女性乘客生存下来的概率是男性乘客的13.380倍,且年龄越小、船上的亲人/配偶数量越少,生存几率越高。
在这里北京市交通委诚挚提醒您:道路千万条,安全第一条。出行带女友,亲人两行泪。
请你们出行之前思考清楚,带上了女朋友会极大的降低你的幸存概率,带的越多死的越快。手动狗头保命。

Nomogram

因为要用rms包画nomogram,我发现不能直接用在数据集里的变量来拟合模型,不然会报错,所以这里采用最弱智的方法把变量提取出来

library(rms)
survival <- train$Survived
pclass <- train$Pclass
sex <- train$Sex
age <- train$Age
sibsp <- train$SibSp

然后将数据打包成适合画nomogram的格式并用lrm函数拟合模型

ddist <- datadist(pclass,sex,age,sibsp)
options(datadist = 'ddist')
fit3 <- lrm(survival ~ pclass + sex + age + sibsp)

绘制nomogram

nom <- nomogram(fit3, fun=plogis,fun.at=c(.001, .01, .05, seq(.1,.9, by=.1), .95, .99, .999),lp=F, funlabel="Risk")
plot(nom)

得到如下nomogram(列线图)

f85866bfd2a8e7961de3e0683b5a046f.png

如何看结果呢,只需要从每个变量值投射到point上得到这个变量的point,然后把每个变量的得分point加起来,得到toal point,再通total point上投射到下面的risk轴上,就是概率p了,在这里就是幸存下来的几率。

如果你是个80岁(0分)男性(0分),住三等舱(0分),船上有五个家人/配偶(0分),基本上凉透了,幸存的概率无限趋近于0。

如果你是0岁(100分)女性(72分),头等舱(72分),船上只有一个家人(42分),总分286分,那么你幸存下来的几率则大于95%。

写在最后

  • 在本次演示中对一些变量是直接拿来用的,这是最简单粗暴的方法,其实为了提高预测的准确度还可以做很多变换,比如将年龄分段,分为儿童与成年人;还可以从姓名中提取出Mr,Dr,Major等能体现社会地位的称呼等等变换方式来尝试提高模型的预测精度。
  • 在本次演示中直接使用step函数逐步回归得到最终模型,其实在实际建模中也要考虑变量的实际意义,有一些变量虽然不存在统计学意义,但是依据专业知识认为其很重要,也可以尝试将其纳入模型。
  • 本期初步介绍logistic回归,使用nomogram来更直观的去理解模型,下一期的内容为logistic回归模型的验证,再下一期为关联规则与logistic回归中的交互项。
  • 本期内容的参考资料主要为CSDN论坛里的帖子们,看的太多了没有记录就不在此一一贴出链接。
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答你的问题。关于多元有序logistic回归分析,这是一种常见的统计分析方法,用于研究一个有序分类变量和一组自变量之间的关系。SPSS是一种常用的统计分析软件,可以进行多元有序logistic回归分析。 下面给出一个简单的实例教程,供参考: 假设我们想研究一个人的教育程度(有序分类变量,例如小学、初中、高中、大学)和他们的年龄、性别、职业等自变量之间的关系。我们可以使用SPSS进行多元有序logistic回归分析。 1. 准备数据 首先,我们需要准备数据。我们可以使用样本数据,或者自己进行数据收集。数据应该包含有序分类变量(教育程度)和一组自变量(例如年龄、性别、职业等)。 2. 打开SPSS并导入数据 打开SPSS软件,选择File -> Open -> Data,选择数据文件并导入数据。 3. 进行多元有序logistic回归分析 选择Analyze -> Regression -> Ordinal Regression,进入多元有序logistic回归分析界面。将有序分类变量(例如教育程度)拖入Dependent Variable框中,将自变量(例如年龄、性别、职业等)拖入Covariates框中。点击Model按钮,选择Enter,将所有自变量都加入模型。 4. 分析结果 分析结果将包括回归系数、标准误、z值、p值等。我们可以根据p值来判断自变量是否显著影响有序分类变量。此外,我们还可以使用SPSS的图表工具来可视化回归结果,帮助我们更好地理解分析结果。 以上就是一个简单的多元有序logistic回归分析的实例教程。希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值