咱们的SAS矩阵交互语言IML就要完结了,本文将会用IML编一个回归程序。无论你需要一元的还是多元的回归模型,该程序都能计算出模型的系数、t检验以及t检验的p值、F检验以及F检验的P值、R2。
本文会综合用到前面几节的内容(回复【SASIML】查看全部):
- 入门 | SAS里的平行世界
- 函数 | 函数玩一玩
- 编程 | IML的条件与循环
- 模块 | 5分钟懂模块
- 穿越 | 矩阵与数据集的穿越
- 作业 | 编一个SAS回归软件
如果前面都没有看过,没关系,根据下面的代码提示,翻阅相关内容,可以把五集的内容过一遍。
用SAS编一个回归软件 | 【SAS Says · 扩展篇】IML:作业
上次Ansta留给自己的作业是:
Sashelp逻辑库中有一个关于GNP的数据sashelp.gnp,要求用1961、1962、1963三年的数据建立回归模型: GNP = consump invest 用的变量有:
- GNP-gross national product ($billions)
- Consump-personal consumption expenditures
- Invest-gross private domestic investment
要求:给出系数、R2、t检验的p值。
可以说,把这一道题弄明白了,基本前面几节的内容都掌握的差不对了。
Part 1
可爱的代码
先把我自己的代码贴出来。
我们再跑一边proc reg,对比两种方法的结果:
data gnp_1963;
set sashelp.gnp;
if _n_ <17;
keep gnp consump invest;
proc reg;
model gnp= consump invest;
run;
IML跑出来的结果为:
ProcReg跑出来的结果为:
怎样?beta值、t值、F值、R2都是一样的吧!
由于ProcReg的P值只给到<0.0001,没有具体的数字,我用R也跑了一遍:
T检验的P值,和我们用IML跑出来的也是一样的吧?
这个例子用到了我们前面说的很多内容,我们还可以把第二步到最后的部分打包成一个模块regress,然后下次有其他数据回归的时候,直接调用即可——Run regress;
Part 2
理论的回忆
有p元线性回归模型:
记
则p元线性回归模型简写为
同时,有
下面,我们就来对多元回归模型的拟合、检验过程进行推导:
一、系数的最小二乘拟合
用最小二乘法估计参数b。记
最小二乘法估计就是要选取
使得
因为H(b)是b0、b1、…、bp的非负二次式,且关于b0、b1、…、bp均可微,由微积分原理,b是下列方程的解:
下面先求出
。因为
对H(b) 求微商,得:
令:-2X'y 2X'Xb = 0
得:X'Xb = X'y
当
存在时,b的最小二乘估计
为
预测向量
就为:
二、回归模型的检验
(1) 可决系数
(2)F检验
(3)t检验
由于
以Cii表示(X’X)-1上主对角线的第i个元素,于是参数估计量的方差为:
因此,
服从如下分布:
其中σ2为随机误差项的方差,在实际计算时用它的估计量代替:
因此对回归系数的t检验,就可以构造如下t统计量:
当然…首先…你要明白什么是t检验…
回归系数t检验的假设是beta=0,因此,在原假设成立的情况下,t统计量的值为:
到此还没结束,因为这里有一个很重要的地方大家会忽略,就是α和α/2的问题,导致计算P值的时候容易出错。
正常我们用查表法怎么判别?
给定显著性水平α,查表得临界值
,对比计算出来的t和
;
那么用P值法呢?
计算出来的t,通过分布概率函数得到t对应的那个p/2,那么再乘以2,就是要求的P值了。