一、用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% Pre
dict),残差(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;
080 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
并给出在H0: α(β) = 0下,对a和b所做的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语句),实际值,预报值和残差。如果已规定了CLM、CLI或R,选项P就不需要了。
正则化的回归分析R 要求残差分析,输出包括选项P的一切内容外,还有其它一些分析(见例题)。
ID SALT语句的含义是在输出预报值和残差时,把SALT的值也列上而且从小到大顺序排队。
以上程序的输出结果见output。
2 一元线性回归的图形描述
例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;
288 32 12 40 18 50 28 60 30
7255 80 61 80 85 85 80
run;
proc reg;
model y = x;
run;
这里使用赋值语句x = log10(x)和y = log10(y)对数据进行变换。除常用对数外,SAS还提供许多其它函数。如,指数函数exp(x),自然对数log(x),反正弦函数arsin(x),标准正态分布函数probnorm(x)等。
以上程序输出结果见output。
多元回归分析的SAS程序
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论