matlab实现
-
Logistic回归跟多元线性回归差不多,但是有区别:
(1) 线性回归:y是一个定量的变量,这时y对于不同的自变量来说有相应的值。
(2) Logistic回归:y是一个定性的变量,比如y只能等于0或1。 -
模型的基本形式:
但是在实际应用该模型的时候,常常不是不是直接对P进行回归,而是先 定义单调连续概率函数π,令:
于是Logistic模型就可以变形为:
-
例子(“MATLAB数学建模方法与实践(第3版)”第55页)
评估企业的还款能力,已知前20家企业的评价指标和评价结果,要求对剩余5家企业进行评估,0表示2年后有能力还款,1表示2年后没有能力还款,评估2年后是否有能力还款。
解答:1)确定pi和P之间的映射关系,例子评测结果里面有10个0,10个1,数量相等,可以取分界值0.5,即:
2)对于20家企业,只知道评估结果P(即0和1),没法做多元线性回归,即已知x1,x2,x3,但是不知道y(这里π就相当与y,因为π是对应的概率函数),所以为了方便计算,干脆取两个区间的中间值,即:
所以有:
-
matlab代码
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% Logistic1.docx例子解答:
% (1)确定pi和P之间的映射关系,例子评测结果里面有10个0,10个1,数量相等,可以取分界值0.5,即:
% pi<=0.5,P = 0;
% pi> 0.5,P = 1;
% (2)对于20家企业,只知道评估结果P(即0和1),没法做多元线性回归,即已知x1,x2,x3,但是不知道y(这里pi就相当与y,因为pi是对应的概率函数),所以
% 为了方便计算,干脆取两个区间的中间值,即(0+0.5)/2和(0.5+1)/2,所以列表里面的Y等于0的全部换为0.25,全部为1的换为0.75
%
% 到此y值便确定了,即0.25和0.75的组合。
%
% matlab实现(利用多元线性回归):
% (1)输入:
% x1(1*n)矩阵存储x1坐标
% x2(1*n)矩阵存储x2坐标
% ......
% y1(1*n)矩阵存储y坐标
% y2(1*n)矩阵存储y2坐标
% ......
% (2)输出:
% [b,bint,r,rint,s]=regress(Y,X,alpha);里面的所有参数,回归系数b构成多元回归模型
% 残差图分析
% 相关系数b
% 验证的所以数据的0或1
%
%
% 重点:如果出现错误;"错误使用 horzcat串联的矩阵的维度不一致"可能是X,Y那里的行矩阵和列矩阵的转化出现问题
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% 数据的存储
x1 = [-62.8 3.3 -120.8 -18.1 -3.8 -61.2 -20.3 -194.5 20.8 -106.1 43 47 -3.3 35 46.7 20.8 33 26.1 68.6 37.3];
x2 = [-89.5 -3.5 -103.2 -28.8 -50.6 -56.2 -17.4 -25.8 -4.3 -22.9 16.4 16 4 20.8 12.6 12.5 23.6 10.4 13.8 33.4];
x3 = [1.7 1.1 2.5 1.1 0.9 1.7 1 0.5 1 1.5 1.3 1.9 2.7 1.9 0.9 2.4 1.5 2.1 1.6 3.5 ];
y = [0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75];
% 绘制散点图
% subplot(1,3,1);plot(x1,y,'g*');
% subplot(1,3,2);plot(x2,y,'k+');
% subplot(1,3,3);plot(x3,y,'ro');
% 数据的长度
n=length(x1);
% X,Y制作
X=[ones(n,1),x1',x2',x3'];
Y = y';
% 注意matlab的log是数学上的ln
Y = log(Y./(1-Y));
% 线性分析
[b,bint,r,rint,s]=regress(Y,X,0.05);
% b,bint,r,rint,s
% 残差分析
% rcoplot(r,rint);
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
% 求解完系数后代入要预测的数值
% 模型的验证和应用
x11 = [-62.8 3.3 -120.8 -18.1 -3.8 -61.2 -20.3 -194.5 20.8 -106.1 43 47 -3.3 35 46.7 20.8 33 26.1 68.6 37.3 -49.2 -19.2 40.6 34.6 19.9];
x22 = [-89.5 -3.5 -103.2 -28.8 -50.6 -56.2 -17.4 -25.8 -4.3 -22.9 16.4 16 4 20.8 12.6 12.5 23.6 10.4 13.8 33.4 -17.2 -36.7 5.8 26.4 26.7];
x33 = [1.7 1.1 2.5 1.1 0.9 1.7 1 0.5 1 1.5 1.3 1.9 2.7 1.9 0.9 2.4 1.5 2.1 1.6 3.5 0.3 0.8 1.8 1.8 2.3];
n = length(x11);
p = zeros(1,n);
for i = 1:length(x11)
Pai0 = exp(b(1,1) + b(2,1)*x11(1,i) +b(3,1)*x22(1,i) + b(4,1)*x33(1,i))/(1+exp(b(1,1) + b(2,1)*x11(1,i) +b(3,1)*x22(1,i) + b(4,1)*x33(1,i)));
if(Pai0<=0.5)
p(1,i) = 0;
else
p(1,i) = 1;
end
end
b'
p
结果:
SPSS实现
- Logistic(在使用该模型时先看本文第4点)
线性回归是很重要的一种回归方法,但是线性回归只适用于因变量为连续型变量的情况,那如果因变量为分类变量呢?比方说我们想预测某个病人会不会痊愈,顾客会不会购买产品,等等,这时候我们就要用到Logistic回归分析了。Logistic回归主要分为三类,一种是因变量为二分类得logistic回归,这种回归叫做二项logistic回归,一种是因变量为无序多分类得logistic回归,比如倾向于选择哪种产品,这种回归叫做二项logistic回归,一种是因变量为无序多分类得logistic回归,比如倾向于选择哪种产品,这种回归叫做这种回归也叫累积logistic回归,或者序次logistic回归。 -
二值logistic回归:二元Logistic回归
- 案例:分析以下各个因素对是否患病的影响,由于结果为患病或不患病两种,故用二元Logistic回归分析
首先明白两个概念:二分类变量和连续值变量
二分类变量:类似与性别,只有男和女两个结果,通常用0和1来表示,性别的0和1数值不代表大小
连续值变量:像年纪,总胆固醇等
Spss作二元Logistic回归分析步骤:
(6)点击“确定”,出结果
结果分析:
-
List item
关于二元Logistic的使用
对问题的分析
使用Logistic模型前,研究者需判断是否满足以下七个研究假设:
假设1:因变量即结局是二分类变量。
假设2:有至少1个自变量,自变量可以是连续变量,也可以是分类变量。
假设3:每条观测间相互独立。分类变量(包括因变量和自变量)的分类必须全面且每一个分类间互斥。
假设4:最小样本量要求为自变量数目的15倍,也有一些研究者认为样本量应达到自变量数目的50倍
假设5:连续的自变量与因变量的logit转换值之间存在线性关系。
假设6:自变量间不存在共线性。
假设7:没有明显的离群点、杠杆点和强影响点。
对假设的判断:
假设1-4:取决于研究设计和数据类型,如果不满足则需要更换统计方法。后3个假设则依赖于二分类Logistic回归是否适用于数据。
假设5: 连续的自变量与因变量的对数间存在线性关系。
二分类Logistic回归分析的结果有两个目的:
①观察自变量对因变量的影响是否有统计学意义;
②观察二分类Logistic回归模型预测因变量的效果。这两个目的可以通过下面的各部分结果反映。
参考连接:http://dy.163.com/v2/article/detail/CRJ8PJ5E0514AGEL.html -
重点总结
以上为全部内容,如有错误的地方望指出。
转载:https://blog.csdn.net/qq_40298902/article/details/101225330