回归预测法
定量方法介绍
“回归”的起源
回归一词最先由F.高尔顿(Francis Galton)引入。
在一篇著名的论文中,高尔顿发现,虽然有一个趋势,父母高,儿女也高;父母矮,儿女也矮,但给定父母的身高,儿女辈的平均身高却趋向于或者“回归”到全体人口的平均身高。
皮尔逊曾收集过一些家庭群体的1千多名成员的身高记录后发现,对于一个父亲高的群体,儿辈的平均身高低于他们父辈的身高,而对于一个父亲矮的群体,儿辈的平均身高则高于其父辈的身高。这样就把高的和矮的儿辈一同“回归”到所有男子的平均身高。用高尔顿的话说,这是“回归到中等。
回归的现代解释
回归分析是关于研究一个应(因)变量对另一个或几个解释变量(自变量)的)依赖关系,其用意在于通过后者的己知或设定值,去估计和〔或〕预测前者的(总体)均值
变量间的函数关系
函数关系是一一对应的确定关系
设有两个变量 x 和 y ,变量 y 随变量 x 一起变化,并完全依赖于 x ,当变量 x 取某个数值时, y 依确定的关系取相应的值,则称 y 是 x 的函数,记为 y = f (x),其中 x 称为自变量,y 称为因变量。
各观测点(x,y)落在一条线上.
x
y
变量间的相关关系
变量间关系不能用函数关系精确表达
一个变量的取值不能由另一个变量唯一确定
当变量 x 取某个值时,变量 y 的取值可能有几个
各观测点分布在直线周围
x
y
回归的基本思想
具有相关关系的变量,虽然不能用函数式准确表达其关系,但可以通过大量的实验数据(或调查数据等)的统计分析,找出各相关因素的内在规律,可用某一函数式近似地描述其依存关系。
回归预测的步骤
1 、选定预测的变量及主要的原因变量;
2 、收集历史数据(或通过市场调查);
3 、分析变量间的关系建立回归模型;
4 、参数估计:最小二乘法;
5 、回归方程的显著性检验;
6 、利用回归方程进行预测。
一元线性回归预测法
一、建立一元线性回归模型:
例:下表给出了某市从90年以来人均收入和人均消费支出的七组数据
年份
90 91 92 93 94 95 96
人均收入
480 510 545 590 640 700 760
人均消费
420 450 490 530 580 620 680
t=c(90,91,92, 93,94,95,96)
x=c(480,510,545,590,640,700,760)
y=c(420,450,490, 530,580,620,680)
(t,x,y) ;plot(x,y)
散点图
人均收入和人均消费的关系
一元线性回归模型可表述为:
y=a十bx十e
其中a,b是待定的参数
一元回归预测方程:P55
如何才能知道是否可以使用一元线性回归模型:
1、经济理论
2、数据分布(散点图)
3、最简单的模型
二、求回归系数a和b
1 、简便求估法:
(1) 、目估作图法;
(2)、平均值法。
2 、回归系数的精确求估法:
最小二乘法
估计参数—最小二乘法
目的:找一个最好的预测模型
最好:误差最小、误差的平方和最小
参数估计:最小值的必要条件
最小二乘法
设已知n组数据(x1,y1),( x2,y2)… (xn,yn),
模型:
误差ui=
误差的平方和
由 求得
最小二乘法
( 和 的计算公式)
根据最小二乘法的要求,可得求解 和 的标准方程如下
三、回归方程的检验
所谓拟合优度是指由回归直线拟合统计数据的优劣程度。
由推证可得:
1.可决系数r2:是反映拟合优度的数量指标
可决系数公式
回归平方和占总离差平方和的比例
反映回归直线的拟合程度
取值范围在 [ 0 , 1 ] 之间
r2 1,说明回归方程拟合的越好;r20,说明回归方程拟合的越差
判定系数等于相关系数的平方,即r2=(r)2
在预测实践中,r2常用于模型的比较,人们往往采纳r2最高的模型,这是因为r2高,就意味着该模型把y的变动解释得好。
实际上,有一个更为简捷的可决系数的计算公式:
r2 =
2 、相关系数r
相关系数r:是另一个被广泛用来测定拟合优度的指标;是描述变量x与y之间线性相关关系密切程度的一个数量指标。
它的计算公式为:
r=
3 、 回归方程的显著性检验
在求出回归系数后,需进行显著性检验。回归系数的显著性检验有t检验和F检验,前者是检验单个系数是否显著的异于零,即对应的自变量的变化是否显著地影响因变量的变化,后者是检验所有系数是否同时为零,但是对于一元线性回归有Fα(n-2)=tα/22(n-2),因此只需做t检验或F检验即可。
(1)、 F检验及其步骤:
提出假设
H0:b=0 (线性关系不显著)
2. 计算检验统计量F
确定显著性水平,并根据分子自由度1和分母自由度n-2找出临界值F
作出决策:若FF ,则回归方程显著;(拒绝H0);
若F<F ,则回归方程不显著(接受H0).
回归系数的显著性检验
(步骤)
提出假设
H0: b = 0 (没有线性关系)
H1: b 0 (有线性关系)
计算检验的统计量
确定显著性水平,查t分布表的tα/2(n-2),
并进行决策
t>t,拒绝H0,即回归系数显著;
t<t,接受H0,即回归系数不显著。
4、进行预测
在预测时,有点预测和区间预测。
(1)、点预测
点预测就是利用自变量的已知值,由回归预测方程: 计算因变量的值作为预测值。
点预测是预测平均值
但是点预测,不容易分析预测的可靠性和准确性,因此可用区间预测。
(2)、区间预测
区间预测就是对于给定的一个自变量x的值,需给出一个在一定概率保证程度下的预测值落入的置信区间。近似的置信区间的常用公式为:
置信区间=
如果要使每一个特定的y值落在该置信区间内的概率为90%,则上式为:
置信区间=
其中 为t分布表(附表二)
中的数值,
小样本
更为精确的置信区间的计算公式为,
置信区间的上下限=
其中x0为用于预测y的x值。
人均收入和消费案例的程序
sol=lm(y~x)
summary(sol)
可见常数项不显著,应从模型中删除
sol=lm(y~x+0)
summary(sol)
plot(x,y)
lines(x,fitted(sol))
new=(x=c(680,730))#要预测估计的数据组成数据框
pred<-predict(sol,new,interval="prediction",level=)
pred
5 、经济控制
问题:若要求Y落在一定范围内,问自变量X应控制在什么范围?
多元线性回归预测
1、多元线性回归的模型
Y=a+b1X1+b2X2+…+bmXm
2、多元线性回归的参数估计
(最小二乘法)
3、多元线性回归的误差分析与统计检验
4、多元线性回归的预测
多元线性回归的参数估计
如果在对变量Y与Xi(i=1,2,…,m)的n次观察中,获得了如下数据:
用最小二乘法做参数估计
多元函数求极值
对上式中的a、bi(i=1,2,…,m)分别求偏导,并令其等于零,经整理后得:
回归方程的显著性检验
F检验(全检验)
H0: b1=b2=…=bm=0
若H0成立,则Y与X无明显线性关系,整个模型无意义。
t检验(个体检验)
Hj0: bj=0; j=0,1…m. 其中b0=a
若Hj0成立,则Y与Xj无明显关系,可将Xj排除出模型。
复可决系数R2在0~1之间,值越大,模型解释能力越强
可用方差膨胀因子VIFj=1/(1-Rj2)值来判断变量的共线性问题. VIF>10表示有较严重的共线性,接近1表示无此问题。
置信区间
多元回归的近似置信区间的估计方法同简单回归相类似,其置信区间的公式为:
线性回归案例
根据经验,在人的身高相等的情况下,血压的收缩压Y与体重X1(千克)、年龄X2(岁数)有关.现收集了13个男子的数据,见表 .试建立Y关于X1,X2的线性回归方程.
估计出Y=b0+b1X1+b2X2
F检验: H0: b1=b2=0. T检验: H0: bj=0 j=0,1,2
求解程序
blood<( X1=c(,,,,,,,,,,,,),X2=c(50,20,20,30,30,50,60,50,40,55,40,40,20),Y=c(120,141,124,126,117,125,123,125,132,123,132,155,147) ) #建立数据框
<-lm(Y~X1+X2,data=blood) #进行回归分析
summary() #汇总分析结果
Y=++.
预测:X=(80, 40)时,相应Y的概率为0. 95的预测区间.
new<(X1=c(80,75),X2=c(40,38))
<-predict(,new,interval="prediction",level=)
回归分析的汇总结果
Call:
lm(formula = Y ~ X1 + X2, data = blood)
Residuals:
Min 1Q Median 3Q Max
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) **
X1 -07 ***
X2 ***
---
Signif. codes: 0 ‘***’ ‘**’ ‘*’ ‘.’ ‘ ’ 1
Residual standard error: on 10 degrees of freedom
Multiple R-squared: , Adjusted R-squared:
F-statistic: on 2 and 10 DF, p-value: -07
预测结果如下:
fit lwr upr
1
回归诊断
par(mfrow=c(2,2)) #设置画图为2x2的格式
plot(,which=c(1:4)) #模型检验4张图,包括残差图、QQ图和Cook距离图
数据太少,上面诊断结果并不理想。
library(car) #载入程序包Car,vif()函数在其内
round(vif(),2) #计算模型的方差膨胀因子,用2位小数点的格式展示
各变量的方差膨胀因子情况如下:
X1 X2
可以看到所有参数估计的VIFj=1/(1-Rj2)值都远远小于10,并且接近1。因此这里我们不用担心多重共线性的问题。
非线性回归预测
在社会经济现象中,有时两个因素之间的关系并不是呈线性的关系。这时就要选配适当类型的曲线才符合实际情况。
变量间函数关系的类型有的可根据理论或过去积累的经验,事前予以确定。
但是当不能事先确定变量之间的函数关系的类型时,就需要根据实际资料作散点图,从散点图中的分布形状选择适当的曲线来配合。
函数类型确定后,就需要确定函数关系式的未知参数。最小二乘法是确定未知参数最常用的方法。
一些常见的函数类型与图形
1、幂函数:y=axb ,lny=lna+blnx
2、指数函数:y=aebx ,lny=lna+bx
3、 抛物线函数:y=a+bx+cx2 ,
4、对数函数:y=a+blnx
5、S型函数:y=1/(a+be-x), 1/y=a+be-x
以上这些函数通常可做线性化处理。
龚伯兹(Gompertz)生长曲线
Gompenz曲线是以统计学家、数学家龚伯兹的名字命名的。
Gompenz曲线描绘的图形特点是:开始增长速度很慢,随后逐渐加快,到一定阶段变慢直到增长速度慢慢趋于零.
函数形式:
模型参数估计:
收集一批样本(t,yt),t=1,2,…,n;(n=3r)
(Gompertz)生长模型示例
某市1996-2002年空调销售最历史数据为: ,,,, ,,,,(百台);试用龚伯兹模型预测2005年该市空调销售量。
source("I:/")
y=c(,,,,,,,,)
gompenz(y,12) #预测第12期(05年)销售量
-------
gompenz=function(y,pt=NULL){
n=length(y);r=n/3;py=NULL
L1=sum(log(y[1:r]))
L2=sum(log(y[(r+1):(2*r)]))
L3=sum(log(y[(2*r+1):(3*r)]))
b=((L3-L2)/(L2-L1))^(1/r)
a=exp((L2-L1)*(b-1)/(b*(b^r-1)^2))
k=exp((L1-b*(b^r-1)*log(a)/(b-1))/r)
py=k*a^(b^pt)
(a,b,k,pt,py)
}
得: a= ,b= ,k=,
py=
Logistic曲线预测模型
Logistic曲线模型由数学家哈尔斯特(P. F. Veihulot)在研究人口增长规律时首先提出来。
这个模型所描绘的图形类似上面介绍的Gompertz曲线。其图形也是一种顺时针方向斜着的S形状。
Logistic曲线方程为
式中,t为时间序列的时点,一般为自然数列。a,m为待定系数;k为预测者视问题的实际情况与y的增长趋势,给定的饱和值(实际上,当t→∞时,容易看到y→k)。具体测时.可以给定大小不同的多个饱和值分别预测,最后分析判断不同的预测结果。
处理一般非线性回归R指令
nls(formula, data, start)
formula: 回归公式
data:变量所在的数据框
start:回归公式中待估参数初始值构成的列表或向量
Gompertz 模型示例的非线性回归求解
t=0:8 # 初始点从0开始易收敛?
y=c(,,,,,,,,)
plot(t,y) # 据图可初步判断函数类型,k,a的粗略估计
nreg= nls(y ~ k*a^(b^t), start = list(k =400,a=, b =))
summary(nreg)
lines(t,fitted(nreg))
predict(nreg,(t=11)) #预测
# 下面换种做法
nr= nls(log(y) ~ logk+loga*b^t, start = list(logk =6,loga=-4, b =))
summary(nr)
lines(t,exp(fitted(nr)))
上例采用Logistic模型
t=0:8
y=c(,,,,,,,,)
nreg= nls(y ~ k/(1+m*exp(-a*t)), start = list(k =400,a=, m =))
summary(nreg)
plot(t,y); lines(t,fitted(nreg))
多种曲线模型示例
文件中有多个相关的变量,试用曲线模型分析它们的关系。
商品流通费水平(%)
商品流通额(万元)
z=axb
u=aebx
v=a+bx+cx2
w=a+blnx
s=1/(a+be-x)
t=a+bcx
g=ka^(b^y))
Y
X
Z
U
V
W
S
T
G
dt<("G:\\",header = T,skip=1)
plot(dt$Y~dt$X)
nreg= nls(Y ~ a+b/X, data = dt, start = list(a = 0, b = 1))
ines(dt$X,fitted(nreg))
reg=lm(Y~I(1/X),dt)
reg=lm(Y~log(X),data=dt)
nreg= nls(Z ~ a*X^b, data = dt, start = list(a =1, b =2))
reg=lm(log(Z)~log(X),dt)
nreg= nls(G ~ k*a^(b^Y), data = dt, start = list(k =2,a=, b =))
(nreg)
nreg= nls(S ~ 1/(a+b*exp(-X)), data = dt, start = list(a=2,b=-1))
虚拟变量简介
虚拟变量又称虚设变量、名义变量或哑变量,用以反映质的属性的一个人工变量,是量化了的质变量,通常取值为0或1。引入哑变量可使线形回归模型变得更复杂,但对问题描述更简明,一个方程能达到俩个方程的作用,而且接近现实。
如,反映文化程度的虚拟变量可取为:1:本科学历;0:非本科学历
一般地,在虚拟变量的设置中:基础类型、肯定类型取值为1;比较类型,否定类型取值为0。
虚拟变量设置原则
在模型中引入多个虚拟变量时,虚拟变量的个数应按下列原则确定:
如果有m种互斥的属性类型,在模型中引入(m-1)个虚拟变量。
例如,性别有2个互斥的属性,引用2-1=1个虚拟变量;再如,文化程度分小学、初中、高中、大学、研究生5类,引用4个虚拟变量。
引入虚拟变量的作用
1、分离异常因素的影响,例如分析我国GDP的时间序列,必须考虑“文革”因素对国民经济的破坏性影响,剔除不可比的“文革”因素。
2、检验不同属性类型对因变量的作用,例如工资模型中的文化程度、季节对销售额的影响。
3、提高模型的精度,相当于将不同属性的样本合并,扩大了样本容量(增加了误差自由度,从而降低了误差方差)
加法方式引入虚拟变量,考察:截距的不同,
斜率的变化可通过以乘法的方式引入虚拟变量来测度。
定性变量对截距和斜率项影响
如Y表示工资,X表示工作经历,D表示性别虚拟变量
截距和斜率项发生变化
虚拟变量应用示例
文件给出了82-88年28期全国市场用煤销售量(单位:万吨)的季度数据,试用时间期数t影响煤销售量y的回归模型。
db=("I:/R软件/tmp/",header=T)
plot(db$quarter,db$y); lines(db$quarter,db$y)
d1=rep(c(0,0,0,1),7)
d2=rep(c(0,0,1,0),7)
d3=rep(c(0,1,0,0),7)
db=(db,t=1:28,d1,d2,d3); db
sol=lm(y~t+d1+d2+d3,data=db)
summary(sol)
solt=lm(y~t+d1+I(t*d1),data=db)