在许多实际问题中,经常会遇到需要同时考虑几个变量的情况。例如,在电路中会遇到电压、电流和电阻之间的关系;在炼钢过程中会遇到钢水中的碳含量和钢材的物理性能之间的关系,在医学上经常测量人的身高、体重,研究人的血压与年龄的关系,这些变量之间是相互制约的。
通常变量间的关系有两大类:
一类是变量间有完全确定的关系,可用函数关系式来表示,如电路中的欧姆定律:I(电流)=U(电压)/R(电阻);
另一类是变量间有一定的关系,但由于情况错综复杂无法精确研究,或由于存在不可避免的误差等原因,以致它们的关系无法用函数形式表示出来,为研究这类变量之间的关系就需要通过大量实验或观测获得数据,用统计方法去寻找它们间的关系,这种关系反映了变量间的统计规律,研究这类统计规律的方法之一便是回归分析。
在回归分析中,把变量分成两类,一是因变量,它们通常是实际问题中所关系的一些指标,通常用Y表示,而影响因变量取值的另一些变量称为自变量,它们用X1,,X2,...,Xp来表示。
在回归分析中研究的主要问题是:
1. 确定Y与X1,,X2,...,Xp间的定量关系表达式,这种表达式称为回归方程;
2. 对求得的回归方程的可信度进行检验;
3. 判断自变量Xj(j=1,2,...,p)对Y有无影响;
4. 利用所求得的回归方程进行预测和控制。
先从最简单的情况开始讨论,只考虑一个因变量Y与一个自变量X之间的关系。
例子:在制造领域中,合金的强度Y与合金含碳量X有关,为了了解它们间的关系,从生产中收集了一批数据(Xi,Yi),i=1,2,...,n,具体数据如下图:
第一步、绘制散点图,确定数学模型
> x<-c(0.10,0.11,0.12,0.13,0.14,0.15,0.16,0.17,0.18,0.20,0.21,0.23)
> y<-c(42.0,43.5,45.0,45.5,45.0,47.5,49.0,53.0,50.0,55.0,55.0,60.0)
> plot(x,y)
从散点图中可以看出,Y与X的关系基本上是线性的,而这些点直线的偏离是由其他一切不确定因素的影响造成的,因此做如下假定:
Y = β0+β1X+ξ
其中β0+β1X表示Y随X的变化而线性变化的部分,ξ是随机误差。β0为回归常数,β1为回归系数,称X为回归自变量(或回归因子),称Y为回归因变量(或响应变量)。
第二步、作回归参数的估计,进行显著性检验
这里使用R语言的lm()函数可以非常方便地求出回归参数和作相应的检验:
> lm.sol<-lm(y~1+x)
> summary(lm.sol)
Call:
lm(formula = y ~ 1 + x)
Residuals:
Min 1Q Median 3Q Max
-2.0431 -0.7056 0.1694 0.6633 2.2653
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 28.493 1.580 18.04 5.88e-09 ***
x 130.835 9.683 13.51 9.50e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.319 on 10 degrees of freedom
Multiple R-squared: 0.9481, Adjusted R-squared: 0.9429
F-statistic: 182.6 on 1 and 10 DF, p-value: 9.505e-08
lm()函数表示作线性模型,其模型公式y ~ 1 + x表示的是Y = β0+β1X+ξ,函数summary()提取模型的计算结果:
1. 第一部分(call)列出了相应的回归模型的公式;
2. 第二部分(Residuals )列出的是残差的最小值、1/4分位点、中位数、3/4分位点和最大值点;
3. 第三部分(Coefficients)中,Estimate表示回归参数估计,Std. Error表示回归参数的标准差,t value表示t值,Pr(>|t|) 表示P值。还有显著性标记,其中***说明极为显著,**说明高度显著,*说明显著,.说明不太显著,没有记号为不显著
4. 第四部分中,Residual standard error表示残差的标准差,Multiple R-squared为相关系数的平方,Adjusted R-squared 为调整相关系数的平方,F-statistic表示F统计量
第三,回归参数的区间估计
编写相应的区间估计计算程序(beta.int.R),并假设变量fm是相应的拟合模型。
beta.int<-function(fm,alpha=0.05){
A<-summary(fm)$coefficients
df<-fm$df.residual
left<-A[,1]-A[,2]*qt(1-alpha/2,df)
right<-A[,1]+A[,2]*qt(1-alpha/2,df)
rowname<-dimnames(A)[[1]]
colname<-c("Estimate","Left","Right")
matrix(c(A[,1],left,right),ncol = 3,dimnames = list(rowname,colname))
}
在程序中,summary是提取模型信息,返回值为一列表,其中$coefficients是由回归系数、标准差、t值和P值构成的矩阵,fm是由lm计算得到的回归模型,其中$df.residual为模型的自由度,left和right是区间估计的左右值。
得出回归模型lm.sol,调用自编函数beta.int.R,得出相应的区间估计:
> source("beta.int.R")
> beta.int(lm.sol)
Estimate Left Right
(Intercept) 28.49282 24.97279 32.01285
x 130.83483 109.25892 152.41074
第四、预测与控制
当经过检验,回归方程式有意义时,可用它作预测,这里将的预测可以有两方面的意义,一是当给定X=x0时,求相应平均值的点估计与其置信水平为1-α的区间估计,而是对给定X=x0求预测值及它的概率为1-α的预测区间。
利用R语言的predict()函数可以非常方便求出预测值与预测区间:
> new<-data.frame(x=0.16)
> lm.pred<-predict(lm.sol,new,interval = "prediction",level = 0.95)
> lm.pred
fit lwr upr
1 49.42639 46.36621 52.48657
这里输入一个新的点x=0.16,注意:即使一个点也要采用数据框的形式,predict()函数给出相应的预测值,参数interval = "prediction"表示同时要给出相应的预测区间,参数level=0.95表示相应的概率为0.95.这里也可以省略不写,因为它的缺省值就是0.95。
回归方程还可用于控制,设某质量指标Y与某一自变量X之间有线性相关关系,且已求得线性回归方程Y=β0+β1X,此外,当Y∈(Yi,Yu)为质量合格,那么X应该控制在什么范围内才能以概率1-α保证质量合格,这便是一个控制问题。控制可以看成与预测相反的问题,即要求观察值Y在某一区间(Yi,Yu )取值时,问将X控制在什么范围内。