数学模型——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表示选择1的概率,beta是一个常系数,是一个x的向量,即有多个变量如年龄段。
在上式中,左边P的区间为[0,1],右边式子的区间则可以从。取值范围不同,会为数学表达和数据分析带来一些困难。因此,我们希望找到一种方法,让左边与右边的取值范围变成一致。
因此,我们考虑到了优势比(odds),这是一个在概率与统计意义上非常常见与概率相似的一个概念。
概率的数学表达如下:
即A事件发生的数量/总事件数量
优势比通俗意义上讲是:A事件发生的数量/A事件不发生的数量。数学表达如下:
所以,我们可以得到:
在优势比的表达中,P的各值都可以由odds来进行表达,也就是所谓的一一对应,这样,我们就可以用odds来表示所有P的情况,这有一个好处就是,odds的取值范围为:。
范围是不是扩大了很多?
但是,我们从上述的数学表达中可以发现,在中,P值小小的扰动,就会导致odd急剧地变化。如下图所示:
odds与P之间的函数关系
虽然odds有效地扩大了P概率在实数轴上的表示范围,但也带来了一个明显的问题,就是,一旦我们使用odds来研究因变量与自变量之间的关系,若随着自变量的增加,因变量也呈现十分剧烈的变化趋势,那么这个十分剧烈的变化趋势,究竟是数据本身的特性,还是因为odds带来的影响呢?
虽然odds有效地扩大了我们能够表示地范围,但我们仍然不能直接使用它,不然它可能会干扰我们分析数据。
因此,我们必须再对odds做处理,使得它的变动显得稍微平滑一点,不要太过剧烈。
在数学中,我们有一个非常棒的工具可以处理函数,使函数波动减小,那就是自然指数e。
我们对odds取自然对数,得到如下式子:
这样,我们再用matlab画图看看这个logitP与P之间的图像关系:
LogitP与P之间的关系
这样我们可以看到,取了自然对数之后,两者的关系平滑了很多,不再呈现某一区间内突然飙升的情况。
且LogitP的取值区间也大了很多,为。
经历了这么多,我们终于把最开始的二元类慢慢变化成我们想要且容易分析的效果。
我们令:
经过这样处理,我们就得到了logit回归模型,其中,,是回归系数,,可以通过最大似然法估计得到。
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回归模型)
更多推荐
所有评论(0)