一、用REG过程进行回归分析
SAS/STAT中提供了几个回归分析过程,包括REG(回归)、RSREG(二次响应面回归)、ORTHOREG(病态数据回归)、NLIN(非线性回归)、TRANSREG(变换回归)、CALIS(线性结构方程和路径分析)、GLM(一般线性模型)、GENMOD(广义线性模型),等等。我们这里只介绍REG过程,其它过程的使用请参考《SAS系统――SAS/STAT软件使用手册》。
REG过程的基本用法为:
PROCREGDATA=输入数据集选项;
    VAR可参与建模的变量列表;
    MODEL因变量=自变量表/选项;
    PRINT输出结果;
    PLOT诊断图形;
RUN;
REG过程是交互式过程,在使用了RUN语句提交了若干个过程步语句后可以继续写其它的REG过程步语句,提交运行,直到提交QUIT语句或开始其它过程步或数据步才终止。
例如,我们对SASUSER.CLASS中的WEIGHT用HEIGHT和AGE建模,可以用如下的简单REG过程调用:
procregdata=sasuser.class;
varweightheightage;
modelweight=heightage;
run;
就可以在输出窗口产生如下结果,注意程序窗口的标题行显示“PROCREGRunning”表示REG过程还在运行,并没有终止。
Seeoutput
AGE的作用不显著,所以我们只要再提交如下语句:
modelweight=height;
run;
weight什么时候用复数
就可以得到第二个模型结果:
Seeoutput
事实上,REG提供了自动选择最优自变量子集的选项。在MODEL语句中加上“SELECTION=选择方法”的选项就可以自动挑选自变量,选择方法有NONE(全用,这是缺省)、FORWARD(逐步引入法)、BACKWARD(逐步剔除法)、STEPWISE(逐步筛选法)、MAXR(最大增量法)、MINR(最小增量法)、RSQUARE(选择法)、ADJRSQ(修正选择法)、CP(Mallows的统计量法)。比如,我们用如下程序:
modelweight=heightage/selection=stepwise;
run;
可得到如下结果:
Seeoutput
可见只有变量HEIGHT进入了模型,而其它变量(AGE)则不能进入模型。
REG过程给出的缺省结果比较少。如果要输出高分辨率诊断图形的话需要在PROCREG过程语句中加上GRAPHICS选项,用PRINT语句和PLOT语句显示额外的结果。为了显示模型的预测值(拟合值)和95%预测界限,使用语句
printcli;
run;
得到如下的结果:
Seeoutput
各列分别为观测序号(Obs),因变量的值(DepVar),预测值(PredictValue),预测值的标准误差(StdErrPredict),95%预测区间下限(Lower95%Predict),95%预测区间上限(Upper95%Predict),残差(Residual,为因变量值减预测值)。在表后又给出了残差的总和(SumofResiduals),残差平方和(SumofSquaredResiduals),预测残差的平方和(PredictedResidSS(Press))。所谓预测残差,是在计算第i号观测的残差时从实际值中减去的预报值是用扣除第i号观测后的样本得到的模型产生的预报值,而不是我们一般所用的预测值(实际是拟合值)。第i号样本的预测残差还可以用公式来计算,其中为帽子矩阵的第i个主对角线元素。
用printcli列出的是实际值的预测界限,还可以列出模型均值的预测界限,使用
printclm;
run;
语句。在PRINT语句中可以指定的有ACOV,ALL,CLI,CLM,COLLIN,COLLINOINT,COOKD,CORRB,COVB,DW,I,INFLUENCE,P,PARTIAL,PCORR1,PCORR2,R,SCORR1,SCORR2,SEQB,SPEC,SS1,SS2,STB,TOL,VIF,XPX,等等。
对于自变量是一元的情况,可以在自变量和因变量的散点图上附加回归直线和均值置信界限。比如,
plotweight*height/conf95;
run;
可以产生图4,在图的上方列出了模型方程,右方还给出了观测个数、、修正、均方误差开根。在PLOT语句中可以使用PREDICTED.、RESIDUAL.等特殊名字表示预测值、残差等计算出的变量,比如,在自变量为多元时无法作回归直线,常用的诊断图表为残差对预测值图,就可以用
plotresidual.*predicted.;
run;
绘制。为了绘制学生化残差的图形,可以用
plotrstudent.*obs.;
run;
回归分析的其它用法及进一步的诊断方法请参考有关统计书籍和SAS使用手册。
二、SAS常用程序——回归分析
相关与回归分析的SAS程序 
一元回归分析
1一元线性回归分析
 例1数据见解答中程序,求出一元回归方程、检验回归显著性并求出回归及预测值的0.95置信区间。
解:使用PROCREG过程进行分析,SAS程序如下:
optionslinesize=76;
datasoil;
inputsaltdw@@;
cards;
0        800.8901.6952.41153.21304.01154.8135
procreg;
modeldw=salt;
run;
输出结果见output。
第一部分是对回归所做的方差分析,第二部分给出了截距(表中的INTERCEP),即回归方程中的常数项a,和回归系数b(表中的SALT)。可以得出回归方程:
Y=81.785714+11.160714X
并给出在H0:α(β)=0下,对ab所做的t检验。
为了得到残差和置信区间,可以将过程步做以下补充:
procsortout=sorted;
bysalt;
run;
procregdata=sorted;
modeldw=salt/rclm;
idsalt;
run;
 
PROCSORT语句是要对最新创建的数据集soil进行排序。PROCSORT语句中必须使用BY语句,用来说明对哪一个变量排序。“OUT=”后面是排序后新数据集的名称。
MODEL语句中有许多选项,其中的几个选项如下:
CLM回归估计值0.95置信区间的上界和下界。
CLI因变量预报值的0.95置信区间。
P由输入数据和回归方程计算预报值。输出观测序号,ID变量(需事先规定ID语句),实际值,预报值和残差。如果已规定了CLMCLIR,选项P就不需要了。
R要求残差分析,输出包括选项P的一切内容外,还有其它一些分析(见例题)。
    IDSALT语句的含义是在输出预报值和残差时,把SALT的值也列上而且从小到大顺序排队。
    以上程序的输出结果见output。