310 likes | 552 Views
第九讲 回归分析. 统计模型简介 一元线性回归模型 多元线性回归模型. 统计模型简介. 两种进行 统计模型分析 的手段 一、使用 S 语言 编程功能 二、使用 Statistics 菜单功能. 一 一元线性回归模型. 概述 用编程功能做线性回归 模型拟合 过程分析 回归诊断 回归诊断图 诊断分析 用菜单功能做一元线性回归. 1.1 概述. 线性回归模型是实际中应用最广泛的一类统计模型。 一是 因为它的简单性,它描述的变量间回归关系是最简单的线性形式;
E N D
第九讲 回归分析 • 统计模型简介 • 一元线性回归模型 • 多元线性回归模型
统计模型简介 两种进行 统计模型分析 的手段 一、使用S语言 编程功能 二、使用Statistics菜单功能
一 一元线性回归模型 • 概述 • 用编程功能做线性回归 • 模型拟合 • 过程分析 • 回归诊断 • 回归诊断图 • 诊断分析 • 用菜单功能做一元线性回归
1.1 概述 线性回归模型是实际中应用最广泛的一类统计模型。 一是因为它的简单性,它描述的变量间回归关系是最简单的线性形式; 二是因为在许多实际情形下,变量之间的关系大都可以近似地用线性关系来近似。 一元线性回归模型: 因变量 与一个自变量 (也称为解释变量)之间满足下面的关系: , 其中 , 为表示与间线性关系的未知参数,称为回归系数。 为随机误差。服从正态分布 ,误差的标准差 也为未知参数
模型的解释 因变量 主要受自变量 的影响,而且这一影响是线性的: ;其他所有因素对因变量的影响均可归结在随机因素 之中。如果样本 , ,..., 是对总体 的n次独立观察值,则 且 , ,..., 相互独立,具有相同的正态分布 。这就是回归分析中最简单的一元线性回归模型。模型的拟合都采用经典的最小二乘法来实现。
1.2 用编程功能做线性回归 • 1.2.1 模型拟合 上表为内部数据集air,共4个变量,111个观测,是纽约市连续111天的空气中的臭氧浓度等变量的指标。 我们做温度变量temperature对大气层臭氧浓度ozone的影响,即做ozone为响应变量(response variable),以temperature为解释变量(explanatory variable)的一元线性回归,使用lm( )即可实现 >attach(air) >air.fit1_lm(ozone~temperature,data=air)
1.2.2 回归分析 >names(air.fit1) #查看模型队形air.fit1中所有元素的名称 >air.fit1$coef #查看回归方程的系数 >summary(air.fit1) #回归分析做总结性输出 Call: lm(formula = ozone ~ temperature, data = air) Residuals: Min 1Q Median 3Q Max -1.49 -0.4258 0.02521 0.3636 2.044 #以上第一部分 Coefficients: Value Std.Error t value Pr(>|t|) (Intercept) -2.2260 0.4614 -4.8243 0.0000 temperature 0.0704 0.0059 11.9511 0.0000 Residual standard error: 0.5885 on 109 degrees of freedom Multiple R-Squared: 0.5672 F-statistic: 142.8 on 1 and 109 degrees of freedom,the p-value is 0 Correlation of Coefficients: (Intercept) temperature -0.9926 #以上第二部分 输出结果
第一部分是关于残差信息的简单描述,反映出模型拟合效果的大体情况。由于线性模型中的随机误差通常假定为正态分布,如果模型假设正确,则模型拟合残差也应服从正态分布。因此,人们经常用残差信息来检验模型及其随机误差的正态分布假设是否正确。如果残差分布被怀疑是有偏的,可通过更为正式的残差分析进行检验,以此来判断选用该线性模型拟合当前数据是否恰当。第一部分是关于残差信息的简单描述,反映出模型拟合效果的大体情况。由于线性模型中的随机误差通常假定为正态分布,如果模型假设正确,则模型拟合残差也应服从正态分布。因此,人们经常用残差信息来检验模型及其随机误差的正态分布假设是否正确。如果残差分布被怀疑是有偏的,可通过更为正式的残差分析进行检验,以此来判断选用该线性模型拟合当前数据是否恰当。 第二部分是关于回归系数方面的信息,包括回归系数的估计值、标准误差、t-统计量值和相应的p-值。回归系数是否显著(即是否明显不等于零)可以通过t检验来给出判断。从该部分给出的p-值可看出回归系数都是非常显著的。 根据回归系数的估计值,我们可以写出如下的线性回归方程 : 残差标准差为9.466(可看成是对的估计),常用于各种检验统计量的计算。复相关系数R2=0.5672,说明回归方程可以解释大约56.7%的Y值的变化。F-统计量给出了对回归方程的整体检验,检验的p值为零,表示回归方程也是非常显著的。
1.2.3 回归诊断 • 回归诊断图 从上面对air.fit1的summary信息可以看到,拟合得到的回归方程非常显著,似乎可以得出结论:所选模型对数据的拟合十分恰当。但是,作为一个完整和恰当的回归分析的一部分,你必须做残差分析,用以判断模型的假设是否正确,称之为回归诊断。下面的四幅图可以用来做直观方式的回归诊断,它们包括数据的散点图、残差的直方图、残差对拟合值的散点图以及残差的QQ-图。 >par(mfrow=c(2,2)) #一页四图 >attach(air) #连接air数据集 >plot(temperature,ozone) #画出散点图 >hist(resid(air.fit1)) #画出拟和残差直方图 >plot(fitted(air.fit1),resid(air.fit1)) #拟合残差对回归拟合值的散点图 >abline(h=0) #添加水平线 >lines(lowess(fitted(air.fit1),resid(air.fit1))) #lowess曲线,验证残差趋势性 >qqnorm(resid(air.fit1)) #残差QQ图,验证残差正态性
回归诊断图 回归诊断组图 第一图:近似线性; 第二图:右偏; 第三图:lowess曲线中间低两边高,存在趋势; 第四图:QQ图和QQ线基本重合,右边散点处于线上方,右侧分布轻尾
1.3 用菜单功能做一元线性回归 对air数据集做ozone关于temperature回归 步骤 • 通过Object Explorer调入数据集air • 点Statistics Regression Linear ...,系统自动弹出一线性回归对话框: • 模型设定:对话框的首页既为模型页面。在Data Set框中选中一元线性回归要分析的数据集air;在Dependent 复选框选中回归的应变量ozone;在Independent框中选择用作解释变量的temperature。在Formula框中就会自动生成该一元线性回归的模型公式,也可以直接在Formula中键入方程,更复杂模型公式可以利用Create Formua来建立。你可以在Save Model Object中输入一个文件名,如air.fit1,用以保存模型的全部拟合结果。正如前面所看到的,生成后的文件air.fit1是一个模型对象,可用Object Explorer或命令窗口中打开,也可以对它进行命令式操作,如summary(air.fit1),plot(air.fit1),coef(air.fit1),resid(air.fit1)等等。 • 输出结果:打开Results页面,可以看到两个栏目:Printed Results 和Saved Results。在左侧的栏目中选择你需要系统显示出来的输出结果,系统将它们显示Report文件中。我们选择Long Output和ANOVA Table。如果你只需要简洁的输出报告,可以选择Short Output;如果你需要回归系数估计量的相关系数矩阵,可选择Correlation Matrix of Estimator。在右侧的栏目中,你可以选择需要保存的结果:Fitted Value(拟合值)和Residuals(残差)。可用于进一步的作图和残差分析等。当然,这些结果只是模型对象的一部分。 • 回归诊断图: 打开Plot页面,在左面的Plots栏中选择所要的图形。我们选择Residuals vs Fit(残差对拟合值图)、Response vs Fit(应变量对拟合值图)、Residals Normal QQ(残差的QQ图)和Cook’s Distance(Cook距离图)。在右侧的Options栏中选择Include Smooth,表明在上述的所有散点图中都配以lowess曲线。
线性回归model页面 线性回归result页面
二 多元线性回归 • 概述 • 用编程功能做多元线性回归 • 模型句法 • 模型拟合 • 变量选择 • 回归诊断 • 用菜单功能做多元线性回归 • 模型拟合 • 变量选择 • 回归诊断
二 多元线性回归模型 2.1 概述 在实际问题中影响因变量 的因素通常不止一个。如果我们考虑多个影响因子 ,且假定它们对 的影响都是线性的,则有下面的多元线性回归模型: , 其中 是未知的,称为回归系数; 随机误差 ,参数 为未知的随机误差标准差。当我们有了对模型的 次独立观测
则有: 随机误差 独立同分布于 使用矩阵来表示上述模型。记 则: 这就是常用的多元线性模型的矩阵表示形式。 模型的拟合都采用经典的最小二乘法来实现。
2.2 用编程功能实现多元回归 • 模型句法 lm( ) >fitted.model_lm(formula,data=data,frame) 其中data.frame为各变量所在的数据框,formula为模型公式,fitted.model用于存储模型函数lm( )产生的拟合结果,来作进一步回归分析和诊断 formula公式: response~explanatory 例:ozone~temperature #ozone对温度的回归 ozone~temperature+(-1) #不含截距项回归 ozone~temperature+radiation #多变量回归 ozone~. #ozone以外都是自变量
2.2.2 模型拟合 针对第一节中,变量temperature解释ozone不够充分,这里增加解释变量radiation做多元分析, >air.fit2_lm(ozone~temperature+radiation) #做ozone关于temperature和radiation的回归 >air.fit2_update(air.fit1,.~.+radiation,data=air) #通过update函数在一元模型基础上添加新的解释变量 .~.省略原模型 >summary(air.fit2) #输出二元线性回归结果 >add1(air.fit1,.~.+radiation+wind,data=air) #通过add1函数依次只添加一个变量来判断模型差异 >air.fit3_lm(ozone~.,data=air) #生成全模型 >drop1(air.fit3,~temperature+radiation+wind) #通过drop1函数剔除某个变量后的模型判断差异
Summary( )结果分析 Call: lm(formula = ozone ~ temperature + radiation, data = air) Residuals: Min 1Q Median 3Q Max -1.183 -0.4025 -0.03355 0.2965 1.95 Coefficients: Value Std. Error t value Pr(>|t|) (Intercept) -2.1530 0.4398 -4.8951 0.0000 #截距和两个变量 temperature 0.0643 0.0059 10.9681 0.0000 #都非常 radiation 0.0021 0.0006 3.4968 0.0007 #显著 Residual standard error: 0.5603 on 108 degrees of freedom Multiple R-Squared: 0.6112 #R2由0.5672增到0.6112,引入新变量所致 F-statistic: 84.88 on 2 and 108 degrees of freedom, the p-value is 0 Correlation of Coefficients: #F检验,回归方程显著 (Intercept) temperature temperature -0.9616 radiation 0.0474 -0.2941
add1( )结果分析 Single term additions Model: ozone ~ temperature Df Sum of Sq RSS Cp <none> 37.74698 39.13219 radiation 1 3.839049 33.90793 35.98575 wind 1 5.839621 31.90736 33.98517 分析: 模型拟合效果的评价准则: 最小的Cp值,最小的RSS和最大的残差平方和, 可得添加wind变量是最优的
drop1( )结果分析 Single term deletions Model: ozone ~ temperature + radiation + wind Df Sum of Sq RSS Cp <none> 27.84808 29.93018 temperature 1 17.48174 45.32982 46.89140 radiation 1 4.05928 31.90736 33.46893 wind 1 6.05985 33.90793 35.46950 分析: 从输出结果看出,原模型的残差平方和最小,Cp统计量的值最小,则原模型是最优的
2.2.3 变量选择 • 逐步回归(stepwise),splus中有step( )函数 • 例: >air.step_step(air.fit3,scope=list(upper=~.,lower=~1)) #air.fit3为设定的搜索初始模型,这里为全模型 scope为搜索的范围,这里为从全模型到只含常数项的零模型进行搜索,另外还可以使用direction参数设置搜索方向,取值为’both’,’forward’,’backward’
逐步回归结果分析 Start: AIC= 29.9302 ozone ~ temperature + radiation + wind Single term deletions Model: ozone ~ temperature + radiation + wind scale: 0.2602624 Df Sum of Sq RSS Cp <none> 27.84808 29.93018 temperature 1 17.48174 45.32982 46.89140 radiation 1 4.05928 31.90736 33.46893 wind 1 6.05985 33.90793 35.46950 分析:由RSS,Cp结果可得全模型为最优
2.2.4 回归诊断 >par(mfrow=c(3,2)) >plot(air.fit3) #可以得到回归诊断图,共六副图如下: 1、残差对拟合值散点图; 2、残差绝对值平方根对拟合值散点图; 3、因变量对拟合值散点图; 4、残差得正态QQ图; 5、残差和拟合值的取值范围图; 6、Cook距离图。 如果plot中加载参数ask=T,可以有选择画图 分析:前两幅图可用来判断是否有异常值存在、是否有异方差存在以及残差中是否有趋势成分。第三幅图常用来判断模型的拟合优度,散点与回归线越接近,拟合程度越好。QQ图用来检查残差是否服从正态分布,常以此来检查模型的正态分布假设是否正确。如果图中的点基本与QQ线重合,就可以认为随机扰动项服从正态分布。第五幅图用来对比拟合值的取值范围和残差的取值范围。模型要解释的是观测值的变动,如果拟合值的范围大于残差的范围,那么解释变量对因变量的作用是显著的,否则就不显著。第六幅图可用来判断哪些观察值点是重大影响点。
回归诊断图 结果分析: 可能存在异常值(20、23、77),但基本上没有异方差,残差随拟合值的变动没有表现出一定的规律(上面两个图);因变量真实值与拟合值较为接近,拟合效果较好(中左图);随机项可以认为是近似服从正态分布的(中右图);残差的范围比拟合值的范围要小,解释变量对因变量来说是重要的(下左图);样本值17、30、77可能是重大影响点(下右图)。
2.3 用菜单功能做多元线性回归 2.3.1 模型拟合 1.调入数据集air 2. 点击Statistics Regression Linear Model…出现一个线性回归对话框,在Data Set选中air,Dependent 选中ozone,Independent选(用Ctrl+Click)temperature、radiation、wind,在Formula中就会自动生成公式。 3. 点击 Results页面,选中Long Output和ANOVA 4. 选OK或Apply
2.3.2 变量选择 • 调入数据集air • 点击Statistics Regression Stepwise Model…出现一个逐步线性回归对话框。首页即为模型设定页面。在Data Set选中数据集air,在Upper Formula和Lower Formula中分别界定模型搜索的上下范围,其中Upper Formula是必须设定的。比如,在Upper Formula中键入ozone~temperature+radiation+wind, 在Lower Formula中键入ozone~1,1 表示只含有截距项的最简单模型。在Stepping Options中有两个选择:一是选择模型搜索方向,可选择both backward、forward;另一个是选择是否打印模型选择过程的“轨迹”。可以在Save As:框中输入变量名,将最终模型的拟合结果储存起来。 • 在Results页面,选中你需要的输出 • 点击Ok 或Apply
2.3.3 回归诊断 1.调入数据集air 2. 点击Statistics Regression Linear Model…。 出现一个线性回归对话框, 在Data Set选中air, Dependent 选中ozone, Independent同时选中 (用Ctrl+Click)temperature、 radiation、wind, 在Formula中就会自动生成公式。 3. 打开 Plot 页面,在Plots中 选中你想要作的图形 4.点击OK或Apply。
第六次作业(4.17-5.7) • 用SPlus做一个关于线性模型的应用案例,并做试验报告 注:自己动手找寻数据,使用书中第六章 《统计模型》的具体方法做数据分析,给出你的结论,写成报告。不要使用书上现成的数据分析,最多四人一组.