2.6 相关与回归分析的SAS程序
在阅读以下内容之前,请先阅读第一章“SAS软件基本操作”。
2.6.1 一元线性回归分析
例 2.16 以课本上表10-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;
输出结果见表2-20。
表2-20 例2.16所输出的结果
The SAS System
Model: MODEL1
Dependent Variable: DW
Analysis of Variance
|
|
Sum of |
Mean |
|
|
Source |
DF |
Squares |
Square |
F Value |
Prob>F |
|
|
|
|
|
|
Model |
1 |
2232.14286 |
2232.14286 |
31.566 |
0.0025 |
Error |
5 |
353.57143 |
70.71429 |
|
|
C Total |
6 |
2585.71429 |
|
|
|
Root MSE |
8.40918 |
R-square |
0.8633 |
Dep Mean |
108.57143 |
Adj R-sq |
0.8359 |
C.V. |
7.74530 |
|
|
Parameter Estimates
|
|
Parameter |
Standard |
T for H0: |
|
Variable |
DF |
Estimate |
Error |
Parameter=0 |
Prob>|T| |
|
|
|
|
|
|
INTERCEP |
1 |
81.785714 |
5.72988941 |
14.274 |
0.0001 |
SALT |
1 |
11.160714 |
1.98648174 |
5.618 |
0.0025 |
表2-20的第一部分是对回归所做的方差分析,第二部分给出了截距(表中的INTERCEP),即回归方程中的常数项a,和回归系数b(表中的SALT)。可以得出回归方程:
= 81.785714 + 11.160714X
并给出在H0: a(b) = 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的值也列上而且从小到大顺序排队。
以上程序的输出结果见表2-21。
表2-21 残差分析和置信区间
The SAS System
Model: MODEL1
Dependent Variable: DW
Analysis of Variance
|
|
Sum of |
Mean |
|
|
Source |
DF |
Squares |
Square |
F Value |
Prob>F |
|
|
|
|
|
|
Model |
1 |
2232.14286 |
2232.14286 |
31.566 |
0.0025 |
Error |
5 |
353.57143 |
70.71429 |
|
|
C Total |
6 |
2585.71429 |
|
|
|
Root MSE |
8.40918 |
R-square |
0.8633 |
Dep Mean |
108.57143 |
Adj R-sq |
0.8359 |
C.V. |
7.74530 |
|
|
Parameter Estimates
|
|
Parameter |
Standard |
T for H0: |
|
Variable |
DF |
Estimate |
Error |
Parameter=0 |
Prob>|T| |
|
|
|
|
|
|
INTERCEP |
1 |
81.785714 |
5.72988941 |
14.274 |
0.0001 |
SALT |
1 |
11.160714 |
1.98648174 |
5.618 |
0.0025 |
|
|
Dep Var |
Predict |
Std Err |
Lower95% |
Upper95% |
|
Obs |
SALT |
DW |
Value |
Predict |
Mean |
Mean |
Residual |
|
|
|
|
|
|
|
|
1 |
0.0 |
80.0 |
81.8 |
5.730 |
67.1 |
96.5 |
-1.7857 |
2 |
0.8 |
90.0 |
90.7 |
4.495 |
79.2 |
102.3 |
-0.7143 |
3 |
1.6 |
95.0 |
99.6 |
3.554 |
90.5 |
108.8 |
-4.6429 |
4 |
2.4 |
115.0 |
108.6 |
3.178 |
100.4 |
116.7 |
6.4286 |
5 |
3.2 |
130.0 |
117.5 |
3.554 |
108.4 |
126.6 |
12.5000 |
6 |
4.0 |
115.0 |
126.4 |
4.495 |
114.9 |
138.0 |
-11.4286 |
7 |
4.8 |
135.0 |
135.4 |
5.730 |
120.6 |
150.1 |
-0.3571 |
|
|
Std Err |
Student |
-2-1-0 1 2 |
Cook's |
Obs |
SALT |
Residual |
Residual |
D |
|
|
|
|
|
|
|
1 |
0 |
6.155 |
-0.290 |
|
|
0.036 |
2 |
0.8 |
7.107 |
-0.101 |
|
|
0.002 |
3 |
1.6 |
7.621 |
-0.609 |
* |
|
0.040 |
4 |
2.4 |
7.785 |
0.826 |
|
* |
0.057 |
5 |
3.2 |
7.621 |
1.640 |
|
*** |
0.292 |
6 |
4 |
7.107 |
-1.608 |
*** |
|
0.517 |
7 |
4.8 |
6.155 |
-0.058 |
|
|
0.001 |
Sum of Residuals |
0 |
Sum of Squared Residuals |
353.5714 |
Predicted Resid SS (Press) |
588.3216 |
2.6.2 一元线性回归的图形描述
例 2.17 绘出课本上表10-1所给出数据的散点图、回归线及置信区间。
解: 绘制散点图和回归线的过程步如下:
symbol value = star i = rl width = 2 ;
proc gplot;
plot dw*salt;
run;
上面的SYMBOL语句是规定作图功能的选项,value = star是表示以星号代表散点,i = rl
表示画回归直线,width = 2是回归线要宽一些(缺省时=1)。输出结果见图2-4。
图2-4 表10-1数据的散点图和回归线
只要对上述程序稍做修改,即可得到回归估计值和因变量预报值的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。输出结果见图2-5。
图2-5 表10-1数据的置信区间
2.6.3 一元非线性回归
例 2.18 对课本上例10.11中的数据进行变换,并求出回归方程。
解:
options linesize = 76;
data mutant;
input x y @@;
x = log10(x);
y = log10(y);
cards;
28 8 32 12 40 18 50 28 60 30
72 55 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)等。
以上程序输出结果见表2-22。
表2-22 例2.18输出的结果
The SAS System
Model: MODEL1
Dependent Variable: Y
Analysis of Variance
|
|
Sum of |
Mean |
|
|
Source |
DF |
Squares |
Square |
F Value |
Prob>F |
|
|
|
|
|
|
Model |
1 |
1.05643 |
1.05643 |
282.363 |
0.0001 |
Error |
7 |
0.02619 |
0.00374 |
|
|
C Total |
8 |
1.08262 |
|
|
|
Root MSE |
0.06117 |
R-square |
0.9758 |
Dep Mean |
1.50222 |
Adj R-sq |
0.9724 |
C.V. |
4.07176 |
|
|
Parameter Estimates
|
|
Parameter |
Standard |
T for H0: |
|
Variable |
DF |
Estimate |
Error |
Parameter=0 |
Prob>|T| |
|
|
|
|
|
|
INTERCEP |
1 |
-1.958932 |
0.20698296 |
-9.464 |
0.0001 |
X |
1 |
1.993700 |
0.11864675 |
16.804 |
0.0001 |
2.6.4 相关系数和偏相关系数的计算
利用CORR过程计算变量间相关系数的最简单的语句即:
proc corr;
run;
这时将给出所有变量两两间的相关系数,显著性概率和单变量有关的统计量。为了满足对数据的特殊要求,在PROC CORR中还有许多选项。几个与本教材有关的选项如下:
COV 输出协方差
SSCP 输出平方和与交叉乘积和
NOPROB 不输出与相关性有关的概率
NOSIMPLE 不输出每个变量的简单描述性统计量
在PROC CORR过程中还有一些其它语句。其中常用的有VAR语句,WITH语句和PARTIAL语句等,简单介绍如下:
VAR语句 列出计算相关系数的变量,例如
proc corr;
var a b c;
将计算a、b、c三个变量两两间的相关系数。
WITH语句 WITH语句与VAR语句联合使用,可以计算变量间特殊组合的相关系数。例如:
proc corr;
var a b;
with i j k;
将得到a与i、j、k和b与i、j、k间的相关系数。
PARTIAL语句 在该语句后列出固定变量的名字,则可得到在这些变量不变的情况下,两变量间的偏相关系数(关于偏相关系数的概念见课本11.2.2)。
例 2.19 表2-23给出了高粱在NaCl胁迫后的萎蔫程度(Y)与若干根中蛋白(R)、叶中蛋白(L)和脯氨酸(pro)之间的关系,计算变量间的相关系数。
表2-23 高粱在NaCl胁迫后的萎蔫程度与蛋白及脯氨酸之间的关系
萎蔫度(Y) |
R1 |
R7 |
R8 |
R15 |
L3 |
L9 |
脯氨酸(PRO) |
0.9678 |
101 |
0 |
247 |
0 |
147 |
0 |
0.155 |
0.9661 |
91 |
0 |
272 |
0 |
158 |
0 |
0.119 |
0.9547 |
99 |
0 |
277 |
0 |
102 |
0 |
0.105 |
0.9300 |
79 |
105 |
155 |
0 |
0 |
0 |
0.093 |
1.0045 |
121 |
0 |
0 |
0 |
233 |
0 |
0.227 |
0.9856 |
87 |
0 |
0 |
0 |
176 |
0 |
0.217 |
1.0032 |
119 |
119 |
162 |
373 |
361 |
0 |
0.271 |
0.9735 |
136 |
0 |
0 |
0 |
0 |
0 |
0.351 |
1.0075 |
106 |
232 |
0 |
260 |
288 |
246 |
0.270 |
1.0186 |
84 |
335 |
0 |
248 |
240 |
257 |
0.282 |
0.9725 |
114 |
372 |
0 |
246 |
311 |
237 |
0.234 |
1.0260 |
188 |
391 |
0 |
275 |
259 |
207 |
0.222 |
1.0245 |
181 |
380 |
0 |
320 |
437 |
238 |
0.650 |
1.0364 |
168 |
408 |
0 |
313 |
336 |
212 |
0.407 |
1.0201 |
130 |
472 |
0 |
353 |
340 |
295 |
0.557 |
1.0283 |
146 |
572 |
0 |
357 |
210 |
600 |
0.611 |
解: 先建一个名为2-8data.dat的外部数据文件。SAS程序如下:
options linesize=76;
data protein;
infile ‘a:\2-8data.dat’;
input y r1 r7 r8 r15 l3 l9 pro;
run;
proc corr;
var y r1 pro;
run;
proc corr cov nosimple;
var y pro;
partial r1 r7 r8 r15 l3 l9;
run;
` proc corr sscp;
var y pro;
with r15 l3;
run;
输出结果见表2-24。
表2-24 例2.19的相关分析
The SAS System
Correlation Analysis
3 'VAR' Variables: Y R1 PRO
Simple Statistics
Variable |
N |
Mean |
Std Dev |
Sum |
Minimum |
Maximum |
|
|
|
|
|
|
|
Y |
16 |
0.9950 |
0.0312 |
15.9193 |
0.9300 |
1.0364 |
R1 |
16 |
121.8750 |
34.2226 |
1950 |
79.0000 |
188.0000 |
PRO |
16 |
0.2982 |
0.1749 |
4.7710 |
0.0930 |
0.6500 |
Pearson Correlation Coefficients / Prob > |R| under Ho: Rho=0 / N = 16
|
Y |
R1 |
PRO |
Y |
1.00000 |
0.68332 |
0.72095 |
|
0.0 |
0.0035 |
0.0016 |
R1 |
0.68332 |
1.00000 |
0.64005 |
|
0.0035 |
0.0 |
0.0076 |
PRO |
0.72095 |
0.64005 |
1.00000 |
|
0.0016 |
0.0076 |
0.0 |
The SAS System
Correlation Analysis
6 'PARTIAL' Variables: |
R1 |
R7 |
R8 |
R15 |
L3 |
L9 |
2 'VAR' Variables: |
Y |
PRO |
|
|
|
|
Partial Covariance Matrix DF = 9
|
Y |
PRO |
Y |
0.0002787855 |
-.0000728802 |
PRO |
-.0000728802 |
0.0151535322 |
Pearson Partial Correlation Coefficients
/ Prob > |R| under Ho: Partial Rho=0 / N = 16
|
Y |
PRO |
Y |
1.00000 |
-0.03546 |
|
0.0 |
0.9225 |
PRO |
-0.03546 |
1.00000 |
|
0.9225 |
0.0 |
The SAS System
Correlation Analysis
2 'WITH' Variables: |
R15 |
L3 |
2 'VAR' Variables: |
Y |
PRO |
Sum-of-Squares and Crossproducts
|
Y |
PRO |
R15 |
2789.573000 |
1109.972000 |
L3 |
3623.478500 |
1255.415000 |
Simple Statistics
Variable |
N |
Mean |
Std Dev |
Sum |
Minimum |
Maximum |
|
|
|
|
|
|
|
R15 |
16 |
171.5625 |
160.3874 |
2745 |
0 |
373.0000 |
L3 |
16 |
224.8750 |
124.1971 |
3598 |
0 |
437.0000 |
Y |
16 |
0.9950 |
0.0312 |
15.9193 |
0.9300 |
1.0364 |
PRO |
16 |
0.2982 |
0.1749 |
4.7710 |
0.0930 |
0.6500 |
Pearson Correlation Coefficients / Prob > |R| under Ho: Rho=0 / N = 16
|
Y |
PRO |
R15 |
0.77736 |
0.69279 |
|
0.0004 |
0.0029 |
L3 |
0.74969 |
0.56034 |
|
0.0008 |
0.0240 |
|