12-SAS 相关与回归分析

作者

Simon Zhou

发布于

2025年6月3日

修改于

2025年6月5日

代码
%load_ext saspy.sas_magic

1 直线相关分析

两个变量之间的相关关系分析可以使用 corr过程。如两个变量都来自正态分布的总体,可以作直线相关分析,计算 Pearson 相关系数。

以下数据和程序用来说明如何计算直线相关系数。

数据集可从 Data-collection 处下载。

如可以选择如下方式载入数据集:

  1. 数据集载入 libname 目录下:
libname libname ‘C:\syp\data’;
data = dataset;
    set libname.spec-data;
    where spec-condition;
    keep var1 var2...;
    drop var1 var2...;
    format var1 dollar12. var2 monyy.;
run;

程序说明:

  • libname 语句定义了将在 SAS 的环境中的 SAS 资源管理器下新建一个工作目录;
  • ‘C:\syp\data’ 是数据集所在的路径,指定了你想要导入的数据;
  • data = dataset 是创建一个新的数据集,dataset 是数据集的名称;
  • set libname.spec-data 是从指定的库中读取数据集;
  • where spec-condition 是指定数据集的条件筛选;
  • keep var1 var2... 是指定保留的数据变量;
  • drop var1 var2... 是指定删除的数据变量;
  • format var1 dollar12. var2 monyy. 是指定变量的格式。
  • run; 语句结束数据步。
  1. 或者直接使用 infile 语句读取数据:
data 数据集名;
    infile ‘文件路径+文件名’ <可选参数>;
    input 变量1 变量2...;
run;
  1. 使用 input 语句和 datalines 语句直接输入数据:
代码
%%SAS
/*程序12-1*/
data prg7_1;
    input x y @@;
cards;
12.81 10.23
11.89 10.01
13.51 11.02
10.82 9.08
14.12 12.89
12.53 11.28
11.94 10.59
11.23 10.88
14.72 12.6
12.45 11.26
11.30 10.02
12.08 11.55
;
proc corr;
    var x y;
run;
Using SAS Config named: winlocal
SAS Connection established. Subprocess id is 17040
SAS 输出

SAS 系统

CORR 过程

2 变量: x y
简单统计量
变量 数目 均值 标准差 总和 最小值 最大值
x 12 12.45000 1.18244 149.40000 10.82000 14.72000
y 12 10.95083 1.08520 131.41000 9.08000 12.89000
Pearson 相关系数, N = 12
Prob > |r|, H0: Rho=0
  x y
x
1.00000
 
0.81599
0.0012
y
0.81599
0.0012
1.00000
 

1.1 结果说明

corr 过程首先给出两个变量的一些简单统计量,如例数、均数、标准差、总和、最小值和最大值。

随后输出相关分析的结果,结果中有 Pearson 相关系数,即直线相关系数,还有判断该相关系数是否来自总体相关系数为0的总体假设检验的 P 值(当 \(H_0:Rho=0\) 时,\(Prob>r\)),这两个值位于两个变量名所交叉处,相关系数位于上方,检验结果的 P 值位于下方。

这里 Pearson 相关系数为 r=0.815 99,所对应的 P=0.001 2<0.05说明两个变量之间存在正相关关系,即一个变量的值增大时,另一个变量的值也相应增大。

2 直线回归分析

直线回归分析是研究一个因变量与一个或多个自变量之间的线性关系。SAS 中可以使用 reg 过程和 nlin 过程进行直线回归分析。

直线回归分析是回归分析中较为简单的一种,即两个变量的数值在散点图上呈直线变化,完成直线回归可用 reg 过程。

代码
%%SAS
/*程序12-2*/
data prg_reg;
    input x y @@;
cards;
56 5.32 32 3.21 41 4.67 51 5.03 25 3.01
35 3.57 21 2.98 47 3.93 62 5.62
;
proc reg;
    model y = x;
run;
SAS 输出

SAS 系统

REG 过程

模型: MODEL1

因变量: y

读取的观测数 9
使用的观测数 9
方差分析
自由度 平方
均方 F 值 Pr > F
模型 1 7.61077 7.61077 59.15 0.0001
误差 7 0.90072 0.12867    
校正合计 8 8.51149      
均方根误差 0.35871 R 方 0.8942
因变量均值 4.14889 调整 R 方 0.8791
变异系数 8.64598    
参数估计
变量 自由度 参数
估计
标准
误差
t 值 Pr > |t|
Intercept 1 1.29098 0.39037 3.31 0.0130
x 1 0.06952 0.00904 7.69 0.0001

SAS 系统

REG 过程

模型: MODEL1

因变量: y

“y”的拟合诊断的面板。
“‘x (y)’-残差”散点图。
“y-x”散点图(叠加了拟合线、95% 置信带和 95% 预测上下限)。

2.1 model 语句常用选项

  1. stb 选项:model y = x / stb 计算标准化回归系数,即将自变量和因变量都标准化后进行回归分析,得到的回归系数可以直接比较各个自变量对因变量的影响大小。
  2. p 选项:model y = x / p 计算预测值和残差,即在回归分析中计算每个观测值的预测值和残差,可以用于评估模型的拟合效果。
  3. clb 选项:model y = x / clb 计算回归系数的置信区间,即在回归分析中计算每个回归系数的置信区间,可以用于评估回归系数的可靠性。
  4. cli 输出每个观测预测值的双侧 95%容许区间。
  5. clm 输出每个观测预测值均数的双侧95% 置信区间。
  6. r 输出残差分析的结果,除了输出p选项要求的内容外,还包括预测值和残差的标准误、student 残差和 ConkD 统计量。如果使用了 cliclmr 选项,p 选项就可以省略。语句为 model y=x/cli clm r;
代码
%%SAS
/*程序12-3*/
data prg_reg;
    input x y @@;
cards;
56 5.32 32 3.21 41 4.67 51 5.03 25 3.01
35 3.57 21 2.98 47 3.93 62 5.62
;
proc reg;
    model y = x / cli clm r;
run;
SAS 输出

SAS 系统

REG 过程

模型: MODEL1

因变量: y

读取的观测数 9
使用的观测数 9
方差分析
自由度 平方
均方 F 值 Pr > F
模型 1 7.61077 7.61077 59.15 0.0001
误差 7 0.90072 0.12867    
校正合计 8 8.51149      
均方根误差 0.35871 R 方 0.8942
因变量均值 4.14889 调整 R 方 0.8791
变异系数 8.64598    
参数估计
变量 自由度 参数
估计
标准
误差
t 值 Pr > |t|
Intercept 1 1.29098 0.39037 3.31 0.0130
x 1 0.06952 0.00904 7.69 0.0001

SAS 系统

REG 过程

模型: MODEL1

因变量: y

输出统计量
观测
变量
预测
标准
误差
均值
预测
95% 置信均值 95% 置信预测 残差 标砖误差
残差
Student
残差
Cook D
1 5.32 5.1839 0.1800 4.7582 5.6096 4.2349 6.1330 0.1361 0.310 0.439 0.032
2 3.21 3.5155 0.1452 3.1722 3.8588 2.6005 4.4306 -0.3055 0.328 -0.931 0.085
3 4.67 4.1412 0.1196 3.8584 4.4239 3.2471 5.0353 0.5288 0.338 1.564 0.153
4 5.03 4.8363 0.1493 4.4833 5.1893 3.9176 5.7551 0.1937 0.326 0.594 0.037
5 3.01 3.0289 0.1884 2.5833 3.4745 2.0708 3.9870 -0.0189 0.305 -0.062 0.001
6 3.57 3.7241 0.1317 3.4126 4.0355 2.8205 4.6277 -0.1541 0.334 -0.462 0.017
7 2.98 2.7508 0.2176 2.2363 3.2653 1.7588 3.7429 0.2292 0.285 0.804 0.188
8 3.93 4.5583 0.1309 4.2488 4.8678 3.6553 5.4612 -0.6283 0.334 -1.881 0.272
9 5.62 5.6010 0.2235 5.0725 6.1295 4.6016 6.6004 0.0190 0.281 0.068 0.001
“y”的学生化残差和 Cook D 条形图
残差和 0
残差平方和 0.90072
预测残差 SS (PRESS) 1.26549
“y”的拟合诊断的面板。
“‘x (y)’-残差”散点图。
“y-x”散点图(叠加了拟合线、95% 置信带和 95% 预测上下限)。

结果说明

  • 第 5、6 列为 clm 选项的结果,为预测值均数的 95% 置信区间(95% CL Mean );
  • 第 7、8 列为 cli选项的结果,为预测值的 95%容许区间(95%CPredict);第9列为残差值(Residual);
  • 第 10~12 列为选项r的结果,分别为残差标准误(Sld ErrorResidual)、student 残差值( Student Residual)、和Cook D统计量(Cook’sD),从 Cook’s D统计量可以看出第8观测与其他观测有很大差异,在实际工作中应仔细考察这个观测的情况。

2.2 两条回归直线的比较

使用 glm 过程可以比较两条回归直线,即比较两个不同组别的回归直线是否有显著差异。

代码
%%SAS
/*程序12-4*/
data two_liner;
    input x y c @@;
datalines;
13 3.54 1 11 3.01 1 9 3.09 1 6 2.48 1 8 2.56 1 10 3.36 1 12 3.18 1 7 2.65 1
10 3.01 2 9 2.83 2 11 2.92 2 12 3.09 2 15 3.98 2 16 3.89 2 8 2.21 2 7 2.39 2
10 2.74 2 15 3.36 2
;
proc glm data = two_liner;
    class c;
    model y= x c x*c;
run;
proc glm data = two_liner;
    class c;
    model y = x c;
run;
SAS 输出

SAS 系统

GLM 过程

分类水平信息
分类 水平
c 2 1 2
读取的观测数 18
使用的观测数 18

SAS 系统

GLM 过程

 

因变量: y

自由度 平方和 均方 F 值 Pr > F
模型 3 3.44201996 1.14733999 27.18 <.0001
误差 14 0.59100782 0.04221484    
校正合计 17 4.03302778      
R 方 变异系数 均方根误差 y 均值
0.853458 6.812167 0.205463 3.016111
自由度 I 型 SS 均方 F 值 Pr > F
x 1 3.19449983 3.19449983 75.67 <.0001
c 1 0.21641720 0.21641720 5.13 0.0400
x*c 1 0.03110293 0.03110293 0.74 0.4052
自由度 III 型 SS 均方 F 值 Pr > F
x 1 2.75799086 2.75799086 65.33 <.0001
c 1 0.08377358 0.08377358 1.98 0.1807
x*c 1 0.03110293 0.03110293 0.74 0.4052
“x - y”的协方差分析,按“c”分类

SAS 系统

GLM 过程

分类水平信息
分类 水平
c 2 1 2
读取的观测数 18
使用的观测数 18

SAS 系统

GLM 过程

 

因变量: y

自由度 平方和 均方 F 值 Pr > F
模型 2 3.41091703 1.70545851 41.12 <.0001
误差 15 0.62211075 0.04147405    
校正合计 17 4.03302778      
R 方 变异系数 均方根误差 y 均值
0.845746 6.752131 0.203652 3.016111
自由度 I 型 SS 均方 F 值 Pr > F
x 1 3.19449983 3.19449983 77.02 <.0001
c 1 0.21641720 0.21641720 5.22 0.0373
自由度 III 型 SS 均方 F 值 Pr > F
x 1 3.39583675 3.39583675 81.88 <.0001
c 1 0.21641720 0.21641720 5.22 0.0373
“x - y”的协方差分析,按“c”分类

程序说明

  • 进行两条回归直线比较可调用 glm 过程,在 glm 过程中需定义分组变量,本例为 c。在定义模型时,将变量 xc 同时加入模型中,并考察两者的交互作用,该交互作用就是检验两条直线的回归系数之间差异是否有统计学意义。
  • 第二个 glm 过程没有变量 xc 的交互项,则考察两条回归直线的截距之间的差异是否有统计学意义。

结果说明

  • 第一个 glm 过程的结果中,主要考察 x*c 的交互作用项的 F 值和 P 值。F 值为 0.74,P 值为 0.4052,说明两条回归直线的斜率没有显著差异。
  • 第二个 glm 过程的结果中,主要考察 c 的 F 值和 P 值。F 值为 5.22,P 值为 0.0373,说明两条回归直线的截距有显著差异。

3 秩相关

当样本资料不服从正态分布时,用直线相关不能正确描述两个变量之间的相关关系,此时可考虑用秩相关进行分析。

主要可以使用 proc corr 过程中的 spearman 选项来计算 Spearman 秩相关系数。

数据集可以从 Data-collection 处下载。

代码
%%SAS
/*程序12-5*/
data rank_corr;
    set 'Data\prg7_4.sas7bdat';  /* 从已有数据集读取 */
run;

proc corr data = rank_corr spearman;
    var x y;
run;
SAS 输出

SAS 系统

CORR 过程

2 变量: x y
简单统计量
变量 数目 均值 标准差 中位数 最小值 最大值
x 18 5.55556 8.66889 0.95500 0.03000 27.96000
y 18 5.55556 8.31028 2.89500 0.05000 33.95000
Spearman 相关系数, N = 18
Prob > |r|, H0: Rho=0
  x y
x
1.00000
 
0.90506
<.0001
y
0.90506
<.0001
1.00000
 

3.1 结果说明

该结果的结构与两变量直线相关分析的结构很相似,只是最后计算的相关系数为 Spearman 相关系数。本例秩相关系数为 0.905 06,所对应的 P<0.0001,说明 x 与 y 构成的关系有统计学意义。

4 加权直线回归

前述直线回归方程的最小二乘估计方法对于模型中的每个观测点是同等看待的,反映在确定回归直线时每个点的残差平方和要最小。然而在某些情况下,根据一定的专业知识考虑并结合实际数据,某些观察值对于估计回归方程显得更“重要”而有些并不是很“重要”此时可以采用加权最小二乘估计,以减少方差较大的观测对回归结果的影响。

  1. 加权最小二乘法(WLS):通过观测量方差的倒数对观测进行加权,从而拟合线性回归模型。
  2. 权重的选择:理想的权重是误差方差的倒数,但通常难以计算,因此需要使用其他方法来确定。
  3. 加权回归在处理数据时能够提高模型的准确性,尤其是在数据存在异方差性时。

4.1 示例

序号 年龄/岁(X) IgG抗体水平(Y) \(W=\frac{1}{X^2}\) \(WX=\frac{1}{X}\) \(WY\) \(WXY=\frac{Y}{X}\) \(WY^2=\frac{Y^2}{X^2}\)
1 0.11 4.00 82.64 9.09 330.58 36.36 1322.31
2 0.12 5.10 69.44 8.33 354.17 42.50 1806.25
3 0.21 9.50 22.68 4.76 215.42 45.24 2046.49
4 0.30 9.00 11.11 3.33 100.00 30.00 900.00
5 0.34 17.20 8.65 2.94 148.79 50.59 2559.17
6 0.44 14.00 5.17 2.27 72.31 31.82 1012.40
7 0.56 18.90 3.19 1.79 60.27 33.75 1139.06
8 0.60 29.40 2.78 1.67 81.67 49.00 2401.00
9 0.69 22.10 2.10 1.45 46.42 32.03 1025.86
10 0.80 41.50 1.56 1.25 64.84 51.87 2691.02
合计 4.17 170.70 209.32 36.89 1474.46 403.16 16903.55
代码
%%SAS
/*程序12-6*/
data prg7_5;
    input x y @@;
    w = 1/(x*x);
cards;
0.11 4.00 0.12 5.10 0.21 9.50 0.30 9.00 0.34 17.20 0.44 14.00 0.56 18.90 0.60 29.40
0.69 22.10 0.80 41.50
;
proc reg data = prg7_5;
    weight w;
    model y=x;
run;
Using SAS Config named: winlocal
SAS Connection established. Subprocess id is 33664
SAS 输出

SAS 系统

REG 过程

模型: MODEL1

因变量: y

读取的观测数 10
使用的观测数 10

权重: w

方差分析
自由度 平方
均方 F 值 Pr > F
模型 1 5869.96312 5869.96312 72.53 <.0001
误差 8 647.41204 80.92650    
校正合计 9 6517.37516      
均方根误差 8.99592 R 方 0.9007
因变量均值 7.04403 调整 R 方 0.8882
变异系数 127.70979    
参数估计
变量 自由度 参数
估计
标准
误差
t 值 Pr > |t|
Intercept 1 -0.17197 1.05095 -0.16 0.8741
x 1 40.95053 4.80825 8.52 <.0001

SAS 系统

REG 过程

模型: MODEL1

因变量: y

“y”的拟合诊断的面板。
“‘x (y)’-残差”散点图。
“y-x”散点图(叠加了拟合线、95% 置信带和 95% 预测上下限)。

5 指数曲线会回归

5.1 示例

编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
住院天数(x) 2 5 7 10 14 19 26 31 34 38 45 52 53 60 65
预后指数(y) 54 50 45 37 35 25 20 16 18 13 8 11 8 4 6
代码
%%SAS
/*程序12-7*/
data prg12_7;
    input x y @@;
cards;
2 54 5 50 7 45 10 37 14 35 19 25 26
20 31 16 34 18 38 13 45 8 52 11 53 8
60 4 65 6
;
proc nlin data = prg12_7;
    parms a=0 b=0;
    model y=exp (a+b*x);
run;
SAS 输出

SAS 系统

NLIN 过程

因变量“y”

方法: Gauss-Newton

迭代阶段
迭代 a b 平方和
0 0 0 11425.0
1 2.8413 -0.0470 6455.2
2 3.7352 -0.0365 879.2
3 4.1136 -0.0402 66.2189
4 4.0719 -0.0396 49.4669
5 4.0709 -0.0396 49.4593
6 4.0708 -0.0396 49.4593
NOTE: Convergence criterion met.
估计汇总
方法 Gauss-Newton
迭代 6
子迭代 4
平均子迭代 0.666667
R 6.724E-6
PPC(b) 1.048E-6
RPC(b) 0.000032
对象 4.399E-8
目标 49.4593
读取的观测 15
使用的观测 15
缺失的观测 0

注意:An intercept was not specified for this model.

自由度 平方和 均方 F 值 近似
Pr > F
模型 2 12060.5 6030.3 1585.01 <.0001
误差 13 49.4593 3.8046    
未校正合计 15 12110.0      
参数 估计 近似
标准误差
近似 95% 置信限
a 4.0708 0.0251 4.0166 4.1251
b -0.0396 0.00171 -0.0433 -0.0359
近似相关矩阵
  a b
a 1.0000000 -0.7071474
b -0.7071474 1.0000000

5.2 结果说明

整个结果可以分为五个部分

  1. 第一部分为用高斯-牛顿方法进行迭代,并输出每次迭代确定的参数估计值和残差平方和,本例表明经过6次迭代,误差平方和从 11425.0减小到 49.4593,满足收敛准则,即提示 NOTE:Convergence criterion met,停止迭代。得到回归方程的参数a为 4.0708,b为 -0.039 6.
  2. 第二部分是迭代过程中的一些统计量。R是参数的初步收敛值,PPC是期望参数变化值,RPC是回顾参数变化值,Object是迭代过程中目标函数值的相关改变值。
  3. 第三部分是对模型进行方差分析的结果,方差来源包括回归部分(Model)、残差部分(Error)和未校正平方和( Uncorrected total )。
  4. 第四部分为参数估计的结果,包括参数的估计结果、相应的渐近标准误差和渐近 95% 置信区间,由此得到回归方程为: \(\hat y = e^{4.0708-0.0396 x}\)
  5. 第五部分是方程中的两个参数 a 和 b 的渐近相关矩阵。

5.3 关于高斯-牛顿迭代法

高斯-牛顿迭代法是一种用于非线性回归模型中求解回归参数的迭代方法。其基本思想是使用泰勒级数展开式近似代替非线性回归模型,通过多次迭代修正回归系数,使其不断逼近最佳回归系数,最终使残差平方和达到最小。

基本步骤

  1. 初始值选择:可以根据经验选定初始值,或使用分段法求出初始值,或者通过线性变换后施行最小平方法求出初始值。
  2. 泰勒级数展开:设非线性回归模型为 \(f(X, \beta)\),在初始值附近作泰勒展开,忽略二阶及以上的项。
  3. 估计修正因子:用最小平方法估计修正因子,得到新的迭代值。
  4. 精确度检验:计算残差平方和,若满足给定的误差率则停止迭代,否则继续。
  5. 重复迭代:重复上述步骤,直到满足精度要求。
  6. 重要考虑事项:高斯-牛顿迭代法在迭代点附近区域线性度较好时,收敛速度较快,但在线性度较差时效果不佳。此外,求解过程中涉及矩阵求逆,计算量较大。

6 对数曲线回归

对数回归是一种在方程中包含对数的回归模型。具体来说,在对数回归中,取自变量的对数。

当样本数据形成对数曲线时,对数回归对于拟合回归模型非常有用,从而使回归模型更好地拟合样本数据。

因此,对数回归是非线性回归的一种,就像指数回归和多项式回归一样。

对数回归方程的公式为:

\[y=a+b\cdot \ln(x)\]

6.1 示例

编号 1 2 3 4 5
CRF/(nmol/L) 0.005 0.050 0.500 5.000 25.000
ACTH/(pmol/L) 34.11 57.99 94.49 128.50 169.98
代码
%%SAS
/*程序12-8*/
data prg12_8;
    input x y @@;
cards;
0.005 34.11 0.050 57.99
0.500 94.49 5.000 128.50
25.000 169.98
;
proc nlin data=prg12_8;
    parms a=0 b=0;
    model y=a+b*log10(x);
run;
SAS 输出

SAS 系统

NLIN 过程

因变量“y”

方法: Gauss-Newton

迭代阶段
迭代 a b 平方和
0 0 0 58860.1
1 110.1 36.1154 234.3
NOTE: Convergence criterion met.
估计汇总
方法 Gauss-Newton
迭代 1
R 0
PPC 0
RPC(a) 1.1006E8
对象 0.996019
目标 234.3347
读取的观测 5
使用的观测 5
缺失的观测 0
自由度 平方和 均方 F 值 近似
Pr > F
模型 1 11567.2 11567.2 148.09 0.0012
误差 3 234.3 78.1116    
校正合计 4 11801.6      
参数 估计 近似
标准误差
近似 95% 置信限
a 110.1 4.0953 97.0270 123.1
b 36.1154 2.9678 26.6705 45.5603
近似相关矩阵
  a b
a 1.0000000 0.2617813
b 0.2617813 1.0000000

6.2 回归方程

\[\hat y = 110.1 + 36.1154 log_{10} x\]

7 多元线性回归

多元线性回归是分析一个应变量和多个自变量之间的依存关系,逐步回归则能判断哪些自变量对应变量有影响,哪些没有。

SAS系统可以用 regnlinglmstepwisersregrsquare 等过程来完成,由于每个过程各具特点,因此在使用过程中,应根据需要选择合适的过程。这里介绍最常用的 reg 过程。

7.1 多元线性回归过程的特点介绍

以下是 SAS 中与回归分析相关的 regnlinglmstepwisersreg 等过程的主要特点和应用场景介绍(注:SAS 中无独立的 rsquare 过程,可能是对回归结果中决定系数的误写,故不单独介绍):

  1. REG 过程(线性回归)
  • 主要特点
    • 基础线性回归:用于拟合多元线性回归模型(响应变量为连续变量),支持自变量为连续变量或分类变量(需提前转换为虚拟变量)。
    • 变量选择方法:内置多种变量选择策略,包括:
      • SELECTION=STEPWISE(逐步回归):自动向前引入和向后剔除变量,基于显著性水平(如 SLENTRYSLSTAY)。
      • SELECTION=FORWARD(向前选择):逐步添加显著变量。
      • SELECTION=BACKWARD(向后剔除):逐步删除不显著变量。
      • SELECTION=MAXR(最大 \(R^2\) 增量)、SELECTION=MINR(最小均方误差)等。
    • 输出统计量:提供回归系数、显著性检验(t 检验、F 检验)、决定系数(\(R^2\))、调整 \(R^2\)、残差分析等。
    • 支持交互项和多项式项:可通过 MODEL 语句手动指定复杂项(如 y = x1 x2 x1*x2 x1**2)。
  • 应用场景
    • 分析连续响应变量与多个自变量的线性关系(如房价预测、销售额影响因素分析)。
    • 需要灵活选择变量筛选方法时(逐步回归是最常用的场景)。
    • 示例代码:
    proc reg data=mydata;
       model y = x1 x2 x3 / selection=stepwise slentry=0.05 slstay=0.10;
    run;
  1. NLIN 过程(非线性回归)
  • 主要特点
    • 拟合非线性模型:用于响应变量与自变量存在非线性关系的场景(如指数增长、Logistic 曲线、Michaelis-Menten 动力学等)。
    • 需指定模型形式:用户需手动定义非线性函数形式(通过 PARMS 语句设定初始参数值),SAS 通过迭代算法(如高斯-牛顿法)优化参数。
    • 输出统计量:提供参数估计值、标准误、拟合优度(如残差平方和、决定系数),但解释性弱于线性模型。
  • 应用场景
    • 生物学、化学、工程等领域的非线性关系建模(如药物浓度衰减、酶促反应动力学)。
    • 示例代码(拟合指数模型 y = a*exp(b*x)):
    proc nlin data=mydata;
       parms a=1 b=0.1; /* 初始参数值 */
       model y = a*exp(b*x);
    run;
  1. GLM 过程(广义线性模型)
  • 主要特点
    • 扩展线性回归:允许响应变量服从非正态分布(如二项分布、泊松分布、伽马分布等),通过链接函数将线性预测值与响应变量的均值关联。
    • 支持分类变量:可直接分析因子变量(分类变量)及其交互作用,自动生成方差分析(ANOVA)表。
    • 常见模型
      • 二项分布 + logit 链接:逻辑回归(响应变量为二分类,如患病/未患病)。
      • 泊松分布 + 对数链接:计数数据回归(如网页点击量)。
      • 正态分布 + 恒等链接:等同于传统线性回归(但 GLM 更灵活)。
    • 输出统计量:提供参数估计(优势比、发生率比等)、偏差检验、拟合优度(如 Pearson 卡方、Deviance)。
  • 应用场景
    • 响应变量为分类变量(二分类、多分类)或计数数据时(如客户流失预测、疾病发病率影响因素)。
    • 示例代码(逻辑回归):
    proc glm data=mydata;
       class gender; /* 声明分类变量 */
       model outcome = gender age / dist=binomial link=logit;
    run;
  1. STEPWISE 过程(逐步回归,已弃用)
  • 主要特点
    • 历史过程:早期 SAS 中用于逐步回归的独立过程,目前已被 REG 过程的 SELECTION=STEPWISE 选项替代。
    • 功能局限:仅支持逐步回归(向前引入 + 向后剔除),无法使用其他变量选择方法(如向前选择、向后剔除单独使用)。
    • 输出内容:与 REG 过程的逐步回归结果类似,包括变量进入/剔除步骤、显著性水平、最终模型参数等。
  • 应用场景
    • 仅建议用于兼容旧代码,新场景推荐使用 REG 过程的 SELECTION 选项。
  1. RSREG 过程(响应面回归)
  • 主要特点
    • 实验设计与优化:用于拟合响应面模型(Response Surface Methodology, RSM),分析响应变量与多个自变量的非线性关系(通常为二次模型),寻找最优工艺条件。
    • 模型形式:自动拟合包含一次项、二次项和交互项的模型(如 ( y = 0 + i x_i + {ii}x_i^2 + {ij}x_i x_j ))。
    • 支持设计类型:中心复合设计(CCD)、Box-Behnken 设计等,内置实验设计功能。
    • 输出结果:提供模型参数、响应面图、等高线图、最优点估计(如最大值、最小值)。
  • 应用场景
    • 工业优化(如化工反应条件优化、产品配方设计)、生物医药实验(如药物剂量-效应关系)。
    • 示例代码:
    proc rsreg data=mydata;
       model y = x1 x2 / design=ccd; /* 使用中心复合设计 */
    run;

7.2 选择建议

需求场景 推荐过程 理由
连续响应变量的线性回归 REG 基础线性模型,支持多种变量选择方法
非线性关系建模 NLIN 需自定义非线性函数形式
非正态响应变量(分类/计数数据) GLM 广义线性模型,支持二项式、泊松等分布
自动变量选择(逐步回归) REGSELECTION 替代传统 STEPWISE 过程,更灵活
响应面分析与优化 RSREG 内置实验设计,支持二次模型和交互项,适用于寻优

7.3 注意事项

  • STEPWISE 过程在新版 SAS 中可能被标记为弃用,建议优先使用 REG 过程的 SELECTION 选项。
  • 回归分析前需验证假设(如线性关系、正态性、方差齐性、无多重共线性等),可通过 REGGLM 过程的残差分析实现。
  • 对于高维数据(自变量数量多),可结合 REG 过程的正则化方法(如 LASSO、岭回归,需加载 SAS/STAT 模块)。

7.4 多元线性回归示例

1个反应变量 y ,和3个自变量 \(x_1\),\(x_2\),\(x_3\)

代码
%%SAS
/*程序12-9*/
data multi_reg;
    set 'Data\prg7_8.sas7bdat';  /* 从已有数据集读取 */
run;

proc reg;
    model y = x1-x3;
run;
SAS 输出

SAS 系统

REG 过程

模型: MODEL1

因变量: y

读取的观测数 16
使用的观测数 16
方差分析
自由度 平方
均方 F 值 Pr > F
模型 3 1883479 627826 14.31 0.0003
误差 12 526521 43877    
校正合计 15 2410000      
均方根误差 209.46778 R 方 0.7815
因变量均值 2275.00000 调整 R 方 0.7269
变异系数 9.20738    
参数估计
变量 自由度 参数
估计
标准
误差
t 值 Pr > |t|
Intercept 1 -2922.22620 1459.15441 -2.00 0.0683
x1 1 68.89352 23.86651 2.89 0.0137
x2 1 31.95682 16.11436 1.98 0.0707
x3 1 84.69245 78.11936 1.08 0.2996

SAS 系统

REG 过程

模型: MODEL1

因变量: y

“y”的拟合诊断的面板。
“‘y’的回归变量-残差”散点图面板。

7.5 逐步法

筛选的方法有前进法、后退法、逐步法等,最常用是逐步法。现仍参照上例数据,讨论如何用SAS 完成逐步回归。

程序中增加 /selection = stepwise sle =0.10 sls = 0.15 stb 语句,其中 selection=stepwise 表示将用逐步法筛选变量;stb 表示将输出标准化偏回归系数,sle=0.10sls=0.15 选项表示在筛选变量时入选标准为 0.10,剔除标准为 0.15.

代码
%%SAS
/*程序12-10*/
proc reg data = multi_reg;
    model y= x1 x2 x3/selection = stepwise sle =0.10 sls = 0.15 stb;
run;
SAS 输出

SAS 系统

REG 过程

模型: MODEL1

因变量: y

读取的观测数 16
使用的观测数 16

逐步选择: 第 1 步

变量 x1 已输入: R 方 = 0.6110 和 C(p) = 9.3658

方差分析
自由度 平方
均方 F 值 Pr > F
模型 1 1472539 1472539 21.99 0.0003
误差 14 937461 66962    
校正合计 15 2410000      
变量 参数
估计
标准
误差
II 型 SS F 值 Pr > F
Intercept -1783.27616 867.82268 282749 4.22 0.0590
x1 100.51458 21.43426 1472539 21.99 0.0003

条件数字的边界: 1, 1

逐步选择: 第 2 步

变量 x2 已输入: R 方 = 0.7601 和 C(p) = 3.1754

方差分析
自由度 平方
均方 F 值 Pr > F
模型 2 1831908 915954 20.60 <.0001
误差 13 578092 44469    
校正合计 15 2410000      
变量 参数
估计
标准
误差
II 型 SS F 值 Pr > F
Intercept -4019.79958 1057.87260 642090 14.44 0.0022
x1 85.75822 18.22215 984932 22.15 0.0004
x2 40.38947 14.20772 359369 8.08 0.0138

条件数字的边界: 1.0883, 4.3533

留在模型中的所有变量的显著性水平都为 0.1500。

没有其他变量满足 0.1000 显著性水平,无法输入该模型。

“逐步选择”的汇总
进入的
变量
删除的
变量
进入的
变量数

R 方
模型
R 方
C(p) F 值 Pr > F
1 x1   1 0.6110 0.6110 9.3658 21.99 0.0003
2 x2   2 0.1491 0.7601 3.1754 8.08 0.0138

SAS 系统

REG 过程

模型: MODEL1

因变量: y

读取的观测数 16
使用的观测数 16
方差分析
自由度 平方
均方 F 值 Pr > F
模型 2 1831908 915954 20.60 <.0001
误差 13 578092 44469    
校正合计 15 2410000      
均方根误差 210.87586 R 方 0.7601
因变量均值 2275.00000 调整 R 方 0.7232
变异系数 9.26927    
参数估计
变量 自由度 参数
估计
标准
误差
t 值 Pr > |t| 标准化
估计
Intercept 1 -4019.79958 1057.87260 -3.80 0.0022 0
x1 1 85.75822 18.22215 4.71 0.0004 0.66692
x2 1 40.38947 14.20772 2.84 0.0138 0.40285

SAS 系统

REG 过程

模型: MODEL1

因变量: y

“y”的拟合诊断的面板。
“‘y’的回归变量-残差”散点图面板。
过程

7.6 后退法

如果用前进法和后退法来筛选变量,可以在 model 后加上选项 forwardbackward

程序说明: 该程序和逐步回归程序的不同点在于 selection= 语句后面的方法有所不同,本程序选择的是 backward,表示后退法。

代码
%%SAS
/*程序12-11*/
proc reg data = multi_reg;
    model y= x1 x2 x3/selection = backward;
run;
SAS 输出

SAS 系统

REG 过程

模型: MODEL1

因变量: y

读取的观测数 16
使用的观测数 16

向后消除: 第 0 步

所有变量已输入: R 方 = 0.7815 和 C(p) = 4.0000

方差分析
自由度 平方
均方 F 值 Pr > F
模型 3 1883479 627826 14.31 0.0003
误差 12 526521 43877    
校正合计 15 2410000      
变量 参数
估计
标准
误差
II 型 SS F 值 Pr > F
Intercept -2922.22620 1459.15441 175979 4.01 0.0683
x1 68.89352 23.86651 365606 8.33 0.0137
x2 31.95682 16.11436 172558 3.93 0.0707
x3 84.69245 78.11936 51571 1.18 0.2996

条件数字的边界: 2.4281, 17.217

向后消除: 第 1 步

变量 x3 已删除: R 方 = 0.7601 和 C(p) = 3.1754

方差分析
自由度 平方
均方 F 值 Pr > F
模型 2 1831908 915954 20.60 <.0001
误差 13 578092 44469    
校正合计 15 2410000      
变量 参数
估计
标准
误差
II 型 SS F 值 Pr > F
Intercept -4019.79958 1057.87260 642090 14.44 0.0022
x1 85.75822 18.22215 984932 22.15 0.0004
x2 40.38947 14.20772 359369 8.08 0.0138

条件数字的边界: 1.0883, 4.3533

留在模型中的所有变量的显著性水平都为 0.1000。

“向后消除”的汇总
删除的
变量
进入的
变量数

R 方
模型
R 方
C(p) F 值 Pr > F
1 x3 2 0.0214 0.7601 3.1754 1.18 0.2996

SAS 系统

REG 过程

模型: MODEL1

因变量: y

“y”的拟合诊断的面板。
“‘y’的回归变量-残差”散点图面板。
过程

8 CORR 过程和 REG 过程常用选项和语句详解

在使用 SAS 进行相关分析和回归分析时,CORR 过程和 REG 过程是最常用的工具。通过灵活配置选项和语句,可以更精确地控制分析过程并获取所需结果。

8.1 CORR 过程(相关分析)

基本格式

proc corr <选项>;
    var 变量名1 变量名2 <变量名3>...;    /* 指定参与分析的变量 */
    with 变量名1 <变量名2>...;         /* 指定与var变量计算相关系数的变量 */
run;

常用选项

  1. PEARSON
    • 功能:计算皮尔逊积矩相关系数(默认选项),适用于两个连续变量呈线性关系的场景。
    • 示例proc corr pearson;
  2. SPEARMAN
    • 功能:计算斯皮尔曼等级相关系数,基于变量的秩次而非原始值,适用于非正态分布或非线性关系的数据。
    • 示例proc corr spearman;
  3. NOMISS
    • 功能:排除任何包含缺失值的观测(行),确保计算基于完整数据。
    • 对比:默认行为是 NOMISS 的列版本(NOMISSCOL),仅排除特定变量有缺失值的观测。
  4. 其他实用选项
    • KENDALL:计算肯德尔 τ 相关系数(适用于有序分类变量)。
    • COV:输出协方差矩阵而非相关系数矩阵。
    • PVALUE:显示相关系数的 p 值(默认包含)。

8.2 REG 过程(回归分析)

基本格式

proc reg data=数据集名 <选项>;
    model 应变量 = 自变量1 <自变量2>... / <选项>;  /* 定义回归模型 */
    plot 变量表达式;                             /* 绘制残差图等诊断图 */
    var 变量名1 <变量名2>...;                   /* 指定分析变量范围 */
    freq 变量名;                                /* 指定频数变量 */
    weight 变量名;                              /* 指定权重变量 */
    by 变量名1 <变量名2>...;                    /* 分组分析 */
run;

MODEL 语句常用选项

  1. NOINT
    • 功能:不拟合截距项(强制回归直线过原点)。
    • 注意:慎用此选项,可能导致模型解释困难或违反统计假设。
  2. 共线性诊断选项
    • COLIN:计算方差膨胀因子(VIF)和条件指数,诊断自变量间的多重共线性。
    • COLLINOINT:在 COLIN 基础上包含截距项,适用于检验截距是否受共线性影响。
  3. 变量选择方法
    • SELECTION=STEPWISE:逐步回归(向前引入+向后剔除)。
    • SELECTION=FORWARD:向前选择法。
    • SELECTION=BACKWARD:向后剔除法。
    • 控制参数SLENTRY=0.05(引入变量的显著性水平)、SLSTAY=0.10(保留变量的显著性水平)。
  4. 残差分析选项
    • R:输出残差、预测值和学生化残差。
    • P:生成预测值和残差数据集。
    • DW:计算 Durbin-Watson 统计量(检验残差自相关)。
  5. 其他实用选项
    • STB:输出标准化回归系数(β 系数)。
    • CLMCLI:分别计算均值和个体预测值的置信区间。
    • OUTPUT OUT=新数据集名:将结果保存到新数据集。

8.3 三、对比与最佳实践

场景 推荐选项/语句 说明
检验非正态分布变量的相关性 proc corr spearman; 斯皮尔曼等级相关系数不依赖分布假设。
处理缺失值 proc corr nomiss; 确保所有变量无缺失值时进行计算。
诊断多重共线性 model y = x1 x2 x3 / colin; VIF > 10 或条件指数 > 30 提示严重共线性。
自动筛选显著变量 model y = x1-x10 / selection=stepwise slentry=0.05; 逐步引入 p < 0.05 的变量。
绘制残差图 plot r.*p.plot residual.*predicted. 检测残差是否符合正态分布和等方差性假设。

8.4 五、注意事项

  1. 共线性处理:若发现严重共线性,可尝试删除冗余变量、合并变量或使用主成分回归。
  2. 缺失值策略NOMISS 可能导致样本量大幅减少,建议先使用 PROC MI 进行多重插补。
  3. 模型验证:始终检查残差图和诊断统计量(如 Durbin-Watson、Shapiro-Wilk 检验)。
  4. 逐步回归的局限性:变量选择结果可能受输入顺序影响,最终模型需结合专业知识验证。