数学模型——Logistic回归模型(含Matlab代码)

写在前面

Logistic回归模型是一种非常常见的统计回归模型,在处理大量数据,揭示各自变量如何作用于因变量(描述X与Y之间的关系)时有着十分重要的作用。笔者在写Logit回归模型前参加了一次市场调研比赛,在这次比赛中学到了很多东西,同时发现,许多优秀获奖论文在模型建立时都采用了Logit模型。笔者在查阅多篇文章及书籍后发现,Logsitc模型与Logit模型本质上并没有不同,其不同之处在于数学表达形式不同。

一个十分经典的例子:在智能手环满意度市场调查中,我们可以采用Logit模型分析性别,年龄,运动频率,兴趣爱好等因素对智能手环的购买情况的影响,从而刻画出购买智能手环的用户画像,从而可以更好地定位潜在用户。(笔者在阅读获奖论文时发现的一个论文案例)

下面给出Logit回归模型的形式化定义。

Logit回归模型非形式化理解

        相比于其它回归模型,Logit有什么优势使它能够在一众回归模型中脱颖而出,我们要学习Logitc模型,必须理解Logit模型的应用场景,以及它的优势何在。

        在很多时候,我们所需要的进行的数据分析并不是简单的线性关系,尤其在市场调研中,我们常常需要分析的结果变量是一个二元类

        比如,我们需要分析的问题是被调查者的基本信息(年龄,性别,学历,收入)对是否买房这一行为结果的影响,而在问卷调查中,是否卖房这一问题的选项通常只有两个,是(0)或否(1)。这里我们可以将二元类的变量转换成概率P(即   “是”/“总人数”)。

        在现实生活中,收入的会与购房意愿往往不会呈线性关系(低收入人群增加2000元的收入与高收入人群增加2000元的收入,其改变的消费意愿有很大的不同),这就导致,我们在数据处理中,并不能简单地用线性回归对数据做拟合处理。正因如此,所以我们要找到另一种回归模型已解决此类问题。Logit就是用来解决这种问题最常见的方法之一。

        

Logit回归模型的数学推导

基于上述非形式化的理解,我们可以想到,我们需要找到一种方法,将[0,1]区间范围内的概率与一个线性函数关联起来,即:

P(Y=1|X)=\beta X^{T}

其中,P表示选择1的概率,beta是一个常系数,X^{T}是一个x的向量,即有多个变量如年龄段。

在上式中,左边P的区间为[0,1],右边式子的区间则可以从(-\infty ,+\infty )。取值范围不同,会为数学表达和数据分析带来一些困难。因此,我们希望找到一种方法,让左边与右边的取值范围变成一致。

因此,我们考虑到了优势比(odds),这是一个在概率与统计意义上非常常见与概率相似的一个概念。

概率的数学表达如下:

P=\frac{number\ of\ event\ A}{number\ of\ all\ events}       即A事件发生的数量/总事件数量

优势比通俗意义上讲是:A事件发生的数量/A事件不发生的数量。数学表达如下:

odds=\frac{number\ of\ A\ event}{number\ of\ \bar{A}\ events}=\tfrac{P}{1-P}

所以,我们可以得到:odds=\frac{P}{1-P}

在优势比的表达中,P的各值都可以由odds来进行表达,也就是所谓的一一对应,这样,我们就可以用odds来表示所有P的情况,这有一个好处就是,odds的取值范围为:[0,+\infty ]

范围是不是扩大了很多?

但是,我们从上述的数学表达中可以发现,在odds=\frac{P}{1-P}中,P值小小的扰动,就会导致odd急剧地变化。如下图所示:

odds与P之间的函数关系

虽然odds有效地扩大了P概率在实数轴上的表示范围,但也带来了一个明显的问题,就是,一旦我们使用odds来研究因变量与自变量之间的关系,若随着自变量的增加,因变量也呈现十分剧烈的变化趋势,那么这个十分剧烈的变化趋势,究竟是数据本身的特性,还是因为odds带来的影响呢?

 虽然odds有效地扩大了我们能够表示地范围,但我们仍然不能直接使用它,不然它可能会干扰我们分析数据。

因此,我们必须再对odds做处理,使得它的变动显得稍微平滑一点,不要太过剧烈。

在数学中,我们有一个非常棒的工具可以处理函数,使函数波动减小,那就是自然指数e。

我们对odds取自然对数,得到如下式子:

logitP=ln(\frac{P}{1-P})

这样,我们再用matlab画图看看这个logitP与P之间的图像关系:

LogitP与P之间的关系

 这样我们可以看到,取了自然对数之后,两者的关系平滑了很多,不再呈现某一区间内突然飙升的情况。

且LogitP的取值区间也大了很多,为[-\infty ,+\infty ]

经历了这么多,我们终于把最开始的二元类慢慢变化成我们想要且容易分析的效果。

我们令:

LogitP=ln(\frac{P}{1-P})=\beta_{0}+\beta _{1}x

经过这样处理,我们就得到了logit回归模型,其中,\beta _{0}\beta _{_{1}}是回归系数,\beta _{0}\beta _{_{1}}可以通过最大似然法估计得到。

Matlab模型求解

在Matlab统计工具箱中,有这样一条命令可以方便我们做出Logit回归模型,通常格式为:

b=glmfit(x,y,'distr','link')
%或者
[b,dev,stats]=glmfit(x,y,'dstr','link')

其中,输入x为自变量数据矩阵,缺省时会自动添加一列1向量作为x的第1列;y为因变量数据矩阵;distr为估计系数时所用的分布,可以时binomial,poisson等,缺省时为normal;特别当distr取binomial时,y可取一个2列矩阵,第1列为观察“成功”的次数,第2列为观察次数;link取logit,probit等,缺省时为logit。输出b为回归系数的估计值;dev为拟合偏差,时一般的残差平方和的推广;stats输出一些统计指标,详见MATLAB的帮助文档.

(此段来自《数学模型(第五版)》,由姜启源,谢金星,叶俊老师编写,出自此书P339页,书中还引用了自变量为年龄,因变量为是否患有冠心病的例子,能更好地帮助理解logtic回归模型)

来源:苏三有春

物联沃分享整理
物联沃-IOTWORD物联网 » 数学模型——Logistic回归模型(含Matlab代码)

发表评论