当前位置:首页 > 第6章 统计回归模型(张蒙)- 西安航空学院
第6章 统计回归模型
当人们对研究对象的内在特征和各因素间的关系有比较充分的认识时,一般用机理分析方法建立数学模型,比如物理学中的万有引力定律定律、电磁感应定律等等;如果由于客观事物内部规律的复杂性及人们认识程度的限制,无法分析对象内在的因果关系,建立合乎机理规律的数学模型,比如年龄和血压之间的关系,总的来说年龄越大血压越高,但到底是怎样的因果关系,目前还无法彻底认识,那么通常的办法是搜集大量的数据,基于对数据的统计分析去建立统计回归模型,如医药上的药物疗效也是通过大量的实验得出的数据来分析药物的作用的。解决这类问题的大致方法通常如下:
(1)收集要考察的相关变量的数据
(2)通过对数据的统计分析,找出与数据拟合最好的模型 (3)利用统计分析方法对模型进行分析,判断优劣 (4)利用模型作预测
回归模型是用统计分析方法建立的最常用的一类模型,本章我们不涉及回归分析的数学原理和方法,通过直接调用Matlab统计函数和两个实例来建立线性回归模型,没有学过这部分数学知识的读者只要不追究这些方法数学上的意义,就仍可以用这里的方法来解决实际问题。
例1:某厂生产的产品销售量与产品的价格、竞争对手的价格(其它生产同类产品厂家的平均价格)、广告费用有关,表6-1是该商品在30个销售周期内所收集的相关数据,试根据这些数据建立销量、价格、广告费用之间的数学模型,并预测当价格比竞争对手便宜0.2元,投入广告费6.5百万元时的销量
表6-1
销售周期 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 本厂价格竞争对手价广告费用(百价格差销售量 (元) 格(元) 万元) (元) (百万支) 3.85 3.75 3.7 3.7 3.6 3.6 3.6 3.8 3.8 3.85 3.9 3.9 3.7 3.75 3.75 3.8 3.7 3.8 4 4.3 3.7 3.85 3.8 3.75 3.85 3.65 4 4.1 4 4.1 4.2 4.1 4.1 4.2 5.5 6.75 7.25 5.5 7 6.5 6.75 5.25 5.25 6 6.5 6.25 7 6.9 6.8 6.8 7.1 -0.05 0.25 0.6 0 0.25 0.2 0.15 0.05 -0.15 0.15 0.2 0.1 0.4 0.45 0.35 0.3 0.5 7.38 8.51 9.52 7.5 9.33 8.28 8.75 7.87 7.1 8 7.89 8.15 9.1 8.86 8.9 8.87 9.26 18 19 20 21 22 23 24 25 26 27 28 29 30
3.8 3.7 3.8 3.8 3.75 3.7 3.55 3.6 3.65 3.7 3.75 3.8 3.7 4.3 4.1 3.75 3.75 3.65 3.9 3.65 4.1 4.25 3.65 3.75 3.85 4.25 7 6.8 6.5 6.25 6 6.5 7 6.8 6.8 6.5 5.75 5.8 6.8 0.5 0.4 -0.05 -0.05 -0.1 0.2 0.1 0.5 0.6 -0.05 0 0.05 0.55 9 8.75 7.95 7.65 7.27 8 8.5 8.75 9.21 8.27 7.67 7.93 9.26 问题分析与模型建立:用y表示商品的销售量,x1表示本厂与竞争对手的价格差,如果本厂价格比竞争对手便宜,则产品更具竞争力,规定价格差为正,反之为负,这样能更好的反映价格因素对销量的影响,而不是分别考虑产品的价格及竞争对手的价格,x2表示广告费用,为了便于分析,我们分别作y对x1和x2的散点图,以观察它们之间的关系
图6-1 y与x1的散点图
图6-2 y与x2的散点图
观察图6-1,随着x1的增加,y明显增大,我们考虑用一次函数来拟合
y??0??1x1
图6-2,x2增大时,y同样增大,但稍有弯曲,我们考虑用二次函数来拟合
2 y??0??1x2??2x2将上面两点综合起来,我们建立总的回归模型如下
2y??0??1x1??2x2??3x2??
其中?0,?1,?2,?3叫回归系数,自变量x1,x2是影响变量y的主要因素,是人能够观察和控制的,同时y还受到各种随机因素的干扰,记为?,这是人无法控制的,称为随机误差,在理论上把它看做一个随机变量,如果模型选择合适,那么?应该大致服从均值为零的正态分
布,所以,完整的模型应记做
2??y??0??1x1??2x2??3x2?? ? (1) 2???N(0,?)其中,?未知。
模型(1)中,y对回归系数?0,?1,?2,?3是线性的(而不是对x),这样的回归叫线性回归。
模型求解:Matlab中解决线性回归问题用命令regress,使用格式为
[b,bint,r,rint,stats]=regress(y,x,alpha)
输入:
y为(1)式中y的数据(n维列向量,n=30),即销售量
2x是对应于回归系数??(?0,?1,?2,?3)的数据矩阵[1,x1,x2,x2](每一项表示一
2列,第一列全为1,对应于常数项?0,x1,x2为题中所给数据,x2是x2中的每一个数的
平方写成一列,所以这是一个30行4列的矩阵)
alpha为显著性水平?,缺省时默认为0.05 输出:
b为回归系数??(?0,?1,?2,?3)的估计值
bint是b各项的估计区间(显著性水平为?的置信区间)
r为残差向量,所谓残差是我们求出的模型在各数据点计算的函数值 y与原始数据y的差,可以看作是对?的估计,各点残差的和应为
?(y?y)?0,记残差平方和
iii?1nQ??(yi?yi)2,则把s2?i?12
nQ(k为?的个数减1,本题中k?3)叫做剩余方差,
n?k?12它是对模型(1)中?的估计,显然,s越小越好
rint为r的置信区间
stats是检验回归模型的统计量,包含三项:第一项是回归方程的决定系数R,也叫
2相关系数,用来说明y与x1,x2,x2的线性相关程度,越接近于1越好;第二项是统计上
2的F检验法,如果F?F1??(k,n?k?1),就说明回归效果显著,接受模型,否则就拒绝,
F1??(k,n?k?1)可以查表计算,也可以用Matlab函数finv(1??,k,n?k?1)计算;第
三项是与F统计量对应的概率p,p??时接受模型。
下面给出解决本问题的Matlab程序,先将表1的数据录入Excel,命名为data.xls,然后建立m文件
s=xlsread('data.xls'); % 将Excel表中的数据读入Matlab,记为矩阵s y=s(:,6); % 将s第六列记为y,即销售量数据 x1=s(:,5); % 第五列为价格差 x2=s(:,4); % 第六列为广告费
x=[ones(30,1) x1 x2 x2.^2]; % 这是一个30×4的矩阵
[b,bint,r,rint,stats]=regress(y,x) % 没有alpha项,默认为0.05 运行结果如下 b =
17.3244 1.3070 -3.6956 0.3486 bint =
共分享92篇相关文档