一、用REG过程进行回归分析
SAS/STAT中提供了几个回归分析过程,包括REG(回归)、RSREG(二次响应面回归)、ORTHOREG(病态数据回归)、NLIN(非线性回归)、TRANSREG(变换回归)、CALIS(线性结构方程和路径分析)、GLM(一般线性模型)、GENMOD(广义线性模型),等等。我们这里只介绍REG过程,其它过程的使用请参考《SAS系统――SAS/STAT软件使用手册》。
REG过程的基本用法为:
PROC REG DATA=输入数据集 选项;
    VAR  可参与建模的变量列表;
    MODEL 因变量=自变量表 / 选项;
    PRINT  输出结果;
    PLOT  诊断图形;
RUN;
REG过程是交互式过程,在使用了RUN语句提交了若干个过程步语句后可以继续写其它的REG 过程步语句,提交运行,直到提交QUIT语句或开始其它过程步或数据步才终止。
例如,我们对SASUSER.CLASS中的WEIGHT用HEIGHT和AGE建模,可以用如下的简单REG 过程调用:
proc reg data=sasuser.class;
var weight height age;
model weight=height age;
run;
就可以在输出窗口产生如下结果,注意程序窗口的标题行显示“PROC REG Running”表示REG 过程还在运行,并没有终止。
See output
AGE的作用不显著,所以我们只要再提交如下语句:
model weight=height;
run;
就可以得到第二个模型结果:
See output
事实上,REG提供了自动选择最优自变量子集的选项。在MODEL语句中加上“SELECTION= 选择方法”的选项就可以自动挑选自变量,选择方法有NONE(全用,这是缺省)、FORWARD (逐步引入法)、BACKWARD(逐步剔除法)、STEPWISE(逐步筛选法)、MAXR(最大 增量法)、MINR(最小 增量法)、RSQUARE( 选择法)、ADJRSQ(修正 选择法)、CP(Mallows的 统计量法)。比如,我们用如下程序:
  model weight=height age / selection=stepwise;
  run;
可得到如下结果:
See output
可见只有变量HEIGHT进入了模型,而其它变量(AGE)则不能进入模型。
REG过程给出的缺省结果比较少。如果要输出高分辨率诊断图形的话需要在PROC REG 过程语句中加上GRAPHICS选项,用PRINT语句和PLOT语句显示额外的结果。为了显示模型的预测值(拟合值)和95%预测界限,使用语句
print cli;
run;
得到如下的结果:
See output
各列分别为观测序号(Obs),因变量的值(Dep Var),预测值(Predict Value),预测值的标准误差(Std Err Predict),95%预测区间下限(Lower 95% Predict),95%预测区间上限(Upper 95% Predict),残差(Residual,为因变量值减预测值)。在表后又给出了残差的总和(Sum of Residuals),残差平方和(Sum of Squared Residuals),预测残差的平方和(Predicted Resid SS (Press))。所谓预测残差,是在计算第 i号观测的残差时从实际值中减去的预报值是用扣除第i号观测后的样本得到的模型产生的预报值,而不是我们一般所用的预测值(实际是拟合值)。第i号样本的预测残差还可以用公式 来计算,其中 为帽子矩阵 的第 i个主对角线元素。
用print cli列出的是实际值的预测界限,还可以列出模型均值的预测界限,使用
print clm;
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,等等。
对于自变量是一元的情况,可以在自变量和因变量的散点图上附加回归直线和均值置信界限。比如,
plot weight * height / conf95;
run;
可以产生图 4,在图的上方列出了模型方程,右方还给出了观测个数、 、修正 、均方误差开根。在PLOT语句中可以使用PREDICTED. 、RESIDUAL.等特殊名字表示预测值、残差等计算出的变量,比如,在自变量为多元时无法作回归直线,常用的诊断图表为残差对预测值图,就可以用
plot residual. * predicted.;
run;
绘制。为了绘制学生化残差的图形,可以用
plot rstudent. * obs.;
run;
回归分析的其它用法及进一步的诊断方法请参考有关统计书籍和SAS使用手册。
二、SAS常用程序——回归分析
相关与回归分析的SAS程序 
一元回归分析
1 一元线性回归分析
  1  数据见解答中程序,求出一元回归方程、检验回归显著性并求出回归及预测值的0.95置信区间。
解: 使用PROC REG过程进行分析,SAS程序如下:
options  linesize = 76;
data  soil;
input  salt  dw  @@;
cards;
0        80  0.8  90  1.6  95  2.4  115  3.2  130  4.0  115  4.8  135
proc  reg;
model  dw = salt;
run;
输出结果见output。
第一部分是对回归所做的方差分析,第二部分给出了截距(表中的INTERCEP),即回归方程中的常数项a,和回归系数b(表中的SALT)。可以得出回归方程:
                        Y = 81.785714 + 11.160714X
并给出在H用sort out0: undefined(undefined) = 0下,对ab所做的t检验。
为了得到残差和置信区间,可以将过程步做以下补充:
proc  sort  out = sorted;
by  salt;
run;
proc  reg  data = sorted;
model  dw = salt / r  clm;
id  salt;
run;
 
PROC SORT 语句是要对最新创建的数据集soil进行排序。PROC SORT语句中必须使用BY语句,用来说明对哪一个变量排序。“OUT=” 后面是排序后新数据集的名称。
MODEL语句中有许多选项,其中的几个选项如下:
CLM    回归估计值0.95置信区间的上界和下界。
CLI    因变量预报值的0.95置信区间。
P      由输入数据和回归方程计算预报值。输出观测序号,ID变量(需事先规定ID语句),实际值,预报值和残差。如果已规定了CLMCLIR,选项P就不需要了。
R      要求残差分析,输出包括选项P的一切内容外,还有其它一些分析(见例题)。
    ID SALT语句的含义是在输出预报值和残差时,把SALT的值也列上而且从小到大顺序排队。
    以上程序的输出结果见output。
一元线性回归的图形描述
  2  绘出上例所给出数据的散点图、回归线及置信区间。
解: 绘制散点图和回归线的过程步如下:
symbol  value = star  i = rl  width = 2 ;
proc gplot;
plot  dw*salt;
run;
上面的SYMBOL语句是规定作图功能的选项,value = star是表示以星号代表散点,i = rl
表示画回归直线,width = 2是回归线要宽一些(缺省时=1)。输出结果见graph1。
 
只要对上述程序稍做修改,即可得到回归估计值和因变量预报值的0.95置信区间。
symbol1  ci = black  i = rlclm95  width = 1;
symbol2  ci = black  i = rlcli95  width = 2;
proc  gplot;
plot  dw*salt  dw*salt / overlay;
run;
因为这里是两个图绘在同一幅上,所以使用选项overlay。输出结果见graph1。 
3一元非线性回归
  3  对所给数据进行变换,并求出回归方程。
解:
options  linesize = 76;
data  mutant;
input  x  y  @@;
x = log10(x);
y = log10(y);
cards;