1回归分析一、回归分析:是建立因变量Y与自变量X之间关系的模型,一元线性回归使用一个自变量X,多元线性回归使用超过一个自变量,如:)2(,...,,21pXXXp.1线性回归模型ppXXY...110,进行n次独立观测:iippiiXXY...110,i=1,2,…,ni称为残差向量2回归系数显著性检验:判断某一自变量jX的系数j是否为0,如果统计量(t表示)的P值(通常取0.05),认为0j。3回归方程显著性检验:检查是否可用线性方程来处理数据。即检验方程系数p,...,,10是否全为0,如果统计量(F表示)的P值,认为可以用线性方程来处理问题。4相关性检验:检验因变量Y与自变量X相关性程度。用相关系数的平方2R来衡量,2R的值接近1表示相关,接近0表示不相关。二、线性回归模型的计算1、lm()函数:完成多元线性回归系数的估计、回归系数的检验、回归方程的检验等工作,返回值称为拟合结果的对象,本质上是一个具有类属性值lm的列表.格式:lm(formula,data,subset,weights,na.action,method=”qr”,model=TRUE,x=FALSE,y=FALSE,qr=TRUE,singular.ok=TRUE,contrasts=NULL,offset,…)formula为模型公式,形如y~1+x1+x2的形式,表示常数项、1X的系数和2X的系数,去掉公式中的1,其意义不变。拟合成齐次线性模型:y~0+x1+x2或y~-1+x1+x2的形式;data为数据框,由样本数据构成;subset为可选项,表示所使用的样本子集;weights为可选向量,表示对应样本的权重;na.action为函数,表示当数据中出现缺失数据(NA)的处理方法;2method为估计回归系数的计算方法,默认值为“qr”;model、x、y、qr为逻辑变量,如果取TRUE,函数的返回值将给出模型的框架、模型矩阵、响应变量,及QR分解;singular.ok为逻辑变量,取FALSE表示奇异值拟合是错误的;contrasts为可选列表;offset为NULL,或者是数值向量。…为附加参数。2、summary()函数lm()函数的返回值称为拟合结果的对象,是一个有类属性值lm的列表,有model,coefficients,residuals(残差)等成员,为了获得更多信息,summary()常与lm()函数一起使用,格式:summary(object,correlation=FALSE,symbolic.cor=FALSE,…)参数意义:object为lm()函数生成的对象,correlation为逻辑变量,取TRUE表示给出估计参数的相关矩阵,symbolic.cor为逻辑变量,取TRUE表示用符号形式给出估计参数的相关矩阵,此参数只有当correlation=TRUE时才有效。例1年龄相等情况下,建立血压的收缩压Y与体重1X(kg),年龄2X(岁数)有关,建立Y与1X,2X的线性回归方程。解blood-data.frame(X1=c(76.0,91.5,85.5,82.5,79.0,80.5,74.5,79.0,85.0,76.5,82.0,95.0,92.5),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.sol-lm(Y~1+X1+X2,data=blood)summary(lm.sol)运行结果:Call:lm(formula=Y~1+X1+X2,data=blood)###调出函数使用的模型Residuals:(残差)###列出残差Min1QMedian3QMax-4.0404-1.01830.46400.69084.3274Coefficients:##列出估计值、估计值的标准差、t统计量、对应t统计量的P值EstimateStd.ErrortvaluePr(|t|)(Intercept)-62.9633616.99976-3.7040.004083**X12.136560.1753412.1852.53e-07***X20.400220.083214.8100.000713***---极为显著***,高度显著**,显著*Signif.codes:0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1Residualstandarderror:2.854on10degreesoffreedom###残差的标准差3MultipleR-squared:0.9461,AdjustedR-squared:0.9354##相关系数的平方,修正相关系数的平方F-statistic:87.84on2and10DF,p-value:4.531e-07###F统计量,F统计量对应的P值回归方程与回归系数的检验都是显著的,回归方程为:214002.0136.296.62ˆXXY3预测区间与置信区间如果回归效果显著,就可以利用回归方程进行预测,即对给定的回归自变量值,预测因变量可能的取值范围,是一个区间估计问题。假设0x=Tpxxxx),...,,,(0030201,回归方程的真实值(未知):0001100...ppxxy相应的估计值:ppxxy001100ˆ...ˆˆˆpredict()函数计算0y的估计值、预测区间和置信区间。格式:predict(object,newdata,se.fit=FALSE,scale=NULL,df=Inf,interval=c(“none”,”confidence”,”prediction”),level=0.95,type=c(“response”,”terms”),terms=NULL,na.action=na.pass,pred.var=res.var/weights,weights=1,…)参数意义:object为lm()函数得到的对象;newdata为数据框,由预测点构成,如取默认值,将计算已知数据的回归值;se.fit为逻辑变量,取TRUE表示输出预测值的标准差、自由度和残差尺度信息;scale为计算标准差的尺度参数;df为尺度参数的自由度;interval为计算的区间类型,取“none”(默认值)表示不计算,取”confidence”表示计算置信区间,取”prediction”表示计算预测区间;level为置信水平,默认值为0.95,在计算置信区间和预测区间时用到;type为预测类型,或者取“response”(默认值),或者取”terms”,当type=”terms”时,为全部选择项;terms为选择项,只能取NULL,1,2等;na.action为函数,表示处理newdata中有缺失数据(NA)时的处理方法,默认预测为NA.pred.var预测区间的方差;weights为数值向量或单侧模型公式,用于预测时方差的权;…附加参数。例2继续上面的例1,设Tx)40,80(0,求0y的估计值、预测区间和置信区间(置信水平为0.95)。解blood-data.frame(X1=c(76.0,91.5,85.5,82.5,79.0,80.5,74.5,79.0,85.0,76.5,82.0,95.0,92.5),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)4)lm.sol-lm(Y~1+X1+X2,data=blood)newdata-data.frame(X1=80,X2=40)predict(lm.sol,newdata,interval=prediction)predict(lm.sol,newdata,interval=confidence)例分析合金强度Y与合金中含碳量X之间的关系:(它们之间的一组数据如下)(1)完成一元线性回归的计算;(2)计算自变量x在区间[0.10,0.23]内的回归方程的预测估计值、预测区间和置信区间(取05.0),并将数据点、预测估计曲线、预测区间曲线和置信区间曲线画在同一张图上。解##回归估计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)lm.sol-lm(y~1+x)summary(lm.sol)##计算预测值,并绘图new-data.frame(x=seq(0.10,0.24,by=0.01))##取x的范围值pp-predict(lm.sol,new,interval=prediction)pc-predict(lm.sol,new,interval=confidence)par(mai=c(0.8,0.8,0.2,0.2))matplot(new$x,cbind(pp,pc[,-1]),type=l,######绘出矩形各列pp和pc[,-1]共5列xlab=X,ylab=Y,lty=c(1,5,5,2,2),col=c(blue,red,red,brown,brown),lwd=2)points(x,y,cex=1.4,pch=21,col=red,bg=orange)###真实值x,ylegend(0.1,63,c(Points,Fitted,Prediction,Confidence),###如果是字符串,用c(“”),而不用expr1数学表达式pch=c(19,NA,NA,NA),lty=c(NA,1,5,2),col=c(orange,blue,red,brown))savePlot(predict,type=eps)三、回归诊断为什么要做回归诊断?因为有些数值例子得到的回归方程尽管通过了t检验和F检验,但做线性回归方程还是有问题的。如Anscombe在1973年构造的数据集给出4组数据拟合简单的线性模型:iiixy10,得到的结果:[[1]]EstimateStd.ErrortvaluePr(|t|)(Intercept)3.00009091.12474682.6673480.025734051x10.50009090.11790554.2414550.0021696295[[2]]EstimateStd.ErrortvaluePr(|t|)(Intercept)3.0009091.12530242.6667580.025758941x20.5000000.11796374.2385900.002178816[[3]]EstimateStd.ErrortvaluePr(|t|)(Intercept)3.00245451.12448122.6700800.025619109x30.49972730.11787774.2393720.002176305[[4]]EstimateStd.ErrortvaluePr(|t|)(Intercept)3.00172731.12392112.6707630.025590425x40.49990910.11781894.2430280.002164602并且进一步检验4组数据的2R、F值检验全合格,但绘出图分析4组数据做线性回归模型不是全合格:只有第一组数据适合做线性回归模型。1残差检验检验模型误差是否满足正态性和方差齐性。1)用残差图检验,残差为纵坐标,拟合值或数据观测序号或数据观测时间做横坐标,做出的散点图称为残差图。6(a)(b)(c)正常情况异方差情况非线性情况有异常值点的情况检查1)有无有异常值点;