You are on page 1of 314

SAS 操作入门 编者:江南大学 吴有炜 1

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

前言

SAS 是处理数据强有力的统计软件,SASV8 版是 SAS 的最新版本,界面友善,操作方便.


编写<<SAS 操作入门>>的目的为了帮助初次接触 SAS 软件者,减轻他们使用该软件的困难,
<<SAS 操作入门>>包括了常见数据处理方法,指导人们处理数据时编相应 SAS 程序或调用
SAS 菜单系统完成处理工作. <<SAS 操作入门>>用 Word 编写存于光盘,使用者处理数据时
只要很方便地将<<SAS 操作入门>>中相应例子的程序里的数据改成自己的数据,再粘贴到
SAS 的编辑窗口运行即可;或者按<<SAS 操作入门>>中使用菜单系统的每一指示步骤轻松
地完成处理任务.
每章均有习题,需用 SAS 完成,书后附了所有习题的 SAS 程序. <<SAS 操作入门>>中所
有例题及习题的 SAS 程序均经过运行验证无误,所有例题及习题的数据文件及方法的 SAS
程序均可在光盘的 v8 文件中找到.
<<SAS 操作入门>>侧重软件使用的操作过程, 没有侧重介绍处理数据的统计方法的数
学原理, 欲了解统计原理可另参阅相关书籍. <<SAS 操作入门>>也不是 SAS 使用手册,没有
全面介绍 SAS 的功能、SAS 程序、SAS 程序的选项,要全面了解掌握 SAS 请参阅相关书籍
及 SAS 手册.
编者

2003.6
SAS 操作入门 编者:江南大学 吴有炜 2

目录

前言..................................................................................................................................................1
目录......................................................................................................................................................2
统计方法作用一览 ..............................................................................................................................7
(1) 描述性统计分析 ............................................................................................................................... 7
(2) 相关性分析 ....................................................................................................................................... 8
(3) 分析检验变量对变量影响的显著性................................................................................................ 9
(4) 变量间的函数关系------回归分析 ..................................................................................................... 9
(5) 多变量的降维 ................................................................................................................................... 9
(6) 指标变量或样本变量的分类或归类............................................................................................ 10

第一章 SAS 的启动与 SAS (V8 版)系统简介 .................................................................................... 11

第一节 SAS 的启动...........................................................................................................................12


1.SAS 的启动 .................................................................................................................................12
2.SAS 的三个主要窗口 .................................................................................................................12
(1) Program Editor 窗口 ........................................................................................................................... 13
(2)Log 窗口 ............................................................................................................................................... 13
(3)Output 窗口........................................................................................................................................... 13
3. 演示 SAS 操作的一个例 ........................................................................................................13
4. SAS 的菜单条介绍 ...............................................................................................................15
第二节 SAS 系统产品介绍...............................................................................................................18
1. Base Sas ..................................................................................................................................18
2. SAS/STAT.................................................................................................................................18
3. SAS/INSIGHT..........................................................................................................................18
4. SAS/ASSIT ...............................................................................................................................18
5. SAS/ETS ..................................................................................................................................19
6. SAS/OR....................................................................................................................................19
7. SAS/QC....................................................................................................................................19
8. SAS/IML ..................................................................................................................................19
9. SAS/GRAPH. ...........................................................................................................................19
10. SAS/EIS .................................................................................................................................19
11. SAS/ACCESS .........................................................................................................................20
12. SAS/LAB ................................................................................................................................20
第三节 推荐几个子系统.................................................................................................................20
1. SAS/ ANALYSIS 下的十四个模块 .............................................................................................20
2. 重点推荐的模块-------- ..........................................................................................................21
SAS/STAT-Analyst Application 分析员应用系统...........................................................................21
3. 重点推荐的模块-------- ..........................................................................................................25
交互式的数据探索和分析系统:SAS/INSIGHT 系统 ...................................................................25
4. 推荐的模块-------- Design of Experiments 试验设计(ADX 模块)...........................................26

第二章 DATA 数据步 ..........................................................................................................................34

2
SAS 操作入门 编者:江南大学 吴有炜 3

第一节 不同方法的输入.................................................................................................................34
1. 方法一: 在程序作业流中输入数据 ......................................................................................34
2. 方法二: 调用磁盘上的数据..................................................................................................35
(1) 编程进行 ............................................................................................................................................. 35
(2) 利用菜单系统调用磁盘上数据 ......................................................................................................... 36
3. 方法三: 调用其它 SAS 数据集中的数据 .............................................................................36
4. 方法四: 利用子系统 INSIGHT 输入或调用数据.................................................................37
5. 方法五: 利用子系统 SAS/STAT-Analyst Application(分析员应用)输入或调用数据 ..........38
第二节 数据集的拆分、合并(纵向)和拼接(横向) .........................................................................38
1. 数据集的数据的删选拆分 .....................................................................................................38
2.数据集的纵向合并(增加样本量) ..............................................................................................39
3. 两个数据集按一共有变量名横向合并(增加指标变量).........................................................40
第三节 不同形式数据的输入和变量变换 .....................................................................................41
1 一维变量 ..................................................................................................................................41
2 带下标变量及向量 ..................................................................................................................42
3. 二维向量 ...............................................................................................................................44
4.FORMAT 语句转换解释变量值 ................................................................................................47
第四节 SAS 数据集转换成外部数据文件或输出报表 ...................................................................49
1. 方法一: 用菜单系统输出 SAS 数据集 .............................................................................49
2. 方法二: 编程输出 SAS 数据集 .........................................................................................49
3. SAS—Output 窗口的结果输出 ..................................................................................................50
第五节 SAS 的运算符和函数 ..........................................................................................................51
1. SAS 的运算符 ............................................................................................................................51
2.sas 函数.......................................................................................................................................51
(1) 概率分布函数 ................................................................................................................................... 51
(2) 分位数函数 ....................................................................................................................................... 52
(3) 样本统计函数 ................................................................................................................................... 52
(4) 随机数函数 ......................................................................................................................................... 53
(5)一般函数.......................................................................................................................................... 54

第三章 描述性统计分析 ......................................................................................................................55

第一节 描述性统计量的定义 ..........................................................................................................55


1. 表示位置的特征值 .................................................................................................................55
2. 表示离散程度的特征值 .........................................................................................................56
3. 表示分布形状的特征量 .........................................................................................................56
第二节 编程进行.............................................................................................................................56
1. Means 语句和其它产生描述性统计量语句 .........................................................................56
(1) Means 语句 .......................................................................................................................................... 56
(2)Summary 语句 ...................................................................................................................................... 60
(3)Univariate 语句 ..................................................................................................................................... 63
(4) tabulate 语句(制作数据表) ................................................................................................................. 64
(5) Rank 语句(有序变量转换成名次变量) .............................................................................................. 67
2. FREQ 过程生成频数表..........................................................................................................69
第三节 利用菜单系统.....................................................................................................................71
1. 利用分析员系统(Analyst)作频数表等描述性分析...............................................................71
2. 利用 SAS/INSIGHT 数据探索性分析系统作描述性分析 ....................................................72
(1) 讨论数据的分布
........: .............................................................................................................................. 73
(2) ....:.......................................................................................................................................... 74
作直方图
(3) ................................................................................................................................ 75
作分组数据的盒形图

3
SAS 操作入门 编者:江南大学 吴有炜 4

3.对数据 E34 的描述性分析 ........................................................................................................76


第四节 统计图 ..................................................................................................................................77
1.条形图.........................................................................................................................................77
2. 直方图.......................................................................................................................................79
3. 圆饼图.....................................................................................................................................81
4. 盒形图.......................................................................................................................................83
5. 散点图.......................................................................................................................................85
6. 折线图.......................................................................................................................................86
7.(回归)曲线图 ..............................................................................................................................87
8. 等值线图 ...................................................................................................................................89
9. 三维曲面图 .............................................................................................................................90
(1) 利用菜单系统 ..................................................................................................................................... 90
(2) 编程序作三维曲面图 ......................................................................................................................... 91
习题三................................................................................................................................................93

第四章 参数估计和假设检验 ..............................................................................................................94

第一节 单个总体均值和方差的检验...............................................................................................94
1. 单个总体均值和方差的区间估计 .........................................................................................95
(1)求均值 a 的区间估计 ........................................................................................................................... 95
(2) 单个总体方差σ2 的区间估计 ......................................................................................................... 97
2. 单个总体均值和方差的检验 .................................................................................................98
(1)均值 a 的假设检验 ............................................................................................................................... 98
(2) 单总体方差σ2 的假设检验 ............................................................................................................. 99
第二节 两组均值比较...................................................................................................................100
1. 两个独立总体均值差的检验 .................................................................................................100
(1) 用菜单系统比较两个独立总体均值差的参数检验........................................................................ 100
(2) 编程比较两个独立组均值的非参数检验------Wilcoxon 秩和检验................................................ 101
(3) 比较分析两个独立组均值的 t—检验和其它程序..................................................................... 101
2. 成对数据组均值差的检验 ...................................................................................................104
(1)方法 1 编程进行 .............................................................................................................................. 105
(2)方法 2 利用分析员菜单系统 .......................................................................................................... 106
第三节 正态性检验.......................................................................................................................106
1. 利用 Univariate 过程对一组数据进行正态性检验 ............................................................106
2. 利用 SAS/INSIGHT 数据探索性分析系统 ..........................................................................107
第四节 对 100 名学生身高体重数据(数据见程序中)编程进行的系列分析.............................107
习题四..............................................................................................................................................109

第五章 方差分析与协方差分析 ................................................................................................ 110

第一节 编程序进行....................................................................................................................... 111


1. 单因素方差分析 .................................................................................................................. 113
(1) 概括性比较:...................................................................................................................................... 113
1 比较各组的常规统计量-------SORT 和 MEANS 过程 ...................................................................... 113

2 比较各组的直观图形-----CHART 过程 ............................................................................................. 113

(2) 单因素方差分析 ............................................................................................................................... 115
(3) 单因素协方差分析(有一个协变量)............................................................................................... 116
2. 两因素方差分析 ..................................................................................................................... 119
(1) 两因素考虑交互作用 ....................................................................................................................... 119
(2) 两因素考虑交互作用且有一个协变量.......................................................................................... 120
第二节 用菜单系统进行 ................................................................................................................121
1. 利用分析员应用系统进行单因素方差分析 .......................................................................121

4
SAS 操作入门 编者:江南大学 吴有炜 5

3. 利用分析员应用系统进行多因素方差分析 .......................................................................122
习题五..............................................................................................................................................124

第六章 回归分析 ............................................................................................................................128

第一节 编程序进行 ........................................................................................................................129


1. 多元线性回归与 reg 过程 ....................................................................................................129
2. 逐步回归求最优回归方程 ...................................................................................................131
3. 多项式回归转化为多元线性回归 ......................................................................................133
4. 非线性回归 ...........................................................................................................................134
5. 非线性回归中初值的一种确定方法 ...................................................................................136
6.二分数据回归 ...........................................................................................................................137
7. LOGISTIC 回归 ...................................................................................................................139
8. ORTHOREG 正交回归 .........................................................................................................142
9. RSREG 响应面回归和岭迹分析 ....................................................................................144
(1) 响应面分析 ..................................................................................................................................... 145
(2) 岭迹分析 ........................................................................................................................................... 147
(3) 作响应面图的程序 ........................................................................................................................... 150
10. 变量间的线性相关系数 .....................................................................................................152
第二节 利用菜单系统进行回归分析.............................................................................................155
1. 多元线性回归(包括求变量间的相关系数) ........................................................................155
2. 一元回归(及一元多项式回归) ............................................................................................157
3. Logistic 回归(二分或有序变量回归)...................................................................................157
第三节 回归诊断 ............................................................................................................................158
1. 残差分析 ...............................................................................................................................159
(1) 遗漏显著因素引起的残差增加 ..................................................................................................... 159
(2) 遗漏因素的作用显著的高次项(或交互项)引起的残差 ................................................................. 161
2. 多变量的复共线性诊断 .......................................................................................................163
(1)复共线性的诊断标准 ......................................................................................................................... 163
(2) 求最优回归方程的 R2 选择法与逐步回归选择法 .......................................................................... 164
(3) 岭回归方法 ..................................................................................................................................... 165
(4) 主成份法 ........................................................................................................................................... 167
(5) ORTHOREG 正交回归法............................................................................................................... 167
(6) 偏最小二乘法 ................................................................................................................................. 168
3. 利用分析员系统进行回归诊断 ...........................................................................................169
(1)残差分析............................................................................................................................................. 169
(2) 共线性诊断 ..................................................................................................................................... 170
习题六..............................................................................................................................................171

第七章 定性变量数据分析(属性数据分析) .....................................................................................175

第一节 由数据生成列联表 ............................................................................................................175


1. (以个体单位的)原始数据生成列联表 ...................................................................................175
(1) 使用 FREQ 过程生成列联表 ........................................................................................................... 175
(2) 使用分析员应用系统 ....................................................................................................................... 176
2. 由现有汇总表生成列联表 .....................................................................................................177
(1) 使用 FREQ 过程生成列联表 ........................................................................................................... 177
(2) 使用分析员应用系统 ....................................................................................................................... 178
3. 生成多变量的交叉表 ...........................................................................................................178
(1) 使用 FREQ 过程生成列联表 ........................................................................................................... 178
(2) 使用分析员应用系统 ....................................................................................................................... 179
第二节 属性变量的无关联性检验.................................................................................................179

5
SAS 操作入门 编者:江南大学 吴有炜 6

1. 属性变量无关联性的卡方检验 .............................................................................................179
2. 属性变量无关联性的 Fisher 精确检验.................................................................................180
3. 两个有序变量的无有序关联性检验----Mentel-Haenszel 检验 ............................................182
第三节 属性数据的线性模型 CATMOD 过程...........................................................................183
习题七..............................................................................................................................................189

第八章 主成份分析和因子分析 ................................................................................................191

第一节 调用 PRINCOMP 过程进行主成份分析.........................................................................191


第二节 利用分析员应用系统.......................................................................................................200
第三节 因子分析...........................................................................................................................202
1. 调用 factor 过程进行因子分析 .........................................................................................202
2. 因子分析的几种输入形式 ...................................................................................................210
习题八.............................................................................................................................................. 211

第九章 典型相关分析 ..........................................................................................................216

第一节 利用 CANCORR 过程完成典型相关分析 .......................................................................216


第二节 利用分析员应用系统.......................................................................................................221
习题九..............................................................................................................................................223

第十章 聚类分析 ..............................................................................................................225

第一节 对样本的聚类分析 ............................................................................................................226


1.系统聚类(cluster 过程) ............................................................................................................226
2. 动态聚类 fastclus 过程.........................................................................................................228
第二节 对指标变量聚类分析.......................................................................................................229
1. 分割聚类 varclus 过程 ...........................................................................................................229
2. 作变换 dij=1-│rij│后采用系统聚类 cluster 过程 ..............................................................230
习题十..............................................................................................................................................232

第十一章 DISCRIM 判别分析 .............................................................................................236

第一节 距离判别法.......................................................................................................................236
第二节 BAYES 判别和广义平方距离判别....................................................................................240
第三节 非参数法...........................................................................................................................244
第四节 CANDISC(典型判别)过程..................................................................................................245
第五节 STEPDISC(逐步判别)过程 ...............................................................................................247
习题十一..........................................................................................................................................248

附录一:教材<<试验设计与数据处理>>中 SAS 的例 ......................................................................252

第四章方差分析与协方差分析 ......................................................................................................252
1. 例.4.1.3..................................................................................................................................252
2. 例.4.3.1..................................................................................................................................253
3. 例 4.3.2..................................................................................................................................255
4. 习题 4.3.................................................................................................................................255
5. 习题 4.4.................................................................................................................................257
第六章回归分析..............................................................................................................................258
1. 例 6.4.1..................................................................................................................................258
2. 例 6.5.1(逐步回归求最优回归方程) ...................................................................................259
3. 例 6.6.1 ...............................................................................................................................260
4. 例 6.8.1(非线性回归) ...........................................................................................................261
5. 例 6.8.2(非线性回归) ...........................................................................................................262
第十三章 主成份分析...................................................................................................................263
1. 例 13.3.1................................................................................................................................263

6
SAS 操作入门 编者:江南大学 吴有炜 7

2. 习题 13.1...............................................................................................................................265
3. 习题 13.2...............................................................................................................................266
第十三章 因子分析.......................................................................................................................267
1. 例 13.5.1..............................................................................................................................267
2. 习题 13.2...............................................................................................................................268
第十五章 系统聚类.......................................................................................................................270
1. 例 15.2.1...............................................................................................................................270
2. 例 15.4.1(动态聚类) .............................................................................................................271
3. 例 15.5.2 (变量分割聚类) .................................................................................................271
第十五章 判别分析.......................................................................................................................272
1. 例 15.6.1................................................................................................................................272
2. 例 15.6.3................................................................................................................................274
3. 例 15.5.3................................................................................................................................275
第十六章 典型相关分析...............................................................................................................276
1. 例 16.2.1................................................................................................................................276
2. 习题 16.1...............................................................................................................................278

附录二: SAS 常用统计程序及含义表 ...............................................................................................279

附录三 <<SAS 操作入门>>习题答案.............................................................................................283

/*习题五...........................................................................................................................................283
/*习题六*/........................................................................................................................................287
/*习题七*/........................................................................................................................................293
/*习题八...........................................................................................................................................295
/*习题九...........................................................................................................................................301
/*习题十...........................................................................................................................................303
/*习题十一.......................................................................................................................................308

统计方法作用一览

变量可分为:
1) 连续变量------可以连续变化的量(SAS 数据输入中标明为 Interval),如
时间、长度等 进一步可分为区间变量和比率变量,前者的两个值有大
小之序且差有意义但比没有意义如温度,后者进而要求有”倍”的概念
两个值可产生比率如重量
2) 属性变量(或称定性变量、离散变量、分类变量)---------- (SAS 数据输
入中标明为 Nominal),又进一步可分为名义变量(无序变量)和有序变
量,如催化剂种类、地点等是名义变量而等级是有序变量

(1) 描述性统计分析

给变量的一组数据,描述性统计分析给出了该变量的各种统计量,也可以以报表或图的
形式输出这些信息.

程 序 名 PROC 作 用 与 结 果

7
SAS 操作入门 编者:江南大学 吴有炜 8

调用 MEANS(描述性统计分析)过程,产生均值、
MEANS 标准差、最大、小值、峰度、偏度等基本描述性统计值,
并能产生含统计值的输出文件和报表输出文件.
调用 SUMMARY(产生描述性统计值的输出文件)
SUMMARY
过程,类似程序 means,但不能产生报表分析.
调用 UNIVARIATE(描述性统计值的计算与绘图)
过程,类似程序 means,并用能对变量的分布提供更多
UNIVARIATE 信息,如分布图、频数分布图、正态分布检验等.
调用 CHART(统计值的图形表示)过程,可绘制表
CHART 示一个或多个变量描述性统计值的图形,如横轴图、纵
轴图、方形图、星形图、圆形图等.

调用 TABULATE(统计表格的制作)过程,制作各式
TABULATE 统计表格,这些表格目录多可分为三维即表格的行
(column)、列(row)与页(page).
调用 PLOT(一般制图),将二维的变量值转化为坐
PLOT
标值,用二维图形绘出;绘制三维轮廓图(contour)
调用 STANDARD(标准化分数)过程:采用标准化
STANDARD
公式 将资料文件内数值变量加以标准化.

调用 RANK(排名、序)过程:将文件中定量数据排
RANK
序后按序转换成名次

调用 SCORE (变量值的线性组合)过程:对一系列
SCORE 变量值赋权(比重或系数),然后以线性组合的方式求
和,产生新的资料文件.

(2) 相关性分析

研究变量间联系密切程度

程 序 名 类 型 作 用 结 果
PROC
CORR 两个变量 调用 CORR(相关性分析)过程,对长度尺度测量的参数统计方法,
间 产生相关系数阵,

(一对一) 对等尺度测量的无参数统计方法,产生关联系数阵.

一个变量 复相关系数的平方 R2
对一组变

一组变量 调用 CANCORR 过程,执行典型相关分析,分析结果包括(未经过)
对一组变 标准化的各顺序典型变量对、典型相关系数之所有典型变量与原始
CANCORR
量 变量之间的相关系数,以及典型变量值.

8
SAS 操作入门 编者:江南大学 吴有炜 9

(3) 分析检验变量对变量影响的显著性

讨论自变量(连续变量取不同值,分类变量取不同水平)对因变量的影响程度

方法名 程 序 名 类 作 用 结 果
PROC 型

参数检验 TTEST 等 调用 TTEST 过程检验两个总体均值差的显著性

方差分析 GLM 或 分类变量(自变量)对 (1)方差分析(2)协方差分析(3)多因素方差分析(4)


ANOVA 连续变量(因变量) 重复试验的方差分析(5)一元线性回归分析(6)多元
线性回归分析(7)多项式回归分析(8)加权回归分析
(9)二次多项式响应面分析(10)相关性计算.

列联表分 分类变量(自变量)与 属性变量无关联性的卡方检验 属性变量


析 Table 分 类 变 量 ( 自 变 无关联性的 Fisher 精确检验
Analysis 量)(对因变量—观测
两个有序变量的无有序关联性检验
频数的影响)有无关
----Mentel-Haenszel 检验

(4) 变量间的函数关系------回归分析

研究因变量(连续变量、分类变量)和自变量(连续变量、分类变量)之间的”函数”关系即
研究回归方程的类型及参数

程 序 名 类 型
PROC

REG 等 因变量(连续变量)对自变量(连续变量)
PROBIT 因变量(二分类变量)对自变量(连续变量)

LOGISTIC 因变量(有序分类变量)对自变量(连续变量)

CATMOD 自变量(分类变量可伴有连续变量)对因变量(连续变量或分类变量)的
影响以观测频数体现

(5) 多变量的降维

新变量是原变量组的线性组合,用个数较少(降维)的新变量组取代原变量组

9
SAS 操作入门 编者:江南大学 吴有炜 10

方法名 程 序 名 作 用 结 果
PROC

主 成 份 PRINCOMP 用个数较少(降 调用 PRINCOMP(主成分分析)过程,对输入原料数据


分 析 或 维)的新变量组(主 (或相关系数阵,或协方差阵)执行主成份分析,输出
或 FACTOR
因 子 分 成份或主因子)取代 包括特征值,特征向量及(未经)标准化的主成份值.
析 原变量组
典 型 相 CANCORR 用个数较少(降 调用 CANCORR 过程,执行典型相关分析,分析结
关分析 维)的两个新变量组 果包括(未经过)标准化的各顺序典型变量对、典型相
取代原来两个变量 关系数之所有典型变量与原始变量之间的相关系数,
组进行相关分析 以及典型变量值.

(6) 指标变量或样本变量的分类或归类

方 法 程 序 名 作用与结果
名 PROC
聚类分析 CLUSTER 等 调用 CLUSTER 等过程,依据样本及类距离,将变量集分成
若干类别

判别分析 DISCRIM 等 调用 DISCRIM 等过程,将样本归到某一类别内

10
SAS 操作入门 编者:江南大学 吴有炜 11

第一章 SAS 的启动与 SAS (V8 版)系统简介

11
SAS 操作入门 编者:江南大学 吴有炜 12

第一节 SAS 的启动

1.SAS 的启动

开始 ⇒ 程序 ⇒ The SAS System ⇒ SAS 窗口

或(在桌面上建立 SAS 的快捷方式后)


SAS v6.12 与 v8 的图标

点击 SAS 图标 ⇒ SAS 窗口

2.SAS 的三个主要窗口

12
SAS 操作入门 编者:江南大学 吴有炜 13

(1) Program Editor 窗口

Program Editor 窗口------------编辑或调用程序

a.编辑: (编辑 SAS 程序) ⇒ Run ⇒ Submit


((若发现程序错误需修改或运行正常需保存) ⇒ Run ⇒ Recall Last Submit ⇒
(修改) 或 Save ⇒ …)

b.调用: File ⇒ Open… ⇒ (在 My SAS File 的 V8 文件夹中选中所需数据名) ⇒


打开 ⇒ Run ⇒ Submit

(2)Log 窗口

Log 窗口------------ SAS 程序运行记录和监视(包括显示黄颜色的出错 error 信息提示),


建议每次运行 SAS 程序后在 Log 窗口检查有无黄颜色提示.

(3)Output 窗口

Output 窗口----------- (若程序编辑正确)SAS 运行结果在此输出

SAS v8 版还有浏览(Explorer)窗,结果(Results)窗

3. 演示 SAS 操作的一个例

例 1.1.1 目的: 由学生的二次成绩评出总成绩,再由总成绩排出名次. 所要执行的程


序如下(已经以数据名 E11 存于文件夹 My sas File 的 V8 文件夹中):
data E11; /* 1)输入数据名为E11 2)每个SAS语句以 ; 表示结束 3)需要注释时可
用这儿注释的形式,SAS跳过该段运行*/
input name $ sex $ first second ; /* name $后的$说明name是字符型变量,变量间
要空格*/
compsit=0.3*first+0.7*second;
cards; /*cards表示以下输入数据*/
李明 男 75 87 /*数据之间要空格,一个数据内部不能空格*/
刘小纯 女 89 . /*遗漏数据用 . 表示,否则该行数据会被自行删除*/
张扬 男 67 59 /*SAS的变量名不能用中文,但字符型变量的值可以是中文的文字串*/
许灵灵 女 80 86
何文强 男 93 87
; /*空语句 ; 表示输入结束,空语句要单独占一行*/
proc print; /*在output窗口输出数据*/

13
SAS 操作入门 编者:江南大学 吴有炜 14

proc means data=E11; /*计算均值等统计量*/


proc rank descending out=oE11; /*数值变量(递减即由大到小)转换成名次变量(1,2,...)以
oE11文件名输出*/
var compsit; /*被转换的变量为compsit */
ranks rankcompsit; /*命名名次变量为rankcompsit*/
proc sort; by rankcompsit; /*对秩变量rankcompsit用sort语句排序默认数值由小到大
字母由先而后*/
proc print data=oE11; /*在output窗口输出文件oE11*/
run; /*运行以上程序*/

操作步骤
(第一步:启动 SAS) 点击 SAS 图标 ⇒

(第二步: 编写或调用 SAS 程序)(在 Program Edito 窗口编写 SAS 程序) ⇒

或调用 sas 的 V8 文档一个已有程序: 点击 Program Edito ⇒ file ⇒


Open… ⇒ (查找范围) My sas File ⇒ 打开 ⇒ V8 (注:这儿及本书所有各
处的 V8 文件均指存于同一光盘的 V8 文件) ⇒ 打开 (选中所需数据名本例为
E11) ⇒ 打开 ⇒

(第三步:执行以上 SAS 程序) ⇒ (点击菜单条上)Run ⇒ Submit ⇒


(第四步:检查有否程序错误) ⇒ Log 窗 (若有程序错误用黄颜色显示) ⇒ Run ⇒
Recall Last Submit ⇒

( 若 有 程 序 错 误 则 修 改 ; 若 无 错 误 需 要 保 存 ) ⇒ File
⇒ Save(或 Save as) ⇒
(第五步:查看输出结果) ⇒ Output 窗 ⇒ (查看)

本例输出结果如下:

注: 样本刘小纯称为缺失数据,缺失值必须以 . 代替, 否则 SAS 自行删除该行数据,在


排序中缺失数据排在最前面

14
SAS 操作入门 编者:江南大学 吴有炜 15

4. SAS 的菜单条介绍

(1)File

Open…打开 SAS 已有数据库(浅灰色需先点击 Program Editor)

Save 保存
Save As…另存为

Inport Data…调入其它系统文件
Export Data…输出 SAS 文件到其它系统

Print Preview…打印预览
Print…打印

(2)Edit

Paste 可以粘贴其它系统的如 word 等文件

15
SAS 操作入门 编者:江南大学 吴有炜 16

(3)view: 打开 SAS 的主要窗口

Enhanced Editor 强化编辑窗口


Program Editor 编辑窗口
Log 运行记录窗口
Output 输出窗口
Results 结果窗
Explorer 数据库窗口(内有每次运行 SAS 后的临
时数据库 work----每运行一个程序相应数据就
临时保存在 work 内关闭 SAS 则同时消除)

(4) Tools

Query 进入 Libraries
Table Editor 进 入 数 据 输 入
编辑窗口

Graphics Editor 画图板

(5)Run

Submit 提交程序运行
Recall Last Submit 在编辑窗口调入上
次提交的程序

Submit N Lines… 提交前 n 行


Submit Clipboad 提交粘贴板上的程序

16
SAS 操作入门 编者:江南大学 吴有炜 17

(6) Solutions (最重要的栏目)

Solutions 下的菜单:

Analysis----SAS 分析菜单系统(包括十四个重要的模块,见第三节)
ACCESS 软件------为用户提供了透明地访问其它数据库文件的功能
ASSIT-------提供了面向任务的菜单驱动界面,借助它可调用 SAS 其它模块
Desktop----类似 window 桌面,

譬 如 Desktop ⇒ Data Access and Management


⇒ View Table 进 入
数据编辑窗口(可直接
输入或编辑数据)或
⇒ Import 进入调用外
部 数 据 窗 口 或
⇒ Export 进入 SAS 数
据转换成外部数据窗
或 ⇒ View File 进 入
V8 文件浏览 SAS 数据

17
SAS 操作入门 编者:江南大学 吴有炜 18

EIS---------是一个决策支持表现工具,以生动直观的方式(图或表)将关键性或总结性信息
呈现给使用者的非常易用的系统.

第二节 SAS 系统产品介绍

1. Base Sas

主要功能:数据管理;基础统计计算;报表生成和图形显示.

2. SAS/STAT

SAS/STAT 是一个完整的统计分析软件包,包括: 回归分析,方差分析,一般线性模型,多变量


分析(主成分分析,因子分析,典型相关分析),判别分析,聚类分析,属性数据分析,生存分析等
40 多个过程.
SAS/STAT 包括的 Market Reserch 将主成分分析、对应分析和方差分析等用于市场调研数
据,分析结果用直观的图形和格显示给用户, 并根据用户对产品的评价提供新产品市场占有
率的预测.
SAS/STAT 的 子 系 统 ANALYST 是 一 个 专 用 的 分 析 系 统 , 集 成 了
SAS/STAT,SAS/QC,SAS/GRAPH 的许多功能,按常用统计分析组织菜单:
--------统计分析方面包括描述性统计、列联表分析、假设检验、方差分析、回归分析、多
变量分析、生存分析等.
--------图形显示方面包括各种分析相应的图形显示,以及三维散点图、三维曲面图和等高线
等.
--------提供了各种检验法的功效函数计算和样本容量的确定方法.

3. SAS/INSIGHT

SAS/INSIGHT 是一个完整的数据分析子系统,为用户提供了一个可进行交互式数据探索和
分析的工具,用户可同时打开多个窗口对数据和图像进行比较和分析.其特色是将常用的统
计方法和交互式的图形显示结合在一起.

4. SAS/ASSIT

SAS/ASSIT 提供了面向任务的菜单驱动界面,借助它可调用 SAS 其它模块,它自动生成的


SAS 程序既可以帮助有经验的用户快速编写 SAS 程序,又可帮助用户学习 SAS 语言.用户还
可根据自己的需要调用 SAS/ASSIT 的不同部分或剪裁 SAS/ASSIT 的菜单来构成自己的应
用系统.

18
SAS 操作入门 编者:江南大学 吴有炜 19

5. SAS/ETS

SAS/ETS 是用于计量经济与时间序列分析的专用软件,是研究复杂系统和进行预测的有力
工具.

6. SAS/OR

SAS/OR 是用于运筹学和工程管理的专用软件,提供了全面的运筹学方法,包括了通用的线
性规划、整数规划、混合整数规划和非线性规划,也为专门的规划问题〔如网络流问题、运
输问题、分配问题等〕提供了更为直接的解决办法.
SAS/OR 还包含用于项目管理、时间安排和资源分配等问题的一整套方法,其中 XPROJ
MAN 菜单系统提供了项目管理优化方法的图形界面菜单操作法 QSIM 菜单系统提供了在
图形界面上解决散随机事件模拟问题的方法.

7. SAS/QC

SAS/QC 是用于质量控制的专用软件.它为全面质量管理提供了一系列工具.
还提供了用于分析抽样方案的工具模块.其中全屏幕菜单系统 SQC 和 XADX 引导用户进行
标准的统计过程控制以及试验设计.
SQC 提供了多种不同类型控制图的制作与分析,检测数据分布的拟合与检验(参数或非参
数).
XADX(ADX)菜单系统将实验设计的安排、试验结果的分析、分析结果的呈现为用户提供
了直观和使用方便的交互式操作界面.

8. SAS/IML

SAS/IML 提供了功能强大的面向矩阵运算的编程语言.其处理数据的基本单元是矩阵,包含
大量针对矩阵的数学运算符、函数和例行程序,用户用很少的语句可描述很复杂的计算过程.
允许用户直接用矩阵代数的记号来组成 IML 的程序语句.

9. SAS/GRAPH.

SAS/GRAPH 一个强有力的图形软件,可将数据及其包含的深层信息以多种图形生动地呈现
出来,如直方图、圆形图、星形图、散点相关图、曲线图、三维曲面图、等值线、地理图、
及各种映像图.也可直接制作不同方法拟合的回归曲线和相应的置信曲.它还有一个全屏幕
图形编辑器可对已有图形进行编辑和修饰.SAS/GRAPH 还提供多种设备驱动程序便于生成
的图形输出.

10. SAS/EIS

SAS/EIS 是一个决策支持表现工具,也是一个快速应用开发工具.SAS/EIS 采用先进的


OOP(面向对象编程)的技术,以生动直观的方式(图或表)将关键性或总结性信息呈现给使用

19
SAS 操作入门 编者:江南大学 吴有炜 20

者的非常易用的系统.

11. SAS/ACCESS

SAS/ACCESS 软件为用户提供了透明地访问其它数据库文件的功能.

12. SAS/LAB

SAS/LAB 是一个完整的进行数据分析的子系统,为用户提供一个菜单驱动、 面向任务的解


释引导式数据分析软件.

第三节 推荐几个子系统

1. SAS/ ANALYSIS 下的十四个模块

Solution↓ ⇒ Analysis ↓ ⇒ (1)---(14)

ANALYSIS-------各种利用图形界面操作的分析子系统
⇒ (1) 3D Visual Analysis 三维直观分析
⇒ (2) Analyst(STAT-Analyst Application) 分析员应用系统
----------------------重点推荐,可以完成输入数据及统计分析全过程
⇒ (3) Design of Experiments 试验设计(ADX)
-----------------------打开 ADX 模块,可进行各种试验设计包括响应面设计与分析等.
⇒ (4) Enterprise Miner 项目管理
⇒ (5) Geographic Information System 进入 Libraries(map,work 等)
⇒ (6)Guided Data Analysis 导引性数据分析
------------------打开 SAS/LAB 模块,可以执行回归、方差分析等标准的分析并对结
果进行解释
⇒ (7) Interactive Data Analysis (SAS/INSIGHT 系统) 探索性数据分析

20
SAS 操作入门 编者:江南大学 吴有炜 21

-------------------重点推荐,打开 SAS/INSIGHT 模块,这里提供多种图纸显示,可以执


行变量的分布、相关、主成份、广义线性模型等分析
⇒ (8) Investment Analysis 投资分析
⇒ (9) Market Research 市场调查
⇒ (10) Project Management 计划安排
------------------打开 PROJMAN 模块
⇒ (11) Quality Improvment 统计质量控制
-----------------打开 SQC 模块,提供了不需编程的质量管理图表和分析
⇒ (12) Queueing Simulation 功能图标
⇒ (13) Time Series Forecasting System 时间序列分析
--------------------打开 Forecasting 模块,用于时间序列分析模型,可以自动建模和预测
⇒ (14) Time Series Viewer 时间序列浏览器

2. 重点推荐的模块--------

SAS/STAT-Analyst Application 分析员应用系统

进入方法

Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)


○1 (出现空白数据表)录入数据 ⇒ File ⇒ Save ,

2 或调用 work 中已有数据: ⇒ File ⇒ Open By Sas Name…



⇒ (在 Make one selection 窗口中) work 选中数据名 ⇒ (OK)
可看到”分析员应用”菜单系统的主菜单及包括的各种栏目

21
SAS 操作入门 编者:江南大学 吴有炜 22

其中:
(1) File 栏目: Open…打开 V8 文件调用已有数据,Open by SAS Name…调用 work(SAS
运行后产生的临时数据库)中的数据,Save(As)…(另)存为
(2)edit 栏 目 :Insert Column 插 入 新 行 , 列 Duplicate 拷 贝 Browse 浏 览
(Share)Eidt(分行)编辑
(3) View 栏目:可改变数据表浏览方式,即移动、隐藏、固定列,修改数据表属性
(4)Tools 栏目:
(5) Data 栏目:数据筛选、排序、概括、串接、合并及计算

利用 Wherer 条件筛选(Filter)数据进入 Subset Data


Sort 排序
Transform 数据表中变量变换
(计算、求排列秩、标准化、标记、改属性或值、
Radom Variates 产生基于某个分布
(正态,均匀,泊松…)的随机数
Summarize By Group…
按分组变量分别计算概括统计量
Combine Tables…合并表格
Stack Column…堆叠列
Split Column…分拆列 Transpose…数据(行,
列)转置 Random Sample…从数据中按个数或比例抽
取样本

(6)Rrports 栏目
(7)Graphs 栏目(作统计图的重点栏目):包括直方图,盒形图,等高线,(二维)三维散点图,二维曲
线图,三维曲面图等

Bar Chart (水平,垂直)条形图


Pie Chart…圆饼形图
Histogram…盒形图
Box Plot 直方图
Probability Plot…概率(分布函数)图
Scatter Plot(二,三维)散点图
Contour Plot…等高线
Surface Plot…三维曲面图

22
SAS 操作入门 编者:江南大学 吴有炜 23

(8)Statistics 栏目(重点栏目)

(8)---1) 描述性统计分析(详见第三章)

Summary Statistics… 有效数据,(加权)和,均值,max,min,range,变异


(系)数,
标准差,t 检验值/显著性 ,
Distributions… 数据,(加权)和,均值,max,min,range,变异(系)数,
标准差,分位数,偏度,峰度,直方图
Correlations… (四种)相关系数,有效数据和,均
值,max,min,range 标准差,中数
Frequency Counts… (累计)频数,(垂直,水平)盒形图

(8)---2)列联表分析(Table Analysis)(详见第七章)

(8)---3)假设检验(含区间估计)(详见第四章)

23
SAS 操作入门 编者:江南大学 吴有炜 24

单总体方差已知时均值的 z 检验
单总体方差未知时均值的 t 检验
单总体比例的检验
单总体方差的检验
两个独立总体时均值的 t 检验
成对数据均值的 t 检验
两个总体比例的检验
两个总体方差的检验

(8)---4) 方差分析(详见第五章)

ANOVA 仅适用于平衡数据方差分析, 不平衡数据方差分析应当用 GLM


One—Way ANOVA….单因素方差分析
No….非参数单因素方差分析(当方差齐性条件不满足时采用)
Factorial ANOVA 多因素方差分析
Linear Models 线性模型
Repeated Measures 重复测量分析
Mixed Models 混合模型

(8)---5) 回归分析(详见第六章)

Simple… 一元回归
Linear…线性回归
Logistic…逻辑回归

(8)---6)多变量分析(详见第八、九章)

Principal Compoments…
主成分分析

Canonical Correlation…
典型相关分析

24
SAS 操作入门 编者:江南大学 吴有炜 25

(8)---7) 生存分析(Survial) (医学上)

3. 重点推荐的模块--------

交互式的数据探索和分析系统:SAS/INSIGHT 系统

简介: SAS/INSIGHT 系统是一个进行交互式的数据探索和分析的工具,可以交互地通过


各种密切联系的图形对数据进行探索研究并通过多个窗口连续进行分析.
进入方法
Solution↓ ⇒ Analysis ↓ ⇒ Interactive Data Analysis… (SAS/INSIGHT 系统)
⇒ SAS/INSIGHT:open□ ⇒ Analyze↓
1 若录入数据: new ⇒ (录入)

2 若调用 work 已有数据: ⇒ Library□ × work ⇒ Data Set□ 选中数据名

⇒ Open ⇒ Analyze

Histogram/Bar Chart[Y] 直方图/盒形图


Box Plot/Mosaic Plot[Y] (Y)盒形图/(Y,X)散点图
Line Plot(Y,X) 折线图
Scatter Plot(Y,X) 散点图
Contour Plot(Z,Y,X) 等高线
Rotating(Z,Y,X) 三维散点图
Distribution(Y) 输出: 有效数据,(加权)和,均值,max,min,range,变
异(系)数,标准差,分位数,偏度,峰度,直方图
Fit(Y,X) 散点图,线性回归(包括检验)
Multivariate (Y,X) 多元分析:描述性统计量,相关阵,协方差阵,主成份
分析,,典型相关分析

25
SAS 操作入门 编者:江南大学 吴有炜 26

4. 推荐的模块-------- Design of Experiments 试验设计(ADX 模块)

进入方法
Solution↓ ⇒ Analysis ↓ ⇒ Design of Experiments ⇒

⇒ 点 Yes 提供 ADX 模块的操作信息


或 ⇒ 点 No 则直接进入 ADX 模块

工具栏上第 3-----8 个图标分别可进入

二水平设计、响应
面设计、混合设计、混
合水平设计、最优设计
及 Split-plot 设计

以下为响应面设计的一
个例(数据源自教材<<
试验设计与数据处理
>>例 6.7.2):

⇒ (响应面设
计)

⇒ Response Surface Design (响应面设计)

(进入 New Design 后)

Define Variables… ⇒

(准备选择自变量与响应变量)

Define Variables… ⇒ ADX: Define Variables 窗口


在 ADX: Define Variables 窗口中

⇒ Factor ⇒ ( 编 码 处 理 后 的 ) 自 变 量 个 数

26
SAS 操作入门 编者:江南大学 吴有炜 27

⇒ OK
⇒ Response ⇒ 响应变量个数 ⇒ OK
⇒ Block ⇒ 块个数 ⇒ (回答:Do You want to save the changs ?) ⇒ (回答:) yes
回到 Response Surface Design New Design 窗口

⇒ Select Design… (选择试验设计的类型)


⇒ 进入 ADX: Response Surface Design 窗口

Select Design… ⇒ ADX: Response Surface Design 窗口

选择自变量的个数(或试验次数(runs))后再选择试验设计类型(Design Type)(其中 Center


Points 为中心试验次数),点击 Design Detalls… 可查看具体试验方案
关闭 ADX: Response Surface Design 窗口会出现提示:Do You want to use the
selected design? ⇒ Yes ⇒

在 Response Surface Design


窗 口 中 点 击 Edit
Responses… 后 录 入 试 验 结
果即响应变量值
⇒ × ⇒ 出现”Apply changes to
design data set? ”
⇒ Yes ⇒


输入数据后见下表:

27
SAS 操作入门 编者:江南大学 吴有炜 28

⇒ Explore… 散点图,盒形图

28
SAS 操作入门 编者:江南大学 吴有炜 29

⇒ Fit… 模型优化(即剔除不显著项)

据 P Value 值(>0.05 或>0.1


的点击可考虑剔除或保留)黄
色部分为保留部分,可以看出被
剔除的 x1,x2 线性部分是不显
著的

⇒ × (关闭该窗口)

⇒ Optimize…
响应变量的最值讨论,(从下图可以看到 Y1(标记+)是经过 Fit 的而 Y2(标记*)没
有经过 Fit) ⇒ Run ⇒
给出各种图形包括一元极值图、二元等高线图、三维响应面图等

输出结果(部分)如下:

29
SAS 操作入门 编者:江南大学 吴有炜 30

30
SAS 操作入门 编者:江南大学 吴有炜 31

31
SAS 操作入门 编者:江南大学 吴有炜 32

⇒ Experiments Notes. (给该试验设计命名)


⇒ Report… ⇒ ADX:Report… 窗

⇒ Report Items (选择报告内容)


⇒ Responses (选择待分析因变量)
⇒ Generate Report ⇒

输出报告如下(部分):

32
SAS 操作入门 编者:江南大学 吴有炜 33

注:本例输入的自变量已是编码自变量(coded)故输出 coded 与 uncoded 没有区别

33
SAS 操作入门 编者:江南大学 吴有炜 34

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

第二章 Data 数据步

第一节 不同方法的输入

1. 方法一: 在程序作业流中输入数据

形式:

data 数据名;
input 变量名 … 变量名; /*字符变量后加$,变量名之间空格*/ 注:/*……*/为注释
语句 sas 运行时跳过该语句
(用于 DATA 步的其它 SAS 语句;)
cards;
[数据行] /*每行数据占一行 */
; /* ;空语句*/

34
SAS 操作入门 编者:江南大学 吴有炜 35

例 2.1.1
data E21; input name $ x1-x3;/*SAS系统不区分字母大小写,cards以下将输入一个字
符型变量name和三个数值型变量x1,x2,x3的值*/
n=_n_; /*data步中定义变量n用于记录观测序号*/
y=x1+x2;
cards;
A 1.1 2.6 3.8 /* 注:每行数据, 单占一行*/
B 4.5 5.7 6.0 /* 输入整数、非整数时, 一个数内部不能有空格否则会被误识成二个数*/
C 7.6 8.2 9.7
; /* ;为空语句表示数据输入结束,空语句必须单独占一行*/
run; /*运行*/


data E21; input name $ x1 x2 x3@@; /* 注: @@为不分行符可以使数据连续输入*/
n=_n_; y=x1+x2;
cards;
A 1.1 2.6 3.8 B 4.5 5.7 6.0 C 7.6 8.2 9.7
;
proc print data=E21; /*将数据集显示在 output 窗口,data=E21 缺省则输出最新建立的数据集*/
var name x1-x3 n y; /*若缺省则输出数据集中所有变量,print 语句缺省则运行后数据集仅存
入 work 中而不在 output 窗口显示*/
run;
运行结果查看:

(注:work 是临时保存数据的数据库-----每次运行 SAS 后相应数据就保存在 work 内但关


闭 SAS 时同时清除)

2. 方法二: 调用磁盘上的数据

(1) 编程进行

形式:

data 数据名;
infile ‘磁盘名:\文件名’;
input 变量名 … 变量名;
(用于 DATA 步的其它 SAS 语句;)
run;

例 2.1.2 调用存于 C 盘….的 E11 数据文件

data E22;
infile `C:\My Documents\My SAS Files\E11.dat `;

35
SAS 操作入门 编者:江南大学 吴有炜 36

input name $ sex $ x1 x2 ;


z=(x1+x2)/3;
run;

(2) 利用菜单系统调用磁盘上数据

(设在 C:\My Documents\My SAS Files\V8 中已有 Excel 数据 DA7)

⇒ File ⇒ inport Data… ⇒ (打钩)Stardard data source ⇒ (选择) (数据源类型)*xls

⇒ Next> ⇒ Browse…(找到文件存放地点)open ⇒ Library(选 work)


⇒ Member(命名数据名 E111) ⇒ Finish
(则在工作库 work 中可找到数据集 E111;若需保存则可 ⇒ File ⇒ Save)(运行结果见下图)

3. 方法三: 调用其它 SAS 数据集中的数据

形式:
data 数据名;
set (或 merge 或 updata 或 modify)其它 SAS 数据集中数据名;

36
SAS 操作入门 编者:江南大学 吴有炜 37

(用于 DATA 步的其它 SAS 语句;)


run;

例 2.1.3
data E20;
input number sex $ x1 x2 ;
cards;
1 m 12 54
2 w 45 76
3 m 43 76
4 w 42 17
;
run;
/*以下为调用*/
data E24;
set E20; /* 注: set 调取 sas 数据库数据 E23 */
if sex=’m’; /*数据的删选,即只选取 E20 中女性的数据进入 E24*/
y=(x1+x2)/3;
z=x1*x2;
I=int(y); /* 注: int(y)表对 y 取整数部分*/
run;
比较两张输出表:

4. 方法四: 利用子系统 INSIGHT 输入或调用数据

简介: SAS/INSIGHT 系统是一个进行交互式的数据探索和分析的工具,可以交互地通过


各种密切联系的图形对数据进行探索研究并通过多个窗口连续进行分析.
进入方法
Solution↓ ⇒ Analysis ↓ ⇒ Interactive Data Analysis… (SAS/INSIGHT 系统)

37
SAS 操作入门 编者:江南大学 吴有炜 38

⇒ SAS/INSIGHT:open 窗口
1 若录入数据: new ⇒ (录入)

2 若调用 work 中已有数据: ⇒ Library 选中
○ work ⇒ (在 Data Set 中
选中数据名) ⇒ Open ⇒ Analyze↓

5. 方 法 五 : 利 用 子 系 统 SAS/STAT-Analyst
Application(分析员应用)输入或调用数据

Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)


○1 (出现空白数据表)录入数据 ⇒ File ⇒ Save ,

2 或调用 work 中已有数据: ⇒ File ⇒ Open By Sas Name…



⇒ (在 Make one selection 窗口) work 选中数据名 ⇒ (OK)

第二节 数据集的拆分、合并(纵向)和拼接(横向)

1. 数据集的数据的删选拆分

利用 if…then output 选择(或 delete 删除)(else output…)

例 2.2.1

data E26;

set E25; /* 注: 调用 sas 数据集中数据 E25*/


if sex=’m’ then output; /*等同于 if sex=’w’ then delete;*/
proc print data=E26;
run;
/*若要拆分成名为 male、female 的两个数据集则可用以下方法*/
data male female;
set E25;
if sex=’m’ then output male;
else output female;
proc print data=male female; /*在 output 窗口输出名为 male、female 的两个
..数据集*/
run;
数据表 E25

38
SAS 操作入门 编者:江南大学 吴有炜 39

经数据删选得数据表 E26

经数据分拆得数据表 male 与 female

2.数据集的纵向合并(增加样本量)

形式:
data 合并后数据名;
set 数据名 1 数据名 2 ;
run;
作用:可以添加或合并样本变量
将名为 male、female 的两个数据集纵向合并成一个名为 total 的数据集

data total;

set male female;

proc print data=total;


run; /*若 male 与 female 变量名不同则 total 的变量名为两者之并,数据值以缺失值.形
式出现*//*输出结果如下表*/

39
SAS 操作入门 编者:江南大学 吴有炜 40

注 意 表 格
Work.Total 中 变 量
name 的排序为

A—C—E—B—
D

而表格 DA6 中
变量 name 的排序为

A—B—C—D—E , 想想为什么?

3. 两个数据集按一共有变量名横向合并(增加指标变量)

形式:
data 合并后数据名;
merge 数据名 1 数据名 2 ;
by 共有变量名;
run;

作用:添加或合并(指标)变量

例 2.2.2

将名为 data ONE 和 data TWO 的两个数据集按共有变量 pid 横向合并成数据集 total2

(以下程序以 data total2 名义保存)

data one;

input pid sex$ age;

cards;

101 m 54

105 w 36

102 m 43

104 w 45

data two;

input pid weight height;

cards;

105 54 163

102 63 174

103 57 173

104 45 156

40
SAS 操作入门 编者:江南大学 吴有炜 41

proc sort data=one; /*必须先对共有变量(本例中 pid)分别排序才能横向合并*/


by pid; /* 排序语句 proc sort data=被排序变量所在数据集名; by 被排序变量名;
排序时默认数值由小到大字母由先而后*/
proc sort data=two; /*必须先对共有变量(本例中 pid)分别排序才能横向合并*/
by pid;
/*以下为合并过程*/
data total2; /*合并后数据名*/
merge one two; /*形式: merge 被合并数据集名 1 被合并数据集名 2; */

/*将名为 data ONE 和 data TWO 的两个数据集按共有变量(本例中 pid)利用 merge


语句横向合并成数据集 total2

注意输出结果中的缺省值,输入数据时若有缺省分量一定要以 . 表示,否则 SAS 会


将该行数据自行删除*/

by pid;
proc print data=total2;
run;
运行结果见表:

第三节 不同形式数据的输入和变量变换

1 输入一维变量

例 2.3.1(不带下标)

data E21; input N$ x1 x2 x3; /*说明 N 是字符型变量,N 后加$*/


n=_n_; /*data 步中定义的变量 n 用于记录观测序号*/
y=x1+x2;
cards;
A 1.1 2.6 3.8
B 4.5 5.7 6.0
C 7.6 8.2 9.7
;

41
SAS 操作入门 编者:江南大学 吴有炜 42

run;

运行结果查看: (由于 print 语句缺省则数据集仅存入 work 中而不在 output 窗口显示)


点击 Solution → Analysis → Interactive Data Analysis 进入数据集对话窗
Library(在数据集库多选项中选择所要 work) →Data Set (在数据集名称多
选项中选择所要数据名)→Open

例2.2.1(续) (输入和变量转换)
data E23; input member $ sex $ x1 x2 x3;
y=x1+x2; z=x1**2; w=Abs(x2); /*加法,平方,绝对值函数*/
if x1>x2 then D='yes';else D='no'; /*五种条件语句之 ○1 */

if x1>x2 then Do; E='yes'; /*五种条件语句之 ○2 */

end;
else Do; E='no';
end;
if sex='m' then sex1='男';else sex1='女'; /*五种条件语句之○
3 */

if (x1=x2) or (x2=x3) then F='eql'; /*逻辑判断or或,and且,not否定*//*五种条件语句之○


4

*/
if sex=’w’ then go to order; order:sex2=’female’; /*go to (转向自定命令标签名位置),执行命令
(是绝对命令而非条件命令)位置自定,注意执行结果, 五种条件语句之 ○
5 */

cards;
A m 1.1 3.8 3.8
B w 4.5 -5.7 . /*遗漏数据一定要加符号.*/
C m -8.2 -8.2 9.7
;
title’数据的各种输入’;
run;
运行结果见下表:

2 带下标变量及向量

在表格形式的数据集中行变量与列变量的交叉形成单元格,单元格内又可有重复变量
n 个 Do---end 语句可以输入带 n 个下标的变量或 k 维向量

42
SAS 操作入门 编者:江南大学 吴有炜 43

形式
Data 数据名;
Do 行标名=起始值 to 终值 by 步长; /*步长为 1 时可缺省 by*/
Do 列标名=起始值 to 终值 by 步长;
Do rep=1 to 终值 s;/*单元格重复 s 次*/
input 变量名@@; (向量为 input 分量名 1 @;
input 分量名 2 @;
………………
input 分量名 k @;)

output ;
end;
end;
end;
run;

例 2.3.2
输入下表

推进器(M) M0 M6 M12
58. 2 56. 2 65. 3
F1
52. 6 41. 2 60. 8
49. 1 54. 1 51. 6
F2
42. 8 50. 5 48. 4
燃料(F)
60. 1 70. 9 39. 2
F3
58. 3 73. 2 40. 7
75. 8 58. 2 48. 7
F4
71. 5 51. 0 41. 4
用三个 do---end 语句输入带三个下标的一维变量 Rfmr(f=1-4;m=1-3;r=1,2)(两因
素+重复)

data rockey; /* 注:输入 Rfmr(f=1-4;m=1-3;r=1,2)(两因素+重复)*/


/*顺序行标 f→列标 m→重复 r*/
do f=1 to 4;
do m=0 to 12 by 6; /*注:步长为 1 时 by 语句可省略*/
do rep=1 to 2;
input R @@; /* 注: @@可以使数据连续输入*/
output;
end;
end;
end;
cards;
58.2 52.6 56.2 41.2 65.3 60.8
49.1 42.8 54.1 50.5 51.6 48.4
60.1 58.3 70.9 73.2 39.2 40.7
75.8 71.5 58.2 51 0 48.7 41.4

43
SAS 操作入门 编者:江南大学 吴有炜 44

; /*可以看到输入数据时与表格形式一致*/
run;
运行结果(部分)见下表:

3. 二维向量

例 2.3.3

二维向量(不带下标)

x 23 54 35 84 13
y 42.1 53.3 65.5 34.2 63.7

方法一:
data E27;input x y@@; /* 注: @@可以使数据连续输入*/
z=x+y;
cards;
23 42.1 54 53.3 35 65.5 84 34.2 13 63.7
;
run;

方法二
data E271;
do rep=1 to 5;
input x@; /* 注: 向量(x,y)的输入: input x @; input y@;*/
input y @;
z=x+y; u=rannor(rep); /* rannor(rep)为标准正态随机数*/
output;
end;

44
SAS 操作入门 编者:江南大学 吴有炜 45

cards;
23 42.1 54 53.3 35 65.5 84 34.2 13 63.7
;
proc print; /*在结果窗口输出*/
run;
输出结果见下表:

例 2.3.4
输入下表
表 猪体重增长数据
x 15 13 11 12 12 16 14 17
A1
y 85 83 65 76 80 91 84 90
x 17 16 18 18 21 22 19 18
A2
y 97 90 100 95 103 106 99 94
x 22 24 20 23 25 27 30 32
A3
y 89 91 83 95 100 102 105 110
用 do---end 语句输入二个下标(a=1,2,3;i=1-8)的二维向量(x,y)ai(下标: 单因素+重复)
方法一: 用一个 do---end 语句表示重复
输入有序分类变量 A+数组@(整个 do---end 语句实际给出@相当于 A i x1 y1 x2 y2 …x8 y8)
data pig;
input A $ @;
do i=1 to 8;
input x @; /* 向量(x,y)的输入: input x @; input y @;*/
input y @;
output;
end;
cards;
A1 15 85 13 83 11 65 12 76 12 80 16 91 14 84 17 90
A2 17 97 16 90 18 100 18 95 21 103 22 106 19 99 18 94
A3 22 89 24 91 20 83 23 95 25 100 27 102 30 105 32 110
run;

45
SAS 操作入门 编者:江南大学 吴有炜 46

方法二:用二个 do---end 语句输入二个下标的二维向量(x,y)ai(a=1,2,3;i=1-8) (下标: 单因素+


重复)
data pig1;
do A=1 to 3; /* 注:1)顺序(外层 ⇒ 内层): 行 ⇒ 重复 ⇒ 向量*/

do rep=1 to 8; /* 2)向量(x,y)的输入: input x @; input y @;*/


input x @;
input y @;
output;
end;
end;
cards;
15 85 13 83 11 65 12 76 12 80 16 91 14 84 17 90
17 97 16 90 18 100 18 95 21 103 22 106 19 99 18 94
22 89 24 91 20 83 23 95 25 100 27 102 30 105 32 110
;
run;

例 2.3.5
输入下表

A1 A2 A3 A4
x 49.0 49. 2 49. 8 49. 8 49. 9 49. 8 49. 7 49. 8
B1
y 71 73 73 75 76 73 75 73
x 49. 5 49. 3 49. 9 49. 8 50. 2 50. 1 49. 4 49. 4
B2
y 72 73 76 74 79 77 73 72
x 49. 7 19. 5 50. 1 50. 0 49. 7 50. 0 49. 5 49. 6
B3
y 75 73 78 77 74 75 70 71

46
SAS 操作入门 编者:江南大学 吴有炜 47

x 49. 7 49. 7 49. 6 49. 3 49. 5 49. 2 49. 0 48. 9


B4
y 77 75 74 74 74 73 69 69

用三个 do---end 语句输入三个下标的二维向量(x,y)bar(b=1-4;a=1-3;r=1,2)(下标: 两因素+


重复)

data fab; /* 注:顺序(外层 ⇒ 内层):*/


do b = 1 to 4; /* 行(b=1-4) ⇒ 列(a=1-4) ⇒ 重复(r=1-2) ⇒ 向量(x,y)*/
do a = 1to 4;
do rep = 1 to 2 ;
input x @ ;
input y @;
output;
end;
end;
end;
cards;
49.0 71 49.2 73 49.8 73 49.8 75 49.9 76 49.8 73 49.7 75 49.8 73
49.5 72 49.3 73 49.9 76 49.8 74 50.2 79 50.1 77 49.4 73 49.4 72
49.7 75 49.5 73 50.1 78 50.0 77 49.7 74 50.0 75 49.5 70 49.6 71
49.9 77 49.7 75 49.6 74 49.3 74 49.5 74 49.2 73 49.0 69 48.9 69
;
run;
运行结果见下图(部分)

4.FORMAT 语句转换解释变量值

例 2.3.6

data E28;
input name $ sex $ age rank x1 x2 x3;

47
SAS 操作入门 编者:江南大学 吴有炜 48

cards;
A m 12 1 1.1 3.8 3.8
B w 8 3 4.5 -5.7 . /*遗漏数据一定要加符号.*/
C m 48 4 -8.2 -8.2 9.7
D w 23 1 1.2 1.2 1.2
E m 26 2 2.5 45 24
;
run;

proc format; /*第一个


...format 给出转换定义
......*/
value ran 1=’优’ 2=’良’ 3=’中’ 4=’差’; /*将数值变量定义成文字*/
value agefmt low-12 = ‘儿童’ 13-19 =’少年’ 20-high =’成年’; /*将数值变量范围定义成
文字*/
value $name ‘A’=’甲级’ ‘B’=’乙级’ ‘C’=’丙级’ ‘D’=’丁级’; /* 将文字变量用文字变量
取代*/
value $sexfmt ‘m’=o ‘w’=1; /* 将文字变量用数值变量取代*/
data E29; /*数据即 E28,注意 format 转换后数据形式改变*/
input name $ sex $ age rank x1 x2 x3;
format rank ran. age agefmt. name name. sex sexfmt. ; /*第二个
...format将转换定义引
......
....,注意变量对:前者是DATA语句中变量对应后者是format中变量(加后缀.),即使变
入数据集
量名不变也要有此变量对*/
cards;
A m 12 1 1.1 3.8 3.8
B w 8 3 4.5 -5.7 . /*遗漏数据一定要加符号. 否则 SAS 会将该行数据自
行删除*/
C m 48 4 -8.2 -8.2 9.7
D w 16 1 1.2 1.2 1.2
E m 26 2 2.5 45 24
;
title’数据的各种转换’;
run; /*注意转换前后两张表对比*/

运行结果见下表:

48
SAS 操作入门 编者:江南大学 吴有炜 49

第四节 SAS 数据集转换成外部数据文件或输出报表

1. 方法一: 用菜单系统输出 SAS 数据集

(设 SAS 已有数据集) ⇒ File ⇒ Export Data ⇒ Work,输出数据名


⇒ (选择数据类型,数据源类型)
⇒ Next> ⇒ Browse…(选择文件存放地点) ⇒ Next>
⇒ Save as 中(选择文件存放地点,先消去文件类型蓝体字再命名文件)
⇒ 保存 ⇒ (Next) ⇒ Finish

2. 方法二: 编程输出 SAS 数据集

形式:
data _null_; 注: _null_说明不产生 sas 数据集

⎧input 变量名…变量名;

⎪(—p˜°DATA步的其它SAS语句; )

⎨cards; 注:左边为由方法一产生的数据集
⎪[ ” ˜ ]s

⎪⎩;

亦可由方法二或方法三产生或可以产生数据的其它程
序语句
file‘磁盘名:\文件名’;(或 file’prn’;)注:输出到达的磁盘及文件名或打印
(input 变量名 … 变量名;) 注:这儿表示可以有选择地输(用于 DATA 步的其它 SAS 语
句;) 出数据集的一些列或新变量
run;
例 2.4.1
data _null_;
set E24; /* 注:说明数据用方法三产生*/
file’c:\My documents\DAE24’; /*(或 file’prn’;) 注:将 sas 数据集中 E24 转换成外部文件
DAE24 存在 c 盘 My documents 文件夹中(或打印)*/

49
SAS 操作入门 编者:江南大学 吴有炜 50

3. SAS—Output 窗口的结果输出

Output 窗口的输出结果(以数据 E25 为例)可以采用以下过程保存:File ⇒ Save

(或 Save as) ⇒ 选择保存位置并保存.此时输出结果以 sas 文件形式保存,再次打开时,用左键


点击则以默认直接运行 SAS 的方式打开,若点击右键则可选择打开方式,

⇒ 选择程序[H]…(见下图)

打开方式可有以下几种:

(1) The SAS System for Windows(默认) (2) Microsoft Word

(3)写字板 (4) 记事本 (5)Microsoft Excel(表格)

第一种方式仍是 SAS 文本保存后再次打开时必须运行 SAS, 而后四种方式打开并保存


后则是用普通文本保存再次打开无须运行 SAS.下图显示了数据 DAE25 输出后分别在选择
程序[H]…中以程序(1)和程序(3)打开后保存的文件图标(分别命名为 DAE251 与 DAE2511)
注意一个图标仍是带有”小人 ..”的 SAS 文件而另一个则是纯文本文件,当然对形式(1)的 SAS
文本对可点击右键再次选择打开方式的程序改变其文本特性(见下图) 另外含有中文内容
的输出结果以粘贴等形式输出出现乱码时建议可用后面几种方式打开再粘贴.

50
SAS 操作入门 编者:江南大学 吴有炜 51

第五节 SAS 的运算符和函数

1. SAS 的运算符

算术运算符 表示意 比较运算符 表示意思 逻辑运算符 表示意思


** 乘方 =或 EQ 等于 AND 逻辑与

* 乘法 ^=或 NE 不等于 OR 逻辑或


>或 GT 大于
/ 除法 NOT 逻辑非
>=或 GE 大于等于
+ 加法
< 或 LT 小于
- 减法
<=或 LE 小于等于

2.sas 函数

SAS 函数共分二十二种类型,共 319 个函数,统计上常用的一些有

(1) 概率分布函数

随机变量 X 的分布函数 F(x)满足: F(x)=P{X<x}



1 PRPBnorm(x) 标准正态分布 PRPBnorm(x)=P{u<x},其中 u 是标准正态随机变量


2 PRPBchi(x,自由度,非中心参数) χ2 –分布

3 PRPBgam(x,参数) 伽马分布

4 PRPBbeta(x,参数 1,参数 2) 贝塔分布

5 PRPBf(x,分子自由度,分母自由度,非中心参数) F--分布

51
SAS 操作入门 编者:江南大学 吴有炜 52

○6 PRPBt(x, 自由度,非中心参数) t—分布


○7 PRPBnml(p,n,m) 二项分布 B(n;p)
○8 Possion(参数,n) 泊松分布
○9 PRPBnegb(p,n,m) 负二项分布

10 PRPBhypr(nn,k,n,x) 超几何分布

(2) 分位数函数

设随机变量 X 的分布函数为 F(xp)=P{X<xp}=p,则称 xp 为随机变量 X(或分布 F(x))的 p


分位数


1 Probit(p) 满足 F(Probit(p))=P{X< Probit(p)}=p 标准正态分布分位数

2 cINV(p,自由度,非中心参数) χ2 –分布分位数

3 gamINV (p,参数) 伽马分布分位数

4 betaINV (p,参数 1,参数 2) 贝塔分布分位数

5 fINV (p,分子自由度,分母自由度,非中心参数) F--分布分位数

6 tINV (p, 自由度,非中心参数) t—分布分位数

(3) 样本统计函数

设有样本值 x1,x2,…,xn 相关统计量如下:

1 n

1 均值 mean(ofx1-xn)或 mean(x,y,…)-------=
n
∑x 即x
i =1
i


2 最大值 max(ofx1-xn)或 max(x,y,…)

3 最小值 min(ofx1-xn)或 min(x,y,…)

4 非缺失数据个数 N(ofx1-xn)或 N(x,y,…)

5 缺失数据个数 NMISS(ofx1-xn)或 NMISS(x,y,…)
n

6 求和 SUM(ofx1-xn)或 SUM(x,y,…)------= ∑x i =1
i

1 n 2

7 方差 VAR(ofx1-xn)或 VAR(x,y,…)--------=
n −1
∑ ( xi − x)
i =1
即 s2


8 标准差 STD(ofx1-xn)或 STD(x,y,…)------= VAR =s

STD

9 标准误 STDERR(ofx1-xn)或 STDERR(x,y,…)------=
n

STD

10 变异系数 CV(ofx1-xn)或 CV(x,y,…)------=
x

11 极差 RANGE(ofx1-xn)或 RANGE(x,y,…)-------=max-min

12 修正平方和(非缺失数据变量关于均值的离差平方和)CSS(ofx1-xn)或 CSS(x,y,…)

52
SAS 操作入门 编者:江南大学 吴有炜 53

n 2
----------------= ∑ ( xi − x)
i =1

∑x
2

13 未修正平方和(非缺失数据变量的平方和)USS(ofx1-xn)或 USS(x,y,…)-----= i
i =1


14 偏度 SKEWNESS (ofx1-xn)或 SKEWNESS (x,y,…)----
3

n ∑ ( xi − x)
=
(n − 1)(n − 2) s
3


15 峰度 KURTOSIS (ofx1-xn)或 KURTOSIS(x,y,…)--------
4
∑ ( xi − x) 3 (n −1)
2
n(n + 1)
= −
(n − 1)(n − 2)(n − 3) s
4
(n − 2)(n − 3)

(4) 随机数函数

随机数函数-------seed 每随意赋一个值可得到给定分布的随机变量抽样值


1 均匀分布随机数函数 UNIFORM(seed)或 RANuni(seed)


2 标准正态分布随机数函数 normal(seed)或 RANnor(seed) ,
均值为 a 方差为σ2 的正态分布随机数函数
X=a+sqrt(σ2)* RANnor(seed),

这儿,sqrt(x)= x
对数正态分布 Y=exp(X)

3 伽马分布随机数函数 RANgam(seed)

4 指数分布随机数函数 RANexp(seed)

5 三角分布随机数函数 RANtri(seed)

6 柯西分布随机数函数 RANcau(seed)

7 二项分布随机数函数 RANnml(seed)

8 泊松分布随机数函数 RANpoi(seed)

9 离散型分布随机数函数 RAN (seed,p1,p2,…pn)

X x1 x2 … xn
P p1 p2 … pn

例 2.5.1

以下程序运行后产生两组各 100 个抽样于均值为 170,方差为 30 的正态分布随机数


data norm;

do seed=1 to 100;
x=170+sqrt(30)*rannor(seed); /*x=均值为170,方差为30的正态分布随机
数*/

53
SAS 操作入门 编者:江南大学 吴有炜 54

y=170+sqrt(30)*rannor(seed);/*注意由于是随机数,两组结果不一样,且每
次都不一样*/
output;
end;
proc print; /*在SAS输出窗口给出结果*/
run;
输出结果(部分)如下图:

(5)一般函数

1 x 的绝对值 ABS(x)

2 x 的平方根 SQRT(x)

3 模运算(m 除以 n 的余数) MON(m,n)
○ 例 mon(63,12)=3
4 符号函数 Sign(x)
○ 例 sign(-6.7)=-1, sign(0)=0, sign(3.8)=1


5 取整函数 Int(x) 例 Int(-3.6)=-4, Int(4.8)=4;

Ceil(x)-----取≥x 的最小整数; Floor(x)-------取≤x 的最大整数


6 计算误差函数 Erf(x)

7 舍入函数 Round(x,n)
○ 例 Round(37.54362, 2)=37.54
8 数学函数 Exp(x) Log(x) Log2(x)
○ Log10(x) Cos(x) Sin(x) Tan(x) Arcos(x)
Arsin(x) Atan(x)

54
SAS 操作入门 编者:江南大学 吴有炜 55

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

第三章 描述性统计分析

第一节 描述性统计量的定义

1. 表示位置的特征值

变量 x 的一组观察值为(x1, x2, … , xn) , 则这组数据的一些特征值定义和其统计意义如


下:

1 n
均值 x=
n
∑x
i =1
i
;

设上述数据重新排序成 x(1) ≤x(2) ≤…≤ x(n) ,则


(1)最小值为 x(1); 最大值为 x(n);
(2) 中位数为上面重排序列中居中的数(n 为偶数时取居中一对数的均值)

55
SAS 操作入门 编者:江南大学 吴有炜 56

(3)p—百分位数上面重排序列中处于向后 p%位置的数, 特别 25 百分位数又称四分之


一分位数记 Q1,75 百分位数又称四分之三分位数记 Q3
(4)众数 mode
为频数最大的变量值(或频数表频数最大组组中值)

2. 表示离散程度的特征值

1
( )
n 2
∑ xi − x
2
方差 s2 = ;标准差 s= s ;
n −1 i =1

极差(或全距)R(anke)= x(n)- x(1) =xmax-xmin ; 四分位极差 Qv=Q3-Q1 ;

s s
变异系数 Cv= ×100% ; 标准误 sm = .
x n

3. 表示分布形状的特征量

n ∑ ( xi − x)
偏度 g1= 研究分布的对称, 正态分布为标准 g2=0;
(n − 1)(n − 2) s
3

g1=0 认为对称;g1>0 认为右偏(均值右侧数据更为分散);g1<0 认为左偏;

4
∑ ( xi − x) 3 (n −1)
2
n(n + 1)
峰度 g2= − 研究两侧极端
(n − 1)(n − 2)(n − 3) s
4
(n − 2)(n − 3)

数据分布,以

g2>0 表示数据中有较多远离均值的极端数值;g2<0 表示均值两侧的极端数据较少;故 g2


也可作为偏离正态分布的尺度.

第二节 编程进行

1. Means 语句和其它产生描述性统计量语句

(1) Means 语句

形式:

proc means 选项串; /*选项包括 data=输入文件名 maxdec=输出小数点位数

56
SAS 操作入门 编者:江南大学 吴有炜 57

missimg 要求遗漏数据作为一个分组处理 统计量关键字*/

var 被执行分析变量名串;/*被统计的变量*/
by 分组变量名串;/*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数值递
增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组变量
名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与 month
的二种情况: feb、jan 的四种交叉组合进行分组统计*/

class 分组变量名串; /*可以是名义变量(变量可以取值中文),无须用 proc sort 对 by 变量的值


排序 例 若有分组变量名串 sex(分男、女) month(分一月、二月) 则按 sex 的三种情况: male、
female、不分 male-female 与 month 的三种情况: 一月、二月、不分一月--二月的九种交叉
组合进行分组统计*/
/*若为 by sex; class month;则分成六个水平交叉组*/
weight 权变量名;
id 样本识别变量名串;

output out=统计值输出文件名 统计量关键字串(各种统计值);


注:统计量关键字包括:
n---观察值个数 nmiss---遗漏数据个数 mean---均值

1 n 2
std---= ∑
n − 1 i =1 ( x i − x)
标准差 min---最小值 max---最大值

range ---=max-min 极差 sum---观测值总和 var---=(std)2 样本方差

uss--- 总 平 方 和 css--- 总 离 差 平 方 和 stderr---= std/ n (均值的)标准误 cv

---=std/mean 变异系数 skewness---峰度 kurtosis---偏度 T---t 检验 prt---t 检验显著性


例 3.2.1
options nodate;/*options 意见语句指出不要输出文件运行日期*/
Data E31 ;
Input group age height weight sex $ ;
Cards;
2 34 163 46 w
1 43 176 54 m
1 23 158 51 w
1 65 154 45 w
1 35 178 65 m
1 38 166 57 w
2 41 159 67 w
2 17 162 48 w
1 19 173 47 m
2 27 180 75 m
;
proc sort;
by group; /*须先用
... proc sort ; by 被排序变量名串; 对数值变量由小而大字母变量由先而
................
..... */
后进行排序

57
SAS 操作入门 编者:江南大学 吴有炜 58

proc means data=E31 mean std n max min range stderr cv ;/*各种选项的意义见关键字定义*/
var age height weight;
by group;/*依 group 变量的序分组进行统计*/
output out=oE31 ;
proc print;
run;

Data E31 ;
Input group age height weight sex $ ;
Cards;
2 34 163 46 w
1 43 176 54 m
1 23 158 51 w
1 65 154 45 w
1 35 178 65 m
1 38 166 57 w
2 41 159 67 w
2 17 162 48 w
1 19 173 47 m
2 27 180 75 m
;
proc sort;
by group sex;/*按两个分类变量的水平组合排序*/
proc means data=E31 mean std n max min range stderr cv ;
var age height weight;
by group sex; /*按两个分类变量的每一水平组合为组(共四组)进行统计*/
output out=oE312 ;
proc print; /*将数据集显示在 output 窗口,print 语句缺省则数据集仅存入 work 中而不在 output
窗口显示*/
run;

proc means data=E31 mean std n max min range stderr cv ;


var age height weight;
output out=oE31 ;
proc print;
run;
按 group 分水平组(两组)、按 group×sex 分水平组合组(四组)及不分组的输出结果如下三表
(部分,统计量定义见关键字定义)(注:若改用 class 分组则每个变量分成三种情况)

58
SAS 操作入门 编者:江南大学 吴有炜 59

59
SAS 操作入门 编者:江南大学 吴有炜 60

(2)Summary 语句

Summary 语句形式:

proc summary 选项串 ; /*选项包括 data=输入文件名 maxdec=输出小数点位数


missimg 要求遗漏数据作为 class 变量下的一个分组处理 */
var 被执行分析变量名串;/*被统计的变量*/
by 分组变量名串; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数值递
增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组变量
名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与 month
的二种情况: feb、jan 的四种交叉组合进行分组统计*/
class 分组变量名串; /*可以是名义变量(变量可以取值中文),无须用 proc sort 对 by 变量的
值排序 例 若有分组变量名串 sex(分男、女) month(分一月、二月) 则按 sex 的三种情况:
male、female、不分 male-female 与 month 的三种情况: 一月、二月、不分一月--二月的九
种交叉组合进行分组统计*/
/*若为 by sex; class month;则分成六个水平交叉组*/freq 观测值重复次数变量名;
weight 权变量名;
id 样本识别变量名串;
output out=统计值输出文件名 统计量关键字串(各种统计值);
注:统计量关键字包括:
n---有效观察值个数 nmiss---遗漏数据个数 mean---均值 std---标准差 min---
最小值 max---最大值 range---极差 sum---观测值总和 var---样本方差 s2 uss---

总平方和 css---总离差平方和 stderr---均值的标准误 s/ n cv---变异系数 s/mean

T---t 检验 H0: 均值=0 prt---t 检验显著性


例 3.2.2
options nodate;/*不要输出日期*/
Data E32 ;
Input group age height weight sex $ ;
Cards;
2 34 163 46 w

60
SAS 操作入门 编者:江南大学 吴有炜 61

1 43 176 54 m
1 23 158 51 w
1 65 154 45 w
1 35 178 65 m
1 38 166 57 w
2 41 159 67 w
2 17 162 48 w
1 19 173 47 m
2 27 180 75 m
;
proc sort;
by group; /*须先用 proc sort ; by 分组变量名串; by 对变量 group 的值排序(字母升序)*/
proc Summary data=E32 mean std n max min range stderr cv ;
var age height weight;
by group;/*然后 by 依 group 变量的序分组进行统计*/
output out=OE32 ;
proc print; /*将数据集显示在 output 窗口,print 语句缺省则数据集仅存入 work 中而不在 output
窗口显示*/
run;
/*(输出略) */
Data E32 ;
Input group age height weight sex $ ;
Cards;
2 34 163 46 w
1 43 176 54 m
1 23 158 51 w
1 65 154 45 w
1 35 178 65 m
1 38 166 57 w
2 41 159 67 w
2 17 162 48 w
1 19 173 47 m
2 27 180 75 m
;
proc sort;
by group sex;/* 按 两 个 分 类 变 量 的 水 平 组 合 字 母 或 数 值 升 序 排 列 , 序
为:1—m,1—w,2—m.,2--w*/
proc Summary data=E32 mean std n max min range stderr cv ;/*选项选输出的多项统计量*/
var age height weight;
by group sex; /*按两个分类变量的每一水平组合为组(共四组)进行统计*/
output out=oE322 ;
proc print;
run;
/*(输出略)*/
Data E32 ;
Input group age height weight sex $ ;

61
SAS 操作入门 编者:江南大学 吴有炜 62

Cards;
2 34 163 46 w
1 43 176 54 m
1 23 158 51 w
1 65 154 45 w
1 35 178 65 m
1 38 166 57 w
2 41 159 67 w
2 17 162 48 w
1 19 173 47 m
2 27 180 75 m
;
proc sort;
by group ; /*须先用 proc sort ; by 分组变量名串; 对 by 变量的值排序(字母升序)*/
proc Summary data=E32 mean std n max min range stderr cv ;
var age height weight;
class sex; /*由 class 产生三类: 不分 wm(以空白显示)及 w,m */
by group ;/*由 by 产生二类:1,2 以上二行语句分成 6 个水平组合进行统计*/
output out=OE323 ;
proc print;
run;
输出见下表:

62
SAS 操作入门 编者:江南大学 吴有炜 63

(3)Univariate 语句

形式:

proc univariate 选项串; /*选项包括 data=输入文件名 plot---产生三种图:茎叶图

或平行条状图、盒形图、常态概率图 freq---产生频次分配表 normal---检定数据是否


符合正态分布 */

var 被执行分析变量名串;/*被统计的变量*/
by 分组变量名串; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数值递
增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组变量
名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与 month
的二种情况: feb、jan 的四种交叉组合进行分组统计,univariate 没有 class 分组指令*/
freq 观测值重复次数变量名;
weight 权变量名;
id 样本识别变量名串;

output out=统计值输出文件名 统计量关键字串(各种统计值) =被

要求变量名;/* 例….var x y;…output out=文件名 mean=mx my std=sdy;输出了变量 x

与 y 的均值及 y 的标准差* univariate 中可出现多次 output 指令 */


注:统计量关键字包括:
n---观察值个数 nmiss---遗漏数据个数 mean---均值 std---标准差 min---最小值
max---最大值 range---极差 Q3---75%分位数 Q1---25%分位数 Qrange--- Q3-Q1
mode---众数 median---中位数 sum---观测值总和 var---样本方差 s2 skewness---峰度
kurtosis---偏度 signsank---等级符号检定法 normal---正态分布检验
例 3.2.3

100 名学生身高体重指标

data wh1001;
input h w @@;
cards;
172.4 75.0 169.3 54.8 169.3 64.0 171.4 64.8 166.5 47.4 171.4 62.2
168.2 66.9 165.1 52.0 168.8 62.2 167.8 65.0 165.8 62.2 167.8 65.0
164.4 58.7 169.9 57.5 164.9 63.5 160.3 55.2 175.0 66.6 172.5 73.5
172.0 64.0 168.4 57.0 155.0 57.0 175.5 63.9 172.3 69.0 168.6 58.0
176.4 56.9 173.2 57.5 167.5 50.0 169.4 52.2 166.7 72.0 169.5 57.0
165.7 55.4 161.2 48.5 172.8 57.0 175.1 75.5 157.5 50.5 169.8 62.9
168.6 63.4 172.6 61.0 163.8 58.5 165.1 61.5 166.7 52.5 170.9 61.0
166.1 69.5 166.2 62.5 172.4 52.6 172.8 60.0 177.8 63.9 162.7 56.8
168.8 54.0 169.1 66.2 177.5 60.0 177.0 66.2 169.9 55.9 167.4 54.4
169.3 58.4 172.8 72.8 169.8 58.0 160.0 65.3 179.1 62.2 172.3 49.8
163.3 46.5 172.9 66.7 165.4 58.0 175.8 63.2 162.3 52.2 165.4 65.7
171.5 59.3 176.6 66.3 181.7 68.6 175.2 74.9 169.5 59.5 169.6 61.5
169.1 63.1 185.5 77.0 173.9 65.5 162.5 50.0 171.5 58.5 175.6 59.8

63
SAS 操作入门 编者:江南大学 吴有炜 64

166.0 75.5 167.2 63.3 171.9 57.0 176.6 58.4 177.3 67.0 169.2 71.8
166.2 49.8 181.7 63.0 175.8 68.3 172.3 55.5 172.7 58.5 174.3 64.0
171.2 59.0 174.8 68.0 165.4 55.5 169.1 64.8 167.9 62.0 176.8 64.0
183.5 69.9 165.5 48.6 171.0 70.5 170.3 58.5
;
proc univariate freq normal plot;/*选项freq输出变量频数分配表 normal检验样本是否符合
正态分布 plot绘制茎叶图,盒形图,正态概率图*/
var h w;
run;
输出结果树如下:

(4) tabulate 语句(制作数据表)

例 分类变量 A(二水平 A1,A2)、分类变量 B(三水平 B1,B2,B3) 、分类变量 C(二水平


C1,C2) 与分类变量 D(二水平 D1,D2)

星号: 以分类变量的所有水平组合为单元格或次分组---------------

B*A 产生
A*B 产生
B1 B2 B3

A1 A2 A1 A2 A1 A2 A1 A2
B1 B2 B3 all B1 B2 B3 all

A*(B ALL)产生(镶嵌)

A1 A2

B1 B2 B3 B1 B2 B3

64
SAS 操作入门 编者:江南大学 吴有炜 65

空格: 分类变量的各组在同一行(或列)上------------------
B C(称为一个向量)产生

B1 B2 C1 C2

括号: 先括号内后括号外-----------------------
A*(B C)(称为一个向量)产生

A1 A2
B1 B2 C1 C2 B1 B2 C1 C2

混合以上记号 A B*C*D C(称为一个向量)产生


B1 B2
A1 A2 A3 C1 C2 C1 C2 C1 C2
D1 D2 D1 D2 D1 D2 D1 D2

B* (A C*D) (称为一个向量) 产生
B1 A1 A2 A3 C1 C2
D1 D2 D1 D2
B2 A1 A2 A3 C1 C2
D1 D2 D1 D2

Table 语句------- table 页向量名, 行向量名, 列向量名, 单元格响应变量名;


table 行向量名, 列向量名, 单元格响应变量名;
table 列向量名, 单元格响应变量名;
tabulate 过程形式:
proc Tabulate data=制表数据名 选项串;
class 分类变量名串; /*可以是名义变量(变量可以取值中文),无须用 proc sort 对 by 变量
的值排序 例 若有分组变量名串 sex(分男、女) month(分一月、二月) 则按 sex 的三种情况:
male、female、不分 male-female 与 month 的三种情况: 一月、二月、不分一月--二月的九
种交叉组合进行分组统计*/
/*若为 by sex; class month;则分成六个水平交叉组*/

var 单元格响应变量名(数值);
by 分组变量名; ; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数值递
增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组变量
名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与 month
的二种情况: feb、jan 的四种交叉组合进行分组统计*/
format 变量名串; /*解释分类变量的类别*/
label 变量名串; /*解释分类变量的类别或响应变量的类别*/
table 页向量名, 行向量名, 列向量名, 单元格响应变量名;
(或 table 行向量名, 列向量名, 单元格响应变量名;)
(或 table 列向量名, 单元格响应变量名;)
keylabel 统计量代号=’代号解释’… ;/*例 keylabel all=’所有$’ mean=’均值’ pctsum=’和的
百分比’;*/

65
SAS 操作入门 编者:江南大学 吴有炜 66

tabulate 过程能计算的统计量有:
n---各单元格观察值个数 nmiss---各单元格遗漏数据个数 mean---均值 std---标准差
min---最小值 max---最大值 range---极差 sum---观测值总和 var---变量方差 s2

uss---未带权总离差平方和 css---带权总离差平方和 stderr---均值的标准误 s/ n


cv---变异系数 s/mean T---t 检验 prt---t 检验显著性 sumwgt---加权值的总和
pctn---次数 n 的百分比(格式: pctn<分母串>) pctsum---总和 sum 的百分比(格式: pctsum<
分母串>) all---所有统计量

例 3.2.4

Data E33 ;
Input group $ age height weight sex $ area $;
Cards;
2 34 163 46 女 上海
1 43 176 54 男 上海
1 23 158 51 女 江苏
1 65 154 45 女 上海
1 35 178 65 男 江苏
1 38 166 57 女 上海
2 41 159 67 女 江苏
2 17 162 48 女 江苏
1 19 173 47 男 上海
2 77 180 75 男 上海
1 45 178 67 男 江苏
1 59 157 65 男 上海
2 54 148 46 男 江苏
2 14 135 43 女 上海
1 15 132 39 女 江苏
;
proc format;
value $gmt “1”=’实验组’
“2”=’对照组’; /*参见第二章 format 格式的作用*/
proc tabulate;
class group sex area;
var height weight;
format group $gmt.;
table group,area*sex*(sum mean max min),( height weight );
/*表格构成:页—横轴—纵轴 二页,二个分类变量的四种水平组合的四种统计量(行
向量),二个响应变量(列向量)*/
table group* area * (sum mean max min), sex* height;
/*表格构成: 横轴—纵轴二个分类变量的四种水平组合的四种统计量(行向量),一个分类
变量和一个响应变量(列向量)*/
table group, height*(sum mean max min);
/*表格构成: 横轴—纵轴 一个分类变量的二种水平(行向量),一个响应变量的四种统计量
(列向量)*/

66
SAS 操作入门 编者:江南大学 吴有炜 67

run;
(输出结果略)

(5) Rank 语句(有序变量转换成名次变量)

形式:

proc rank data=输入数据名 选项串; /*选项包括:ties=high(或=low)相等数据取


高(或低)名次(内设为均值)
descending 数据由大到小排成
名次 1,2,… out=输出文件名*/

var 被排序数值变量名串;
ranks 名次变量名串;
by 分组变量名串; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数值
递增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组变
量名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与 month
的二种情况: feb、jan 的四种交叉组合进行分组统计*/

例 3.2.5

options nodate nonumber; /*输出不要日期等*/


data E35;
input name $ sex $ first second ;
compsit=0.3*first+0.7*second;
cards;
李明 男 75 87
刘小纯 女 89 . /*遗漏数据用 . 表示,否则该行数据会被自行删除*/
张扬 男 67 59
许灵灵 女 80 86
何文强 男 93 87
张苗 女 92 86
吴蕊芝 女 92 86
;
proc rank descending out=OE35; /* 选项descending数值变量(递减即由大到小,没有选项
descending默认为递增)转换成名次变量(1,2,…)以oE35文件名输
出,此时数据仍是原来的无序状态 */
var first second compsit; /*被转换的变量为first second compsit 等三
个变量*/
ranks rankfirst ranksecond rankcompsit; /*命名名次变量为rankcompsit等*/
proc sort; by rankcompsit; /*对名次变量rankcompsit用sort语句排序(默认序值由小到
大即1,2,…)*/
proc print ; /*将数据集显示在 output 窗口,print 语句缺省则数据集仅存入 work 中而不在
output 窗口显示*/
title ’总评成绩排序’;

67
SAS 操作入门 编者:江南大学 吴有炜 68

proc sort; by rankfirst;


proc print ;
title ’第一次成绩排序’;
proc sort; by ranksecond;
proc print ;
title ’第二次成绩排序’;
run;
输出结果如下表:

七种描述性统计量程序的输出结果表(*表示有该项输出,空白表示无该项输出)
Means Summary univariate chart tabulate corr plot
1 遗漏数据 * * * * *
2 有效数据 n * * * * *
3 加权总和 * * * *
4 平均值 mean * * * * * *
5 总和 sum * * * * * *
6 最大值 max/最小值 min * * * * *
7 极差(全距)range * * * *
8 总(离差)平方和(c)uss * * * *
9 变异数 * * * *
10 标准差 Std Dev * * * * *
11 标准误 stderr * * * *
12 变异系数 cv * * * *
13 偏度 skewness/峰度 kurtosas * *

68
SAS 操作入门 编者:江南大学 吴有炜 69

14 t 检验值/统计显著性 * * * *
15 中数 * *
16 四分位数/众数 *
17 皮尔逊-积差相关系数 *
18Spearman 的等级相关系数 *
19Kendall 的相关系数 *
20Hoeffing 的 D 相关系数 *
21 产生报表输出文件 是 否 是 是 是 是 是
22 产生 SAS 输出文件 是 是 是 否 否 是 是
23 含 Class 指令 是 是 否 否 是 否 否
24 含 By 指令 是 是 是 是 是 是 是
注:clm 总体均值置信区间的上下限; lclm 总体均值置信区间的下限; uclm 总体均值置信区间
的上限; t(t 检验μ=0 的 t 值),prt(t 值的双侧概率); α(1-α置信水平默认为 0.95)

2. FREQ 过程生成频数表

freq 语句形式:

proc freq 选项串; /*选项包括 data=输入文件名*/

tables 次数分配表的设计/选项串;/* 次数分配表的设计例 tables A—产生变量 A 的

频数分配表 tables (A--D)--- 产生四张单变量表


tables A* (B C)--- 产生两张列联表 A-B 与 A-C tables (A B)* (C D)--- 产生四张
列联表 A-C、A-D、B-C 与 B-D
选项: CHISQ---要求三种 χ2 检验 MEASURES---要求各种线性关系指标及其标
准误 CMH---测量行变量与列变量关系程度的一种统计检验 ALL---要求以上三种
检验 expected----要求单元格频数期望
deviation---要求单元格频数期望与实际频数之差 CellChi2---要求单元格对卡方
统计值的贡献 Alpha=概率值
PlCorr 多元相关系数*/
weight 权变量名;

by 分类变量名串; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数值递增


字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组变量名
串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与 month
的二种情况: feb、jan 的四种交叉组合进行分组统计*/
id 样本识别变量名串;
output out=统计值输出文件名 统计量关键字串;/*关键字有 CHISQ、MEASURES、CMH、
ALL 等(统计意义见 tables 语句的选项串)*/

例 3.2.6

69
SAS 操作入门 编者:江南大学 吴有炜 70

100 名学生的体重数据(见程序行)
data wh100;
input h w @@;
if w<=50.3 then wc= ' <=50.3';
else if w>50.3 and w<=54.1 then wc= '50.4-54.1';
else if w>54.1 and w<=57.9 then wc= '54.2-57.9';
else if w>57.9 and w<=61.7 then wc= '58.0-61.7';
else if w>61.7 and w<=65.5 then wc= '61.8-65.5';
else if w>65.5 and w<=69.3 then wc= '65.6-69.3';
else if w>69.3 and w<=73.1 then wc= '69.4-73.1';
else wc= '>=73.2';
wgroup=int((w-46.5)*8/(77-46.5)-0.001)+1;
cards;
172.4 75.0 169.3 54.8 169.3 64.0 171.4 64.8 166.5 47.4 171.4 62.2
168.2 66.9 165.1 52.0 168.8 62.2 167.8 65.0 165.8 62.2 167.8 65.0
164.4 58.7 169.9 57.5 164.9 63.5 160.3 55.2 175.0 66.6 172.5 73.5
172.0 64.0 168.4 57.0 155.0 57.0 175.5 63.9 172.3 69.0 168.6 58.0
176.4 56.9 173.2 57.5 167.5 50.0 169.4 52.2 166.7 72.0 169.5 57.0
165.7 55.4 161.2 48.5 172.8 57.0 175.1 75.5 157.5 50.5 169.8 62.9
168.6 63.4 172.6 61.0 163.8 58.5 165.1 61.5 166.7 52.5 170.9 61.0
166.1 69.5 166.2 62.5 172.4 52.6 172.8 60.0 177.8 63.9 162.7 56.8
168.8 54.0 169.1 66.2 177.5 60.0 177.0 66.2 169.9 55.9 167.4 54.4
169.3 58.4 172.8 72.8 169.8 58.0 160.0 65.3 179.1 62.2 172.3 49.8
163.3 46.5 172.9 66.7 165.4 58.0 175.8 63.2 162.3 52.2 165.4 65.7
171.5 59.3 176.6 66.3 181.7 68.6 175.2 74.9 169.5 59.5 169.6 61.5
169.1 63.1 185.5 77.0 173.9 65.5 162.5 50.0 171.5 58.5 175.6 59.8
166.0 75.5 167.2 63.3 171.9 57.0 176.6 58.4 177.3 67.0 169.2 71.8
166.2 49.8 181.7 63.0 175.8 68.3 172.3 55.5 172.7 58.5 174.3 64.0
171.2 59.0 174.8 68.0 165.4 55.5 169.1 64.8 167.9 62.0 176.8 64.0
183.5 69.9 165.5 48.6 171.0 70.5 170.3 58.5
;
proc print data=wh100;
run;
proc freq data=wh100;
tables wc ; /*或 tables wgroup; */
title '100名学生的体重分为8个组的频数表';
run;

proc chart data=wh100;


vbar w / midpoints=48 to 76 by 4;
title '对学生体重数据使用选项MIDPOINTS=产生的条形图';
run;

proc chart data=wh100;


vbar wgroup / discrete; /*或 vbar wc / discrete; */
title '输出的频数表用条形图表示';

70
SAS 操作入门 编者:江南大学 吴有炜 71

run;

proc univariate data=wh100 plot;


var w;
run; /*其输出有详细的统计量及茎叶图,盒形图,正态概率图*/
(输出结果略)

第三节 利用菜单系统

符号说明: 1) 项 点击该键 2) ⇒ 进入下一步


3) 下拉菜单↓ 点击后出现下拉菜单
4) 对话窗…. 点击后出现对话窗
5) × 项 在对话窗中多选项选中的项前 点击后出现×表示选中
6) 对话窗(键) ⇔ 操作完毕后要(点 OK)返回的对话窗(键)

1. 利用分析员系统(Analyst)作频数表等描述性分析

Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (分析员系统) (出现空白数据表)

⇒ 左上角 File ⇒ Open By Sas Name…

⇒ (在 Make one selection 下 ) work ( 点击被选中数据名) ⇒ (OK)


⇒ Statistics↓

⇒ Descriptive ↓ ⇒ 多 种 选 项 包 括 : 统 计 量 Summary Statistics, 分 布


Disteibution,相关性 Correlations,频数 Frequence Counts)

71
SAS 操作入门 编者:江南大学 吴有炜 72

若 ⇒ Frequency Counts… ( 频 数 ) ⇒ ( 选 择 变 量 名 ) ⇒
Frequencies ⇒ (OK)

若 ⇒ Distributions… (分布) ⇒ ( 选择变量名) ⇒ Analysis ⇒ (OK)

类似可进入统计量 Summary Statistics 对话窗口和相关性 Correlations 对话窗


2. 利用 SAS/INSIGHT 数据探索性分析系统作描述性分析

Solution↓ ⇒ Analysis↓
⇒ Interactive Data Analysis…(SAS/INSIGHT 数据探索性分析系统) ⇒
(在 Library 中) work ⇒ 在 Data Set 选中所要数据名: 这儿采用第八章第一节例

1 数据 data economy) ⇒ (Open) (数据打开后) ⇒ Analyze↓ ⇒

72
SAS 操作入门 编者:江南大学 吴有炜 73

Histogram/BarChart[Y] 直方图/盒形图
BoxPlot/MosaicPlot[Y] (Y)盒形图/(Y,X)散点图
Line Plot(Y,X) 折线图
Scatter Plot(Y,X) 散点图
Contour Plot(Z,Y,X) 等高线
Rotating(Z,Y,X) 三维散点图
Distribution(Y) 输出: 有效数据,(加权)和,均值,max,min,range,变异(系)数,标
准差,分位数,偏度,峰度,直方图
Fit(Y,X) 散点图,线性回归(包括检验)
Multivariate (Y,X) 多元分析:描述性统计量,相关阵,协方差阵,主成份分析析,因
子分析,典型相关分析

(1) 讨论数据的分布
........:

Analyze↓ ⇒ Distribution(Y) ⇒ (选中分析变量) ⇒ Y ⇒ Output ⇔ ⇒

⇒ Distribution (Y)对话窗口

73
SAS 操作入门 编者:江南大学 吴有炜 74

其中 Discription Statistics 主窗口多选项 包括:moments 矩表(含 N 观察数据个数,


Mean 均值, Std Dev 标准差, Variance 方差, Skewness 偏度, Kurtosis 峰度,), Quantiles 分位
表(给出变异性及百分位数),置信区间,检验,频数,Robust 尺度,正态性检验;
Graphs 主窗口多选项包括:盒形图,直方图等
进入 Density Estimation ⇔ 窗口----供选择分布(正态,对数正态,等)
的参数估计;
进入 Cumulative Distrition ⇔ 窗口---供选择分布(正态,对数正态,等)
的适合性和检验
⇒ (OK)

(2) 作直方图
....:

Analyze↓ ⇒ HistogramBar Chart(Y) (直方图) ⇒ 选中分析变量名


⇒Y

74
SAS 操作入门 编者:江南大学 吴有炜 75

⇒ (OK)(点击直方图的右下角▲ ⇒ Ticks… ⇔ ⇒ ( ⇒ Tick Incremnnt


(修改直方块步长,…,等 ) ⇒ OK ) , Value(在图的直方块上端注明频数) ⇒ OK

(3) 作分组数据的盒形图
.........

(以数据 Data veneer1 为例,数据见程序行)


Data veneer1;
input brand$ wear @@;
cards;
AC 2.2 AC 2.1 AC 2.4 AC 2.5 AC 3.6 AC 1.2
CH 2.2 CH 2.3 CH 2.4 CH 2.6
AJ 2.2 AJ 2.0 AJ 1.9 AJ 2.1 AJ 0.8
TU 2.4 TU 2.7 TU 2.6 TU 2.7
XT 2.3
;
proc print;
RUN;
分析以上数据,AC 有二个奇异值 3.6 与 1.2, AJ 有一个奇异值 0.8, TU 的中位数=2.65 靠近
最大值, XT 只有一个数据
Solution↓ ⇒ Analysis↓ ⇒ Interactive Data Analysis… ⇒

(在 Library 中) work ⇒ 在 Data Set 选中所要数据名:veneer1 ⇒ (Open) ⇒

Analyze↓ ⇒ Box Plot/Mosaic Plot[Y] ⇒ wear→Y (纵轴),brand→X (横轴)

⇒ OK 盒形图如下:
点击图左下角小三角可有作图多个选项,“盒子”的上下底差为内四分位间距 Q75-Q25,上
下方两条端线为样本的 75%分位数 Q75 与 25%分位数 Q25,50%的数据带在这个区间内. 盒内
的水平粗线为样本中位数 Q50,若它不在盒子中央则说明样本存在一定偏度. 盒内红色细线
为样本均值. 称值>Q75*1.5 或<Q25*1.5 的观测数据为奇异数据(倍数为三倍时称为极值数
据)”·”是奇异数据记号. 除奇异数据外的数据称为本体数据,盒形体上下方的延伸线端为
本体数据最大小值

75
SAS 操作入门 编者:江南大学 吴有炜 76

3.对数据 E34 的描述性分析

例 3.3.1
(设已有 sas 数据集 E34)
data E34;
input w @@;
cards;
75.0 64.0 47.4 66.9 62.2 62.2 58.7 63.5
66.6 64.0 57.0 69.0 56.9 50.0 72.0
;
run;

Analyze ⇒ Distribution(Y) ⇒ (在数据集 E34 下方点击选中变量 w) ⇒ Y ⇒ Output ⇒


×moments,× quantiles,
× Histogram/Bar Chart ⇒ OK ⇒ OK
注 × 多选框内打×表示选中 , moments 矩表含 N 观察数据个数, Mean 均值, Std Dev 标
准差, Variance 方差, Skewness 偏度, Kurtosis 峰度, quantiles 分位表给出变异性及百分位数,
Histogram/Bar Chart 为直方图.

76
SAS 操作入门 编者:江南大学 吴有炜 77

第四节 统计图

统计图主要可由以下三种方法获得:

(1) 分析员应用系统( Analyst)的 Graphs 子系统

(2) Interactive Data Analysis 探索性数据分析系统(SAS/INSIGHT 系统)

(3) 各种统计方法主对话窗的 plot 选项

1.条形图

用等宽条形的长短表示相互独立数据的各指标的数值大小.

例3.4.1 单式条形图-----每种品牌地板磨损量均值图

Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (分析员系统) (出现空白数据表)

⇒ 左上角 File ⇒ Open By Sas Name… ⇒ (在 Make one selection 下 ) work ( 点击被选中数

77
SAS 操作入门 编者:江南大学 吴有炜 78

据 名 Data veneer) ⇒ (OK) ⇒ Statistics ↓ ⇒ ANOVA ⇒ One-Way

ANOVA… ⇒
Independent 填分类变量 brand,Dependent 因变量(响应变量)填 wear ⇒
Plots ⇔ ⇒ 在 Types of plots 对话窗口中选择×Means plot ⇒ OK ⇒ OK
输出见下图

78
SAS 操作入门 编者:江南大学 吴有炜 79

2. 直方图

直方图是以一组无间隔的直条图表示频数或频率分布的统计图

例 3.4.2 频数直方图-----每种品牌地板磨损量频数直方图

Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (分析员系统) (出现空白数据表)

⇒ 左上角 File ⇒ Open By Sas Name… ⇒ (在 Make one selection 下 ) work ( 点击被选
中数据名 Data veneer) ⇒ (OK) ⇒ Graphs ↓ ⇒ Bar Chart ( 频数图) ⇒ Vertical…

( 垂直图) (或 Horizontal… 水平图) 在 Vertical Bar Chart 对话窗口中因变量


wear→ chart 分类变量 brand→ Group by (各品牌的直方图并列)(或分类变量
brand→ Stack by 各品牌的频数直方块叠在一起) ⇒ OK
对话窗口及输出见下两图

79
SAS 操作入门 编者:江南大学 吴有炜 80

例 3.4.3 频率直方图-----每种品牌地板磨损量频率直方图

Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (分析员系统) (出现空白数据表)

⇒ 左上角 File ⇒ Open By Sas Name… ⇒ (在 Make one selection 下 ) work ( 点击被选
中 数 据 名 Data veneer) ⇒ (OK) ⇒ Graphs ↓ ⇒ Histogram… ( 频 率 图 ) ⇒ 在
Histogram 对话窗口中因变量 wear→ Anaysis (若分类变量 brand→ Class (每
个品牌的频率直方图各一张,无此项选择则不区分品牌) ⇒ OK
对话窗口及输出见下两图

80
SAS 操作入门 编者:江南大学 吴有炜 81

3. 圆饼图

以分割的圆面积表示各部分与总体的比例关系

例 3.4.4 各品牌样品数的饼形图及磨损量饼形图

Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (分析员系统) (出现空白数据表)

⇒ 左上角 File ⇒ Open By Sas Name… ⇒ (在 Make one selection 下 ) work ( 点击被选
中数据名 Data veneer) ⇒ (OK) ⇒ Graphs↓ ⇒ Pie Chart… ⇒ 在 Pie Chart 对话窗

口 , 若 分 类 变 量 brand→Chart 则 生 成 各 品 牌 样 品 数 的 饼 形 图 , 若 响 应 变 量

81
SAS 操作入门 编者:江南大学 吴有炜 82

wear→Chart 则生成磨损量饼形图(亦可进入选项 Variables 要求按每个品牌作图) ⇒ OK

以下为对话窗及两种饼形图

82
SAS 操作入门 编者:江南大学 吴有炜 83

4. 盒形图

主要反映变量的分位数
例 3.4.5 数据 Data Veneer1 的盒形图
Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (分析员系统) (出现空白数据表)

⇒ 左上角 File ⇒ Open By Sas Name… ⇒ (在 Make one selection 下 ) work ( 点击被选
中数据名 Data veneer1) ⇒ (OK) ⇒ Graphs↓ ⇒ Box Plot… ⇒ 在 Box Plot 对话窗口

中因变量 wear→ Anaysis 分类变量 brand→ Class ⇒ OK


对话窗及输出图如下:

83
SAS 操作入门 编者:江南大学 吴有炜 84

以上作图亦可利用 Interactive Data Analysis 子系统进行

Solution↓ ⇒ Analysis↓ ⇒ Interactive Data Analysis… ⇒

(在 Library 中) work ⇒ 在 Data Set 选中所要数据名:veneer1 ⇒ (Open) ⇒

Analyze↓ ⇒ Box Plot/Mosaic Plot[Y] ⇒ wear→Y (纵轴),brand→X (横轴)

⇒ OK 盒形图如下:
点击图左下角小三角可有作图多个选项,“盒子”的上下底差为内四分位间距 Q75-Q25,上
下方两条端线为样本的 75%分位数 Q75 与 25%分位数 Q25,50%的数据带在这个区间内. 盒内
的水平粗线为样本中位数 Q50,若它不在盒子中央则说明样本存在一定偏度. 盒内红色细线
为样本均值. 称值>Q75*1.5 或<Q25*1.5 的观测数据为奇异数据(倍数为三倍时称为极值数
据)”·”是奇异数据记号. 除奇异数据外的数据称为本体数据,盒形体上下方的延伸线端为
本体数据最大小值

84
SAS 操作入门 编者:江南大学 吴有炜 85

5. 散点图

反映变量间的相关情况,可对回归曲线有初步印象

例 3.4.6 数据 Data hw 变量间的散点图

Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (分析员系统) (出现空白数据表)

⇒ 左上角 File ⇒ Open By Sas Name… ⇒ (在 Make one selection 下 ) work ( 点击被选
中数据名 Data veneer1) ⇒ (OK) ⇒ Graphs↓ ⇒ Scatter Plot ⇒ 在 Scatter Plot 对话

窗口中因变量 y→ Y Axis (纵轴),自变量 x→ X Axis (横轴) ⇒ OK


对话窗及输出图如下:

85
SAS 操作入门 编者:江南大学 吴有炜 86

另外还可作三维散点图

6. 折线图

反映变量间的相关情况,可对回归曲线有初步印象

例 3.4.7 数据 Data hw 变量间的折线图

Solution↓ ⇒ Analysis↓ ⇒ Interactive Data Analysis… ⇒

(在 Library 中) work ⇒ 在 Data Set 选中所要数据名:Data hw ⇒ (Open) ⇒

Analyze↓ ⇒ Line Plot(Y X) ⇒ y→Y (纵轴),x→X (横轴) ⇒ OK

对话窗及折线图如下:

86
SAS 操作入门 编者:江南大学 吴有炜 87

7.(回归)曲线图

例 3.4.8 数据 Data hw 变量间的预测因变量对自变量图与因变量观测值对自变量图

Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)


1 (出现空白数据表)录入数据 ⇒ File ⇒ Save ,

2 或调用已有数据: ⇒ File ⇒ Open By Sas Name…

(在 Make one selection 窗口中) work 选中数据名 Data hw ⇒ (OK)
⇒ Statistics ⇒ Simple…一元回归 ⇒ (一元回归主窗口)
自变量 x→Explanatory,因变量 y→Dependent ⇒ 模型选项有一次、二次、三次
多项式,注意到散点的情况故在 Model 选项选立方曲线 Cubic ⇒ Plots 选项在
Plot 对话窗口选择× Plot observed vs independent ⇒ OK ⇒ OK
两个对话窗及输出图如下:

87
SAS 操作入门 编者:江南大学 吴有炜 88

88
SAS 操作入门 编者:江南大学 吴有炜 89

8. 等值线图

例 3.4.9 数据集 F62(先运行 E62G)


Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (分析员系统) (出现空白数据表)

⇒ 左上角 File ⇒ Open By Sas Name… ⇒ (在 Make one selection 下 ) work ( 点击被选
中数据名 Data F62) ⇒ (OK) ⇒ Graphs↓ ⇒ Contour Plot… ⇒ 在 Surface Plot 对话

窗口中自变量 x2→ Y Axis (纵轴),自变量 x1→ X Axis (横轴), 因变量 y1→ Z


Axis (竖轴) ⇒ OK
对话窗及输出图如下:

89
SAS 操作入门 编者:江南大学 吴有炜 90

9. 三维曲面图

(1) 利用菜单系统

例 3.4.10 数据集 E62 的三维图

Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (分析员系统) (出现空白数据表)

⇒ 左上角 File ⇒ Open By Sas Name… ⇒ (在 Make one selection 下 ) work ( 点击被选
中数据名 Data E62) ⇒ (OK) ⇒ Graphs↓ ⇒ Surface Plot ⇒ 在 Surface Plot 对话窗

口中自变量 x2→ Y Axis (纵轴),自变量 x1→ X Axis (横轴), 因变量 y1→ Z Axis
(竖轴) ⇒ OK
对话窗及输出图如下:

90
SAS 操作入门 编者:江南大学 吴有炜 91

(2) 编程序作三维曲面图

例 3.4.11 数据集 E62 的三维图

(以下程序保存名这 data E62G1,需先运行程序 E62):

proc g3grid data=E62 out=F62;/*光滑数据集E62中数据点,输出数据集F62*/


grid X1 * X2 = Y1;
run;
/* 以下作三维图 */
proc g3d data=F62 gout=G62;/*用数据集F62作三维面图输出图名为G62*/
plot X2 * X1 = Y1 / /*作x2(横)—x1(纵)—y1(竖)三维图/以下
为作三维图的选项*/
name = 'G62' /*给响应面命名为G62*/
caxis = BLACK /*轴的颜色为黑色(亦可采用其它颜色)*/
ctext = BLACK /*轴的刻度的颜色为黑色(亦可采用其它颜色)*/
cbottom = GREEN /*响应面的下侧面为绿色(亦可采用其它颜色)*/
ctop = BLUE /*响应面的上侧面为兰色(亦可采用其它颜色)*/
tilt = 70 /*竖轴的高度为70(可调)*/
rotate = 70 /*x2—x1坐标面绕竖轴的转动角度(可调)*/
xticknum = 4 /*x轴上有4个刻度点(可调)*/
yticknum = 4 /*y轴上有4个刻度点(可调)*/
zticknum = 4 /*z轴上有4个刻度点(可调)*/
;
run;
输出图如下:

也可从回归方程作响应面,在对数据集E62进行响应面回归(Rsreg)后得回归方程(固定水平x3=0,
本例自变量均已经编码处理)
2 2
y1=37.9-0.5625x1-0.6x2-2.875x1 -3.575x1x2-3.45x2
SAS 程序如下:

Data E62G ;

91
SAS 操作入门 编者:江南大学 吴有炜 92

Do x1=-1 to 1 by 0.1; /*当自变量是原始变量时取类似的二元网格点,即 do 变量=左端点


to 右端点 by 步长*/

Do x2=-1 to 1 by 0.1; /*当自变量是原始变量时取类似的二元网格点,即 do 变量=左端点


to 右端点 by 步长*/

Y1=37.9-0.5625*x1-0.6*x2-2.875*x1**2-3.575*x1*x2-3.45*x2**2;
Output;
End;

End;

Proc print;

Run; /*以上为由回归方程建立作图数据集*/

/*以下作响应面图,先光滑数据,再作三维图*/

proc g3grid data=E62G out=F621;/*光滑数据集E62G中数据点,输出数据集F621*/


grid X1 * X2 = Y1;
run;
/* 以下作三维图 */
proc g3d data=F621 gout=G621;/*用数据集F621作三维面图输出图名为G621*/
plot X2 * X1 = Y1 / /*作x2(横)—x1(纵)—y1(竖)三维图/以下为
作三维图的选项(均可缺省)*/
name = 'G621' /*给响应面命名为G621*/
caxis = BLACK /*轴的颜色为黑色(亦可采用其它颜色)*/
ctext = BLACK /*轴的刻度的颜色为黑色(亦可采用其它颜色)*/
cbottom = GREEN /*响应面的下侧面为绿色(亦可采用其它颜色)*/
ctop = BLUE /*响应面的上侧面为兰色(亦可采用其它颜色)*/
tilt = 70 /*竖轴的高度为70(可调)*/
rotate = 70 /*x2—x1坐标面绕竖轴的转动角度(可调)*/
xticknum = 4 /*x纵轴(x1)上有4个刻度点(可调)*/
yticknum = 4 /*y横轴(x2)上有4个刻度点(可调)*/
zticknum = 4 /*z竖轴上有4个刻度点(可调)*/
;
run;
输出图如下:

92
SAS 操作入门 编者:江南大学 吴有炜 93

上例原始变量为: z1 0.02~0.06 z2 0.004~0.012 z3 0.002~0.004

编码公式为 编码变量=(原始变量 – 中心水平)/半个变化区间

例 编码变量 x1=(z1 – 0.04)/0.02

习题三

3--1 用正态分布随机数函数生成均值为 162,方差为 30 的 100 个正态分布随机数

3—2 用编程的方法(means,univariate,freq,chart)计算 3—1 数据的常规统计量(均值,标准


差,变异系数,偏度和峰度)和频数直方图

3—3 用 SAS/INSIGHT 和”分析员应用” 计算 3—1 数据的常规统计量(均值,标准差,


变异系数,偏度和峰度)和频数直方图

93
SAS 操作入门 编者:江南大学 吴有炜 94

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

第四章 参数估计和假设检验
统计意义: 参数估计通过总体的一组数据来估计总体的特征值(参数)主要是均值和
方差.

假设检验先设定零假设 H0: 参数μ=μ0 和对立假设 H1: 参数μ≠μ0 通过总体


的一组数据分析应该接受零假设还是拒绝零假设(从而接受对立假设). 特别提醒 ....在 SAS 的
各种埸合输出中涉及检验的概率值 P,当 P 值<0.05 时称对立假设显著成立,( 当 P 值<0.01 时
称对立假设高度显著成立),而 P 值>0.05 则应接受零假设,因此解读 SAS 输出时涉及 P 值要
与零假设密切联系.

第一节 单个总体均值和方差的检验

..: SAS 系统输出形如 Prob>t(或 Prob>u)中的 Prob 是零假设成立的概率,一般


注意
Prob<0.05 就否定零假设否则就接受零假设

94
SAS 操作入门 编者:江南大学 吴有炜 95

1. 单个总体均值和方差的区间估计

注求参数的置信区间和对参数进行假设检验是等价的,在’’分析员应用’’中将置信区间
计算作为假设检验的特殊情况只需填入参数检验的零假设值即可.

例 对数据 Data norm 求均值和方差的区间估计

(1)求均值 a 的区间估计

(数据 Data norm)

Solution ↓ ⇒ Analysis ↓ ⇒ Analyst ↓ ( 分 析 员 系 统 ) ( 出 现 空 白 数 据 表 )


⇒ File ⇒ Open By Sas Name…
⇒ (在 Make one selection 窗口中) work ( 点击被选中数据名:Data norm 见 V8 文件))
⇒ (OK)
⇒ Statistics↓ ⇒ ⇒ Hypothesis Tests

⇒ one-Sample t-test for a Mean… 进入 one-Sample t-test for a Mean:(数据名)窗

One Sample t—test for a Mean… ⇒ one-Sample t-test for a Mean: (Norm 待分析数
据名)窗口(单总体均值检验)

95
SAS 操作入门 编者:江南大学 吴有炜 96

待分析变量 x→Variable
(在 Hypothesis 框注意区间估计时框 零假设 Null: 填 Mean=0 ,而假设检验时则
应填入零假设值; 区间估计时 备择假设 Alternate(选择)Mean^=0 而假设检验时
则应根据双侧或单侧检验作相应选择) ⇒

Tests ⇔ ⇒ 进入 one-Sample t-test for a Mean:Tests 窗口


Confidence Intervals( 置信区间 ) ⇒ ( 单选 Interval 双侧 ( 本例 ) 或 Lower
Bound 单侧下方有界或 Supper Bound 单侧上方有界) ⇒ Confidence Level(填入
置信水平) ⇒ OK

⇒ OK
输出结果如下:

Std .Dev
均值的 95%显著水平的置信区间为:Mean±1.96× = Mean±1.96×Std.Error 即
n

170.44±1.96×0.49 即[169.46 171.43]

由于 P 值<0.0001 故拒绝零假设

96
SAS 操作入门 编者:江南大学 吴有炜 97

(2) 单个总体方差σ2 的区间估计

(数据 Data norm)

Solution ↓ ⇒ Analysis ↓ ⇒ Analyst ↓ ( 分 析 员 系 统 ) ( 出 现 空 白 数 据 表 )


⇒ File ⇒ Open By Sas Name… ⇒ (在 Make one selection 窗口中) work 选中数据
名 (Data norm) ⇒ (OK) Statistics↓ ⇒ Hypothesis Tests

⇒ One Sample Test for a Variance… ⇒ ( 待 分 析 变 量 x→Variable) ( 在


Hypothesis 框注意区间估计时零假设 Null: Var= 填入任一正数,而假设检验
时则应填入零假设值; 区间估计时 备择假设 Alternate(选择)Var^=0 而假设检验
时则应根据双侧或单侧检验作相应选择)
⇒ Intervals(置信区间) ⇒ (单选 Interval 双侧(本例)或 Lower Bound 单侧下方有
界 或 Supper Bound 单 侧 上 方 有 界 ) ⇒ Confidence Level( 填 入 置 信 水 平 )
⇒ OK ⇒ OK 运行结果如下图

97
SAS 操作入门 编者:江南大学 吴有炜 98

方差的 95%显著水平的置信区间为 [18.861 33.013]

2. 单个总体均值和方差的检验

(1)均值 a 的假设检验

(本例数据 Data norm 检验均值 a=170)

Solution ↓ ⇒ Analysis ↓ ⇒ Analyst ↓ (分析员系统) (出现空白数据


表) ⇒ File ⇒ Open By Sas Name…

⇒ (在 Make one selection 窗口中) work 选中数据名 (Data norm) ⇒


⇒ (OK) Statistics↓ ⇒
⇒ Hypothesis Tests ⇒ One Sample t—test for a Mean…
⇒ (待分析变量 x→Variable)
(在 Hypothesis 框假设检验时则应填入零假设值 Null: 填 Mean=170; 备择假设
Alternate(选择)Mean^=0 或单侧检验作相应选择) ⇒ Test ⇒
⇒ Confidence Intervals(置信区间) ⇒ (单选 Interval 双侧(本例)或 Lower Bound
单侧下方有界或 Supper Bound 单侧上方有界) ⇒ Confidence Level(填入置信水

98
SAS 操作入门 编者:江南大学 吴有炜 99

平) ⇒ OK ⇒ OK
输出结果如下(由于 Prob=0.3709>0.05 故接受零假设: x 的均值=170)

(2) 单总体方差σ2 的假设检验

(本例数据 Data norm 检验σ2=30)

Solution ↓ ⇒ Analysis ↓ ⇒ Analyst ↓ ( 分 析 员 系 统 ) ( 出 现 空 白 数 据 表 )


⇒ File ⇒ Open By Sas Name… ⇒ (在 Make one selection 窗口中) work 选中数据
名 (Data norm) ⇒ (OK) Statistics↓ ⇒ Hypothesis Tests

⇒ One Sample Test for a Variance… ⇒ (待分析变量 x→Variable) (假设检验


时在 Hypothesis 框填入零假设值 Null: Var= 170 ; 备择假设 Alternate(选
择)Var^=0 根据双侧或单侧检验作相应选择)
⇒ Intervals(置信区间) ⇒ (单选 Interval 双侧(本例)或 Lower Bound 单侧下方有
界或 Supper Bound 单侧上方有界) ⇒ Confidence Level(填入置信水平) ⇒ OK
⇒ Titles (进入后填好标题”方差的假设检验”) ⇒ OK ⇒ OK 运行结果如下图:

由于 Prob=0.1805>0.05 故
接受零假设

即 方 差 σ 2=30, 方 差 的
95%显著水平的置信区间

[18.861 33.017]

99
SAS 操作入门 编者:江南大学 吴有炜 100

第二节 两组均值比较

1. 两个独立总体均值差的检验

(1) 用菜单系统比较两个独立总体均值差的参数检验

认为总体服从正态分布(本例数据 Data norm 检验均值μ1=μ2)

Solution ↓ ⇒ Analysis ↓ ⇒ Analyst ↓ ( 分 析 员 系 统 ) ( 出 现 空 白 数 据


表) ⇒ File ⇒ Open By Sas Name… ⇒ (在 Make one selection 窗口中) work 选中数

据名 (Data norm 见 V8 文件) ⇒ (OK) Statistics↓ ⇒ Hypothesis Tests

⇒ Two Sample t—test for Means… ⇒ Groups are in 选 Two variable ⇒

(待分析变量 x→Group1) ⇒ (待分析变量 y→Group2) ⇒

(在 Hypothesis 框填入零假设值)Null: Mean1-Mean2=0; 备择假设 Alternate(选


择)Mean^=0 或单侧检验作相应选择) ⇒ Test ⇒ Confidence Intervals(置信区间)
⇒ (单选 Interval 双侧(本例)或 Lower Bound 单侧下方有界或 Supper Bound 单
侧上方有界) ⇒ Confidence Level(填入置信水平) ⇒ OK (可在 Titles 填入标题)
⇒ OK
输出结果如下(由于无论方差是否相等均有 Prob(分别为 0.4946 与 0.5431)>0.05 故接受零假
设: x 的均值=y 的均值)
由于 Prob=0.5638>0.05 故接受零假设 H0: μ1=μ2 均值差μ1-μ295%显著水平的置信区

Std .Dev
间为 Mean 差±1.96× = Mean 差±1.96×Std.Error 即[-1.02 1.87]
n

100
SAS 操作入门 编者:江南大学 吴有炜 101

(2) 编程比较两个独立组均值的非参数检验------Wilcoxon 秩和检验

总体的分布可以未知

例 4.2.1

分类变量 group-----溃疡(病人)、正常(人),

判断 5%显著水平下平均溶菌酶 lysolevl 有无显著差异


data gastric;
input group $ lysolevl @@;
cards;
溃疡 0.2 溃疡 10.4 溃疡 0.3 溃疡 10.9 溃疡 0.4 溃疡 11.3 溃疡 1.1
溃疡 12.4 溃疡 2 溃疡 16.2 溃疡 2.1 溃疡 17.6 溃疡 3.3 溃疡 18.9
溃疡 3.8 溃疡 20.7 溃疡 4.5 溃疡 24 溃疡 4.8 溃疡 25.4 溃疡 4.9
溃疡 40 溃疡 5 溃疡 42.2 溃疡 5.3 溃疡 50 溃疡 7.5 溃疡 60 溃疡 9.8
正常 0.2 正常5.4 正常 0.3 正常 5.7 正常 0.4 正常 5.8 正常 0.7
正常 7.5 正常 1.2 正常 8.7 正常 1.5 正常 8.8 正常 1.5 正常 9.1
正常 1.9 正常 10.3 正常 2 正常 15.6 正常 2.4 正常 16.1 正常 2.5
正常 16.5 正常 2.8 正常 16.7 正常 3.6 正常 20 正常 4.8 正常 20.7
正常 4.8 正常 33
;
proc npar1way data=gastric wilcoxon; /*用 npar1way 对data=gastric进行 wilcoxon
秩和检验*/
class group;
var lysolevl;
title '胃溃疡病人与对照组的比较'; /*若p值<显著水平α认为两组均值置信水平1-α下有显著差异,
否则认为无显著差异*/
run;

(3) 比较分析两个独立组均值的 t—检验和其它程序

T---检验程序形式:

Proc ttest data=输入文件名 选项; /*当两组数据个数不相当时加选项 chcoran*/


Class 分类变量名; /*可以是名义变量(变量可以取值中文),无须用 proc sort 对 by 变量的
值排序 例 若有分组变量名串 sex(分男、女) month(分一月、二月) 则按 sex 的三种情况:
male、female、不分 male-female 与 month 的三种情况: 一月、二月、不分一月--二月的九
种交叉组合进行分组统计*/

Var 被执行分析变量名串;
By 分组变量名; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数值递增
字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组变量名
串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与 month
的二种情况: feb、jan 的四种交叉组合进行分组统计*/

101
SAS 操作入门 编者:江南大学 吴有炜 102

/*若为 by sex; class month;则分成六个水平交叉组*/

例 4.2.2

下面为男,女身体脂肪含量数据(%)

男 13.3 女 22 男 19 女 26 男 20 女 16 男 8 男 18 女 12 男 22 男 20 女 30
女 21.7 男 31 男 21 女 23.2 男 16 男 12 男 24 女 21 女 28 女 23
程序

Data Bodyfat;
Input sex $ fatpct @@;
Cards;
男 13.3 女 22 男 19 女 26 男 20 女 16 男 8 男 18 女 12 男 22 男 20 女 30
女 21.7 男 31 男 21 男 12 女 23.2 男 16 男 12 男 24 女 21 女 28 女 23
; /* 注(中文)字符变量和数值变量之间必须有空格*/
run;
/*方法一: 编程进行*/
proc print data=bodyfat;
title ’参加体型锻炼的男女体脂’; /* 打印标题*/
proc means data=bodyfat;
class sex; /*由于 sex 变量的值是中文(无法排序)故需分组时不能用需
要先排序的 by 语句只能用 class 语句进行分组*/
var fatpct;
run;
proc chart data=bodyfat; /*作图程序*/
vbar fatpct/group=sex; /* vbar 直方块变量…/ group=…(按…分组)*/
title ’参加体型锻炼的男女体脂’;
run;
proc ttest data=bodyfat; /* T—检验: H0:μm=μw ,H1:μm≠μw*/
class sex;
var fatpct;
title ’参加体型锻炼的男女体脂’;
run;
proc chart data=bodyfat;
vbar fatpct/group=sex;
title ’参加体型锻炼的男女体脂’;
run;
proc ttest data=bodyfat;
class sex;
var fatpct;
title ’参加体型锻炼的男女体脂’;
run;
/*以下将上例改用先用 format 语句将无序中文字符”男、女”转换成有序英文字
符”male、female”然后用 proc sort…by…语句排序分组*/

102
SAS 操作入门 编者:江南大学 吴有炜 103

Proc format;
Value $sexfmt '男'='male' '女'='female';
Data Bodyfat;
Input sex $ fatpct @@;
Format sex sexfmt.;/* 用 format 语句将”男、女”转换成”male、female”*/
Cards;

男 13.3 女 22 男 19 女 26 男 20 女 16 男 8 男 18 女 12 男 22 男 20 女 30
女 21.7 男 31 男 21 男 12 女 23.2 男 16 男 12 男 24 女 21 女 28 女 23

;
run;

proc print data=bodyfat;


title ’参加体型锻炼的男女体脂’; /* 打印标题*/
proc sort data=bodyfat;
by sex;
proc means data=bodyfat;
by sex; /*如果 sex 变量的值是中文(无法排序)故需分组时不能用需要先排序的 by
语句只能用 class 语句进行分组,现在 sex 的值是英文则可排序了*/
var fatpct;
run;
proc chart data=bodyfat; /*作图程序*/
vbar fatpct/group=sex; /* vbar 直方块变量…/ group=…(按…分组)*/
title ’参加体型锻炼的男女体脂’;
run;
proc ttest data=bodyfat; /* T—检验: H0:μm=μw ,H1:μm≠μw*/
class sex;
var fatpct;
title ’参加体型锻炼的男女体脂’;
run;
proc chart data=bodyfat;
vbar fatpct/group=sex;
title ’参加体型锻炼的男女体脂’;
run;
proc ttest data=bodyfat;
class sex;
var fatpct;
title ’参加体型锻炼的男女体脂’;
run;

103
SAS 操作入门 编者:江南大学 吴有炜 104

输出结果见下表(部分):

上表第一部分给出男女二组的均值、标准差、标准误的估计及置信上、下限,第二部分指出
无论方差的齐性成立与否零假设(两组均值无显著差异)均成立(P 值分别=0.1031 与
0.098>0.05) 第 三 部 分 则 指 出 方 差 齐 性 成 立 (P 值 =0.7182>0.05 支 持 Equality of
Variances)

方法二: 利用分析员应用系统(设已有数据集 data Bodyfat)


Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (出现空白数据表) ⇒ File ⇒ Open By
Sas Name… ⇒ (在 Make one selection 窗口中) Work ⇒ (数据名 Data Bodyfat) 、
⇒ OK ⇒
1) ⇒ Graphs↓ ⇒ BarChart↓ ⇒ Vertical… ⇒ fatpct ⇒ Chart ⇒ sex ⇒
⇒ Group By ⇒ (OK)(作出直方图)
2) Statistics ↓ ⇒ Descriptive ↓ ⇒ Frequency

Counts… ( 频数) ⇒ 选择变量名 fatpct ⇒ Frequencies ⇒ Variables← ( ⇒ Sex


⇒ By Group ⇒ ⇒ OK ) ⇒ (OK) (频数分析)

2. 成对数据组均值差的检验

成对数据组中每对数据都是发生在一个观察体的两次观测数据,欲检验前后两次均值
有无差异
例 4.2.3

现有 20 名学生参加二次同一门课程的测验,成绩见程序(数据名 Data Test)中,要检验二


次测验难度是否相同

data Test;
input student exam1 exam2 @@;

104
SAS 操作入门 编者:江南大学 吴有炜 105

cards;
1 93 98 2 88 74 3 89 67 4 88 92 5 67 83 6 89 90 7 83 74
8 94 97 9 89 96 10 55 81 11 88 83 12 91 94 13 85 89 14
70 78
15 90 96 16 90 93 17 94 81 18 67 81 19 87 93 20 83 91
;
run;

(1)方法 1 编程进行

data Test;
input student exam1 exam2 @@;
scordiff = exam2 - exam1; /*便于处理均值差*/
cards;
1 93 98 2 88 74 3 89 67 4 88 92 5 67 83 6 89 90 7 83 74
8 94 97 9 89 96 10 55 81 11 88 83 12 91 94 13 85 89 14 70 78
15 90 96 16 90 93 17 94 81 18 67 81 19 87 93 20 83 91
;

proc means data=Test;


var scordiff;
title '测验分数差值的概括’;
run;
proc chart data=Test;
vbar scordiff;
title '测量分数差值的条形图'; /*条形图以分组差异的中点为横坐标值,以频数为纵坐标值*/
run;
proc ttest data=Test ; /*成对差值的t---检验*/
paired exam1*exam2; /*说明成对变量为exam1对exam2*/
run;
输出部分结果如下:

从表中看出差异的概率值P=0.3116>0.05故接受零假设即两次考的难度无显著差异

105
SAS 操作入门 编者:江南大学 吴有炜 106

(2)方法 2 利用分析员菜单系统

(本例配对数据 Data Test 检验均值μ1=μ2)

Solution ↓ ⇒ Analysis ↓ ⇒ Analyst ↓ (分析员系统) (出现空白数据


表) ⇒ File ⇒ Open By Sas Name…

⇒ (在 Make one selection 窗口中) work 选中数据名(Data Test) ⇒ (OK) Statistics↓



⇒ Hypothesis Tests ⇒ Two--Sample Paried t—test for Means… ⇒
⇒ (待分析分变量 1 exam1→Group1) ⇒ (待分析分变量 2 exam2→Group2) ⇒
( 在 Hypothesis 框填入零假设值 )Null: Mean(Group1-Group2)=0; 备择假设
Alternate( 选 择 )Mean^=0 或 单 侧 检 验 作 相 应 选 择 ) ⇒ Test ⇒ Confidence
Intervals(置信区间) ⇒ (单选 Interval 双侧(本例)或 Lower Bound 单侧下方有界
或 Supper Bound 单侧上方有界) ⇒ Confidence Level(填入置信水平) ⇒ OK
(可在 Titles 填入标题) ⇒ OK
输出结果如下(由于零假设的 Prob(为 0.3116)>0.05 故接受零假设: exam1 的均值=exam2
的均值即认为两次测验难度无显著差异),并给出了均值差 95%置信水平的置信区间为[-7.68
2.58]

第三节 正态性检验

1. 利用 Univariate 过程对一组数据进行正态性检验

数据:100 名学生体重数据 Data Wh100(具体过程见第四节)

106
SAS 操作入门 编者:江南大学 吴有炜 107

2. 利用 SAS/INSIGHT 数据探索性分析系统

检验数据 Data norm 的正态性

Solution↓ ⇒ Analysis↓ ⇒ Interactive Data Analysis…(SAS/INSIGHT 数据探

索性分析系统) ⇒ (Library 中) work ⇒ Data Set□ 所要数据名 (Data norm) ⇒ (Open)

⇒ Analyze ↓
⇒ Distribution(Y) ⇒ ( 待分析
变量 x→)Y ⇒ Output ⇒

若在相应的 内打钩
则丰富的输出结果如下:

Moments 矩统计量表
Quanriles 分位表
Basic Confidence Intervals 置信
区间
Tests for Location ( 三 种 检 验 :
t—检验, 符号检验, 秩检验)
Frequency Counts 频数表
Robust Measures of Scale
Tests for Normality 正态性检验
(四种方法)

Density Estimation 密度(函数曲


线)估计(与检验)
Cumulative Distribution 分布(函数曲线)估计(与检验) Box Plot/Mosaic Plot 盒形图
Histogram/Bar Chart 水平/条形图 Normal QQ Plot 图

第四节 对 100 名学生身高体重数据(数据见程序中)编程


进行的系列分析

例 4.4.1

data wh100;
input h w @@;
if w<=50.3 then wc= ' <=50.3';
else if w>50.3 and w<=54.1 then wc= '50.4-54.1'; /*wc为区间变量*/
else if w>54.1 and w<=57.9 then wc= '54.2-57.9';
else if w>57.9 and w<=61.7 then wc= '58.0-61.7';
else if w>61.7 and w<=65.5 then wc= '61.8-65.5';
else if w>65.5 and w<=69.3 then wc= '65.6-69.3';
else if w>69.3 and w<=73.1 then wc= '69.4-73.1';
else wc= '>=73.2';

107
SAS 操作入门 编者:江南大学 吴有炜 108

wgroup=int((w-46.5)*8/(77-46.5)-0.001)+1;
cards;
172.4 75.0 169.3 54.8 169.3 64.0 171.4 64.8 166.5 47.4 171.4 62.2
168.2 66.9 165.1 52.0 168.8 62.2 167.8 65.0 165.8 62.2 167.8 65.0
164.4 58.7 169.9 57.5 164.9 63.5 160.3 55.2 175.0 66.6 172.5 73.5
172.0 64.0 168.4 57.0 155.0 57.0 175.5 63.9 172.3 69.0 168.6 58.0
176.4 56.9 173.2 57.5 167.5 50.0 169.4 52.2 166.7 72.0 169.5 57.0
165.7 55.4 161.2 48.5 172.8 57.0 175.1 75.5 157.5 50.5 169.8 62.9
168.6 63.4 172.6 61.0 163.8 58.5 165.1 61.5 166.7 52.5 170.9 61.0
166.1 69.5 166.2 62.5 172.4 52.6 172.8 60.0 177.8 63.9 162.7 56.8
168.8 54.0 169.1 66.2 177.5 60.0 177.0 66.2 169.9 55.9 167.4 54.4
169.3 58.4 172.8 72.8 169.8 58.0 160.0 65.3 179.1 62.2 172.3 49.8
163.3 46.5 172.9 66.7 165.4 58.0 175.8 63.2 162.3 52.2 165.4 65.7
171.5 59.3 176.6 66.3 181.7 68.6 175.2 74.9 169.5 59.5 169.6 61.5
169.1 63.1 185.5 77.0 173.9 65.5 162.5 50.0 171.5 58.5 175.6 59.8
166.0 75.5 167.2 63.3 171.9 57.0 176.6 58.4 177.3 67.0 169.2 71.8
166.2 49.8 181.7 63.0 175.8 68.3 172.3 55.5 172.7 58.5 174.3 64.0
171.2 59.0 174.8 68.0 165.4 55.5 169.1 64.8 167.9 62.0 176.8 64.0
183.5 69.9 165.5 48.6 171.0 70.5 170.3 58.5
;
proc print data=wh100;
run;
proc freq data=wh100;
tables wc ; /* 或 tables wgroup; */
title '100名学生的体重分为8个组的频数表';
run;

proc chart data=wh100; /*chart图表过程*/


vbar w / midpoints=48 to 76 by 4; /*vbar 语句/type=pct;(生成频率直方图)(或
type=cpct;生成累计频率直方图; type=缺省则生成频数直方图)*/
title '对学生体重数据使用MIDPOINT=产生的条形图';
run;

proc chart data=wh100; /*chart图表过程*/


vbar wgroup / discrete; /* 或 vbar wc / discrete; */
title ‘输出的频数表用条形图表示';
run;

proc univariate data=wh100 plot;


var w;
run; /*该程序执行后输出详细的描述性统计量还有茎叶图,盒形图和正态概率图*/
data y100(keep=y);
set wh100;
y=w-62;
proc means data=y100 t prt clm; /*t prt clm分别表示规定t统计量、t统计量的概率值、
均值的置信区间*/

108
SAS 操作入门 编者:江南大学 吴有炜 109

var y;
title’检验学生体重的均值μ=62kg及求均值μy的置信区间’
run;
proc univariate data=wh100 normal;
/*该程序执行后输出详细的描述性统计量(并自动进行Wilcoxcon秩和检验)还有正
态性/*
var w;
title '100名学生体重数据的正态性检验';
run;
(输出结果略)

习题四

4--1 用正态分布随机数函数生成均值为 170,方差为 50 的 200 个正态分布随机数

试对该组数据

(1) 用”分析员应用”计算均值μ和方差σ2 的 90%的置信区间

(2) 试用 CHART 过程作数据的频率直方图(水平和铅直的)

(3) 试用 SAS 菜单系统检验数据的假设 H0:均值μ=170 和方差σ2=50

(4) 试用 Univariate 过程和 SAS 菜单系统检验数据是否来自正态总体?

4—2 为考察化疗对人体的蛋白质含量是否有影响,记录了以下 10 位癌症病人化疗前


后蛋白质含量(Alb mg/L)的数据:

化疗前蛋白质含量(Alb mg/L):

3.3 11.7 9.4 6.8 2.0 3.1 5.3 3.7 21.8 17.6

化疗后蛋白质含量(Alb mg/L)

33.0 30.8 8.8 11.4 42.6 5.8 1.6 19.0 22.4 30.2
(1) 试概括化疗前后的蛋白质含量;
(2) 试用直方图概括化疗前后的蛋白质含量;
(3) 试分析化疗对蛋白质含量(成对数据)是否有显著的影响(α=0.05)?

109
SAS 操作入门 编者:江南大学 吴有炜 110

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

第五章 方差分析与协方差分析
统计意义:

方差分析研究分类变量作为自变量(取不同水平或多个分类变量取不同水平组合)对指
标(响应变量)的影响,当自变量中还伴随不可控连续变量时则称为协方差分析

通过将数据(因变量)的总波动(总离差平方和)分解成各考察因素(分类变量作为自变量)(也
可包括因素间交互)的波动(各因素的离差平方和)相对于随机因素等引起的波动(误差的离
差平方和)来判断各因素取不同水平(也可包括因素的交互取不同水平组合)对指标的影响的
显著程度.
各水平组数据样本量相同的称数据是均衡的(可用 ANOVA 程序,各水平组还应满足方差齐
性假设否则可调用 NPAR1WAY 进行作用相同的非参数 Kruskal—Wallis 检验),反之称为非
均衡的(只能用 GLM 程序)
方差分析(以及在回归分析中对模型及回归项)的显著性讨论只适合关于参数的线性模型

110
SAS 操作入门 编者:江南大学 吴有炜 111

例:y=b0+b1x+b2x2 是关于参数 b0、b1、b2 的线性模型,而 y=a exp(-exp(b-cx))不是参数的线性


模型
在方差分析的检验中零假设为模型的参数、因素的主效应、因素间的交互效应以及协变量
的效应均为零,因此 P 值>0.05 则称相应项显著,P 值>0.01 则称相应项高度显著,否则称不显
著.

第一节 编程序进行

方差分析主要过程之一: Anova 语句形式(注:ANOVA 程序的数据必须是均衡


的即各水平组数据样本量相同且各水平组还应满足方差齐性假设)

Proc Anova data=输入数据名 选项; /*选项 output=输出文件名*/

Class 属性分类变量名串; /*可以是名义变量(变量可以取值中文),无须用 proc sort 对 by


变量的值排序 例 若有分组变量名串 sex(分男、女) month(分一月、二月) 则按 sex 的三种
情况: male、female、不分 male-female 与 month 的三种情况: 一月、二月、不分一月--二月
的九种交叉组合进行分组统计*/
Model 因变量名串=效应名串; /*因变量可以是数值型或文字型变量

效应名串例: A B A*B---考虑 A B 两个主效应


及 A 与 B 的交互效应
A│B│C│D@2---考虑 A、B、C、
D 的二重交互作用(共 6 个)*/

Means 效应名串/选项串名;

/*给出效应名串中各组或单元格的均值 效应名串选项主要为对主效应的均值间
执行各种显著性检验包括: DUNCAN---多范围检验 DUNNETT (‘控制组
名’)-----选定一控制组和其余组差的双侧检验

DUNNETTL (‘控制组名’)-----选定一控制组和其余组差的单(下)侧检验(预期差>0)

DUNNETTU (‘控制组名’)-----选定一控制组和其余组差的单(上)侧检验(预期差<0)

SNK---两组差的 T-检验 T---配对组 t-检验 Alpha=显著程度值(默认 0.05)

LINES---对分析结果按显著性程度由大到小排列

CLDIFF---显著性检验结果以置信区间形式给出

CLM---means 中的各效应的均值以置信区间形式给出*/

Freq 试验重复次数变量名;

Repeated 重复变量名;

方差分析主要过程之二: Glm 语句形式(注:glm 程序的数据可以是非均衡的即


各水平组数据样本量可以不相同)

Proc Glm data=输入数据名 选项; /*选项 output=(含分析结果)输出文件名*/

Class 被分析属性分类变量名串; /*可以是名义变量(变量可以取值中文),无须用 proc


sort 对 by 变量的值排序 例 若有分组变量名串 sex(分男、女) month(分一月、二月) 则按

111
SAS 操作入门 编者:江南大学 吴有炜 112

sex 的三种情况: male、female、不分 male-female 与 month 的三种情况: 一月、二月、不分


一月--二月的九种交叉组合进行分组统计*/
/*若为 by sex; class month;则分成六个水平交叉组*/

Model 因变量名串=效应名串/选项串; /*因变量可以是数值型或文字型变量

效 应 名 串 例 : A B A*B--- 考 虑 A B 两 个 主 效 应 及 A 与 B 的 交 互 效 应
A│B│C│D@2---考虑 A、B、C、D 的二重交互作用(共 6 个)

选项串包括: noint---模型中无截距项 int---输出截距项的统计检定

Tolerance---容忍量=1-R2 XPX---输出内积阵 Inverse---输出内积阵的逆阵

Model 因变量名串=分类变量效应名 协变量名/solution(注:在协变量后要


加/ solution 以说明是协变量)*/

Means 效应名串/选项串名; /*给出效应名串中各组或单元格的均值 效应名串选项主要为对主效


应的均值间执行各种显著性检验包括: BON---显著性 t-检验
DUNCAN---多范围检验 DUNNETT (‘控制组名串’)(注:控制
组名若为数字则不加’ ’号)-----选定一个或多个控制组和其余组
差的双侧检验

DUNNETTL (‘控制组名’)-----选定一控制组和其余组差的单(下)侧检验(预期差>0)

DUNNETTU (‘控制组名’)-----选定一控制组和其余组差的单(上)侧检验(预期差<0)

SIDAK---两组均值比较的 t-检验

SNK---两组差的 T-检验 T---配对组 t-检验

Alpha=显著程度值(默认 0.05)

LINES---对分析结果按显著性程度由大到小排列

CLDIFF---显著性检验结果以置信区间形式给出

CLM---means 中的各效应的均值以置信区间形式给出*/

Lsmeans 效应名串/选项串名; /*以最小二乘(最小误差平方)法估计效应名的修正均值

选项串包括: STDERR---t-检验(H0:Lsm=0)的分母及其显著性

TDIFF---各均值对比较的 t-值及显著性

OUT=输出文件名

COV---在 OUT=的输出中增加协方差阵*/

Output Out=输出资料文件名 关键字=变量名串; /* 常见关键字及其定义:

Predicted(或 P)=---预测值 Residual(或 R)=---预测误差

L95M=因变量均值 95%置信区间下限

U95M=---因变量均值 95%置信区间上限

L95=因变量预测值 95%置信区间下限

U95= 因变量预测值 95%置信区间上限

Stdp=预测值均值的标准误差 Student=---经过标准化的误差

112
SAS 操作入门 编者:江南大学 吴有炜 113

CookD=---库格氏影响力的统计量 H=---影响力,定义为 Xi(XTX)-1Xi

Press=---除去一个观测样本后所求该样本的预测误差

Rstudent=---除去一个观测样本后所求该样本的标准化误差*/

By 分组变量名串;
/*须先用 proc sort ; by 分组变量名串; 对 by 变量的值排序(字母升序),以组为单
位求统计量 例 若有分组变量名串 sex(分 female、male) school(分重点、非重点)则按
sex 的二种情况:女、男与 school 的二种情况:重点、非重点的四种交叉组合进行排序分
组*/
Id 识别样本变量名; /*适用于回归分析*/

Freq 试验重复次数变量名;

Repeated 重复变量名;

1. 单因素方差分析

分析比较五种牌子的合成地板的耐磨性(数据见程序中)

(1) 概括性比较:


1 比较各组的常规统计量-------SORT 和 MEANS 过程


2 比较各组的直观图形-----CHART 过程

例 5.1.1
data veneer1;
input brand $ wear @@;
cards;
ACME 2.3 ACME 2.1 ACME 2.4 ACME 2.5 CHAMP 2.2
CHAMP 2.3 CHAMP 2.4 CHAMP 2.6 AJAX 2.2 AJAX 2.0
AJAX 1.9 AJAX 2.1 TUFFY 2.4 TUFFY 2.7 TUFFY 2.6
TUFFY 2.7 XTRA 2.3 XTRA 2.5 XTRA 2.3 XTRA 2.4
;
proc print data=veneer1;
title '木板数据';
run;
proc sort data=veneer1;
by brand; /*利用SORT过程对地板按(by)品牌按字母升序分组(特别组内数据>30时)概括*/
run;
proc means data=veneer1;
by brand;/*此指令需先经”proc sort; by 变量名串;”排序(见前面命令),然后分组统计*/

113
SAS 操作入门 编者:江南大学 吴有炜 114

var wear;
title '木板数据的概括';
run;
proc chart data=veneer1;
vbar wear / group=brand; /*按组作直方图*/
title '各种品牌的磨损量';
run;
输出结果如下(部分):
下表为每个品牌的简单统计量:

下图为各品牌的平均磨损的频数直方图(磨损量数字竖看)

114
SAS 操作入门 编者:江南大学 吴有炜 115

下面为方差分析表,由表中见 P 值=0.0017<0.01 故拒绝零假设,即认为品牌不同引起磨


损量的差异(高度)显著

(2) 单因素方差分析

例 5.1.2

proc anova data=veneer1; /*在数据的正态性假设满足的条件下用 anova 过程*/


class brand;
model wear=brand;
means brand /t ; /*要求执行多重的t—检验*/
title '木材数据的方差分析';
run;
proc npar1way data=veneer1 Wilcoxon; /*在数据的正态性假设不满足的条件下用npar1way
过程进行非参数的Kruskal—Wilcoxon检验作用相同*/
class brand;
var wear;
title '木板数据的非参数检验';
run;
proc anova data=veneer1;
class brand;
model wear=brand;
means brand/snk ; /*选项snk要求作各水平组均值间的两两比较,显著性水平默认为α=0.05,若
需修正则在snk后再加选项alpha= */
means brand / dunnett(‘ACME’) ;/*选项dunnett(‘ACME’)要求用ACME水平组和其余水平组作
均值的两两比较*/
means brand /t bon regwf alpha=0.01; /*要求执行多重的t—检验 、bonferroni t—检验
及regwf 检验*/
run;
丰富的输出结果娱如下(部分):

115
SAS 操作入门 编者:江南大学 吴有炜 116

在方差分析中零假设为各主效应及交互效应为零,由上表见P值=0.0017故接受对立假设模型
高度显著即品牌对因变量wear的作用影响高度显著. 输出表中还有大量不同水平间均值的对
比.

(3) 单因素协方差分析(有一个协变量)

例 5.1.3

猪体重增长数据
x 15 13 11 12 12 16 14 17
A1
y 85 83 65 76 80 91 84 90
x 17 16 18 18 21 22 19 18
A2
y 97 90 100 95 103 106 99 94
x 22 24 20 23 25 27 30 32
A3
y 89 91 83 95 100 102 105 110

data pig;
input a $ @; /* 输 入 字 符 变 量 A+ 数 组 @(do---end 语 句 实 际 给 出 @ 相 当 于
x1y1x2y2…x8y8)*/
do i=1 to 8;
input x @; /* 用 input x @; input y @;输入向量(x,y) */
input y @;
output;
end;
cards;
A1 15 85 13 83 11 65 12 76 12 80 16 91 14 84 17 90
A2 17 97 16 90 18 100 18 95 21 103 22 106 19 99 18 94
A3 22 89 24 91 20 83 23 95 25 100 27 102 30 105 32 110

proc glm data=pig;
class a ;
model y=a x/solution; /* 模型: 连续(响应)变量 y=分类变量 a ,协变量 x(用/solution 表示) */
lsmeans a/stderr tdiff pdiff; /*用最小误差平方和法估计的均值估计 a(称为修正均值)

116
SAS 操作入门 编者:江南大学 吴有炜 117

选项 stderr 要求输出修正均值的标误 tdiff 和 pdiff 表示要


求输出各组修正均值相互比较的 t 值和 P 值 */
means a; /*求出 a 中各组的均值*/
run;

/*注:以上数据输入还可用以下方法:
方法二:用二个 do---end 语句输入二个下标的二维向量(x,y)ai
(a=1,2,3;i=1-8) (下标: 单因素+重复)*/
data pig1;
do A=1 to 3; /* 注:1)顺序(外层 ⇒ 内层): 行 ⇒ 重复 ⇒ 向量*/
do rep=1 to 8; /* 2)向量(x,y)的输入: input x @; input y @;*/
input y @;
input x @;
output;
end;
end;
cards;
15 85 13 83 11 65 12 76 12 80 16 91 14 84 17 90
17 97 16 90 18 100 18 95 21 103 22 106 19 99 18 94
22 89 24 91 20 83 23 95 25 100 27 102 30 105 32 110
;
run;
输出结果(部分)如下

117
SAS 操作入门 编者:江南大学 吴有炜 118

上表中给出误差、A 因素、回归的自由度分别为 20,2 和 1;平方和为 227. 614568、707.


1317.58 和 1010. 760432,平均平方和分别为 11. 380728、658.791667、1010. 760432 和 F
值.
其余的表给出协变量 x 的参数 b 的估计值 2. 40156919
修正均值
y 1* = y 1 − b * ( x 1 − x ) = 94 . 9586305 ,
y 2* = y 2 − b * ( x 2 − x ) = 99 . 5009807 ,
y 3* = y 3 − b * ( x 3 − x ) = 82 . 1653887 ,
未修正均值
1
y1 =
8
∑ y 1 j = 81 . 75 ,
1
y2 = ∑ y 2 j = 98 . 0 ,
8
1
y3 =
8
∑ y 3 j = 96 . 875 ,

协方差分析表
方差来源 平方和 自由度 均方 F Pr>F
协变量 X 1010. 76 1 1010. 76 88. 8* * 0. 0001
因素 A 707. 218 2 353. 609 31. 07* * 0. 0001
误差 227. 615 20 11. 381

118
SAS 操作入门 编者:江南大学 吴有炜 119

总和 23
由于方差分析的零假设为因素及协变量效应为零 P 值都<0.0 01,因而协变量 X 和因
素 A 的作用都是高度显著的.
从修正均值的表中看出扣除猪的初始重量后,第二种饲料的平均增重是 99. 5 仍
是最大,第一种饲料的平均增重是 94. 96 次之,第三种饲料的增重是 82. 17. 当考虑到饲料
价格因素时,这种修正的增重更有用处.不过表中指出由于内积矩阵奇异故回归的参数不唯
一.

2. 两因素方差分析

(1) 两因素考虑交互作用

例 5.1.4

表 火箭的射程
推进器(M) M1 M2 M3
58. 2 56. 2 65. 3
F1
52. 6 41. 2 60. 8
49. 1 54. 1 51. 6
F2
42. 8 50. 5 48. 4
燃料(F)
60. 1 70. 9 39. 2
F3
58. 3 73. 2 40. 7
75. 8 58. 2 48. 7
F4
71. 5 51. 0 41. 4

data rockey; /* 注:输入 Rfmr(f=1-4;m=1-3;r=1,2)(两因素+重复)*/

do f=1 to 4; /*顺序行标 f→列标 m→重复 r */


do m=0 to 12 by 6; /* 注: m 分别取值 0,6,12; 步长为 1 时 by 语句可省略*/
do rep=1 to 2;
input R @@; /*注: @@可以使数据连续输入*/
output;
end;
end;
end; /* 用 三 个 do---end 语 句 输 入 带 三 个 下 标 的 一 维 变 量
Rfmr(f=1-4;m=1-3;r=1,2)(两因素+重复)*/
cards;
58.2 52.6 56.2 41.2 65.3 60.8
49.1 42.8 54.1 50.5 51.6 48.4
60.1 58.3 70.9 73.2 39.2 40.7
75.8 71.5 58.2 51.0 48.7 41.4
;
proc glm data=rockey;

119
SAS 操作入门 编者:江南大学 吴有炜 120

class f m; /* class 语句说明对分类变量 f,m 分析*/


model r=f m f * m; /*模型: 连续变量 r;考虑因素 f,m 及交互 f*m*/
lsmeans f m f * m;
run;
输出结果(部分)如下:
方差分析表
方差来源 自由度 平方和 平均平方和 F值 Pr>F
F(燃料) 3 261. 657000 87. 225000 4. 42* 0. 0260
M(推进器) 2 370. 980933 185. 49017 4. 39** 0. 0035
F* M
6 1768. 692500 294. 782086 14. 93** <0. 0001
(交互作用)
E(误差) 12 236. 9500 19. 745833
23 2638. 29833

从此表可见:f(燃料)对应的概率在 0. 01 与 0. 05 之间,说明燃料的作用显著,交互效
应 f*m 对应的概率小于 0. 01 说明推进器及推进器与燃料的交互作用的影响高度显著. 另由
yij 的表可见,最远的射程是由第四种燃料与第一种推进器组合形成的,平均射程为 73. 65
公里.

(2) 两因素考虑交互作用且有一个协变量

例 5.1.5

表 合成纤维弹性
A1 A2 A3 A4
x 49. 0 49. 2 49. 8 49. 8 49. 9 49. 8 49. 7 49. 8
B1
y 71 73 73 75 76 73 75 73
x 49. 5 49. 3 49. 9 49. 8 50. 2 50. 1 49. 4 49. 4
B2
y 72 73 76 74 79 77 73 72
x 49. 7 19. 5 50. 1 50. 0 49. 7 50. 0 49. 5 49. 6
B3
y 75 73 78 77 74 75 70 71
x 49. 7 49. 7 49. 6 49. 3 49. 5 49. 2 49. 0 48. 9
B4
y 77 75 74 74 74 73 69 69
程序
data fab;
do b = 1 to 4;
do a = 1to 4;

do rep = 1 to 2 ; /*注: 用三个 do---end 语句输入三个下标的二

维向量(x,y)bar*/
input x @ ; /*(b=1-4;a=1-3;r=1,2)(下标: 两因素+重复)顺序(外层
⇒ 内层):*/
input y @; /*行(b=1-4) ⇒ 列(a=1-4) ⇒ 重复(r=1-2) ⇒ 向量(x,y)*/
output;
end;

120
SAS 操作入门 编者:江南大学 吴有炜 121

end;
end;
cards;
49.0 71 49.2 73 49.8 73 49.8 75 49.9 76 49.8 73 49.7 75 49.8 73
49.5 72 49.3 73 49.9 76 49.8 74 50.2 79 50.1 77 49.4 73 49.4 72
49.7 75 49.5 73 50.1 78 50.0 77 49.7 74 50.0 75 49.5 70 49.6 71
49.9 77 49.7 75 49.6 74 49.3 74 49.5 74 49.2 73 49.0 69 48.9 69
;
proc glm;
class a b ;
model y= a b a * b x /solution;
lsmeans a b a * b;
means a b a * b ;
run;

第二节 用菜单系统进行

符号说明: 1) 项 点击该键 2) ⇒ 进入下一步


3) 下拉菜单↓ 点击后出现下拉菜单
4) 对话窗…. 点击后出现对话窗
5) × 项 在对话窗中多选项选中的项前 点击后出现×表示选中
6) 对话窗(键) ⇔ 操作完毕后要(点 OK)返回的对话窗(键)

1. 利用分析员应用系统进行单因素方差分析

例 5.2.1

数据 Data veneer(地板品牌对磨损量)

Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (分析员系统) (出现空白数据表)


⇒ File ⇒ Open By Sas Name… ⇒ (在 Make one selection 窗口
中) work 选中数据名 ⇒ (OK) Statistics↓ ⇒ ANOVA
⇒ One-Way ANOVA… ⇒

121
SAS 操作入门 编者:江南大学 吴有炜 122

Independent 填分类变量 Dependent 因变量(响应变量) ⇒


Tests ⇔ —进行方差分析的方差齐性检验(不成立时可进行多种非参数检验)
Plots ⇔ —可选择分水平的盒形图(Box-&-Whisker Plot)
条形图(Bar Chart)及均值、标准差图
Means ⇔ —Comparisons Methods 给出了 10 种多重比较的方法
α为选择的显著性水平, Breakdown 可按水平分组出描述性统计量
⇒ OK (点击运行后的结果树标签则会打开相应图,下图为打开的盒形图.

盒形图简介:

“盒子”的上下底为内四分位间距,上下两条水平线为样本的 25%与 75%分位数,盒内的


水平线为样本中位数若它不在盒子中央则说明样本存在一定偏度,”+”是奇异数据记号.

3. 利用分析员应用系统进行多因素方差分析

例 5.2.2

数据 Data rockey

122
SAS 操作入门 编者:江南大学 吴有炜 123

Solution ↓ ⇒ Analysis ↓ ⇒ Analyst ↓ (分析员系统) (出现空白数据


表) ⇒ File ⇒ Open By Sas ⇒ (在 Make one
selection 窗口中)

work (选中数据名 Data rockey) ⇒ (OK) Statistics↓ ⇒ ANOVA ⇒ Factorial


ANOVA… ⇒
Independent 填分类变量 Dependent 因变量(响应变量) ⇒
Model ⇔ ----- ⇒ Standard Models
⇒ Main effects only 只考虑主效应;
Effects up to 2-way interactions 考虑交互效应
Tests ⇔ —进行方差分析的方差齐性检验(非正态时可进行多种非参数检验)
Plots ⇔ —可选择响应变量的均值(主效应或交互效应)连线图
Means ⇔ —Comparisons Methods 给出了 10 种多重比较的方法
α为选择的显著性水平, Breakdown 可按水平分组出描述性统计量
⇒ OK (运行后产生结果树点击相应标签则会打开,下图为打开的响应变量均值
连线图以及方差分析表,从表中知道模型、主效应 m 及交互效应 f*m 对响应变
量 R 的影响显著(P 值分别为 0.0278, 0.505, 0.0142)

123
SAS 操作入门 编者:江南大学 吴有炜 124

例 5.2.3 多因素
本例数据 Data Q146 先运行 Data Q146
data Q146;
input number $ A B C D E y;
A2=A*A; B2=B*B;
C2=C*C; D2=D*D; E2=E*E;
cards;
1 1 1 1 1 1 943.44
2 1 2 2 2 2 975.06
3 1 3 3 3 3 1003.4
4 2 1 1 2 2 906.22
5 2 2 2 3 3 939.53
6 2 3 3 1 1 1085.15
7 3 1 2 1 3 957.09
8 3 2 3 2 1 1068.76

124
SAS 操作入门 编者:江南大学 吴有炜 125

9 3 3 1 3 2 909.76
10 1 1 3 3 2 1016.49
11 1 2 1 1 3 899.22
12 1 3 2 2 1 1010.61
13 2 1 2 3 1 985.85
14 2 2 3 1 2 1047.52
15 2 3 1 2 3 895.85
16 3 1 3 2 3 1003.98
17 3 2 1 3 1 928.74
18 3 3 2 1 2 997.38
;
proc print;
run;
要求分析五个因素(三水平取自正交表 L18(16×36))的线性项和平方项的影响
Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)
1 (出现空白数据表)录入数据 ⇒ File ⇒ Save ,

2 或调用已有数据: ⇒ File ⇒ Open By Sas Name…

⇒ (在 Make one selection 窗口中) work 选中数据名 Q146 ⇒ (OK)

⇒ Statistics ⇒ Regression ⇒ Linear…线性回归


⇒ 线性回归主窗口

在线性回归主窗口中 Dependen 填入因变量;Explanatory 填入各自变量;以下为返回


式选项窗口(进入该类窗口并进行选择后 ⇒ OK 返回) ⇒ OK
MModel ⇔ 选择筛选变量的方法逐步回归 stepwise selection ⇒ OK;Statistics ⇔
选择 Type 1 sum of squares ⇒ OK ; ⇒ OK
输出的各显著项的方差情况见下图

125
SAS 操作入门 编者:江南大学 吴有炜 126

习题五

5—1 以下是三个地区家庭人口数的抽样调查数据:
甲地 2 6 4 13 5 8 4 6
乙地 6 4 4 1 8 2 12 1 5 2
丙地 2 1 3 3 1 7 1 4 2
试用方差分析(ANOVA)过程或”分析员应用”分析三个地区的家庭人口平均数是否有显著差异(α=0.05)

5---2 在对比研究中观察正常人、萎缩性胃炎和胃癌三个不同群体(TYPE=A,B,C
表示)记录数据见下表.试用编程方法或”分析员应用”分析该组数据,并回答以下问题:
(1) 检验三个群体中CEA含量的分布是否为正态分布,方差是否相等(α=0.01)?
(2) 试用方差分析过程比较这三个群体CEA含量是否有显著差异(α=0.05)?若有
显著差异,请指出哪些群体间CEA的平均含量有显著差异?
胃液癌胚抗原(CEA)含量X(mg/ml)表
正 20.4 265.3 170.5 28.5 57.0 64.6 30.2 175.0 360.0 108.5 189.6
常 87.3 210.4 169.8 78.4 472.5 59.3 365.0 356.4 86.4 158.6 259.3
人 56.8 254.0 128.0 238.7 380.2 37.8 262.3 24.1 253.6 210.5
(A)
萎缩 281.0 766.2 66.8 425.7 584.1 587.7 377.1 495.0 521.3 270.8
性胃 648.8
炎 86.8 230.0 87.3 327.8 378.5 485.6 532.1 537.9 389.8 421.4
(B) 228.0 110.8
311.6 248.7 423.9 149.7 538.7 398.7 442.2 571.4 577.3 47.5

126
SAS 操作入门 编者:江南大学 吴有炜 127

245.6 452.6
胃 480.0 725.6 600.0 608.4 348.6 488.9 590.0 1380.0 688.5 550.0
癌 350.7 765.0 438.5 630.5 640.0 652.8 1200.0 652.4 750.0 464.8
(C) 1400.0 231.2 432.8 815.0 850.0 485.3 296.1 664.0

5---3 水稻试验问题数据见下表:

B1 B2 B3 B4
(无肥) (低肥) (中肥) (高肥)
A1(窄叶青) 19.3 19.2 24.0 27.3 26.0 28.5 27.8 28.5
A2(珍珠矮) 27.8 28.5 27.5 30.3 29.0 28.7 30.2 29.8
A3(江二矮) 20.0 20.1 24.2 27.3 24.5 27.1 28.1 27.7

试用编程方法或”分析员应用”分析该组数据进行方差分析

5—2 广告的效应

(数据见程序)试用编程方法或”分析员应用”分析该组数据进行方差分析
分类变量 ad(广告方式)4 水平: 报纸 paper, 广播 radio, 销售员 people, 店内展示
display

分类变量 arer(6 水平)


data ads;
do ad='paper','radio','people','display';
do area=1 to 6;
do n=1 to 6;
input sales @@;
output;
end;end;
end;
cards;

75 57 76 68 75 83 77 75 72 66 66 76 76 81 63 70 86 62
94 54 70 88 56 86 87 65 65 84 77 78 79 62 75 80 62 70
69 51 100 54 78 79 90 77 60 83 74 69 33 79 73 68 75 65
100 61 68 70 53 73 68 63 83 79 66 65 76 73 74 81 57 65
63 67 85 58 82 78 80 87 62 87 70 77 70 75 40 68 61 55
64 40 67 76 70 77 51 61 75 42 71 65 64 50 62 78 37 83
52 61 61 41 44 86 76 57 52 75 75 63 33 69 60 52 61 43
61 66 41 69 43 51 65 58 50 60 52 55 44 45 58 52 45 60
;
proc print;
run;

127
SAS 操作入门 编者:江南大学 吴有炜 128

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

第六章 回归分析

统计意义:

利用指标 y 和因素 x1,x2,…,xp 的数据,试图建立 y 和因素 x1,x2,…,xp 的经验公式(回归方

程): ŷ =f(x1,x2,…,xp)

回归分析要研究模型的类型、估计模型中的参数、模型的适用性、模型的诊断

128
SAS 操作入门 编者:江南大学 吴有炜 129

第一节 编程序进行

1. 多元线性回归与 reg 过程

程序形式:

Proc Reg 选项串 ;/* 选项串: 1) data=输入文件名,缺省则为最后一个 sas


文件 2)0utest=输出文件名
3)all 印出所有分析结果 4)corr 印出相关系数阵*/

Model 因变量名称串(变量间用空格隔开)=自变量名称串(变量间用空
格隔开) / 选项串;
/*选项串包括 1) all 印出所有分析结果 2) XPX 印出内积阵 XTX
3) I 印出内积阵 XTX 的逆阵
4) Tol(rance) (定义为 1-R2)印出各参数的容忍量
5) Vif (Variance Inflance) 变异数的膨胀值
6) Collin 执行多自变量间的共线性分析
7) P 因变量的实际值与预测值及误差的表
8) R 比 7)更多,包括(cook)D 值(用于发现奇异样本)
9) clm 各个预测值均值的 95%的置信区间上下限
10) Partial 对每一个自变量作净回归图
11) selection=stepwise (forward backward Rsquare Adjrsq
MaxR )(分别为)逐步回归(向前回归,向后回归,复相关系数
平方法,修正的复相关系数平方法,最大相关法)
Test 等式 1,等式 2,…; (例: test b1;(缺省表检验 b1=0), test y=4; ,
mtest y1-y2 x ;(多变量检验))
Output out=输出文件名 关键字(定义另附)=变量名称串;

/*关键字定义: predicted(或 p)预测值; residual(或 R)预测误差


L95m 因变量均值的 95%置信区间下限
L95 因变量预测值的 95%置信区间下限
U95m 因变量均值的 95%置信区间上限
U95 因变量预测值的 95%置信区间
Stdr 误差的标准误 Stdp 预测值均值的标准误
Student 经过标准化后的标准误
Cookd 库氏统计量 */

Plot 图形指令串/选项串;

/*图形指令串包括: 1)Plot 纵轴变量名.*横轴变量名.

2) Plot ( 纵轴变量串名.)*(横轴变量串名.)

(例 plot (y1. y2.)*(x1. x2. x3.) ; 画出了六张图)

129
SAS 操作入门 编者:江南大学 吴有炜 130

选项串包括: 1) symbol=’绘图符号’(默认为*,或 2 表示有 2 个重复点,3 表示有 3


个重复点,…)

2)overlay 将同一个 plot 指令所界定的图纸重叠

3)collect 将不同 plot 指令所界定的图纸重叠

(例 plot y1.*x1 y*x/collect;(注 collect 作用贯穿 reg 程序但可用 nocollect 中止)

run;

polt y1*x2;

run; 执行结果为 y1---x1,x2 的重叠图和 y—x 图)*/

Print 选项串 anova modeldata; /* anova 要求印出回归分析后的方差分析


表 modeldata 要求印出与 anova 表有关联的所有数据资料

选项串包括 1) all 印出所有分析结果 2) XPX 印出内积阵 XTX

3) I 印出内积阵 XTX 的逆阵 4) Tol(rance) (定义为 1-R2)印出各参数的容忍量

5) Vif (Variance Inflance) 变异数的膨胀值

6) Collin 执行多自变量间的共线性分析

7) P 因变量的实际值与预测值及误差的表

8) R 比 7)更多,包括(cook)D 值

9) clm 各个预测值均值的 95%的置信区间上下限

10) Partial 对每一个自变量作净回归图

11) selection=stepwise (forward backward Rsquare Adjrsq MaxR )(分


别为)逐步回归(向前回归,向后回归,复相关系数平方法,
修正的复相关系数平方法,最大相关法)*/

Run;

例 6.1.1

研究某一地区土壤中含植物可给态磷的情况. 设 y 是 35℃时土壤中可给态磷含量;x1
是土壤中所含无机盐浓度;x2 是土壤中溶于 K2CO3 溶液并受溴化物水解的有机磷;x3 是土
壤中溶于 K2CO3 溶液但不溶于溴化物的有机磷,经 18 次测量得数据表(略,见程序),求
x1,x2,x3 对 y 的线性回归方程.

解:回归模型是
y = b0 + b1 x1 + b2 x2 + b3 x3 + ε
为了估计 b0,b1,b2,b3,我们采用 SAS 程序*/
data pcontent;
input x1-x3 y;
cards;
0.4 52 158 64
0.4 23 163 60
3.1 19 37 71
0.6 34 157 61
4.7 24 59 54
1.7 65 123 77

130
SAS 操作入门 编者:江南大学 吴有炜 131

9.4 44 46 81
10.1 31 117 93
11.6 29 173 93
12.6 58 112 51
10.9 37 111 76
23.1 46 114 96
23.1 50 134 77
21.6 44 73 93
23.1 56 168 95
1.9 36 143 54
26.8 58 202 168
29.9 51 124 99
;
proc reg data=pcontent; /*reg 语句调用回归分析*/
model y=x1-x3; /*model 因变量=自变量;*/
run;
输出部分结果:

回归分析中假设检验的零假设是诸参数=0, 故 P 值<0.05 时模型(或回归项)


是显著的,否则是不显著的
回归方程 y=43.65+1.785x1-0.083x2+0.161x3 高度显著(P 值=0.0092<0.01)
由 P 值知 x2 项是不显著的(P 值=0.8458>0.05)

2. 逐步回归求最优回归方程

统计方法: 利用删选因子(或回归项)的逐步回归法可以求得”最优”回归方程,事先设定
选取因子的显著水平α1 和删除因子的显著水平α2,对全体待考虑的因子(或回归项),逐步建
立只含一个因子的回归方程、二个因子的回归方程、…直至未选中的因子(或回归项)显著
水平都低于 1-α1 且在回归方程中的因子(或回归项) 显著水平都高于 1-α2. (α缺省默认均
为 0.05)

注: 同一组数据可试采用不同的回归模型,模型的择优可看模型的显著性(P 值越小越好)
或模型的复相关系数 R-Square(最大化)或平均残差方 MSE(Mean Square Error)(最小化)(或
MSE 开方后得残余标准差 Root MSE 最小化)

131
SAS 操作入门 编者:江南大学 吴有炜 132

例 6.1.2
为了预报入霉期 y(6 月 1 日为 1),考虑 6 个气象因子 x1,x2,…,x6 . 从过去 23 年的气象
资料查得数据表(见程序),试找出主要的预报因子(自变量)和回归方程.

SAS 程序
data rumay;
input x1-x6 y;
cards;
31 7 16 5 4 265 23
30 5 4 7 4 262 23
33 10 0 0 0 258 3
25 4 6 0 6 262 20
26 6 12 5 7 260 26
27 9 19 4 9 266 27
27 7 19 4 5 259 19
31 13 4 2 2 257 6
31 8 1 0 2 266 16
28 14 0 0 4 265 22
25 16 18 4 7 268 24
30 12 5 2 4 262 30
24 5 22 9 8 264 28
28 3 19 2 4 262 24
30 0 0 0 0 264 24
27 2 14 4 8 259 30
26 10 7 3 9 262 17
30 11 1 0 2 260 9
28 6 7 0 5 260 20
29 9 22 1 5 259 16
32 13 0 0 1 263 9
20 7 12 0 5 251 16
34 7 6 0 3 257 16

Proc reg data=rumay;
Model y=x1-x6/selection=stepwise; /* selection=stepwise 逐步回归选项*/
输出给出了删选变量的过程,下表为最后结果,并指出模型内的项在α=0.15 意义下都
是显著的,模型外的项在α=0.15 意义下都是不显著的

132
SAS 操作入门 编者:江南大学 吴有炜 133

3. 多项式回归转化为多元线性回归

例 6.1.3

经钻探某地区煤矿上表面高度数据如表,其中 x 为横坐标,y 为纵坐标,由于连续函数


可以用多项式逼近,所以在实际问题中常用多项式来拟合.为了作趋势面分析,建立上表面
高度 h 的回归方程. 我们用二次多项式拟合这组数据,从而建立回归模型

h=b0+b1x+b2y+b3x2+b4xy+b5y2+ε (6.1.3)
其中ε是零均值随机变量,结合表,我们得
表 地质钻探数据
序号 X Y H
1 2.00 6.0 -11
2 2.00 5.5 0
3 2.00 5.0 10
4 2.00 4.5 20
5 2.00 4.0 31
6 2.25 6.0 -11
7 2.25 5.5 -1
8 2.25 5.0 9
9 2.25 4.5 19
10 2.25 4.0 30
11 2.50 6.0 -12
12 2.50 5.5 -2
13 2.50 5.0 8
14 2.50 4.50 19
15 2.50 4.0 29
16 2.75 6.0 -13
17 2.75 5.5 -2
18 2.75 5.0 7
19 2.75 4.5 18
20 2.75 4.0 28
21 3.00 6.0 -14

133
SAS 操作入门 编者:江南大学 吴有炜 134

22 3.00 5.5 13
23 3.00 5.0 6
24 3.00 4.5 17
25 3.00 4.0 27

data corn;
do x=2 to 3 by 0.25 ;
do y = 6 to 4 by -0.5 ;
input h @@;
t1=x;t2=y;t3=x*x;t4=x*y;t5=y*y; /*将多项式回归转化为线性回归的方法*/
output;
end;
end;
cards;
-11 0 10 20 31 -11 -1 9 19 30
-12 -2 8 19 29 -13 -2 7 18 28
-14 13 6 17 27
;
proc reg data=corn;
model h=t1-t5;
run;
注: 这是个多项式回归模型,从参数角度称此模型为参数 b1—b5 的线性模型

4. 非线性回归

非线性回归是指模型从参数角度为非线性的且无法线性化的模型,例如
y=b0+b1x1+b2x2+b11x12+b12x1x2+b22x22 是诸参数 bi 及 bij 的线性模型(从自变量 x1,x2 角度
模型是非线性的),
y=aebx 是可以线性化的非线性模型(线性化后 lny=bx+lna),
而 y=a exp(-exp(b-cx))是非线性的且无法线性化的模型.
注: 同一组数据可试采用不同的回归模型,模型的择优可看模型的显著性(P 值越小越好)
或模型的复相关系数 R-Square(最大化)或平均残差方 MSE(Mean Square Error)(最小化)(或
MSE 开方后得残余标准差 Root MSE 最小化)

程序形式:
proc nlin data =…;
model 因变量 = 非线性函数表达式;
parms 参数 1=初值 参数 2=初值 … ;
der.参数 1=偏导表达式 ;
der.参数 2=偏导表达式 ;
…………… ;
runs;

方法: 采用迭代求参数,要给出参数的一阶偏导表达式 der.参数=…; , 要赋参数初


值 parms 参数=…; .
例 6.1.4

134
SAS 操作入门 编者:江南大学 吴有炜 135

已知牧草重量 y 与生长天数 x 的关系是


y=a exp(-exp(b-cx))+e
9 次观察的数据为下表,试求出 a,b,c 的值.
表:牧草生长资料
x 9 14 21 28 42 57 63 70 79
y 8.93 10.80 18.59 22.33 39.35 56.11 61.73 64.62 67.08
分析:a,b,c 表示参数,x 是自变量,故
f(x;a,b,c)=a exp(-exp(b-cx)) */
/*求得,der.a=exp(-zz)(记为 term).der.b=-a*zz*term, der.c=a*x*zz*term,
其中 zz= exp(b-c*x) */
data hw;
input x y;
cards;
9 8.93
14 10.80
21 18.59
28 22.33
42 39.35
57 56.11
63 61.73
70 64.62
79 67.08

proc nlin data=hw; /*调用 nlin 进行非线性回归*/
zz=exp(b-c*x); /*简化记号*/
term=exp(-zz); /*简化记号*/
model y=a*term; /*因变量=非线性函数表达式,即 y=a exp(-exp(b-cx))*/
parms a=70 b=1.1 c=0.2; /*赋参数初值*/
der.a=term; /*给出参数的一阶偏导表达式*/
der.b=-a*zz*term;
der.c=a*x*zz*term;
run;
运行程序输出看到参数的迭代过程中模型的残差平方和不断递减,并给出了参数的最后估
计和参数间的相关阵:

135
SAS 操作入门 编者:江南大学 吴有炜 136

5. 非线性回归中初值的一种确定方法

例 6.1.5

设某种化学反应速度 y 作为因变量,醇和烯的偏压强 x1,x2 作为自变量,非线性回归


模型是 y=cx1/(1+ax1+bx2)

观察数据为下表,试求出 a,b,c.
表: 化学反应速度
x1 x2 y
1.0 1.0 0.126
2.0 1.0 0.219
1.0 2.0 0.076
2.0 2.0 0.126
0.1 0.0 0.186

分析:从例 6.1.4 可见求参数的初值是比较麻烦的,我们用计算机计算,将


y=cx1/(1+ax1+bx2)
改写为
y= a (-x1y)+ b (- x2y)+cx1
由于有 x1,x2,y 的观察值,可将上式看为形式上的线性回归模型 ,通过 REG 过程作线性
回归,求得线性回归系数作为非线性模型的初值,其程序为( 因为没有常数项,加上 NOINT
选择项)/*
data c1;
input x1 x2 y;
u1=-x1*y;u2=-x2*y;u3=x1;
cards;
1.0 1.0 0.126
2.0 1.0 0.219
1.0 2.0 0.076
2.0 2.0 0.126
0.1 0.0 0.186
;

136
SAS 操作入门 编者:江南大学 吴有炜 137

run;
proc reg data=c1;
model y=u1-u3/noint; /*noint 选项说明线性回归无截矩项*/
run;
由计算求得 u1, u2, u3 的系数分别为 0.982126, 5.653542 和 0.935412. 所以,a,b,c 的
初始估计值分别为 0.982126, 5.653542 和 0.935412.
为了打印简化,也为了提高计算速度,令
dn=1+ax1+bx2,
cx 1
term = .
则 dn

∂ cx 2 term * x1
term = − 21 = − ,
∂a d n dn
∂ term * x 2
term = − ,
∂b dn

于是,我们用程序 term = x1 / dn .
∂c
proc nlin data=c1; /*调用 nlin 进行非线性回归*/
dn=1+a*x1+b*x2; /*简化记号*/
term=c*x1/dn; /*简化记号*/
model y =term; /*因变量=非线性函数表达式*/
parms a=0.982126 b=5.653542 c=0.935412; /*用线性模型的参数作为非线性模型参
数初值*/
der.c=x1/dn; /*给出参数的一阶偏导表达式*/
der.b=-term*x2/dn;
der.a=-term*x1/dn;
run;

6.二分数据回归

调用 PROBIT(二分数据的预估)过程:二分数据是因变量只取二个值的数据,采用最大
似然估计给出回归模型的参数估计, probit 是概率单位的意思

统计原理:

.二分因变量 R=0,1 若已由 Probit 程序求得回归方程 y=b0+b1x1+…+bmxm, 对于待检观测体


Ob 的一组自变量值(x1* x2* …xm*),该观测体的预测因变量 R 值由以下方法确定:

Prob(R=0)= Φ( a + b x + ... + b x
1 1 1 m m
) (默认的模型形式)

这儿Φ(x)是标准正态分布的分布函数,然后 Probit 程序当 Prob(Ob=0)>0.5 时判定观测


体 Ob 的因变量 R=0,否则判定 R=1.

形式:
proc probit data=输入数据名 选项串;
/*选项包括:outest=输出文件名 order=在 class 分类下组别次序类型 covout 要求将参
数估计值的协方差阵纳入 outest=的输出中 Lackfit---要求执行卡方检验和对数可能比
检验 Hprob=小概率值----界定 Lackfit 中的显著水平*/

137
SAS 操作入门 编者:江南大学 吴有炜 138

class 变量名称串; /*可以是名义变量(变量可以取值中文),无须用 proc sort


对 by 变量的值排序 例 若有分组变量名串 sex(分男、女) month(分一月、二月) 则按 sex
的三种情况: male、female、不分 male-female 与 month 的三种情况: 一月、二月、不分一
月--二月的九种交叉组合进行分组统计*/
/*若为 by sex; class month;则分成六个水平交叉组*/

model 二分因变量=自变量串/选项串;
/*选项包括 noint---模型中无截距项 Lackfit---(同
上) Hprob=小概率值 Corrb---打印参数估计值之
间的相关系数阵 Covb---打印参数估计值之间的协方
差阵*/

output out=输出文件名 关键字串;


/*关键字包括 prob---累计概率估计值 Xbeta---估计概率
std---上述概率的标准误差*/
by 分组变量名; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值
排序(数值递增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例
若有分组变量名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、
female 与 month 的二种情况: feb、jan 的四种交叉组合进行分组统计*/

例 6.1.6
/* 空气流通速度 rate 与体积 volume 是否引起四肢皮肤收缩,收缩 res=1,否则 res=0(数据
见程序行).处理时先将自变量取自然对数.*/
Data VASO;
Input Volume Rate Res @@;
LogVol=Log(Volume);
LogRate=Log(Rate);
Cards;

3.7 .825 1 3.5 1.09 1 1.25 2.5 1 .75 1.5 1


.8 3.2 1 .7 3.5 1 .6 .75 0 1.1 1.7 0
.9 .75 0 .9 .45 0 .8 .57 0 .55 2.75 0
.6 3.6 0 1.4 2.33 1 .75 3.75 1 2.3 1.64 1
3.2 1.6 1 .85 1.415 1 1.7 1.06 0 1.8 1.8 1
.4 2 1 .95 1.36 0 1.35 1.35 0 1.5 1.36 0
1.6 1.78 1 .6 1.5 0 1.8 1.5 1 .95 1.9 0
1.9 .95 1 1.6 .4 0 2.7 .75 1 2.35 .03 0
1.1 1.83 1 1.1 2.2 1 1.2 2.0 1 .8 3.33 1
.95 1.9 0 .75 1.9 0 1.3 1.625 1
;
run;
Proc probit data=VASO order =data;/*选项order =data组别次序由输入数据确定
*/
class Res;
Model Res=LogRate LogVol;
Run;

138
SAS 操作入门 编者:江南大学 吴有炜 139

运行后结果输出(部分)如下表:

上表给出了二分数据回归方程 Res=-0.8149+1.8117LogRate+1.81962LogVol, 用于预测时利


用标准正态的分布函数得到 Res 的一个概率值若>0.5 则判 Res=0 否则判 Res=1.

7. LOGISTIC 回归

调用 LOGISTIC(逻辑回归分析)过程:类似二分数据回归采用最大似然估计给出回归模
型的参数估计,但可以处理次序变量作为因变量的回归分析.

统计原理:设因变量 R 为二分数据,P 为 R=1 的概率,1-P 为 R=0 的概率,则

y=logit(P)=ln[P/(1-P)]=b0+b1x1+…+bmxm

称为 Logistic 回归方程(也是默认的回归形式),该方程参数确定后用于预测时可由下式
求概率值 P:

P=ey/(1+ey)

或简单地,若回归值 y>0 则判定预测 R=1 否则 R=0.

若因变量为水平>2 的次序变量 R=1,2,…,k,则模型选项该取 Link=Normit(正态).

若回归方程 y=ai+b1x1+…+bmxm (i=1,2,…,k)的参数 ai,b1,b2,…bm 由 Logistic 程序已经确定,这


儿 ai(i=1,2,…,k)称为次序变量 R=i 时的截距参数,对于待检观测体 Ob 的一组自变量值(x1*
x2* …xm*),该观测体的预测因变量 R 值由以下方法确定:

⎧ Φ(a1 + b1 x1 + ... + bm xm), i = 1



Prob(Ob=i)= ⎨Φ(a i + b1 x1 + ... + bm xm) − Φ(a i -1 + b1 x1 + ... + bm xm ),1 < i < k
⎪ 1 − Φ(a k -1 + b1 x1 + ... + bm xm), i = k

这儿Φ(x)是标准正态分布的分布函数,然后 Logistic 程序判定观测体 Ob 的因变量 R=i*

139
SAS 操作入门 编者:江南大学 吴有炜 140

对应 Prob(Ob=i*)=max.

程序形式:

proc logistic data=输入数据名 选项串;

/*选项包括:outest=输出文件名 order=在 class 分类下组别次序类型 covout 要求将参数


估计值的协方差阵纳入 outest=的输出中*/

model 次序(或二分)因变量=自变量串/选项串;

/*选项包括
link=Normit----模型选项(用于水平>2 的次序因变量)
noint---模型中无截距项 Lackfit---(同上)

selction= stepwise (forward backward Score none(默认值))(分别为)逐步回归


(向前回归,向后回归,最大似然分数 完全模型) (求”最优”方程的方法)
Corrb---打印参数估计值之间的相关系数阵
Covb---打印参数估计值之间的协方差阵
Influence---找出影响力异常样本
Iplots---利用 Influence 对每个样本作图,异常样本会在图形上显得特殊*/

output out=输出文件名 关键字串/alpha=概率值;

/*关键字定义: predicted(或 p)=---样本属于某一反应组别的预测概率;


UpperR(或 R)=--- 样本属于某一反应组别的预测概率的上限
LowerR(或 L)=--- 样本属于某一反应组别的预测概率的下限
reschi=--- 皮 尔 森 残 差 , DifChisq=--- 剔 除 该 样 本 后 , 它 对 皮 尔 森 χ2 适 合 度 的 影 响
DifDev=---剔除该样本后,它对偏激统计量(Deviance)的影响 Df betas=---剔除该样本
后,每一参数估计值的改变的(标准化)值,H=---辨认特异样本的 Hat 阵的对角元(以上四选
项对应样本较大者是可疑特异样本) */
By 分组变量名; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数值
递增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组变
量名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与 month
的二种情况: feb、jan 的四种交叉组合进行分组统计*/

例 6.1.7
/* 空气流通速度 rate 与体积 volume 是否引起四肢皮肤收缩,收缩 res=1,否则 res=0(数据见
程序行).处理时先将自变量取自然对数.*/
Data VASO;
Input Volume Rate Res @@;
LogVol=Log(Volume);
LogRate=Log(Rate);
Cards;
3.7 .825 1 3.5 1.09 1 1.25 2.5 1 .75 1.5 1
.8 3.2 1 .7 3.5 1 .6 .75 0 1.1 1.7 0

140
SAS 操作入门 编者:江南大学 吴有炜 141

.9 .75 0 .9 .45 0 .8 .57 0 .55 2.75 0


.6 3.6 0 1.4 2.33 1 .75 3.75 1 2.3 1.64 1
3.2 1.6 1 .85 1.415 1 1.7 1.06 0 1.8 1.8 1
.4 2 1 .95 1.36 0 1.35 1.35 0 1.5 1.36 0
1.6 1.78 1 .6 1.5 0 1.8 1.5 1 .95 1.9 0
1.9 .95 1 1.6 .4 0 2.7 .75 1 2.35 .03 0
1.1 1.83 1 1.1 2.2 1 1.2 2.0 1 .8 3.33 1
.95 1.9 0 .75 1.9 0 1.3 1.625 1
;
run;
Proc Logistic data=VASO order =data; /*选项 order =data 组别次序由输入数据确定*/
Model Res=LogRate LogVol/influence iplots; /*选项 influence iplots 分别要求对每一观测着
执行诊断力分析及作图*/
Run;
输出结果(部分)见下面几个表:

回归方程
res=-1.4497+3.0282Lograte+3.1381Logvol

141
SAS 操作入门 编者:江南大学 吴有炜 142

对各观测值的残差分析中检查 Hat 矩阵对角元(Hat Matrix Diagonal)发现第 31 个观测值


(0.1991) 过 于
偏 激 , 从
DfBeta 值 指
标 看 , 第
4,18,21 位 观
测 值
(0.5217,0.462
9,0.8158)与其
它样本格格不
入,以上 4 个观
测值可考虑在
进一步的分析
中剔除

8. ORTHOREG 正交回归

调用 ORTHOREG(正交回归分析)过程:当数据阵“病态”(即复共线性较严重时)采用
REG 程序只能求 LS 近似阵,而采用本程序可以消除复共线性,产生精确的 LS(最小误差
平方)解,其方法为先求得数据阵的主成份,然后用主成份作为自变量求回归方程,再将原始
变量回代到回归方程中,主成份的相关细节参见主成份分析.

形式:

Proc OrthoReg data=输入数据名 选项串 ;

142
SAS 操作入门 编者:江南大学 吴有炜 143

Model 因变量名称=自变量名称串(变量间用空格隔开) / 选项;


/*=号右侧不能出现交互项 选项 noint 规定模型没有截距
项*/

by 分组变量名; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排


序(数值递增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若
有分组变量名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female
与 month 的二种情况: feb、jan 的四种交叉组合进行分组统计*/

Run;
例 6.1.8
经济分析数据进口总额 y 与 x1—国内总产值,x2--存储量,x3---总消费量(数据 E61)
data E61;
input x1-x3 y;
cards;
149.3 4.2 108.1 15.9
161.2 4.1 114.8 16.4
171.5 3.1 123.2 19.0
175.5 3.1 126.9 19.1
180.8 1.1 132.1 18.8
190.7 2.2 137.7 20.4
202.1 2.1 146.0 22.7
212.4 5.6 154.1 26.5
226.1 5.0 162.3 28.1
231.9 5.1 164.3 27.6
239.0 0.7 167.6 26.3
;

proc orthoreg data=E61 ;


model y=x1-x3 ;
run;

输出结果见下表(请检验以上数据的复共线性,对比以上数据直接用reg回归的模型的

显著性与残差平方):

143
SAS 操作入门 编者:江南大学 吴有炜 144

9. RSREG 响应面回归和岭迹分析

调用 RSREG(多项式回归及响应面分析)过程,执行二次多项式回归,进行逐项和方程
的检验,预测响应值,指明响应面类型和最优响应值(点)(若存在),没有最优值时可进行脊
岭分析.

形式:

Proc RsReg data=输入数据名 选项串 ;/*选项包括 0utest=输出文件名,输出内有:

Actual 原数据值 Predict---Y 的预测值; residual 预测误差(原数据值减预测值)

L95m 因变量均值的 95%置信区间下限 L95 因变量预测值的 95%置信区间下限


U95m 因变量均值的 95%置信区间上限 U95 因变量预测值的 95%置信区间上限 D---库
氏(Cook)影响力指标 */

Model 因变量名称串=自变量名称串(变量间用空格隔开) / 选项串;


/*选项串包括:
Lackfit 选项要求对回归模型执行不适合度检定(lack-of-fit test),预先应先对自
变量进行 sort 由小到大排序
Actual 原数据值 Predicted 因变量预测值 Residual 预测误差

L95M=因变量均值 95%置信区间下限

U95M=---因变量均值 95%置信区间上限

L95=因变量预测值 95%置信区间下限

U95= 因变量预测值 95%置信区间上限

Stdp=预测值均值的标准误差 Student=---经过标准化的误差

144
SAS 操作入门 编者:江南大学 吴有炜 145

CookD=---库格氏影响力的统计量 H=---影响力,定义为 Xi(XTX)-1Xi

(以上二选项用于诊断奇异样本)

Nocode---不要编码处理

Press=---除去一个观测样本后所求该样本的预测误差*/

Ridge 选项串; /*选项 min---最小响应面(指标值小为好)


max---最大响应面 */
Id 识别样本变量名;
By 分组变量名串; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数值
递增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组变
量名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与 month
的二种情况: feb、jan 的四种交叉组合进行分组统计*/

Run;

(1) 响应面分析

例 6.1.9
求面包酵母高产和高发酵活力的最优工艺参数.
指标:y1——面包酵母产量(指最终发酵液的菌体浓度(g/L));
y2——发酵活力(指面团从水中浮起的时间(分)).
因素:z1——还原糖浓度,2%~6%;
z2——氮源浓度,0.4%~1.2%;
z3——磷源浓度,0.2%~0.4%.
取三水平,z1:2%,4%,6%; z2:0.4%,0.8%,1.2%; z3:0.2%, 0.3%,0.4%. 作变换
z1 − 4 z − 0.8 z − 0.3
x1 = , x2 = 2 , x3 = 3
2 0.4 0.1
试验方案和试验结果如下表

表:试验方案和试验结果
试验号 x1 x2 x3 y1 y2 试验号 x1 x2 x3 y1 y2
1 0 -1 -1 24.5 13.9 9 -1 -1 0 30.4 11.9
2 0 -1 1 35.3 14.1 10 -1 1 0 34.7 12.8
3 0 1 -1 38.2 14.9 11 1 -1 0 35.6 16.4
4 0 1 1 23.4 15.4 12 1 1 0 25.6 18.2
5 -1 0 -1 29.5 9.6 13 0 0 0 38.3 8.9
6 -1 0 1 33.1 10.1 14 0 0 0 37.9 8.5
7 1 0 -1 35.3 14.7 15 0 0 0 37.5 8.1
8 1 0 1 26.7 15.8

SAS 程序如下:

Data E62;

Input x1-x3 y1 y2 @@;

145
SAS 操作入门 编者:江南大学 吴有炜 146

Cards;
0 -1 -1 24.5 13.9
0 -1 1 35.3 14.1
0 1 -1 38.2 14.9
0 1 1 23.4 15.4
-1 0 -1 29.5 9.6
-1 0 1 33.1 10.1
1 0 -1 35.3 14.7
1 0 1 26.7 15.8
-1 -1 0 30.4 11.9
-1 1 0 34.7 12.8
1 -1 0 35.6 16.4
1 1 0 25.6 18.2
0 0 0 38.3 8.9
0 0 0 37.9 8.5
0 0 0 37.5 8.1
;

Proc RsReg data=E62 ;


Model y1 y2=x1-x3;
Run;
运行后输出结果(部分)见下表:

由表可见高次项中 x1*x2、x1*x3、x2*x3 是不显著的

146
SAS 操作入门 编者:江南大学 吴有炜 147

上表指出特征值全为正(对应行向量是特征向量),从而稳定点(-0.5969, -0.0583,
-0.0509)是最小值点(编码), 预测最小值为 7.702195,本文输入自变量已经经过编码
(coded)处理,亦可输入未经编码(uncoded)的数据.
(注:响应面的绘制参见本节(3)或第一章第三节之 4.的 ADX 模块)

(2) 岭迹分析

例 6.1.10
橡胶树幼苗对硫 35 的吸收实验(2×3 析因试验)

温度 t(0 C ) 取样时间 d

水平一 7 2d

水平二 20 7d

水平三 12d

重 温 取样时间
复 度 D1 D2 D3

R1 T1 102 306 735

T2 542 601 859

R2 T1 120 318 626

T2 559 667 718

R3 T1 85 169 720

T2 558 609 727

响应面分析 SAS 程序如下:


data rubber;

147
SAS 操作入门 编者:江南大学 吴有炜 148

input f t d @@;
cards;
102 7 2 120 7 2 85 7 2 306 7 7 318
7 7
169 7 7 735 7 12 626 7 12 720 7 12 542
20 2
559 20 2 558 20 2 601 20 7 667 20 7
609 20 7
859 20 12 718 20 12 727 20 12
;
proc sort;
by t d; /*对自变量 t d 进行 sort 由小到大排序*/
proc rsreg;
model f=t d /lackfit;/*选项 lackfit 要求对回归模型执行不适合度检定
(lack-of-fit test), 预先应先对自变量进行 sort 由小到大排序*/
run;
输出部分结果如下:

由 表 见 线 性 项 , 平 方 项 , 交 互 项 及 回 归 模 型 (P 值 分 别 为
<.0001,0.0144,0.0001,<.0001)均是高度显著的,说明拟合很好

148
SAS 操作入门 编者:江南大学 吴有炜 149

回归模型为 f=-252.46+42.99t+32.22d-2.895d*t+3.37d2

上表看出特征值有正有负,从而稳定点(编码时(4.95 1.57)或未编码时
(45.7 14.85))是鞍点.
以下进行岭嵴分析:
data rubber1; /*仍用数据名 rubber 可能会与先前运行的数据名冲突*/
input f t d @@;
/*ct= (t-13.5)/6.5;cd= (d-7)/5; 对自变量 t d 进行编码处理*,也可不经过
编码处理*/
cards;
102 7 2 120 7 2 85 7 2 306 7 7 318
7 7
169 7 7 735 7 12 626 7 12 720 7 12 542
20 2
559 20 2 558 20 2 601 20 7 667 20 7
609 20 7
859 20 12 718 20 12 727 20 12
;
proc sort;
by t d; /*对自变量 t d 进行 sort 由小到大排序*/
proc rsreg;
model f=t d /lackfit;/*选项 lackfit 要求对回归模型执行不适合度检定
(lack-of-fit test),预先应先对自变量进行 sort 由小到
大排序*/
ridge max ; /*ridge 岭嵴分析,选项 max 为求最大响应面,
欲求最小值应用选项 min*/
run;
输出部分结果见下表(给出了岭迹和系列指标预测值)

149
SAS 操作入门 编者:江南大学 吴有炜 150

上表中编码半径 R(Coded Radius)=0 对应未编码稳定点(t,d)=(13.5, 7.0) ,


随 R 的增加给出了一系列进一步的参考试验点即岭迹(本例未经编
码)(t,d)=(13.8599, 7.4163), … 以及相应预估响应值 470.115,…和预估值
的标准误 24.2514,…

(3) 作响应面图的程序

以数据集 E62 为例(以下程序保存名这 data E62G1,需先运行程序 E62):

proc g3grid data=E62 out=F62;/*光滑数据集E62中数据点,输出数据集F62*/


grid X1 * X2 = Y1;
run;
/* 以下作三维图 */
proc g3d data=F62 gout=G62;/*用数据集F62作三维面图输出图名为G62*/
plot X2 * X1 = Y1 / /*作x2(横)—x1(纵)—y1(竖)三维图/以下
为作三维图的选项(均可缺省)*/
name = 'G62' /*给响应面命名为G62*/
caxis = BLACK /*轴的颜色为黑色(亦可采用其它颜色)*/
ctext = BLACK /*轴的刻度的颜色为黑色(亦可采用其它颜色)*/
cbottom = GREEN /*响应面的下侧面为绿色(亦可采用其它颜色)*/
ctop = BLUE /*响应面的上侧面为兰色(亦可采用其它颜色)*/
tilt = 70 /*竖轴的高度为70(可调)*/
rotate = 70 /*x2—x1坐标面绕竖轴的转动角度(可调)*/
xticknum = 4 /*x轴上有4个刻度点(可调)*/
yticknum = 4 /*y轴上有4个刻度点(可调)*/
zticknum = 4 /*z轴上有4个刻度点(可调)*/
;
run;
输出图如下:

150
SAS 操作入门 编者:江南大学 吴有炜 151

也可从回归方程作响应面,在对数据集E62进行响应面回归(Rsreg)后得回归方程(固定水平x3=0,
本例自变量均已经编码处理)
2 2
y1=37.9-0.5625x1-0.6x2-2.875x1 -3.575x1x2-3.45x2
SAS 程序如下:

Data E62G ;

Do x1=-1 to 1 by 0.1; /*当自变量是原始变量时取类似的二元网格点,即 do 变量=左端点


to 右端点 by 步长*/

Do x2=-1 to 1 by 0.1; /*当自变量是原始变量时取类似的二元网格点,即 do 变量=左端点


to 右端点 by 步长*/

Y1=37.9-0.5625*x1-0.6*x2-2.875*x1**2-3.575*x1*x2-3.45*x2**2;
Output;
End;

End;

Proc print;

Run; /*以上为由回归方程建立作图数据集*/

/*以下作响应面图,先光滑数据,再作三维图*/

proc g3grid data=E62G out=F621;/*光滑数据集E62G中数据点,输出数据集F621*/


grid X1 * X2 = Y1;
run;
/* 以下作三维图 */
proc g3d data=F621 gout=G621;/*用数据集F621作三维面图输出图名为G621*/
plot X2 * X1 = Y1 / /*作x2(横)—x1(纵)—y1(竖)三维图/以下为
作三维图的选项(均可缺省)*/
name = 'G621' /*给响应面命名为G621*/
caxis = BLACK /*轴的颜色为黑色(亦可采用其它颜色)*/
ctext = BLACK /*轴的刻度的颜色为黑色(亦可采用其它颜色)*/
cbottom = GREEN /*响应面的下侧面为绿色(亦可采用其它颜色)*/

151
SAS 操作入门 编者:江南大学 吴有炜 152

ctop = BLUE /*响应面的上侧面为兰色(亦可采用其它颜色)*/


tilt = 70 /*竖轴的高度为70(可调)*/
rotate = 70 /*x2—x1坐标面绕竖轴的转动角度(可调)*/
xticknum = 4 /*x纵轴(x1)上有4个刻度点(可调)*/
yticknum = 4 /*y横轴(x2)上有4个刻度点(可调)*/
zticknum = 4 /*z竖轴上有4个刻度点(可调)*/
;
run;
输出图如下:

上例原始变量为: z1 0.02~0.06 z2 0.004~0.012 z3 0.002~0.004

编码公式为 编码变量=(原始变量 – 中心水平)/半个变化区间

例 编码变量 x1=(z1 – 0.04)/0.02

10. 变量间的线性相关系数

设有两个变量的一组观测数据:

X x1 x2 … xn

Y y1 y2 … yn

反映两个变量相关性密切程度的相关系数定义为:

n n 2 n 2
rxy= ∑ ( xi − x)( y − y) /
i =1
i
∑ ( x i − x) ∑ ( y i − y)
i =1 i =1

例 6.1.11

152
SAS 操作入门 编者:江南大学 吴有炜 153

某健身房对 20 个中年人测量三个生理变量:WEIGHT(体重)、WAIST(腰围)、
PULSE(脉膊)和三个训练变量:CHIWS(引体向上)、SITVPS(起坐次数)、JVMPS(跳跃次数).
试讨论这两组变量间的相关性.

data fit;
input weight waist pulse chins situps jumps;
cards;
191 36 50 5 162 60
189 37 52 2 110 60
193 38 58 12 101 101
162 35 62 123 105 37
189 35 46 13 155 58
182 36 56 4 101 42
211 38 56 8 101 38
167 34 60 6 125 40
176 31 74 15 200 40
154 33 56 17 251 250
169 34 50 17 120 38
166 33 52 13 210 115
154 34 64 14 215 105
247 46 50 1 50 50
193 36 46 6 70 31
202 37 62 12 210 120
176 37 54 4 60 25
157 32 52 11 230 80
156 33 54 15 225 73
138 33 68 2 110 43
;
proc corr data=fit;
var weight ;
with waist; /*var 变量名 1;with 变量名 2;此时 corr 过程给出了两个变量间的相关系数*/
run;
输出结果见下表:

153
SAS 操作入门 编者:江南大学 吴有炜 154

proc corr data=fit;

var weight waist pulse chins situps jumps; /*var 变量名串;此时 corr 过程给出了所
2
有变量两两间的相关系数( C 6
个)*/

run;

输出结果见下表(部分):

proc corr data=fit;

var weight waist pulse;

with chins situps jumps; /*var 变量名串 1;with 变量名串 2;此时 corr 过程给出了两
组变量间两两的相关系数(3×3 个)*/

run;

输出结果见下表:

154
SAS 操作入门 编者:江南大学 吴有炜 155

第二节 利用菜单系统进行回归分析

符号说明: 1) 项 点击该键 2) ⇒ 进入下一步


3) 下拉菜单↓ 点击后出现下拉菜单
4) 对话窗…. 点击后出现对话窗
5) × 项 在对话窗中多选项选中的项前 点击后出现×表示选中
6) 对话窗(键) ⇔ 操作完毕后要(点 OK)返回的对话窗(键)

1. 多元线性回归(包括求变量间的相关系数)

Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)


1 (出现空白数据表)录入数据 ⇒ File ⇒ Save ,

2 或调用已有数据: ⇒ File ⇒ Open By Sas Name…

⇒ (在 Make one selection 窗口中) work 选中数据名 ⇒ (OK)

⇒ Statistics ⇒ Regression ⇒ Linear…线性回归


⇒ 线性回归主窗口

155
SAS 操作入门 编者:江南大学 吴有炜 156

在线性回归主窗口中 Dependen 填入因变量;Explanatory 填入各自变量;以下为返回


式选项窗口(进入该类窗口并进行选择后 ⇒ OK 返回) ⇒ OK

MModel ⇔ 在 Model 主对话窗中,model 下的多选项让用户选择筛选变量的方法(如逐


步回归等);Criteria 让用户选择删选的临界水平;include 让用户选择模型中包含的
变量;Statistics 让用户选择”最优”回归方程的标准

156
SAS 操作入门 编者:江南大学 吴有炜 157

Tests ⇔ 让用户选择是否进行检验、功效分析及共线性诊断等
Statistics ⇔ 让 用 户 选 择 希 望 计 算 的 统 计 量 如 参 数 估
计 、标准回归系数、相关阵或协方差阵的估计;
Predictions ⇔ 让用户选择预测选项;
Plots ⇔ 让用户选择想绘制的图形如变量间散点图、变量残差图或残差影响分析图

⇒ Save Data ⇔ 是否保留数据或统计结果
⇒ Titles ⇔ 可以输入标题
⇒ Variables ⇔ 关于变量的三条指令:By groups Weight Frequence
⇒ OK

2. 一元回归(及一元多项式回归)

Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)


1 (出现空白数据表)录入数据 ⇒ File ⇒ Save ,

2 或调用已有数据: ⇒ File ⇒ Open By Sas Name…

(在 Make one selection 窗口中) work 选中数据名 ⇒ (OK)
⇒ Statistics ⇒ Simple…一元回归 ⇒ (一元回归主窗口)
模型选项有一次、二次、三次多项式
其它选项键及功能类同多元线性回归的主窗口

3. Logistic 回归(二分或有序变量回归)

Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)


○1 (出现空白数据表)录入数据 ⇒ File ⇒ Save ,

2 或调用已有数据: ⇒ File ⇒ Open By Sas Name…



⇒ (在 Make one selection 窗口中) work 选中数据名 (本例 VASO 见 V8 文
件) ⇒ (OK)
⇒ Statistics ⇒ Logistic… ⇒ (Logistic 回归主窗口)
⇒ 响应变量 res→Dependent
⇒ 自变量集 LogVol,LogRate→Quantitative
对以下返回式选项键根据分析需要作适当选择
⇒ Model ⇔ 模型选择
⇒ Statistics ⇔ 统计分析
⇒ Predictions ⇔ 预测
⇒ Plots ⇔ 作图
⇒ Save Data ⇔ 是否保留数据或统计结果

157
SAS 操作入门 编者:江南大学 吴有炜 158

⇒ Titles ⇔ 可以输入标题
⇒ Variables ⇔ 关于变量的三条指令:By groups Weight Frequence
⇒ OK 选项键及功能类同多元线性回归的主窗口

输出结果(部分)如下表:

第三节 回归诊断

G G G G
x x ...
1 2 x p
y
样本1 ⎡x x ... x y ⎤⎥
G ⎢ 11 12 1p 1
设有数据阵 X│ y = 样本2 ⎢x x21 22
... x2p y⎥ 2
.... ⎢ ... ⎥⎥
⎢ ... ... ... ...
样本n ⎢ xn1 xn 2 ... x yn ⎥⎦
⎣ np

回归诊断的内容:

1) 检查模型的适用性

2) ”横看”数据阵 X 检查有无特异样本------残差分析
G G G
3)”竖看”数据阵 X 检查多个自变量间 x ,x1 2
,..., x p 的复共线性------共线性诊断

同一组数据用不同的模型进行回归时”最优”回归方程的判定准则有:

(1) 修正的复相关系数 adjR2=R2-p(1-R2)/(n-p-1)愈大愈好 , 其中 R2 为复相关系


数,n 为试验次数, p 为回归项数,若方程中没有截距项则分母不必减 1.

(2) 均方误差 s2=ESS/(n-p-1)愈小愈好,其中 ESS 是模型残差平方和

158
SAS 操作入门 编者:江南大学 吴有炜 159

1. 残差分析

设回归模型为

yi=f(xi1,xi2, … ,xip)+ei= yˆ +e
i
i (i=1,2,…,n)

ei=yi - yˆ 称为第 i 个样本(x


i
i1,xi2, … ,xip; yi)对应的残差(Residual), yi 因变量

(Dependent), yˆ 称为预测值(Predicted),若 ei 过大则称样本(x


i
i1,xi2, … ,xip; yi)为奇异样本,

应检查原因考虑从数据集中删除该样本.用于检查奇异样本的统计量有 CookD=---库格氏
影响力的统计量、H 矩阵对角元(Hat Matrix Diagonal)=---影响力, 定义为 Xi(XTX)-1Xi 、

D 值(DFFITS)、 学生化残差 Studentized 、reschi=---皮尔森残差、 DifChisq=---剔除该样


本后,它对皮尔森 χ2 适合度的影响 、DifDev=---剔除该样本后,它对偏激统计量(Deviance)
的影响 、 Df betas=---剔除该样本后,每一参数估计值的改变的(标准化)值 (以上选项对应
样本较大者是可疑特异样本) */

(1) 遗漏显著因素引起的残差增加

例 6.3.1

研究空调每天使用小时 ac 及烘干机每天使用次数 dryer 对指标用电量 kwh 的经验公


式(数据见程序)
data kilowatt;
input kwh ac dryer @@;
cards;
35 1.5 1 63 4.5 2 66 5.0 2 17 2.0 0 94 8.5 3 79 6.0 3
93 13.5 1 66 8.0 1 94 12.5 1 82 7.5 2 78 6.5 3 65 8.0 1
77 7.5 2 75 8.0 2 62 7.5 1 85 12.0 1 43 6.0 0 57 2.5 3
33 5.0 0 65 7.5 1 33 6.0 0
;
proc plot data=kilowatt;
plot kwh*ac='*'; /*画(ac, kwh)散点’*’图/*
title '用电量kwh与空调使用小时数ac的散点图';
run;

proc reg data=kilowatt ;


model kwh=ac dryer;
title '二元线性模型 ';
run;

159
SAS 操作入门 编者:江南大学 吴有炜 160

print cli; /* cli要求计算yi (i=1,2,…,n)的预测值和95%置信限) 或


print clm;要求计算Eyi (i=1,2,…,n)和95%置信限*/
run;
plot kwh*ac='o' pred.*ac='-'
l95.*ac='L' u95.*ac='U'/overlay; /*四种散点图*/
run;
quit;

proc reg data=kilowatt;


model kwh=ac / p ; /*选项p要求产生包含原数据、因变量的实际值与预测值及
预测误差的报表*/
var dryer;
plot residual.*pred.='*' r.*dryer='+' ;
/*散点(预测值pred. , 残差residual.)图用*表示;
散点(干燥机次数dryer. , 残差r.)图用+表示,由该图可看出随
次数增加残差在增加所以模型中应添加dryer项*/

title '模型中只包含因素ac时指标用电量数据的残差图';
run;

160
SAS 操作入门 编者:江南大学 吴有炜 161

(2) 遗漏因素的作用显著的高次项(或交互项)引起的残差

例 6.3.2

指标发动机马力 power 与因素转速 speed 的关系


data engine;
input speed power @@;
cards;
22.0 64.03 20.0 62.47 18.0 54.94 16.0 48.84 14.0 43.73
12.0 37.48 15.0 46.85 17.0 51.17 19.0 58.00 21.0 63.21
22.0 64.03 20.0 59.63 18.0 52.90 16.0 48.84 14.0 42.74
12.0 36.63 10.5 32.05 13.0 39.68 15.0 45.79 17.0 51.17
19.0 56.65 21.0 62.61 23.0 65.31 24.0 63.89
;

title;

proc reg data=engine graphics; /*选项graphics要求绘制高分辨的图形*/

model power=speed;

plot power*speed / conf95 pred95; /*在散点(speed, power)图上附

上均值的95%置信限和预测值95%置信限*/

symbol v=star; /*用全局记号symbol对散点图提出要求:v=star即散点用星号

*/
run;

161
SAS 操作入门 编者:江南大学 吴有炜 162

data engine2;
set engine; /*调用数据engine*/
speedsq=speed*speed;
run;

proc reg data=engine2;


model power=speed speedsq;
title '一元二次回归模型 ';
run;
print cli; /* cli要求计算yi (i=1,2,…,n)的预测值和95%置信限) 或
print clm;要求计算Eyi (i=1,2,…,n)和95%置信限*/

plot power*speed='a' pred.*speed='p' /*pred.预测值*/


L95.*speed U95.*speed / overlay symbol='L'; /*四种散点图 ,
L95%、U95%分别表95%置信下、
上限 */
run;
quit;

proc reg data=engine ;


model power=speed / p ; /*选项p要求产生包含原数据、因变量的实际值与预测
值及预测误差的报表*/
plot residual.*speed='*';
title '一元模型的残差图';
run;

proc reg data=engine2 ;

162
SAS 操作入门 编者:江南大学 吴有炜 163

model power=speed speedsq / p ; /*选项p要求产生包含原数据、因变量的实


际值与预测值及预测误差的报表*/

plot residual.*speed='*';
title '二元模型的残差图';
run;

2. 多变量的复共线性诊断

例 6.3.3

水泥凝固热量释放 y 与四种成份 x1—x4 的关系(数据 d631 见程序)

(1)复共线性的诊断标准

通过统计量方差膨胀系数 Variance Inflation(vif)(一般 vif>10


......表明模型有很强的共线性
问题)

(max λ )
2

最大条件指数 Condition
..........Index
.... = (介于 10—30 间弱相关,30
.. —
.100
.间中等相
.. ....
(min λ )
2


..,>100 ...)
....强相关

data E63;
input x1-x4 y ;
cards;
7 26 6 60 78.5
1 29 15 52 74.3
11 56 8 20 104.3
11 31 8 47 87.6
7 52 6 33 95.9
11 55 9 22 109.2
3 71 17 6 102.7
1 31 22 44 72.5
2 54 18 22 93.1
21 47 4 26 115.9
1 40 23 34 83.8
11 66 9 12 113.3
10 68 8 12 109.4
;
proc reg data=E63;
model y=x1-x4 / vif collinoint ; /*选项/ vif collinoint要求对模型进行共线性诊断
*/
run; /*由以下输出表可见vif均>30,最大条件数37.1>30; 最小特征值近似为零也说明共线性严重,

163
SAS 操作入门 编者:江南大学 吴有炜 164

共线性导致尽管方程高度显著(p=0.0001见其它输出表),但每个变量(α=0.05)均不显著*/

(2) 求最优回归方程的 R2 选择法与逐步回归选择法

proc reg data=E63;


model y=x1-x4 / selection=rsquare /*最优回归方程的R2选择法*/

best=2 cp aic rmse adjrsq ; /* 分别表示对每种变量个数给出二个最优子集并输出均方


根误差、cp、aic 和修正的R2统计量*/
run;
proc reg data=E63;
model y=x1-x4 / selection=stepwise sle=0.10 sls=0.10; /*最优回归方程的
逐步回归选择法,在逐步回归中sle表引进变量的显著水平, sls表剔除变量的显著水平*/
print cli; /* cli要求计算yi (i=1,2,…,n)的预测值和95%置信限) 或 print clm;要求计
算Eyi (i=1,2,…,n)和95%置信限*/
run;
quit;

164
SAS 操作入门 编者:江南大学 吴有炜 165

(3) 岭回归方法

岭回归中 k 值的确定方法(a)岭迹图法---选择 k,使每个变量 xi 的岭回归估计 bi(k)趋于稳


(b)方差膨胀因子法---选择 k,使岭回归估计的 Vif<10

(c)控制残差平方和法---限制 b(k)估计的残差平方和<cQ(其中
c>1 指定常数,Q 为最小二乘估计的
残差平方和)

例 6.3.4

经济分析数据进口总额 y 与 x1—国内总产值,x2--存储量,x3---总消费量(数据 E61)


data E64; /*即E61*/
input x1-x3 y;
cards;
149.3 4.2 108.1 15.9
161.2 4.1 114.8 16.4
171.5 3.1 123.2 19.0
175.5 3.1 126.9 19.1
180.8 1.1 132.1 18.8
190.7 2.2 137.7 20.4
202.1 2.1 146.0 22.7
212.4 5.6 154.1 26.5
226.1 5.0 162.3 28.1
231.9 5.1 164.3 27.6
239.0 0.7 167.6 26.3
;

proc reg data=E64 corr;


model y=x1-x3 / vif collin; /*选项/ vif collinoint要求对模型进行共线性诊断*/

run;

title;
proc reg data=E64 outest=oE64 graphics outvif; /*选项graphics要求绘制高分辨的图
形, outest=oE64要求将下面一组k值输出到oE64中,outvif 要求输出vif值*/

model y=x1-x3 / ridge=0.0 to 0.1 by 0.01


0.2 0.3 0.4 0.5; /*选项/ ridge= 指定一组k值来完成岭回归分析*/
plot / ridgeplot; /*绘制岭迹图*/
run;
proc print data=oE64; /*output窗口中输出oE64*/
run;

165
SAS 操作入门 编者:江南大学 吴有炜 166

可见 k≥0.02 后岭迹曲线趋于稳定 , 由下面输出表可选模型 Obs6(k=0.02)各因子


x1—x3 的 vif(分别为 2.858,0.96219,2.859)<3 而均方根误差(_RMSE_=)0.55323 比普通最小
二乘回归方程的 0.48887 大不了多少,但普通最小二乘回归方程 Obs2 有二个因子的 vif(分别
为 185.997,1.01891,186.11)>180

166
SAS 操作入门 编者:江南大学 吴有炜 167

(4) 主成份法

例 6.3.5

经济分析数据进口总额 y 与 x1—国内总产值,x2--存储量,x3---总消费量(数据 E61)

data E65;

set E61; /*需先运行 E61 才能运行本程序*/


proc reg data=E65 outest=oE65 ;
model y=x1-x3 / pcomit=1,2 outvif; /*选项/ pcomit=1,2要求删除最后面的一个或二个
主成分后用前面的主成分进行主成分回归*/
run;
proc print data=oE65;
run;

由 上 表 可 见 模 型 Obs2—3( 删 除 一 个 主 成 分 ) 回 归 系 数 的 方 差 膨 胀 系 数
vif(0.25083,1.00085,0.2538)均<1.1,而均方根误差(_RMSE_=)0.55001 比普通最小二乘回归方
程 Obs1 的 0.48887 大不了多少

(5) ORTHOREG 正交回归法

与方法(4)原理相同,调用 ORTHOREG(正交回归分析)过程:当数据阵“病态”(即复共
线性较严重时)采用 REG 程序只能求 LS 近似阵,而采用本程序可以消除复共线性,产生精
确的 LS(最小误差平方)解.

形式:

Proc OrthoReg 选项串 ;

167
SAS 操作入门 编者:江南大学 吴有炜 168

Model 因变量名称=自变量名称串(变量间用空格隔开) / 选项串;


Run;

例 6.3.6

经济分析数据进口总额 y 与 x1—国内总产值,x2--存储量,x3---总消费量(即数据 E61)


data E66;
input x1-x3 y;
cards;
149.3 4.2 108.1 15.9
161.2 4.1 114.8 16.4
171.5 3.1 123.2 19.0
175.5 3.1 126.9 19.1
180.8 1.1 132.1 18.8
190.7 2.2 137.7 20.4
202.1 2.1 146.0 22.7
212.4 5.6 154.1 26.5
226.1 5.0 162.3 28.1
231.9 5.1 164.3 27.6
239.0 0.7 167.6 26.3
;

proc orthoreg data=E66 ;


model y=x1-x3 ;
run;
输出部分结果如下表:

(6) 偏最小二乘法

适用于多个因变量和多个自变量间存在严重的多重相关时(下例仅供操作演示)

168
SAS 操作入门 编者:江南大学 吴有炜 169

proc pls data=E61 outmodel=oE612 /*pls偏最小二乘估计, 选项cv=one要求用删去一个观测


的交叉确认方法决定取潜在因子的个数, method=simpls规定抽取因
子的方法为simples*/
cv=one method=simpls ;
model y=x1-x3 ;
run;
proc print data=oE612;
run;

3. 利用分析员系统进行回归诊断

Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)


○1 (出现空白数据表)录入数据 ⇒ File ⇒ Save ,

2 或调用已有数据: ⇒ File ⇒ Open By Sas Name…



⇒ (在 Make one selection 窗口) work 选中数据名 ⇒ (OK) ⇒ Statistics
⇒ Regression
⇒ Linear…线性回归 ⇒ (线性回归主窗口) 线性回归主窗口中 Dependen 填入
因变量;Explanatory 填入各自变量;以下为返回窗口(进入该类窗口并进行选择后
⇒ OK 返回) ⇒ OK

(1)残差分析

⇒ Plots ⇔ 让用户选择想绘制的图形如散点图、残差图或影响图等
⇒ Predicted 对话窗口下可选择作 Y(因变量观测值)---X(自变量)图即数据散点图以及

Y---- Yˆ (Predicted)图

或 ⇒ Residual 对话窗口中可选择多项要绘制的残差图类型

或 ⇒ Infuence 给出要生成影响诊断的图形 ⇒ OK

169
SAS 操作入门 编者:江南大学 吴有炜 170

Residual 对话窗口中预测残差图类型有:

残差 residuals(纵轴) ---变量 variables(模轴)图, 其中残差选项有:

正常残差 Ordinary 标准化残差 Standardized 学生化残差 Studentized(远离试验中心且


学生化残差很大的样本必定是奇异样本)

变量选项有:预测因变量 Predicted Y , 自变量 Independents

以及正态概率图,分位图

Influence 对话窗口中残差影响图类型为

影响分析 Influence Statistics(纵轴) ---变量 variables 横轴图,

其中变量选项有:预测因变量 Predicted Y , 自变量 Independents .

影响分析选项有 D 值(DFFITS)、H 值(Leverage)(比其它样本的 D 值 H 值明显大


的样本是奇异样本)、协方差比(Covariance ratio)

(2) 共线性诊断

⇒ Statistics ⇒ Tests ⇒ (指定要进行的共线性分析) ⇒ OK


其中共线性检验选项有:共线性分析(Collinearity analysis)、容忍度估计(Tolerance values
for estimates)、方差膨胀因子 vif(Variance inflation factor)

(一般 vif>10 表明模型有很强的共线性问题)

170
SAS 操作入门 编者:江南大学 吴有炜 171

习题六

*习题 6—1 某厂一种电器的年销量 Y 与竞争对手价格 x1 及本厂价格 x2 有关(数据见


程序行)

(1) 求年销量 Y 与竞争对手价格 x1 及本厂价格 x2 的回归方程,说明在α=0.05 的


水平下方程是否显著

(2) 对模型进行初步诊断,并指出有无可疑点或异常点

(3) 对 x1=170, x2=160 预测 Y

(4) 考虑二次项和交叉项, 用逐步回归建立系数 R2>0.68,模型中所有回归系数在α


=0.1 的水平下是显著的回归模型
data data61;
input x1 x2 y;
n=_n_;
cards;
120 100 102
140 110 100
190 90 120
130 150 77
155 210 46
175 150 93
125 250 26
145 270 69
180 300 65
150 250 85
170 160 .
;
proc print;
run;

171
SAS 操作入门 编者:江南大学 吴有炜 172

习题 6—2 用编程或菜单系统求变量 y 对变量 x1—x4 的回归方程(数据见程序行),说


明在α=0.05 的水平下方程和各回归系数是否显著?
data data62;
input x1-x4 y;
cards;
82.9 92.0 17.1 94.0 8.4
88.0 93.0 21.3 96.0 9.6
99.9 96.0 25.1 97.0 10.4
105.3 94.0 29.0 97.0 11.4
117.7 100.0 34.0 100.0 12.2
131.0 101.0 40.0 101.0 14.2
148.2 105.0 44.0 104.0 15.8
161.8 112.0 49.0 109.0 17.9
174.2 112.0 51.0 111.0 19.6
184.7 112.0 53.0 111.0 20.8
;
proc print;
run;

习题 6—3 影院票房收入 y 与电视广告费用 x1 和报纸广告费用 x2 的数据见程序行,

data data63;
input x1 x2 y;
n=_n_;
cards;
1.5 5.0 96
2.0 2.0 90
1.5 4.0 95
2.5 2.5 92
3.3 3.0 95
2.3 3.5 95
4.2 2.5 94
2.5 3.0 94
3.5 2.0 .
;
proc print;
run;

用编程或菜单系统
(1) 求 y 与 x1 及 x2 的回归方程,说明在α=0.02 的水平下方程是否显著

(2) 对模型进行初步诊断,并指出有无可疑点或异常点,有无强影响点.

172
SAS 操作入门 编者:江南大学 吴有炜 173

(3) 求模型的决定系数 R2,均方识差 MSE 和均方根误差 Root MSE;说明 R2 的意义

(4) 对 x1=3500, x2=2000 预测 Y

习题 6—4 钢包侵蚀数据

钢包容积 Y 和使用次数 X 的数据见程序行.


data data64;
input x y @@;
cards;
2 106.42 3 108.20 4 109.58 5 109.50 7 110.00 8 109.93 10 110.49
11 110.59 14 110.60 15 110.90 16 110.76 18 111.00 19 111.20
;
proc print;
run;
用编程或菜单系统
(1) 绘制 Y---X 散点图,从图形能否看出 Y 与 X 的函数关系?

1 b
(2) 假定 Y 与 X 的关系分别为○
1 =a+ ; ○
2 y=a+blogx;
y x

−b / x
3 y=a+b
○ x; ○
4 y=a
e
试作变量变换化非线性回归为线性

(3) 比较以上四种函数关系,找到最佳的拟合曲线

习题6—5 设有四组数据分别为(x,y1), (x,y2), (x,y3), (x4,y4)(见程序行)


data data65;
input x y1 y2 y3 x4 y4;
cards;
10.0 8.04 9.14 7.46 8 6.58
8.0 6.95 8.14 6.77 8 5.76
13.0 7.58 8.74 12.74 8 7.71
9.0 8.81 8.77 7.11 8 8.84
11.0 8.33 9.26 7.81 8 8.47
14.0 9.96 8.10 8.84 8 7.04
6.0 7.24 6.13 6.08 8 5.25
4.0 4.26 3.10 5.39 19 12.50
12.0 10.84 9.13 8.15 8 5.56
7.0 4.82 7.26 6.44 8 7.91
5.0 5.68 4.74 5.73 8 6.89
;
proc print;
id x;

173
SAS 操作入门 编者:江南大学 吴有炜 174

run;
(1) 绘制四组数据的散点图,从中看出哪几组数据之间不是线性相关?
(2) 建立四组数据的回归方程式并进行比较
(3) 对四组数据分别进行回归诊断,从残差图中能否找到不符合线性回归模型的某些假设?

习题6—6 程序行中数据是27个企业中管理人员y与工人数x的资料
data data66;
input x y @@;
cards;
294 30 247 32 267 37 358 44
423 47 311 49 450 56 534 62
438 68 697 78 688 80 630 84
709 88 627 97 615 100 999 109
1022 114 1015 117 700 106 850 128
980 130 1025 160 1021 97 1200 180
1250 112 1500 210 1650 135
;
proc print;
run;
用编程或菜单系统
(1) 建立y与x的回归模型,并计算预测值和残差;
(2) 进行回归诊断,检验残差的正态性;
(3) 进行回归诊断,试问方差的齐性假设是否成立?

(4) 对y作变换:y*= y ,重新建立y*与x的回归模型后进行回归诊断,并与模型(1)的结果比较

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜
174
SAS 操作入门 编者:江南大学 吴有炜 175

第七章 定性变量数据分析(属性数据分析)
属性数据包括名义变量和有序变量,属性数据分析是分析两个定性变量对观测频数的
影响是否存在关联的方法

第一节 由数据生成列联表

第一列 第二列 … 第n列

第一行 频数 11 频数 12 … 频数 1n

第二行 频数 21 频数 22 … 频数 2n

…….. ……… ………. … ………


第m行 频数 m1 频数 m2 … 频数 mn

1. (以个体单位的)原始数据生成列联表

(1) 使用 FREQ 过程生成列联表

freq 语句形式:

proc freq 选项串; /*选项包括 data=输入文件名*/

tables 次数分配表的设计/选项串;/* 次数分配表的设计例 tables A—产生变量 A 的

频数分配表 tables (A--D)--- 产生四张单变量表 tables A* B --- 产生 A(行变量)-B(列


变量)列联表
tables A* (B C)--- 产生两张列联表 A-B 与 A-C tables (A B)* (C D)--- 产生四张
列联表 A-C、A-D、B-C 与 B-D
选项: CHISQ---要求三种 χ2 检验(重点检验) MEASURES---要求各种线性关系
指标及其标准误 CMH---测量行变量与列变量关系程度的一种统计检验 ALL---要

175
SAS 操作入门 编者:江南大学 吴有炜 176

求以上三种检验 expected----要求单元格频数期望
deviation---要求单元格频数期望与实际频数之差 CellChi2---要求单元格对卡方
统计值的贡献 Alpha=概率值
PlCorr 多元相关系数*/
weight 单元格变量名;/*单元格内是该变量的值即频数或其它值*/
by 分类变量名串; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数值递
增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组变量
名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与 month
的二种情况: feb、jan 的四种交叉组合进行分组统计*/

id 样本识别变量名串;
output out=统计值输出文件名 统计量关键字串;/*关键字有 CHISQ、MEASURES、CMH、
ALL 等*/

例 7.1.1

“统计入门”课程数据(分类变量 Major----‘是’统计专业,’否’----非统计专业;分类变量 sex)


data statclas;
input student sex $ major $ @@;
cards;
1 男 是 2 男 是 3 女 是 4 男 非 5 女 是 6 女 是 7 男 非 8 男 非 9 男 是
10 女 是 11 男 非 12 女 是 13 男 是 14 男 是 15 男 非 16 女 是
17 男 是 18 男 是 19 女 非 20 男 是
;
proc freq data=statclas;
tables sex*major;
title '统计课程中学生的专业和性别';
run;

(2) 使用分析员应用系统

Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)


○1 (出现空白数据表)录入数据 ⇒ File ⇒ Save ,

2 或调用已有数据: ⇒ File ⇒ Open By Sas Name…



⇒ (在 Make one selection 窗口中) work 选中数据名 (statclas) ⇒ (OK) ⇒
Statistics ⇒
⇒ Table Analysis… ⇒ (sex ⇒ Row Major ⇒ Column)
在多项选择键中可作如下选择:
⇒ Table ⇔ 选择要计算的结果,如:观测频数,期望频数及两者的偏差,单元百分
数, 行百分数,列百分数
或 ⇒ Input ⇔ 指定输出列联表中分类变量各水平的排列次序
或 ⇒ Statistics ⇔ 选择计算的统计量

176
SAS 操作入门 编者:江南大学 吴有炜 177

⇒ OK

2. 由现有汇总表生成列联表

(1) 使用 FREQ 过程生成列联表

例 7.1.2

表----杀人犯是否赞成判死刑的调查数据

白人 黑人

是 19 17

否 141 149
data penalty;
input decision $ defrace $ numcell @@;
cards;
是 白人 19 是 黑人 17 否 白人 141 否 黑人 149
; /*建立一个名为penalty的数据集*/
proc freq data=penalty;

177
SAS 操作入门 编者:江南大学 吴有炜 178

tables decision*defrace;
weight numcell; /*由weight语句将观测变量值numcell输入到单元内去*/
title '死刑数据的列联表';
run;

(2) 使用分析员应用系统

Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)


○1 (出现空白数据表)录入数据 ⇒ File ⇒ Save ,

2 或调用已有数据: ⇒ File ⇒ Open By Sas Name…



⇒ (在 Make one selection 窗口中) work 选中数据名 (penalty) ⇒ (OK) ⇒
Statistics
⇒ Table Analysis… ⇒ (decision ⇒ Row defrace ⇒ Column numcell ⇒ Cell
Counts )
在多项选择键下可作多项选择:
⇒ Table ⇔ 选择要计算的结果,如:观测频数,期望频数及两者的偏差,单元百分
数, 行百分数,列百分数
或 ⇒ Input ⇔ 指定输出列联表中分类变量各水平的排列次序
或 ⇒ Statistics ⇔ 选择计算的统计量
⇒ OK

3. 生成多变量的交叉表

例 7.1.3

变量:城市 city 为 7 水平(7 个城市), 变量:就业情况 employ 为 4 水平(就业、失业、


上学、退休)

city---employ 有 7×4=28 种不同水平组合,以下程序给出了就每种水平组合的政治党


派 politic 与所持意见 opinion 的 28 张列联表.

(1) 使用 FREQ 过程生成列联表

Proc freq data=welfare page; /*选项 page 要求每表一页*/

Tables city*employ*politic*opinion; /*tables 语句后前二个由*联结的变量给出


了水平组合的情况,第三个变量这列联
表的行变量,最后一个变量为列联表的
列变量*/

……..

run;

178
SAS 操作入门 编者:江南大学 吴有炜 179

(2) 使用分析员应用系统

Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)


○1 (出现空白数据表)录入数据 ⇒ File ⇒ Save ,

2 或调用已有数据: ⇒ File ⇒ Open By Sas Name…



⇒ (在 Make one selection 窗口中) work 选中数据名 (statclas) ⇒ (OK) ⇒
Statistics ⇒
⇒ Table Analysis… ⇒ (politic ⇒ Row opinion ⇒ Column ,city 和
employ ⇒ Strata(参数)) ⇒ 多项选择键:
若 ⇒ Table ⇔ 选择要计算的结果,如:观测频数,期望频数及两者的偏差,单元百
分数, 行百分数,列百分数
若 ⇒ Input ⇔ 指定输出列联表中分类变量各水平的排列次序
若 ⇒ Statistics ⇔ 选择检验统计量
⇒ OK ⇒ OK

第二节 属性变量的无关联性检验

检验两个定性变量的观测个数是否存在关联

1. 属性变量无关联性的卡方检验

零假设 H0 :行变量与列变量无关联 对立假设 H1: 行变量与列变量关联

适用条件: 每个单元频数均不为零(没有空单元)且所有单元的期望频数(expected)均
大于等于 5(否则用 Fisher 精确检验)

例 7.2.1

检验死刑数据的变量 decision 与变量 defrace 的无关联性假设


proc freq data=penalty; /*需先运行data=penalty才能运行本程序*/
tables decision*defrace / expected chisq /*选项/chisq为卡方检验,选项expected
要求输出期望频数(检验卡方检验的条件),或选项/exact为精
确fisher检验*/
norow nocol nopercent; /*选项norow nocol nopercent分别要求限制输出(列、
行)百分数*/
/*若增加语句exact pchi表示要输出卡方检验的精确p值*/
weight numcell; /*因为是单元频数,故要使用weight语句*/
title '死刑数据: 统计检验';
run;

179
SAS 操作入门 编者:江南大学 吴有炜 180

看到符合使用属性变量无关联性的卡方检验的两个条件(每个单元频数均不为零
(没有空单元)且所有单元的期望频数(expected)均大于等于 5),看出 Chi—Square 检验的
Prob 值为 0.6379,因此支持零假设即:被告人的死刑判决与种族无关

2. 属性变量无关联性的 Fisher 精确检验

当卡方检验的两个条件(每个单元频数均不为零(没有空单元)且所有单元的期望频数
(expected)均大于等于 5)不满足时可采用 Fisher 精确检验,或者对 2×2 列联表 proc freq
过程自动采用 Fisher 精确检验.

零假设 H0 :行变量与列变量无关联 对立假设 H1: 行变量与列变量关联

例 7.2.2
比较两种工艺对产品质量影响,抽样结果见下表:

合格 不合格 小计
工艺一 3 4 7
工艺二 6 4 10
小计 9 8 17

首先生成数据集:
data E71;
input A $ B $ numcell @@;
cards;
工艺一 合格 3 工艺一 不合格 4 工艺二 合格 6 工艺二 不合格 4
;
proc freq data=E71;
tables A*B;

180
SAS 操作入门 编者:江南大学 吴有炜 181

weight numcell; /*由weight语句将观测变量值numcell输入到单元内去*/


title ‘工艺---质量列联表’
run;

使用分析员应用系统

Solution↓ ⇒ Analysis ↓ ⇒ Analyst↓ (“分析员应用”)


○1 (出现空白数据表)录

入 数 据 ( 起 名
D532) ⇒ File ⇒ Save ,

○2 或调用已有数据: ⇒ File ⇒ Open By Sas Name…

⇒ (在 Make one selection 窗口中) work 选中数据名 (D532) ⇒ (OK) ⇒


Statistics ⇒
⇒ Table Analysis… ⇒ (A1,A2 ⇒ Row B1,B2 ⇒ Column ⇒ numcell ⇒ Cell
Counts) ⇒ 多项选择键:
⇒ Table ⇔ (选择要计算的结果包括观测频数(Observed),期望频数(Expected)
及两者的偏差(Deviation)), ⇒ Statistics ⇔ 选择检验统计量 Chi—square
statistics(前方方框打勾)
⇒ OK ⇒ OK

181
SAS 操作入门 编者:江南大学 吴有炜 182

第一表内单元格内三个值分别为 频数 、期望频数、两者偏差
从上表的 Chi—Square 检验看到零假设成立的 P 值 0.4858>0.05 即支持成立零假设:工艺与
产品质量无关联

3. 两个有序变量的无有序关联性检验----Mentel-Haenszel
检验

对于有序的属性变量还可以检验它的序对另一列联变量有无关联,M—H 检验法就是针
对以下假设的检验方法,该法在发现有序关联方面比卡方检验要敏感.

零假设 H0 :行列变量无有序关联 对立假设 H1: 行列变量关于序有关联

度量有序关联程度的统计量有γ、τb、τc ,取值介于-1 和 1 之间表示由负关联到正关


联,其绝对值表示关联强弱

例 7.2.3

牛群大小 A(Large,Medium,Small)与患病严重程度 B(没有 0,低 1,高 2)有以下数据表:

没有(0) 低(1) 高(2)

小 9 5 9

中 18 4 19

大 11 88 136

data cows;
input herdsize $ disease n @@;
cards;
small 0 9 small 1 5 small 2 9
medium 0 18 medium 1 4 medium 2 19
large 0 11 large 1 88 large 2 136
;
proc freq data=cows;
tables herdsize*disease /
measures expected nopercent norow nocol ;
weight n;
title '奶牛疾病数据';
run;
运行结果

182
SAS 操作入门 编者:江南大学 吴有炜 183

由表上见统计量γ、τb、τc 说明
牛群大小(大→小)与患病程度 (没有→
高)有序的负关联,即牛群越大患病程
度越重 ,
ASE 为标准误,可以由它给出统计
量的置信区间,譬如统计量γ的

95% 的 置 信 区 间 为 -0.4133 ±
1.96×0.1009

第三节 属性数据的线性模型 CATMOD 过程

CATMOD 全称 CATegorical data MODeling,模型包括方差分析模型、回归分析模型、


逻辑斯帝回归 (前三个模型用加权最小二乘估计参数) 、对数线性回归(用最大似然率
Maximum Likelihood Ratio 方法估计参数)等等,适合 catmod 过程的数据一般可用矩阵表示,
行表示分类变量所分的各类别, 列表示分类结果频数(下面例中的分类变量各类的结果:上
(落)榜频数).

数据例
样本 上榜人数 落榜人数
1.非重点学校 实验班 30 20
2.非重点学校 普通班 23 27
3. 重点学校 实验班 29 21
4. 重点学校 普通班 24 26

模型一----线性模型:

程序形式(例) Proc CATMOD;

Weight WT;

RESPONSE Maeginals;

MODEL y1*y2=x1 x2; /*因变量 y1 与 y2 的边际概率用自变量


x1 与 x2 的主效应解释*/

Quit;

模型二----对数线性模型:

程序形式(例) Proc CATMOD;

183
SAS 操作入门 编者:江南大学 吴有炜 184

Weight WT;

RESPONSE Maeginals;

MODEL y1*y2*y3= _RESPONSE_/Pred=Freq; /*用最大似然率


Maximum
Likelihood Ratio
方法估计参数值
及细格概率*/

Loglin y1│y2 y3; /*表示除了因变量的三个主效果外还要 y1 与


y2 的交互作用*/

Quit;

模型三----逻辑斯帝回归模型:

程序形式(例) Proc CATMOD;

Weight WT;

Direct x1 x2;

MODEL 名义变量=x1 x2; /*x1 x2 若全是连续变量则可用


logistic 或 probit 过程*/

Quit;

模型四---重复试验的模型

适用于重复观察的实验设计,例 R1,R2,R3 代表三个不同时间点(Time)采集的数


据,它们与 Time 及自变量(设为 A)之间的线性关系可采用以下程序:

程序形式(例) Proc CATMOD;

Weight WT;

RESPONSE Maeginals;

MODEL R1*R2*R3=_RESPONSE_│A;

Repeated Time 3 / _RESPONSE_=Time;

Quit;

PROC CATMOD 过程形式:

Proc Catmod 选项串;

Direct 变量名串; /*将这些变量视为连续变量*/

Model 响应变量=线性模型(自变量)/选项串; /*界定实验矩阵以及列联表的行*/

Loglin 效果名称串/选项; /*界定对数线性模型的效果*/

Factor 自变量名 类别…/选项串; /*界定实验矩阵中的效果以及决定响应函数的自


变量*/

Contrast ‘标名’列的解释,列的解释….; /*界定一个统计假设*/

Population 变量名串; /*界定列联表的列*/

Response 函数/选项串; /*界定数据中的响应函数*/

184
SAS 操作入门 编者:江南大学 吴有炜 185

Weight 单元格变量名;

By 变量名串;

例 7.3.1

某地气候(季节)对儿童感冒平均次数的数据(见程序行),分析性别和气候(季节)对
儿童平均感冒次数的影响

其中: sex: 1---女 2---男

season: 1---春 2---夏 3---秋 4---冬

感冒次数 periods(因变量), 感冒人数 count(权)

options nodate nonumber; /*输出不要日期等*/

Data Dacatmod;

Input sex $ season $ periods count @@;

Cards;

1 1 0 45 1 1 1 164 1 1 2 171

1 2 0 25 1 2 1 24 1 2 2 55

1 3 0 30 1 3 1 73 1 3 2 66

1 4 0 12 1 4 1 18 1 4 2 24

2 1 0 31 2 1 1 136 2 1 2 180

2 2 0 26 2 2 1 26 2 2 2 32

2 3 0 21 2 3 1 18 2 3 2 11

2 4 0 36 2 4 1 11 2 4 2 8

proc catmod;

model periods=sex season / freq prob; /* periods(响应变量)=sex season(二个只考


虑主效应的自变量) 选项 freq 要求为每一对参与分析的变量建立一
个二元变量的频数分配表选项 prob 要求印出上述表的期望概率*/

response means; /*以因变量的均值作为响应函数的代表*/

weight count; /*单元格内变量 count 给出各单元格的频数*/

run;

输出结果(部分)如下:

185
SAS 操作入门 编者:江南大学 吴有炜 186

186
SAS 操作入门 编者:江南大学 吴有炜 187

由方差分析表知:sex 间差异对感冒次数无显著意义(P=0.1374>0.05),季节间差异对
感冒次数高度显著(P<.0001)

由加权最小二乘估计得到: sex 间差异对感冒次数无显著意义(P=0.1374>0.05),季


节间差异对感冒次数高度显著(P<.0001)

例 7.3.2

由数据分类变量 school 学校类型(重点,非重点)与 method 教学法(实验班,普通班)四


种组合对高考结果(上榜,落榜)影响是否显著可在 catmod 的 model result= 中做以
下工作:

(1) model result=school; 学校类型(重点,非重点)的影响

(2) model result=method; 教学法不同(实验班,普通班)的影响

(3) model result=school*method; 组合的影响

(4) model result=school method school*method; 饱和模型(即考虑所有主效


应和交互效应)

样本 上榜人数 落榜人数
1.非重点学校 实验班 30 20
2.非重点学校 普通班 23 27
3. 重点学校 实验班 29 21
4. 重点学校 普通班 24 26

187
SAS 操作入门 编者:江南大学 吴有炜 188

Data E72;

Input school $ method $ pass fail ;

Cards;

非重点 实验班 30 20

非重点 普通班 23 27

重点 实验班 29 21

重点 普通班 24 26

run;

Data E73;

Set E72;

result=’pass’; count=pass; output;

result=’fail’; count=fail; output;

proc catmod data=E73;

weight count ;

response joint; /*以联合响应概率作为响应函数的代表*/

model result=school method school*method;/* 饱和模型(即考虑所有主效应和交互


效应)*/

run;

输出结果如下:

188
SAS 操作入门 编者:江南大学 吴有炜 189

由上表见:似乎上(落)榜与教学法有关(P=0.0867<α=0.1 时)而与学校及学校教学法
组合无关(P=1.000,0.7753>0.1)

习题七

7—1 试用编程方法或”分析员应用”对下表数据生成二维列联表并检验性别和喜爱
的颜色是否无关联性(α=0.05 或 0.1)

喜爱的颜色

红 蓝 绿

性 男 30 10 10

别 女 20 10 20

7—2 试用编程方法或”分析员应用”对下表数据生成二维列联表并检验不同的方案与
治愈情况是否有关联性(α=0.01)

状 况

痊愈 未愈

处理 1 36 14

方案 2 22 28

7—3

试用编程方法或”分析员应用”对下表数据生成二维列联表并检验外伤不同的治疗方案
与恢复时间是否有关联性(α=0.05)

189
SAS 操作入门 编者:江南大学 吴有炜 190

状 况

第一年康复 第二年康复

处理 理疗 38 12

方案 药物+卧床 43 32

7--4 试用编程方法或”分析员应用”对下表数据生成列联表并检验采用的哺乳方式是
否与母亲经济状况是否有关联性(α=0.01)

经济状况

贫穷 下 中 上

方 牛奶 30 15 11 12

母乳 7 18 19 29

式 并用 5 23 7 19

7—5 试用编程方法或”分析员应用”对下表数据

(1) 生成年收入和性别列联表并分析购买行为与性别及收入高低的联系检
验其是否购买行为与性别及收入高低关联.

(2) 把性别作为分层变量生成购买价值与年收入列联表,并分析比较男女
顾客中收入高低的人群购买行为

(3) 对有序变量购买价值与年收入检验是否有显著的有序关联性,并计算
关联性统计量

价值<100 元 价值≥100 元

男 女 男 女

收 低 35 55 8 34

中 58 40 15 31

入 高 37 44 38 36

190
SAS 操作入门 编者:江南大学 吴有炜 191

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

第八章 主成份分析和因子分析
统计意义: 主成份是原始变量组的线性组合,主成份之间两两正交从而没有相关性带
来的信息重叠,就能在基本或大部分提取原变量组信息的情况下用少数几个主成份替代原
变量组,达到降维的目的.为了合理地解释主成份的意义,因子分析是主成份分析的自然延伸

第一节 调用 PRINCOMP 过程进行主成份分析

形式:

proc princomp data=输入数据名 选项串;


/*输入数据(名)可以是原始数据或相关阵或协方差阵 选项包括:0ut=输出文件名
outstat=输出文件名(输出更多信息) cov---要求从协方差阵出发分析(默认从相关阵出发)
standard(或 std)---要求 out=输出中包含标准化的主成分值(默认为未经标准化的主成份值)
prefix=主成份名(默认主成份名为 prin1,prin2,…) */

var 待分析变量名串;

191
SAS 操作入门 编者:江南大学 吴有炜 192

by 分组变量名串; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数值递


增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组变量
名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与 month
的二种情况: feb、jan 的四种交叉组合进行分组统计*/

例 8.1.1
用主成分分析法综合评价对 2000 年我国 53 个高新技术产业开发区进行一次科学的综合
评价,原始数据行见程序:(单位:万元)

高新区(city) (序号)投资总额 x1 业务用房 x2 住宅 x3 公用设施 x4 基础设施 x5 征地拆迁 x6


data economy; /*给数据命名 economy*/
input city $ number $ x1-x6; /* city $说明 city 是字符变量*/
cards; /*说明以下为数据,数据间以空格区别*/
北京 1 828000 723000 50000 9000 46000 0
天津 2 1364870 899885 2000036 52986 128836 83127
石家庄 3 790040 280710 44240 85370 132430 34420
保定 4 590000 429000 20000 1000 115000 25000
太原 5 79120 18390 15200 34350 11180 0
包头 6 191940 61140 2000 2390 19229 11611
沈阳 7 2428204 2195734 85000 94720 20500 32250
大连 8 1130000 463300 259900 67800 214700 124300
鞍山 9 513104 161970 278600 44450 26320 1764
长春 10 941000 447800 118500 12050 162650 200000
吉林 11 625390 78220 275740 221350 5000 45080
哈尔滨 12 297083 317 0 30000 233355 33411
大庆 13 43000 0 0 0 43000 0
上海 14 2430107 1089720 219520 70679 728591 249597
南京 15 2762880 1400620 223360 258850 473970 70870
常州 16 1921300 760150 677821 234526 129850 118953
无锡 17 3380000 835110 478500 25200 490033 24115
苏州 18 3559100 3011990 305300 0 108110 0
杭州 19 514750 303690 27080 67230 74750 42000
合肥 20 455739 96189 94180 50470 195853 19047
福州 21 225404 117366 0 500 68355 38183
厦门 22 613399 327148 87330 8270 190651 0
南昌 23 134646 4250 2000 4500 30000 55696
济南 24 804830 10954 50496 17146 1880 0
青岛 25 2720000 1306830 533170 438396 441604 0
淄博 26 605000 369060 71540 1400 83000 80000
潍坊 27 420000 252000 63000 49000 52500 3500
威海 28 922970 478350 280560 97010 67050 0
郑州 29 322775 251506 3940 4739 25609 36981
洛阳 30 327736 136290 75310 47490 68150 0
武汉 31 1254000 456200 210020 221580 214200 152000
襄樊 32 264560 206640 4589 0 12030 0

192
SAS 操作入门 编者:江南大学 吴有炜 193

长沙 33 293487 80487 0 5000 58000 140000


株洲 34 280150 31560 113760 66910 43790 21620
广州 35 955324 190820 185500 37248 29043 512713
深圳 36 576808 458808 25000 50000 30000 13000
珠海 37 336356 0 0 0 0 0
惠州 38 50695 36516 8179 0 6000 0
中山 39 957670 604200 71020 0 13350 0
佛山 40 502318 209300 123998 45700 72020 48500
南宁 41 413000 211720 200040 0 1240 0
桂林 42 225960 171630 54330 0 0 0
海南 43 82290 7818 0 0 0 0
成都 44 2060000 600000 600000 100000 350000 374000
重庆 45 400000 100000 220000 30000 30000 20000
绵阳 46 395000 107000 100000 30000 150000 8000
贵阳 47 160000 44380 81060 0 10000 24550
昆明 48 340067 129280 68017 16270 6500 120000
西安 49 2087190 1072080 282780 170700 443150 118480
宝鸡 50 374600 93140 86030 60140 135290 0
杨凌 51 58960 0 0 0 57810 1150
兰州 52 19423 7500 7300 0 4623 0
乌鲁木齐 53 167110 112800 16950 0 11000 0

; /* 注:1)空语句说明数据行结束 2)数据也可由其它途径复制到剪贴板
后点击 SAS 菜单栏 edit(编辑) →工具栏 paste(粘贴)*/
run; 注:执行以上语句,并表示过程步结束*/
/*
/* 然后 点击菜单栏 run→工具栏 submit*/

/* PROC PRINCOMP 语句调用 PRINCOMP 过程,其中可以加选项 DATA=……用以


说明主成份过程所用的数据集,如果没有这一选项,则用最新建立的数据集,还可加
OUT=……选项,用以建立输出数据集,还可加 cov 表示从协方差阵出发计算主成份,如
果没有此选项,则从相关阵出发. VAR 语句用来列出要分析的数值变量.*/

proc princomp data=economy prefix=Z out=Outprin; /*:prefit=给主成份命

名为 Z(缺省则认为是 prin),out=给输出数据命名为 Outprin(缺省则默认是 prin)给出输入数据的资料及


主成份,若为 outstat=输出比 out=更详尽,包括输入输出的描述统计量、corr(or cov)、特征根、
特征向量等 */

var x1-x6 ;
proc plot data= Outprin; /* 注:画 city(以*表示)的 z2(纵轴)z1(横
轴)散点图*/

plot Z2*Z1 $ city=’*’;


proc sort data= Outprin; by Z1; /* 注:对 Z1 排序(由 obs 序给出)*/
proc print data= Outprin; /* 注:打印 city Z1-Z3 x1-x6 */
var city Z1-Z3 x1-x6;
run;

193
SAS 操作入门 编者:江南大学 吴有炜 194

上面第一表给出了每个主成份的特征值 Eigenvalue,而 Proportion 给出了每个主成份对方


差(由大到小)的贡献率,由累计贡献率(Cumulative)知前三个主成份已提取了 80.83%的方
差,第二表给出了主成分组成:
第一主成份 z1=0.5349x1+0.444x2+0.3357x3+0.3896x4+0.4478x5+0.227x6
第二主成份 z2=-0.1749x1-0.4202x2+…..
………………..

以下程序的效果是样本(city)分别依据第一主成份以及综合第一,二主成份产生的名次
排序.

options nodate nonumber; /*输出不要日期等*/

data economy;
input city $ number $ x1-x6;
cards;
北京 1 828000 723000 50000 9000 46000 0
天津 2 1364870 899885 2000036 52986 128836 83127
石家庄 3 790040 280710 44240 85370 132430 34420
保定 4 590000 429000 20000 1000 115000 25000
太原 5 79120 18390 15200 34350 11180 0
包头 6 191940 61140 2000 2390 19229 11611
沈阳 7 2428204 2195734 85000 94720 20500 32250
大连 8 1130000 463300 259900 67800 214700 124300
鞍山 9 513104 161970 278600 44450 26320 1764
长春 10 941000 447800 118500 12050 162650 200000
吉林 11 625390 78220 275740 221350 5000 45080
哈尔滨 12 297083 317 0 30000 233355 33411
大庆 13 43000 0 0 0 43000 0
上海 14 2430107 1089720 219520 70679 728591 249597
南京 15 2762880 1400620 223360 258850 473970 70870
常州 16 1921300 760150 677821 234526 129850 118953
无锡 17 3380000 835110 478500 25200 490033 24115
苏州 18 3559100 3011990 305300 0 108110 0
杭州 19 514750 303690 27080 67230 74750 42000

194
SAS 操作入门 编者:江南大学 吴有炜 195

合肥 20 455739 96189 94180 50470 195853 19047


福州 21 225404 117366 0 500 68355 38183
厦门 22 613399 327148 87330 8270 190651 0
南昌 23 134646 4250 2000 4500 30000 55696
济南 24 804830 10954 50496 17146 1880 0
青岛 25 2720000 1306830 533170 438396 441604 0
淄博 26 605000 369060 71540 1400 83000 80000
潍坊 27 420000 252000 63000 49000 52500 3500
威海 28 922970 478350 280560 97010 67050 0
郑州 29 322775 251506 3940 4739 25609 36981
洛阳 30 327736 136290 75310 47490 68150 0
武汉 31 1254000 456200 210020 221580 214200 152000
襄樊 32 264560 206640 4589 0 12030 0
长沙 33 293487 80487 0 5000 58000 140000
株洲 34 280150 31560 113760 66910 43790 21620
广州 35 955324 190820 185500 37248 29043 512713
深圳 36 576808 458808 25000 50000 30000 13000
珠海 37 336356 0 0 0 0 0
惠州 38 50695 36516 8179 0 6000 0
中山 39 957670 604200 71020 0 13350 0
佛山 40 502318 209300 123998 45700 72020 48500
南宁 41 413000 211720 200040 0 1240 0
桂林 42 225960 171630 54330 0 0 0
海南 43 82290 7818 0 0 0 0
成都 44 2060000 600000 600000 100000 350000 374000
重庆 45 400000 100000 220000 30000 30000 20000
绵阳 46 395000 107000 100000 30000 150000 8000
贵阳 47 160000 44380 81060 0 10000 24550
昆明 48 340067 129280 68017 16270 6500 120000
西安 49 2087190 1072080 282780 170700 443150 118480
宝鸡 50 374600 93140 86030 60140 135290 0
杨凌 51 58960 0 0 0 57810 1150
兰州 52 19423 7500 7300 0 4623 0
乌鲁木齐 53 167110 112800 16950 0 11000 0
;
proc princomp data=economy out=Outprin;
data rankprin;

set outprin; /*调用主成份分析的输出文件产生数据集 rankprin*/

proc rank data =rankprin descending;

var prin1;

ranks rankprin1;
/*以上三行语句作用为先对 prin1 由大到小排序(descending 降序),再转换成名
为 rankprin1 的名次变量*/
proc sort; by rankprin1; /*对 rankprin1 排序(默认为升序即由小到大)*/
proc print;

195
SAS 操作入门 编者:江南大学 吴有炜 196

var city prin1 rankprin1; /*印出对 rankprin 排序后的 city prin1 rankprin1*/

data pn1and2;

set outprin; /*调用主成份分析的输出文件产生数据集 pn1and2*/

prin1and2=0.76*prin1+0.24*prin2;

/*利用数据集 pn1and2 中的变量 prin1 与 prin2 依据各自贡献率比


0.76=3.10/(3.10+0.98), 0.24=0.98/(3.1.+0.98)赋权得到综合变量 prin1and2*/

proc rank data =pn1and2 descending;

var prin1and2;

ranks rankprin1and2;
/*以上三行语句作用为先对 prin1and2 由大到小排序(descending 降序),再转换
成名为 rankprin1and2 的名次变量*/
proc sort; by rankprin1and2;
/*对 rankprin1and2 排序(默认为升序即由小到大)*/
proc print;
var city prin1 prin2 prin1and2 rankprin1and2;
/*印出对 rankprinand2 排序后的 city 等变量*/
run;
输出部分结果见下表:

196
SAS 操作入门 编者:江南大学 吴有炜 197

例 8.1.2

学生身体 4 项指标的主成份分析
data E81;
input number x1-x4 @@ ; /*nummber学生序号, x1身高, x2体重, x3胸围, x4坐高*/
cards;
1 148 41 72 78 2 139 34 71 76 3 160 49 77 86 4 149 36 67 79
5 159 45 80 86 6 142 31 66 76 7 153 43 76 83 8 150 43 77 79
9 151 42 77 80 10 139 31 68 74 11 140 29 64 74 12 161 47 78 84
13 158 49 78 83 14 140 33 67 77 15 137 31 66 73 16 152 35 73 79
17 149 47 82 79 18 145 35 70 77 19 160 47 74 87 20 156 44 78 85
21 151 42 73 82 22 147 38 73 78 23 157 39 68 80 24 147 30 65 75
25 157 48 80 88 26 151 36 74 80 27 144 36 68 76 28 141 30 67 76
29 139 32 68 73 30 148 38 70 78
;
proc princomp data=E81 prefix=z out=oE81 ;/*选项prefix=z要求主成份的前缀名为z*/
var x1-x4;
run;
proc plot data=oE81;
plot z2*z1 $ number='*'; /*z1—z2散点图的点用’*’标记*/
run;
proc sort data=oE81;
by z1;
run;

197
SAS 操作入门 编者:江南大学 吴有炜 198

proc print data=oE81;


var number z1 z2 x1-x4;
run;
运行部分结果:

第一主成份有88.53%的方差贡献
率,前两个主成份累计贡献率更高
达96.36%,故只需前两个主成份就
能很好地概括这组数据.
第四特征值0.066≈0说明原变量
组存在共线性.
第一主成份可解释为大小因子,第
二主成份可解释为胖瘦因子

例 8.1.3
. 彩色胶卷显影液质量控制问题:将胶卷在不同的情况下曝光,再通过色片进行测量,
测量在高、中、低三种密度下进行,这样一个胶卷有 9 个指标,共做 108 个试验,由 108
个数据所得样本协差阵如下表,试做主成分分析.
高 中 低
红 绿 蓝 红 绿 蓝 红 绿 蓝
177 179 95 96 53 32 -7 -4 -3
419 245 131 181 127 -2 1 4
302 60 109 142 4 4 11
158 102 42 4 3 2
137 96 4 5 6
128 2 2 8
34 31 33
39 89
48
输入协差阵的 SAS 程序可以这样写
data film (type=cov);
_type_ = ’cov’; /*若为相关阵则为’corr’*/
input _name_ $ x1-x9; /*_name_为对称阵行、列变量名*/
cards;
x1 117 . . . . . . . . /*输入对称的相关阵或协方差阵时
省略号必须有且点数必须正确*/
x2 179 419 . . . . . . .
x3 95 245 302 . . . . . .
x4 96 131 60 158 . . . . .

198
SAS 操作入门 编者:江南大学 吴有炜 199

x5 53 181 109 102 137 . . . .


x6 32 127 142 42 96 128 . . .
x7 -7 -2 4 4 4 42 34 . .
x8 -4 1 4 3 5 2 31 39 .
x9 -3 4 11 2 6 8 33 89 48
;
proc princomp cov;
var x1-x9;
run;

例 8.1.4

主成份回归

因变量 y---进口总额, 自变量 x1---国内总产值, x2---存储量, x3---总消费量


data E82;
input x1-x3 y;
cards;
149.3 4.2 108.1 15.9
161.2 4.1 114.8 16.4
171.5 3.1 123.2 19.0
175.5 3.1 126.9 19.1
180.8 1.1 132.1 18.8
190.7 2.2 137.7 20.4
202.1 2.1 146.0 22.7
212.4 5.6 154.1 26.5
226.1 5.0 162.3 28.1
231.9 5.1 164.3 27.6
239.0 0.7 167.6 26.3
;

proc standard data=E82 out=E82std mean=0 std=1;


var x1-x3 y;
run; /*标准化数据*/

proc princomp data=E82std prefix=z out=oE82 ;


var x1 x2 x3;
run; /*主成份分析*/

proc print data=oE82;


var z1 z2 y;
run;

proc reg data=oE82 ;


model y=z1 z2;
run; /*主成份回归*/

199
SAS 操作入门 编者:江南大学 吴有炜 200

以上程序的第一部分对自变量数据进行了标准化处理和主成份分析,从输出中可见只需取
前二个主成份即可提取方差贡献率的 99.91%,然后作了前二个主成份和因变量间的回归分
析,最后也可将原始变量 x1—x3 代入主成份得原始变量和因变量间的回归方程

第二节 利用分析员应用系统

符号说明: 1) 项 点击该键 2) ⇒ 进入下一步


3) 下拉菜单↓ 点击后出现下拉菜单
4) 对话窗…. 点击后出现对话窗
5) × 项 在对话窗中多选项选中的项前 点击后出现×表示选中
6) 对话窗(键) ⇔ 操作完毕后要(点 OK)返回的对话窗(键)
以下以数据 economy 为例,设当前 SAS 数据库 work 中已有该数据文件,操作如下:

Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (出现空白数据表) ⇒ File ⇒ Open By Sas

Name… ⇒ ( 在 Make one selection 窗 口 ) work 选中数据名 (data

economy) ⇒ (OK) Statistics↓ ⇒ Multivariate↓ ⇒

200
SAS 操作入门 编者:江南大学 吴有炜 201

⇒ Princinpal Component… ⇒
进入多变量分析主窗口 Princinpal Component:Economy

在多变量分析主窗口里
选择 x1—x6 ⇒ Variables ⇒

Statistics ⇔ ⇒ 选择相关阵还是协方差阵及主成份个数,本例选相关阵、主成份
个数 2 个 ⇒ OK
Polts ⇔ ⇒ 选择是否绘制 Scree Plot (屏幕图即被选中前 2 个主成份的特征值直方
图)(本例选)或 Componet Plot (主成份散点图)(本例选,在 Type 类型中选 Enhance
加强型,Id 样本本例用 number) ⇒ OK
Save Data ⇔ ⇒ 数据保存选项:Scores 输入数据表 , Statistics 统计表, ⇒ OK
Title ⇔ (标题) ⇒ 本例打入”经济数据主成份分析” ⇒ OK
Variables 针对主成份分析的三条指令:By groups Weight Frequence 本例不点击
⇒ (OK) (运行后分析结果点击 Analyst(new…)后点击左方结果树看相应结果)
运行后的结果树及前二个主成份散点图如下:

201
SAS 操作入门 编者:江南大学 吴有炜 202

第三节 因子分析

1. 调用 factor 过程进行因子分析

形式:

proc factor data=输入文件名 选项串;/* 输入数据(名)可以是原始数据或相关阵或


协方差阵 选项包括:0ut=输出文件名 outstat=输出文件名(输出更多信息) (默认因子为
factor1,factor2,…)

与提炼因子有关的选项 method(或 M)=

M=principal (priors=one) 主成份分析法

202
SAS 操作入门 编者:江南大学 吴有炜 203

M= principal priors=(非 one) 主轴因子分析法*/

M=U M=A M=M M=H M=I M=PATTEN M=SCORE 等方法

priors=one 变量共通性的预估值为 1

priors=max 每个变量共通性的预估值为每一变量与其它变量的最大相关系数绝对值
priors=smc 每个变量共通性的预估值为每一变量与其它变量的复相关系数平方

priors=A priors=I priors=R 等

Rotate=varimax(或 V)最大方差旋转法

Rotate=Promax(或 P)最优斜交转换法

Rotate=Orthomax 标准正交转换法

Rotate=Q Rotate=E Rotate=HK Rotate=Procrustes Rotate=none 等

Simple---印出均值,标准差 corr---印出相关阵

preplot---未经过坐标转换的因子负荷阵 plot---经过坐标转换的因子负荷阵*/

priors 变量共通性的预估值; /*该值应介于 0---1 之间*/

var 待分析变量名串;

by 分组变量名串;/*分组后对每组进行主成份分析 须先用 proc sort ; by 分组变量名串;


通过 by 对变量的值排序(数值递增字母升序)按序分组,以组为单位求统计量,因而不适用取
值中文的变量 例 若有分组变量名串 sex(分 male、female) month(分 feb、jan)则按 sex 的
二种情况: male、female 与 month 的二种情况: feb、jan 的四种交叉组合进行分组统计*/

例 8.3.1

80-90 年代我国经济发展情况分析

/* 为分析 1980-1991 年我国经济发展情况,采用 8 个指标,x1:社会总产值;x2:国


民收入;x3:一次性能源生产总量;x4:货物周转量;x5:固有的固定资产投资额;x6:
职工工资总额;x7:社会商品零售额;x8:财政收入。考虑经济逐年增长,以每年值对上
年的比为随机变量的观测值,(见程序中数据表)对其做因子分析并分析因子含义。
采用下面的程序:*/
data=ecm1;
input y X1-X9 @ @;
cards;
1980 1.1167 1.1009 0.9872 1.0563 1.0665 1.1944 1.1889 0.9835
1981 1.0634 1.0686 0.9925 1.0097 0.8949 1.0616 1.0981 1.0041
1982 1.0982 1.0804 1.0562 1.0746 1.2664 1.0756 1.0936 1.0316
1983 1.1169 1.1123 1.0673 1.077 1.1262 1.0596 1.1087 1.1112
1984 1.1183 1.1934 1.0924 1.1167 1.245 1.2127 1.185 1.2025
1985 1.2605 1.242 1.0988 1.115 1.4179 1.2202 1.275 1.2427
1986 1.1496 1.1195 1.0301 1.1116 1.1773 1.2001 1.1498 1.211
1987 1.2094 1.185 1.0357 1.1032 1.1615 1.1334 1.1758 1.0485
1988 1.2931 1.2604 1.0497 1.0718 1.2023 1.2313 1.2784 1.1094
1989 1.1565 1.1125 1.0609 1.0741 0.9177 1.1305 1.0899 1.1217
1990 1.1019 1.0917 1.0225 1.0241 1.1551 1.127 1.0245 1.1237
1991 1.1516 1.1205 1.0089 1.0679 1.2431 1.1263 1.1344 1.0901

203
SAS 操作入门 编者:江南大学 吴有炜 204

;
pcoc factor data=ecm1 outstat =ecfact;/* 第一个 proc factor 语句用来调用因子分析过程,
处理的数据是 ecm 方法主成份分析,outstat=输出
比 out=更详尽,包括描述统计量、corr(or cov)、特
征根、主因子等 */
var X1-X8;
proc factor data=ecm1 priors=max n=2 /*第二个 proc factor 规定了先验公因子方差估计,取
相关变量的最大值,执行主因子分析;同时要求提取
两个因子(n=2)*/
rotate=v; /* 产生方差最大旋转*/
var X1-X8;
proc print data=ecfact;
run;

此程序的输出结果如下列表:
Principal factor analysis with varmax rotation

Initial Factor Method: Principal Factors


Prior Communality Estimates: MAX
X1 X2 X3 X4
0.846687 0.846687 0.906432 0.595158
X5 X6 X7 X8
0.906432 0.805627 0.814235 0.588110
Eigenvalues of the Reduced Correlation Matrix:
Total = 6.30936864 Average = 0.78867108

1 2 3 4
Eigenvalue 3.6973 2.1881 0.6994 0.2693
Difference 1.5092 1.4887 0.4301 0.2357
Proportion 0.5860 0.3468 0.1109 0.0427
Cumulative 0.5860 0.9328 1.0437 1.0864
5 6 7 8
Eigenvalue 0.0336 -0.1199 -0.1899 -0.2687
Difference 0.1534 0.0700 0.0788
Proportion 0.0053 -0.0190 -0.0301 -0.0426
Cumulative 1.0917 1.0727 1.0426 1.0000

2 factors will be retained by the NFACTOR criterion.


Factor Pattern
FACTOR1 FACTOR2
X1 0.72484 -0.43071
X2 0.91486 -0.18516
X3 0.60551 0.74549
X4 0.61566 0.34716
X5 0.39437 0.83510
X6 0.74253 -0.48120

204
SAS 操作入门 编者:江南大学 吴有炜 205

X7 0.78519 -0.45647
X8 0.51565 0.39336

Variance explained by each factor

FACTOR1 FACTOR2
3.697345 2.188122

Final Communality Estimates: Total = 5.885467


X1 X2 X3 X4
0.710900 0.871252 0.922407 0.499562
X5 X6 X7 X8
0.852921 0.782907 0.824894 0.420622

Rotation Method: Varimax


Orthogonal Transformation Matrix
1 2
1 0.82004 0.57230
2 -0.57230 0.82004
Rotated Factor Pattern
FACTOR1 FACTOR2
X1 0.84089 0.06163
X2 0.85619 0.37174
X3 0.06990 0.95787
X4 0.30619 0.63703
X5 -0.15453 0.91052
X6 0.88430 0.03035
X7 0.90513 0.07504
X8 0.19773 0.61768

Variance explained by each factor


FACTOR1 FACTOR2
3.203033 2.682434

Final Communality Estimates: Total = 5.885467


X1 X2 X3 X4
0.710900 0.871252 0.922407 0.499562
X5 X6 X7 X8
0.852921 0.782907 0.824894 0.420622

/*由上表输出结果,我们可获得以下信息:
1、 特征值表,前两个特征值3.6973 、2.1881比较大,两者占公共方差的93.28%,因而取两
个因子(n=2)是合理;
2、 给出每个因子对方差的贡献,及公共因子对每个变量的贡献。8个变量中只有第5个变量
(固有的固定资产投资额)与其他类型的影响不同。

205
SAS 操作入门 编者:江南大学 吴有炜 206

3、方差的最大正交旋转矩阵和旋转后的因子模型在上表中有所体现。由旋转后的模型可得
出载荷的分布不明显,各种变量对经济情况分析的影响没得到很好的区分,说明用最大正交
旋转的方式没能将各因子的影响分析清楚,因此考虑选择其他旋转方法。
考虑用斜正交旋转方式进行旋转,操作过程如下:*/

pcoc factor out =ecfact;


var X1-X8;
proc factor data=ecm priors=max n=2
rotate=hk;
var X1-X8;
proc print data=ecfact;
run;

程序运行的结果如下:
Initial Factor Method: Principal Factors
Prior Communality Estimates: MAX
X1 X2 X3 X4
0.846687 0.846687 0.906432 0.595158
X5 X6 X7 X8
0.906432 0.805627 0.814235 0.588110

Eigenvalues of the Reduced Correlation Matrix:


Total = 6.30936864 Average = 0.78867108
1 2 3 4
Eigenvalue 3.6973 2.1881 0.6994 0.2693
Difference 1.5092 1.4887 0.4301 0.2357
Proportion 0.5860 0.3468 0.1109 0.0427
Cumulative 0.5860 0.9328 1.0437 1.0864
5 6 7 8
Eigenvalue 0.0336 -0.1199 -0.1899 -0.2687
Difference 0.1534 0.0700 0.0788
Proportion 0.0053 -0.0190 -0.0301 -0.0426
Cumulative 1.0917 1.0727 1.0426 1.0000

2 factors will be retained by the NFACTOR criterion.


Factor Pattern
FACTOR1 FACTOR2
X1 0.72484 -0.43071
X2 0.91486 -0.18516
X3 0.60551 0.74549
X4 0.61566 0.34716
X5 0.39437 0.83510
X6 0.74253 -0.48120
X7 0.78519 -0.45647
X8 0.51565 0.39336
Variance explained by each factor
FACTOR1 FACTOR2

206
SAS 操作入门 编者:江南大学 吴有炜 207

3.697345 2.188122
Final Communality Estimates: Total = 5.885467
X1 X2 X3 X4
0.710900 0.871252 0.922407 0.499562
X5 X6 X7 X8
0.852921 0.782907 0.824894 0.420622

Rotation Method: Harris-Kaiser


Oblique Transformation Matrix
1 2
1 0.81067 0.42936
2 -0.63045 0.93290
Inter-factor Correlations
FACTOR1 FACTOR2
FACTOR1 1.00000 0.22763
FACTOR2 0.22763 1.00000
Rotated Factor Pattern (Std Reg Coefs)
FACTOR1 FACTOR2
X1 0.85914 -0.09059
X2 0.85838 0.22007
X3 0.02088 0.95545
X4 0.28023 0.58821
X5 -0.20679 0.94839
X6 0.90532 -0.13010
X7 0.92431 -0.08871
X8 0.17003 0.58836

Reference Axis Correlations


FACTOR1 FACTOR2
FACTOR1 1.00000 -0.22763
FACTOR2 -0.22763 1.00000
Reference Structure (Semipartial Correlations)
FACTOR1 FACTOR2
X1 0.83659 -0.08821
X2 0.83585 0.21429
X3 0.02033 0.93037
X4 0.27287 0.57277
X5 -0.20136 0.92349
X6 0.88155 -0.12668
X7 0.90005 -0.08639
X8 0.16556 0.57291
Variance explained by each factor eliminating other factors
FACTOR1 FACTOR2
3.128566 2.451930
Factor Structure (Correlations)

207
SAS 操作入门 编者:江南大学 吴有炜 208

FACTOR1 FACTOR2
X1 0.83852 0.10498
X2 0.90848 0.41547
X3 0.23837 0.96021
X4 0.41413 0.65200
X5 0.00910 0.90132
X6 0.87571 0.07599
X7 0.90412 0.12169
X8 0.30396 0.62707
Variance explained by each factor ignoring other factors
FACTOR1 FACTOR2
3.433537 2.756901
Final Communality Estimates: Total = 5.885467
X1 X2 X3 X4
0.710900 0.871252 0.922407 0.499562
X5 X6 X7 X8
0.852921 0.782907 0.824894 0.420622

上述结果可看出,变量x1、x2、x6、x7在第一个因子上的载荷明显比在第二个因子上要大,
与此相似,x3、x4、x5、x8则在第二个因子上的载荷大于第一个因子上的载荷,因而可将
x1:社会总产值;x2:国民收入;x6:职工工资总额;x7:社会商品零售额;和x3:一次性
能源生产总量;x4:货物周转量;x5:固有的固定资产投资额; x8:财政收入分两类信息
做经济情况分析。

例 8.3.2
. 选拔职员对应聘人员测验 6 门科目:
词汇、阅读、同义词、算术、代数、微积分记为 x1, x2, x3, y1, y2, y3, 将所有应聘者的
考试成绩作计算机处理,得样本相关阵,试对这六科成绩作因子分析. 样本相关阵见程序
对此问题采用程序*/
data score(type=corr);/* 建立名为 SCORE 数据库,其类型为 CORR 即相关阵*/
_type_=’corr’;
input _name_$ x1 x2 x3 y1 y2 y3;
cards;
x1 1 . . . . .
x2 .72 1 . . . .
x3 .63 .57 1 . . .
y1 .09 .15 .14 1 . .
y2 .09 .16 .15 .57 1 .
y3 .00 .09 .09 .63 .72 1

proc factor data =score;/* 调用因子分析过程对相关阵作因子分析,提取因子的方法 method=
缺省,所以作主成分因子分析. */

var x1 x2 x3 y1 y2 y3;
title ’principal component analysis’;

208
SAS 操作入门 编者:江南大学 吴有炜 209

run;
proc factor data =score priors =max n=2 /*没有规定提取因子的方法, 但规定了每一变
量共通性的预估值 PRIORS=为每一变量同其它
变量相关系数绝对值的最大值(PRIORS=MAX),
所以执行主因子分析, 同时要求提取两个因子
(n=2)*/
preplot rotate=varimax plot outstat=fact;/* 要求印出未经旋转的因子负荷矩阵;产
生方差最大旋转;印出旋转后的因子负荷矩阵*/
var x1 x2 x3 y1 y2 y3;
, ,
title2 principal factor analysis with varimax rotation ;
proc print data=fact;/* 打印旋转后的因子模型图*/
run;
以上程序 DATA 步用以建立名为 SCORE 数据库,其类型为 CORR 即相关阵,其中
x1,x2,x3 分别表示词汇、阅读、同义词,y1, y2, y3 分别表示算术、代数、微积分.
第一个 PROC FACTOR 语句用来调用因子分析过程对相关阵作因子分析,提取因子的
方法缺省,所以作主成分因子分析. 其输出结果见下表:
第二个 PROC FACTOR 语句中没有规定提取因子的方法, 但规定了先验公因子方差
估计, 使用它同其余任一变量相关的最大值(PRIORS=MAX), 所以此时执行主因子分析,
同时要求提取两个因子(n=2), 还要求打印没有旋转的因子模型图(PREPLPOT). POTATE=V
要求产生方差最大旋转,PLOT 要打印旋转后的因子模型图.
例 8.3.2

盐泉水化学分析资料的因子分析
data E83;
input x1-x7; /*x1矿化度, x2—Br.103/ Cl, x3---K.103/Σ盐, x4--- K.103/ Cl,
x5---Na/K, x6--- Mg.102/ Cl, x7---εNa/εCl*/
n=_n_; /*给出观测值的观测序n*/
cards;
11.835 0.480 14.360 25.210 25.21 0.810 0.98
45.596 0.526 13.850 24.040 26.01 0.910 0.96
3.525 0.086 24.400 49.300 11.30 6.820 0.85
3.681 0.370 13.570 25.120 26.00 0.820 1.01
48.287 0.386 14.500 25.900 23.32 2.180 0.93
17.956 0.280 9.750 17.050 37.20 0.464 0.98
7.370 0.506 13.600 34.280 10.69 8.800 0.56
4.223 0.340 3.800 7.100 88.20 1.110 0.97
6.442 0.190 4.700 9.100 73.20 0.740 1.03
16.234 0.390 3.100 5.400 121.50 0.420 1.00
10.585 0.420 2.400 4.700 135.60 0.870 0.98
23.535 0.230 2.600 4.600 141.80 0.310 1.02
5.398 0.120 2.800 6.200 111.20 1.140 1.07
283.149 0.148 1.763 2.968 215.86 0.140 0.98
316.604 0.317 1.453 2.432 263.41 0.249 0.98
307.310 0.173 1.627 2.729 235.70 0.214 0.99
322.515 0.312 1.382 2.320 282.21 0.024 1.00
254.580 0.297 0.899 1.476 410.30 0.239 0.93

209
SAS 操作入门 编者:江南大学 吴有炜 210

304.092 0.283 0.789 1.357 438.36 0.193 1.01


202.446 0.042 0.741 1.266 309.77 0.290 0.99
;
run;
proc factor data=E83 method=prin priors=one /* method=prin priors=one表示主成
份估计,
若缺省仍为主成份估计*/
p=0.80 simple; /* p=0.80(或80)表示选取公因子的个数使方差累计贡献率≥80%, simple要
求简单打印*/
var x1-x7;
run;

proc factor data=E83 rotate=varimax n=3;


var x1-x7;
run;

proc factor data=E83 rotate=v n=3 score out=oE83; /* rotate=v(或Varimax)表对因


子载荷阵方差最大旋转n=3三个公因子*/
var x1-x7;
run;
proc print data=oE83; /*打印因子得分系数*/
var factor1 factor2 factor3;
run;
proc plot data=oE83;
plot factor2*factor1 $ n='*'/href=0 vref=0; /*绘制第二因子对第一因子得分分布图*/
run;

2. 因子分析的几种输入形式

1) (从多变量数据阵出发)

proc corr data= ecm out=correcm;/*先产生数据阵 ecm 的相关阵*/

proc factor data=correcm method=ML;/*最大可能率因子法*/

proc factor data=correcm; /*method=缺省为主成份分析*/

2) (从多变量数据阵出发)

proc factor data=ecm outstat =fact; /*method=缺省为主成份分析*/

proc factor rotate=varimax;/* 最大方差旋转*/

proc factor rotate=quartimax; /* 最大四次方旋转*/

3) (从相关阵出发)

data score(type=corr);/* 建立名为 SCORE 数据库,其类型为 CORR 即相关阵*/

210
SAS 操作入门 编者:江南大学 吴有炜 211

_type_=’corr’;
input _name_ $x1 x2 x3 y1 y2 y3;
/* _name_$命名了(相关)阵的行(列)变量名; x1 -y3 为矩阵元素变量*/
cards;

x1 1 . . . . . /*输入相关阵或协方差阵时省略号必须有且点数必须正确*/

x2 .72 1 . . . .
x3 .63 .57 1 . . .
y1 .09 .15 .14 1 . .
y2 .09 .16 .15 .57 1 .
y3 .00 .09 .09 .63 .72 1

proc factor ;
4) (从因子型态 factor pattern 出发)

data pat(type=factor);

_type_=’pattern’;

input name $ x y z; /*x,y,z 为矩阵元素变量*/

cards;

factor1 .5 .7 .3

factor2 .8 .2 .8

proc factor rotate=promax prerotate=none;/*最优斜交旋转;初步坐标旋转 none* /

5) (从因子型态 factor pattern 出发)

data pat(type=factor);

input _type_ $ _name_$ x y z;/*变量类型;矩阵行变量名;矩阵元素名*/

cards;

pattern factor1 .5 .7 .3

pattern factor2 .8 .2 .8

fcorr factor1 1.0 .2 ./*fcorr 因子间相关系数(阵)*/

fcorr factor2 .2 1.0 .

proc factor rotate=promax prerotate=none;/*最优斜交旋转;初步坐标旋转 none* /

习题八

8—1 用主成份分析探讨城市工业主体结构(数据见程序)
(1) 对指标进行主成份分析并解释主成份

211
SAS 操作入门 编者:江南大学 吴有炜 212

(2) 利用主成份对 12 个行业排序和分类


data data81;
input name : $18. x1-x8;
cards;
1(冶金) 90342 52455 101091 19272 82.000 16.100 197435 0.172
2(电力) 4903 1973 2035 10313 34.200 7.100 592077 0.003
3(煤炭) 6735 21139 3767 1780 36.100 8.200 726396 0.003
4(化学) 49454 36241 81557 22504 98.100 25.900 348226 0.985
5(机械) 139190 203505 215898 10609 93.200 12.600 139572 0.628
6(建材) 12215 16219 10351 6382 62.500 8.700 145818 0.066
7(森工) 2372 6572 8103 12329 184.400 22.200 20921 0.152
8(食品) 11062 23078 54935 23804 370.400 41.000 65486 0.263
9(纺织) 17111 23907 52108 21796 221.500 21.500 63806 0.276
10(缝纫) 1206 3930 6126 15586 330.400 29.500 1840 0.437
11(皮革) 2150 5704 6200 10870 184.200 12.000 8913 0.274
12(造纸) 5251 6155 10383 16875 146.400 27.500 78796 0.151
13(文教艺术用品) 14341 13203 19396 14691 94.600 17.800 6354 1.574
;
proc print data=data81;
run;

8—2 上海某县 19 个乡的 7 项经济指标数据(见程序行)

(1) 对指标进行主成份分析并解释主成份
(2) 利用主成份对 19 个乡的经济发展水平进行排序
(3) 对 19 个乡的经济发展水平进行分类
data data82;
input n x1 x2 y1-y7;
cards;
1 843 4000 920 1038 1166 1536 1692 2743 2741
2 942 5215 1216 1280 1549 1924 2717 3743 4160
3 895 6379 1836 2287 2715 3281 3240 4572 5439
4 884 3770 978 1010 1227 1558 1755 2552 2623
5 1002 3329 757 684 718 931 1422 1827 2222
6 792 3039 759 765 1253 1296 1902 1822 2233
7 930 2476 559 616 611 863 891 1539 1768
8 758 2127 633 661 762 769 864 1241 1482
9 886 2721 703 836 813 914 895 1272 1431
10 859 1664 427 451 507 551 581 839 1107
11 808 2435 772 790 839 990 771 1132 1316
12 845 2661 557 599 670 855 1128 1639 1861
13 877 2242 549 471 480 643 664 1173 1530
14 787 3088 1061 1021 978 1102 1301 2373 2452
15 943 3322 567 557 630 836 984 1994 2704
16 866 3507 675 678 847 1187 1476 2107 2415
17 924 3412 545 729 821 1017 1079 1878 2325

212
SAS 操作入门 编者:江南大学 吴有炜 213

18 1806 5869 1268 1227 1607 1765 2318 2959 3157


19 1027 3605 651 835 924 1125 1194 2176 2411
;

proc print data=data82;


run;

8—3 对 16 个地区农民生活水平的调查数据进行成份分析,并用前两个主成份对 16 个地区进行分



x1 食品, x2 衣着, x3 燃料, x4 住房, x5 生活用品及其它, x6 文化生活服务支出
data data83;
input group $ x1-x6;
n=_n_;
cards;
北京 190.33 43.77 9.73 60.54 49.01 9.04
天津 135.20 36.40 10.47 44.16 36.49 3.94
河北 95.21 22.83 9.30 22.44 22.81 2.80
山西 104.78 25.11 6.40 9.89 18.17 3.25
内蒙 128.41 27.63 8.94 12.58 23.99 3.27
辽宁 145.68 32.83 17.79 27.29 39.09 3.47
吉林 159.37 33.38 18.37 11.81 25.29 5.22
黑龙江 116.22 29.57 13.24 13.76 21.75 6.04
上海 221.11 38.64 12.53 115.65 50.82 5.89
江苏 144.98 29.12 11.67 42.60 27.30 5.74
浙江 169.92 32.75 12.72 47.12 34.35 5.00
安徽 153.11 23.09 15.62 23.54 18.18 6.39
福建 144.92 21.26 16.96 19.52 21.75 6.73
江西 140.54 21.50 17.64 19.19 15.97 4.94
山东 115.84 30.26 12.20 33.61 33.77 3.85
河南 101.18 23.26 8.46 20.20 20.50 4.30
;
proc print data=data83;
run;

8—4 化工厂邻近8个大气取样点测6种气体浓度(数据见程序行),用因子分析法分析.
x1氯, x2硫化氢, x3 SO2, x4碳4, x5环氧氯丙烷, x6环已烷
data data84;
input x1-x6;
n=_n_;
cards;
0.056 0.084 0.031 0.038 0.0081 0.0220
0.049 0.055 0.100 0.110 0.0220 0.0073
0.038 0.130 0.079 0.170 0.0580 0.0430
0.034 0.095 0.058 0.160 0.2000 0.0290
0.084 0.066 0.029 0.320 0.0120 0.0410
0.064 0.072 0.100 0.210 0.0280 1.3800

213
SAS 操作入门 编者:江南大学 吴有炜 214

0.048 0.089 0.062 0.260 0.0380 0.0360


0.069 0.087 0.027 0.050 0.0890 0.0210
;
run;

8—5 某年级44名学生的期末考试成绩(数据见程序行),试进行因子分析

data data85;
input x1-x5 @@;
label x1='力学(闭)' x2='物理(闭)'
x3='代数(开)' x4='分析(开)' x5='统计(开)';
n=_n_;
cards;
77 82 67 67 81 63 78 80 70 81
75 73 71 66 81 55 72 63 70 68
63 63 65 70 63 53 61 72 64 73
51 67 65 65 68 59 70 68 62 56
62 60 58 62 70 64 72 60 62 45
52 64 60 63 54 55 67 59 62 44
50 50 64 55 63 65 63 58 56 37
31 55 60 57 73 60 64 56 54 40
44 69 53 53 53 42 69 61 55 45
62 46 61 57 45 31 49 62 63 62
44 61 52 62 46 49 41 61 49 64
12 58 61 63 67 49 53 49 62 47
54 49 56 47 53 54 53 46 59 44
44 56 55 61 36 18 44 50 57 81
46 52 65 50 35 32 45 49 57 64
30 69 50 52 45 46 49 53 59 37
40 27 54 61 61 31 42 48 54 68
36 59 51 45 51 56 40 56 54 35
46 56 57 49 32 45 42 55 56 40
42 60 54 49 33 40 63 53 54 25
23 55 59 53 44 48 48 49 51 37
41 63 49 46 34 46 52 53 41 40
;
proc print data=data85;
run;

8—6 20 个企业的三项经济指标(数据见程序行),试进行因子分析,解释公因子并利用因
子得分对 20 个企业进行分类
data data86;
input x1-x4;
n=_n_;
cards;
1.611 10.59 0.69 1.67

214
SAS 操作入门 编者:江南大学 吴有炜 215

1.429 9.44 0.61 1.50


1.447 5.97 0.24 1.25
1.572 10.72 0.75 1.71
1.483 10.99 0.75 1.44
1.371 6.46 0.41 1.31
1.665 10.51 0.53 1.52
1.403 6.11 0.17 1.32
2.620 21.51 1.40 2.59
2.033 24.15 1.80 1.89
2.015 26.86 1.93 2.02
1.501 9.74 0.87 1.48
1.578 14.52 1.12 1.47
1.735 14.64 1.21 1.91
1.453 12.88 0.87 1.52
1.765 17.94 0.89 1.40
1.532 29.42 2.52 1.80
1.488 9.23 0.81 1.45
2.586 16.07 0.82 1.83
1.992 21.63 1.01 1.89
;
proc print data=data86;
run;

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

215
SAS 操作入门 编者:江南大学 吴有炜 216

第九章 典型相关分析
统计意义: 一个变量和一个变量的相关性可用相关系数度量,一个变量和一组变量的
相关性用复相关系数度量.典型相关分析是研究一组变量(A 组)和一组变量(B 组)的相关联
系.各(有序)典型相关变量对的第一分量是 A 组原始变量组的线性组合,第二分量是 B 组原
始变量组的线性组合,第一分量组内部两两正交, 第二分量组内部也两两正交, 有序典型相
关变量对对应两个分量之间满足 A 组原始变量组的线性组合与 B 组原始变量组的线性组合
间相关系数的最大化,利用少数(有序)典型相关变量对之间的相关性研究可反映 A 组和 B 组
两组变量间的相关联系.

第一节 利用 CANCORR 过程完成典型相关分析

形式:

proc cancorr data=输入数据名 选项串名;


/* 选 项 包 括 :0ut= 输 出 文 件 名 outstat= 输 出 文 件 名 ( 输 出 更 多 信 息 )
Simple---印出均值,标准差 corr---印出相关阵 all---印出所有统计量 short---只印出典
型相关系数与相应 F 检验显著度 VPreFix(或 VP)=第一组典型变量名(默认为 V1,V2,…)
WPreFix(或 WP)=第二组典型变量名(默认为 W1,W2,…) */

var 第一组原始变量名串;
with 第二组原始变量名串;
by 分组变量名串; /*分组后对每组进行主成份分析 须先用 proc sort ; by 分组变量
名串; 对 by 变量的值排序(字母升序),以组为单位求统计量 例 若有分组变量名串 sex(分
男、女) school(分重点、非重点)则按 sex 的二种情况:男、女与 school 的二种情况:重点、非
重点的四种交叉组合进行分组统计*/

例 9.1.1
. 某健身房对 20 个中年人测量三个生理变量:WEIGHT(体重)、WAIST(腰围)、
PULSE(脉膊)和三个训练变量:CHIWS(引体向上)、SITVPS(起坐次数)、JVMPS(跳跃次数).
试分析这两组变量间的相关性.
为此,我们可采用下述 SAS 程序
data fit;
input weight waist pulse chins situps jumps;
cards;
191 36 50 5 162 60
189 37 52 2 110 60
193 38 58 12 101 101
162 35 62 123 105 37
189 35 46 13 155 58
182 36 56 4 101 42
211 38 56 8 101 38

216
SAS 操作入门 编者:江南大学 吴有炜 217

167 34 60 6 125 40
176 31 74 15 200 40
154 33 56 17 251 250
169 34 50 17 120 38
166 33 52 13 210 115
154 34 64 14 215 105
247 46 50 1 50 50
193 36 46 6 70 31
202 37 62 12 210 120
176 37 54 4 60 25
157 32 52 11 230 80
156 33 54 15 225 73
138 33 68 2 110 43
;
proc cancorr data=fit all /*PROC CANCORR 语句指示 SAS 对数据集 FIT 作典型
相关分析,其中 ALL 选项要求输出所有计算结果*/
vprefix=phys /*v 组变量名前缀,缺省时为 v*/
vname=’physiological Measuremets’ /*v 组变量标签,缺省时为’VAR’variables*/
wprefix=exer /*w 组变量名前缀,缺省时为 w*/
wname=’Exercises’; /*w 组变量标签,缺省时为’WITH’variables*/

var weight waist pulse; /*var…with…给出前后两组分析变量*/


with chins situps jumps;
title’Middle-Aged Men in a Health Fithess Club;
run;
运行后部分输出结果如下:

217
SAS 操作入门 编者:江南大学 吴有炜 218

上表说明只有第一对典型相关变量相关是显著的(corr=0.5960)
第一对典型相关变量相关反映两原始变量组相关联系的贡献率已达 91.21%,因此只需取第
一对典型相关变量即可反映两原始变量组相关情况
注意到零假设也只有第一对典型相关变量是显著的 Pr=0.0659

该表给出了典型相关变量
对的组成:
第一典型相关变量对
为(phys1, exer1),其中
phys1=-0.0279weight+0.471
3waist-0.01266pulse

218
SAS 操作入门 编者:江南大学 吴有炜 219

exer1=-0.0026chins-0.021situps+0.0137jumps
第二典型相关变量对为………..

例 9.1.2
. 现有北京地区 1951~1976 年的资料见下表,其中
year:年份
Des:12 月份平均气温.
Jan:次年一月份平均气温.
Feb:次年二月份平均气温.
º º º º
High7:7 月 500hpa 图上 13 ~14 E,40 ~50 N 范围内 6 点高度距平和.
º º º º º º
High4:4 月 500hpa 图上(110 E,45 N)(100 W,40 N)和(100 W,50 N)3 点高度距平和.
º º º º º º
High8:8 月 500hpa 图上 150 E,35 ~45 N;100 E,40 ~50 N 范围内5 点高度距平和.
表 北京地区冬季气温
Year Eec Jan Feb high7 high4 high8
1951 1.0 -2.7 -4.3 4 -7 12
1952 -5.3 -5.9 -3.5 0 21 5
1953 -2.0 -3.4 -0.8 6 -9 5
1954 -5.7 -4.7 -1.1 10 17 6
1955 -0.9 -3.8 -3.1 1 5 11
1956 -5.7 -5.3 -5.9 -3 1 -12
1957 -2.1 -5.0 -1.6 -15 3 13
1958 0.6 -4.3 -0.2 10 -3 0
1959 -1.7 -5.7 2.0 -9 -5 -14
1960 -3.6 -3.6 1.3 11 -3 18
1961 -3.0 -3.1 -0.8 5 -15 4
1962 0.1 -3.9 -1.1 8 12 1
1963 -2.6 -3.0 -5.2 11 3 -3
1964 -1.4 -4.9 -1.7 -11 -8 7
1965 -3.9 -5.7 -2.5 -18 6 -6
1966 -4.7 -4.8 -3.3 -9 -6 15
1967 -6.0 -5.6 -4.9 4 0 -20
1968 -1.7 -6.4 -5.1 -7 -2 -15
1969 -3.4 -5.6 -2.0 4 17 -23
1970 -3.1 -4.2 -2.9 9 -16 23
1971 -3.8 -4.9 -3.9 -13 5 -2
1972 -2.0 -4.1 -2.4 7 0 10
1973 -1.7 -4.2 -2.0 27 -11 4
1974 -3.6 -3.3 -2.0 17 -2 0
1975 -2.7 -3.7 0.1 -1 -13 10
1976 -2.4 -7.6 -2.2 5 9 -30
作典型相关分析:Dec,Jan 和 Feb 作为第一组变量,high7、high4 和 high8 是第二组,
采用以下程序
data temperat;
input year Dec Jan Feb high7 high4 high8;

219
SAS 操作入门 编者:江南大学 吴有炜 220

cards;
1951 1.0 -2.7 -4.3 4 -7 12
1952 -5.3 -5.9 -3.5 0 21 5
1953 -2.0 -3.4 -0.8 6 -9 5
1954 -5.7 -4.7 -1.1 10 17 6
1955 -0.9 -3.8 -3.1 1 5 11
1956 -5.7 -5.3 -5.9 -3 1 -12
1957 -2.1 -5.0 -1.6 -15 3 13
1958 0.6 -4.3 -0.2 10 -3 0
1959 -1.7 -5.7 2.0 -9 -5 -14
1960 -3.6 -3.6 1.3 11 -3 18
1961 -3.0 -3.1 0.8 5 -15 4
1962 0.1 -3.9 -1.1 8 12 1
1963 -2.6 -3.0 -5.2 11 3 -3
1964 -1.4 -4.9 -1.7 -11 -8 7
1965 -3.9 -5.7 -2.5 -18 6 -6
1966 -4.7 -4.8 -3.3 -9 -6 15
1967 -6.0 -5.6 -4.9 4 0 -20
1968 -1.7 -6.4 -5.1 -7 -2 -15
1969 -3.4 -5.6 -2.0 4 17 -23
1970 -3.1 -4.2 -2.9 9 -16 23
1971 -3.8 -4.9 -3.9 -13 5 -2
1972 -2.0 -4.1 -2.4 7 0 10
1973 -1.7 -4.2 -2.0 27 -11 4
1974 -3.6 -3.3 -2.0 17 -2 0
1975 -2.7 -3.7 0.1 -1 -13 10
1976 -2.4 -7.6 -2.2 5 9 -30
;
proc cancorr all; /*PROC CANCORR 语句指示 SAS 对数据集 FIT 作典型相关分析,其中 ALL

选项要求输出所有计算结果*/

var Dec Jan Feb;


with high7 high4 high8; /*var…with…给出前后两组分析变量*/
run;
说明:第一步 DATA 步建立名为 temperat 的数据集,第一列至第七列依次为 year Dec Jan
Feb high7 high4 high8.
第二步调用 proc cancorr 过程对 DATA=temperat 作典型相关分析 var 和 with 语句分
别表示两组变量分别为 Dec Jan Feb 和 high7 high4 high8.

例 9.1.3

用典型相关分析研究矿物 Pt(铂)、Pd(钯)与 Cu(铜)、Ni(镍)的共生规律


data E91;
input Pt Pd Cu Ni;
n=_n_; /*data步中定义的变量n用于记录观测序号*/
cards;
0.14 0.30 0.03 0.14
0.20 0.50 0.14 0.22
0.06 0.11 0.03 0.02
0.07 0.11 0.04 0.13
0.12 0.22 0.06 0.12
0.52 0.87 0.19 0.20

220
SAS 操作入门 编者:江南大学 吴有炜 221

0.23 0.47 0.14 0.10


1.19 0.38 0.09 0.11
0.37 0.66 0.14 0.15
0.36 0.60 0.12 0.14
0.42 0.77 0.17 0.10
0.35 0.85 0.30 0.19
0.50 0.87 0.23 0.22
0.56 1.15 0.29 0.28
0.43 0.90 0.13 0.22
0.47 0.97 0.26 0.22
0.49 0.79 0.21 0.20
0.47 0.77 0.51 0.22
0.40 0.88 0.33 0.19
0.66 1.30 0.21 0.30
0.63 1.30 0.45 0.28
0.52 1.43 0.31 0.23
0.44 0.87 0.17 0.25
0.03 0.07 0.05 0.08
0.20 0.28 0.04 0.08
0.04 0.10 0.11 0.07
0.17 0.28 0.15 0.09
;
proc print ;
run;

proc cancorr data=E91 simple corr vprefix=v /* 选项simple要求输出均值、标准差和


相关系数*/
wprefix=w out=oE91 ;
var Pt Pd;
with Cu Ni;
run;

proc print data=oE91;


var v1 w1 Pt Pd Cu Ni;
run;
proc plot data=oE91;
plot w1*v1 $ n='*' / vref=0 href=0;
run;

第二节 利用分析员应用系统

符号说明: 1) 项 点击该键 2) ⇒ 进入下一步


3) 下拉菜单↓ 点击后出现下拉菜单
4) 对话窗…. 点击后出现对话窗
5) × 项 在对话窗中多选项选中的项前 点击后出现×表示选中

221
SAS 操作入门 编者:江南大学 吴有炜 222

6) 对话窗(键) ⇔ 操作完毕后要(点 OK)返回的对话窗(键)


Solution↓ ⇒ Analysis↓ ⇒ Analyst↓ (出现空白数据表) ⇒ File
⇒ Open By Sas Name… ⇒ (在 Make one selection 窗口中) work 选中数据名 (数
据 data fit 见 V8 文 件 ) ⇒ (OK) Statistics ↓ ⇒ Multivariate ↓

⇒ Canonical Correlation… ⇒
进入典型相关分析主窗口 Canonical Correlation

⇒ 第一组原始变量 weight,vaist,pulse→Set 1

⇒ 第二组原始变量 chine,situps,jumps→Set 2

若 ⇒ Statistics ⇔ ⇒ Canonical Analysis


(可确定典型相关对数目的选取,命名)
若 ⇒ Regression Analysis (可进行回归分析、回归统计、相关分析)
其中:Set 1 predicts set 2---由变量组 1(为自变量)预测变量组 2
(Std.)regression coefficients---(标准化)回归系数
Std. Error of coefficients---回归系数的标准误
T statistic and probability level---t-检验
Squared multiple correlation---复相关系数平方
Correlations of regression coefficients---回归系数间的相关系数
若 ⇒ Plots ⇔ (可画典型变量间的散点图)

若 ⇒ Titles ⇔ (命名) ⇒ OK

222
SAS 操作入门 编者:江南大学 吴有炜 223

⇒ OK 输出部分结果如下:

习题九

9--1 某年级 44 名学生的期末考试成绩(数据见程序行),试对闭卷(x1, x2)和开卷(x3, x4, x5)


进行典型相关分析

data data91;
input x1-x5 @@;
label x1='力学(闭)' x2='物理(闭)'
x3='代数(开)' x4='分析(开)' x5='统计(开)';

223
SAS 操作入门 编者:江南大学 吴有炜 224

n=_n_;
cards;
77 82 67 67 81 63 78 80 70 81 75 73 71 66 81 55 72 63 70 68
63 63 65 70 63 53 61 72 64 73 51 67 65 65 68 59 70 68 62 56
62 60 58 62 70 64 72 60 62 45 52 64 60 63 54 55 67 59 62 44
50 50 64 55 63 65 63 58 56 37 31 55 60 57 73 60 64 56 54 40
44 69 53 53 53 42 69 61 55 45 62 46 61 57 45 31 49 62 63 62
44 61 52 62 46 49 41 61 49 64 12 58 61 63 67 49 53 49 62 47
54 49 56 47 53 54 53 46 59 44 44 56 55 61 36 18 44 50 57 81
46 52 65 50 35 32 45 49 57 64 30 69 50 52 45 46 49 53 59 37
40 27 54 61 61 31 42 48 54 68 36 59 51 45 51 56 40 56 54 35
46 56 57 49 32 45 42 55 56 40 42 60 54 49 33 40 63 53 54 25
23 55 59 53 44 48 48 49 51 37 41 63 49 46 34 46 52 53 41 40
;
proc print data=data91;
run;

9—2 程序行的数据是 25 个家庭的成年长子的头长(x1)和头宽(x2)

对比次子的头长(x3)和头宽(x4),试对长子的指标和次子的指标进行典型相关分析.
data data92;
input x1-x4;
cards;
191 155 179 145
195 149 201 152
181 148 185 149
183 153 188 149
176 144 171 142
208 157 192 152
189 150 190 149
197 159 189 152
188 152 197 159
192 150 187 151
179 158 186 148
183 147 174 147
174 150 185 152
190 159 195 157
188 151 187 158
163 137 161 130
195 155 183 158
186 153 173 148
181 145 182 146
175 140 165 137
192 154 185 152
174 143 178 147
176 139 176 143
197 167 200 158

224
SAS 操作入门 编者:江南大学 吴有炜 225

190 163 187 150


;
proc print data=data92;
run;

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

第十章 聚类分析
统计意义: 对于样本(向量)点集或指标(向量)点集定义两点间的距离及两类的距离,
然后进行分类

225
SAS 操作入门 编者:江南大学 吴有炜 226

第一节 对样本的聚类分析

1.系统聚类(cluster 过程)

proc cluster data= 输 入 数 据 名 选 项 串 ;/* 选 项 包 括 :0utstat= 输 出 文 件 名


outtree= 输 出 文 件 名 ( 供 proc tree 之 用 )
Simple---印出均值,标准差 corr---印出相关阵
等 */

var 待分析变量名串;
by 分组变量名串; /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序(数
值递增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有分组
变量名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female 与
month 的二种情况: feb、jan 的四种交叉组合进行分组统计*/

例 10.1.1
对于北京地区 1951~1961 年 11 年的冬季 12 月、1 月、2 月三个月的气温进
行聚类分析. 共采用五种聚类方法;类平均法、重心法、密度估计法、最小距离法和 Ward
法. 可采用以下 SAS 程序.
data temperat;
input year Dec Jan Feb;
cards;
1951 1.0 -2.7 -4.3
1952 -5.3 -5.9 -3.5
1953 -2.0 -3.4 -0.8
1954 -5.7 -4.7 -1.1
1955 -0.9 -3.8 -3.1
1956 -5.7 -5.3 -5.9
1957 -2.1 -5.0 -1.6
1958 0.6 -4.3 -0.2
1959 -1.7 -5.7 2.0
1960 -3.6 -3.6 1.3
1961 -3.0 -3.1 -0.8
;
proc cluster /*系统聚类*/ data = temperat method=average;/*类平均法*/
var Dec Jan Feb;
id year;
proc tree horizontal /*水平树*/spaces=2/*树上节点间的空隙*/; id year;/*年为样本*/
proc cluster data=temperat method=centroid;/*重心法*/
var Dec Jan Feb;
id year;
proc tree horizontal spaces=2; id year;

proc cluster data=temperat method =density k=3;/*密度估计法*/

226
SAS 操作入门 编者:江南大学 吴有炜 227

var Dec Jan Feb;


id year;
proc tree horizontal spaces=2; id year;

proc cluster data=temperat method=single;/*最小距离法*/


var Dec Jan Feb;
id year;
proc tree horizontal spaces=2; id year;

proc cluster data=temperat method=ward;/*离差平方和法*/


var Dec Jan Feb;
id year;
proc tree horizontal spaces=2; id year;
run;
运行后类平均法的部分结果如下:

227
SAS 操作入门 编者:江南大学 吴有炜 228

由聚类图或聚类历史(Cluster History)可以清楚地看到聚类过程和过程中的最小类距离.
事先可规定类距离阈值来确定分成几类,也可事先确定准备分的类数目.

2. 动态聚类 fastclus 过程

例 10.1.2

根据北京地区 1951~1976 年共 26 个观测的气温资料, 用动态聚类法把它们进行聚类,


可调用 FASTCLUS 过程, 采用如下 SAS 程序分析.

data temperat;
input year Dec Jan Feb;
cards;
1951 1.0 -2.7 -4.3
1952 -5.3 -5.9 -3.5
1953 -2.0 -3.4 -0.8
1954 -5.7 -4.7 -1.1
1955 -0.9 -3.8 -3.1
1956 -5.7 -5.3 -5.9
1957 -2.1 -5.0 -1.6
1958 0.6 -4.3 -0.2
1959 -1.7 -5.7 2.0
1960 -3.6 -3.6 1.3
1961 -3.0 -3.1 -0.8
;

proc fastclus data=temperat maxc=3 list; /*动态聚类,选项 maxc=3 规定最大分类个数为

228
SAS 操作入门 编者:江南大学 吴有炜 229

三类,选项 list 要求列出归类结果*/


var Dec Jan Feb;
id year;
run;
(输出结果略)

第二节 对指标变量聚类分析

1. 分割聚类 varclus 过程

例 10.2.1

现有北京地区 1951~1976 年的气象资料,用重心法

对指标变量 Dec,Jan,Feb,High7,High4,High8 进行分割聚类可采用以下 SAS 程序


data tempandhigh;
input year Dec Jan Feb high7 high4 high8;
cards;
1951 1.0 -2.7 -4.3 4 -7 12
1952 -5.3 -5.9 -3.5 0 21 5
1953 -2.0 -3.4 -0.8 6 -9 5
1954 -5.7 -4.7 -1.1 10 17 6
1955 -0.9 -3.8 -3.1 1 5 11
1956 -5.7 -5.3 -5.9 -3 1 -12
1957 -2.1 -5.0 -1.6 -15 3 13
1958 0.6 -4.3 -0.2 10 -3 0
1959 -1.7 -5.7 2.0 -9 -5 -14
1960 -3.6 -3.6 -1.3 11 -3 18
1961 -3.6 -3.1 -0.8 5 -15 4
1962 -0.1 -3.9 -1.1 8 12 1
1963 -2.6 -3.0 -5.2 11 3 -3
1964 -1.4 -4.9 -1.7 -11 -8 7
1965 -3.9 -5.7 -2.5 -18 6 -6
1966 -4.7 -4.8 -3.3 -9 -6 15
1967 -6.0 -5.6 -4.0 4 0 20
1968 -1.7 -6.4 -5.1 -7 -2 -15
1969 -3.4 -5.6 -2.0 4 17 -23
1970 -3.1 -4.2 -2.9 9 -16 23
1971 -3.8 -4.9 -3.9 -13 5 -2
1972 -2.0 -4.1 -2.4 7 0 10
1973 -1.7 -4.2 -2.0 27 -11 4
1974 -3.6 -3.3 -2.0 17 -2 0
1975 -2.7 -3.7 0.1 -1 -13 10
1976 -2.4 -7.6 -2.2 5 9 -30

proc varclus data=tempandhigh centroid outtree=tree; /*变量分割聚类*/
var Dec Jan Feb high7 high4 high8;
proc tree pages=2;/*树根到树叶的长度为 2 页*/

229
SAS 操作入门 编者:江南大学 吴有炜 230

run;
(输出结果略)

例 10.2.2

中学生 8 个体型指标的聚类分析
data E101(type=corr);
title '在中学生中测量八个体型指标的相关系数';
label x1='身高' x2='手臂长' x3='上肢长'
x4='下腿长' x5='体重' x6='颈围'
x7='胸围' x8='胸宽';
input _name_ $ x1-x8;
_type_='corr';
cards;
x1 1.000 .846 .805 .859 .473 .398 .301 .382
x2 .846 1.000 .881 .826 .376 .326 .277 .415
x3 .805 .881 1.000 .801 .380 .319 .237 .345
x4 .859 .826 .801 1.000 .436 .329 .327 .365
x5 .473 .376 .380 .436 1.000 .762 .730 .629
x6 .398 .326 .319 .329 .762 1.000 .583 .577
x7 .301 .277 .237 .327 .730 .583 1.000 .539
x8 .382 .415 .345 .365 .629 .577 .539 1.000
;

proc varclus data=E101;/*缺省方法用主成分聚类法*/


run;
proc varclus data=E101 centroid;/*选项centroid重心成分法*/
run;
proc varclus data=E101 maxc=8 summary outtree=oE101;/*选项outtree=oE101表示谱系
聚类法*/
run;
proc tree data=oE101 horizontal graphics ;
run;

(输出结果略)

2. 作变换 dij=1-│rij│后采用系统聚类 cluster 过程

例 10.2.3

/* 中学生 8 个体型指标的聚类分析

在中学生中测量八个体型指标的相关系数

230
SAS 操作入门 编者:江南大学 吴有炜 231

x1='身高' x2='手臂长' x3='上肢长'


x4='下腿长' x5='体重' x6='颈围'
x7='胸围' x8='胸宽';*/
options nodate;
data E102 (type=distance);
array x(8) x1-x8;
title '由八个体型指标的相关系数阵转化得到的距离阵';
label x1='身高' x2='手臂长' x3='上肢长'
x4='下腿长' x5='体重' x6='颈围'
x7='胸围' x8='胸宽';
input _name_ $ x1-x8;
do i=1 to 8;
x(i)=1-abs(x(i));
end;
drop i;
cards;
x1 1.000 .846 .805 .859 .473 .398 .301 .382
x2 .846 1.000 .881 .826 .376 .326 .277 .415
x3 .805 .881 1.000 .801 .380 .319 .237 .345
x4 .859 .826 .801 1.000 .436 .329 .327 .365
x5 .473 .376 .380 .436 1.000 .762 .730 .629
x6 .398 .326 .319 .329 .762 1.000 .583 .577
x7 .301 .277 .237 .327 .730 .583 1.000 .539
x8 .382 .415 .345 .365 .629 .577 .539 1.000
;
proc print data=E102;
run;
proc cluster data=E102 method=ave outtree=oE102;
var x1-x8;
id _name_;
proc tree data=oE102 horizontal graphics ;
run;

运行程序后输出了变换后的距离阵,并进行系统聚类,输出结果(部分)如下:

231
SAS 操作入门 编者:江南大学 吴有炜 232

习题十

10—1 6 个铅弹头测得 7 种微量元素指标(数据见程序行)

(1) 用多种系统聚类分析方法分别对样品和指标进行分类

(2) 用 VARCLUS 过程对指标进行分类


data data101;
input x1-x7;
cards;
0.05798 5.5150 347.10 21.910 8586 1742 61.69
0.08441 3.9700 347.20 19.710 7947 2000 2440.00
0.07217 1.1530 54.85 3.052 3860 1445 9497.00
0.15010 1.7020 307.50 15.030 12290 1461 6380.00
5.74400 2.8540 229.60 9.657 8099 1266 12520.0
0.21300 0.7058 240.30 13.910 8980 2820 4135.00
;
proc print;
run;

232
SAS 操作入门 编者:江南大学 吴有炜 233

10--2 对第十一章习题11—1到11—4的数据用多种系统聚类方法进行聚类分析
11--1 14 块岩石矿分成含矿(type=1),不含矿(type=0)测定三种指标(数据见程
序行)
data data111;
input type cu ag bi;
cards;
1 2.58 0.90 0.95
1 2.90 1.23 1.00
1 3.55 1.15 1.00
1 2.35 1.15 0.79
1 3.54 1.85 0.79
1 2.70 2.23 1.30
1 2.70 1.70 0.48
0 2.25 1.98 1.06
0 2.16 1.80 1.06
0 2.33 1.74 1.10
0 1.96 1.48 1.04
0 1.94 1.40 1.00
0 3.00 1.30 1.00
0 2.78 1.70 1.48
. 2.95 2.15 1.54
;
proc print;
run;

11--2 某学院用大学平均学分(GPA)和研究生管理才能测验(GMAT)两项指标录取研究生(数据
见程序行). 85 名考生分成三类(录取,不录取,未定).

data data112;
input obs type gpa gmat @@;
cards;
1 1 2.96 596 32 2 2.54 446 60 3 2.86 494
2 1 3.14 473 33 2 2.43 425 61 3 2.85 496
3 1 3.22 482 34 2 2.20 474 62 3 3.14 419
4 1 3.29 527 35 2 2.36 531 63 3 3.28 371
5 1 3.69 595 36 2 2.57 542 64 3 2.89 447
6 1 3.46 693 37 2 2.35 496 65 3 3.15 343
7 1 3.03 626 38 2 2.51 412 66 3 3.50 402
8 1 3.19 663 39 2 2.51 458 67 3 2.89 485
9 1 3.63 447 40 2 2.36 399 68 3 2.80 444
10 1 3.59 588 41 2 2.36 482 69 3 3.13 416
11 1 3.30 563 42 2 2.66 420 70 3 3.01 471
12 1 3.40 553 43 2 2.68 474 71 3 2.79 490
13 1 3.50 572 44 2 2.48 533 72 3 2.89 481
14 1 3.78 591 45 2 2.46 509 73 3 2.91 446
15 1 3.44 692 46 2 2.63 504 74 3 2.75 546

233
SAS 操作入门 编者:江南大学 吴有炜 234

16 1 3.48 528 47 2 2.44 336 75 3 2.78 467


17 1 3.47 552 48 2 2.13 408 76 3 3.12 462
18 1 3.35 520 49 2 2.41 469 77 3 3.08 440
19 1 3.39 543 50 2 2.55 538 78 3 3.03 419
20 1 3.28 523 51 2 2.31 505 79 3 3.00 509
21 1 3.21 530 52 2 2.41 489 80 3 3.03 438
22 1 3.58 564 53 2 2.09 441 81 3 3.05 399
23 1 3.33 565 54 2 2.35 321 82 3 2.85 483
24 1 3.40 431 55 2 2.60 394 83 3 3.01 453
25 1 3.38 605 56 2 2.55 528 84 3 3.03 414
26 1 3.26 664 57 2 2.70 399 85 3 3.04 446
27 1 3.60 609 58 2 2.85 381 86 . 3.21 497
28 1 3.37 559 59 2 2.90 364
29 1 3.80 521
30 1 3.76 646
31 1 3.24 467
;
proc print;
run;

11--3 四指标的三类样本,样本容量分别为 7,4,6. 另有 4 个待判样品(数据见程序行).

data data113;
input x1-x4 type;
cards;
6.0 -11.5 19 90 1
-11.0 -18.5 25 -36 3
90.2 -17.0 17 3 2
-4.0 -15.0 13 54 1
0.0 -14.0 20 35 2
0.5 -11.5 19 37 3
-10.0 -19.0 21 -42 3
0.0 -23.0 5 -35 1
20.0 -22.0 8 -20 3
-100.0 -21.4 7 -15 1
-100.0 -21.5 15 -40 2
13.0 -17.2 18 2 2
-5.0 -18.5 15 18 1
10.0 -18.0 14 50 1
-8.0 -14.0 16 56 1
0.6 -13.0 26 21 3
-40.0 -20.0 22 -50 3
-8.0 -14.0 16 56 .
92.2 -17.0 18 3 .
-14.0 -18.5 25 -36 .
-36.0 -20.0 22 -50 .
;
proc print;

234
SAS 操作入门 编者:江南大学 吴有炜 235

run;

11--4 环境监测大气中二氧化硫,氮氧化物和可吸入物含量. 15 个观测点已经经过聚类分析分


成三类:严重污染地区(类别号 1),一般污染区(类别号 2),基本无污染区(类别号 3).(数据见
程序行)

data data114;
input x1-x3 type ;
cards;
0.045 0.043 0.265 2
0.066 0.039 0.264 2
0.094 0.061 0.194 2
0.003 0.003 0.102 3
0.048 0.015 0.106 3
0.210 0.066 0.263 1
0.086 0.072 0.274 2
0.196 0.072 0.211 1
0.187 0.082 0.301 1
0.053 0.060 0.209 2
0.020 0.008 0.112 3
0.035 0.015 0.170 3
0.205 0.068 0.284 1
0.088 0.058 0.215 2
0.101 0.052 0.181 .
0.045 0.005 0.122 .
;

proc print data=data114;


run;

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

235
SAS 操作入门 编者:江南大学 吴有炜 236

第十一章 Discrim 判别分析


统计意义: 设有 k 个总体对应的数据阵为 X(1)、X 2 、…、X k ,这些总体称为有训
( ) ( )

练的样本集,现若另有一个样本,要判断是否可以认为它来自以上某个总体

Proc Discrim 语句形式:

PROC DISCRIM <opinion>选项串 ;


/*常用输入选项:data=待分析数据集名 Testdata=待检验归类数据集名
常用输出选项:outstat=输出数据集名(包含各种统计量:均值,标准误,相关及判别统计量)
选择方法选项:method=normal(注:假定数据服从正态)或 npar(注:采用非参数方法,此时须
进一步选择 K= 或 R= 中一步个)
典型判别选项:can 进行典型判别 ncan=数目(将被计算的典型变量的数目)
检验数据分类选项:testlist(列出 Testdata=待检验归类数据集名中全部观测的归类结果)
CLASS variable(类别变量名);
BY variables(变量名串); /*须先用 proc sort ; by 分组变量名串;通过 by 对变量的值排序
(数值递增字母升序)按序分组,以组为单位求统计量,因而不适用取值中文的变量 例 若有
分组变量名串 sex(分 male、female) month(分 feb、jan)则按 sex 的二种情况: male、female
与 month 的二种情况: feb、jan 的四种交叉组合进行分组统计*/
FREQ variable(变量名);
ID variable(变量名);
PRIORS probabities(概率串);
TESTFREQ variable(变量名);
TESTID variable(变量名);
VAR variables(变量名串);
WEIGHT variable(变量名);

第一节 距离判别法

方法特点: 简单,不涉及分布类型,认为各总体协差阵相等; 缺点:未考虑各总体出现


机会小(先验概率)及错判损失

例 11.1.1

A 盆地属钾盐矿床, B 盆地属钠盐矿床,各抽取 5 个三指标样品,另有其它盆地的 8 个


样品试进行含钾性判别

解法一:
data E111;

236
SAS 操作入门 编者:江南大学 吴有炜 237

input x1-x4 group $;


cards;
13.85 2.79 7.80 49.60 A
22.31 4.67 12.31 47.80 A
28.82 4.63 16.18 62.15 A
15.29 3.54 7.50 43.20 A
28.79 4.90 16.12 58.10 A
2.18 1.06 1.22 20.60 B
3.85 0.80 4.06 47.10 B
11.40 0.00 3.50 0.00 B
3.66 2.42 2.14 15.10 B
12.10 0.00 5.68 0.00 B
8.85 3.38 5.17 26.10 . /* . 说明该样品属类缺省*/
28.60 2.40 1.20 127.0 .
20.70 6.70 7.60 30.20 .
7.90 2.40 4.30 33.20 .
3.19 3.20 1.43 9.90 .
12.40 5.10 4.43 24.60 .
16.80 3.40 2.31 31.30 .
15.00 2.70 5.02 64.00 .
;
proc print data=E111;
run;
proc discrim data=E111 simple wcov distance list; /*选项simple要求输出各类的简单
描述性统计量 wcov要求输出各类的组内协方差阵
distance要求输出各组间的距离 list要求输出按距
离准则的判别结果*/
class group;
var x1-x4;
run;
输出部分结果如下:

237
SAS 操作入门 编者:江南大学 吴有炜 238

马氏距离平方公式给出了A与B两类之间的距离平方为37.0286
检验H0:μ1=μ2的F统计量为14.46436,相应的P值为0.0059说明
零假设H0:μ1=μ2不成立即A类与B类的特征有显著差异

由选项list要求而列出的回判结果如下(由于待判样本开始时也被认为是一类称为’空类’,
故判别后形式上标明’Missclassified ’):

238
SAS 操作入门 编者:江南大学 吴有炜 239

下表对上表进行了总结(先验概率取为等概率),指出了没有发生误判(注意待判样本最初归
为一’空’类)

解法二:
data E112;
input x1-x4 group $;
cards;
13.85 2.79 7.80 49.60 A
22.31 4.67 12.31 47.80 A
28.82 4.63 16.18 62.15 A
15.29 3.54 7.50 43.20 A
28.79 4.90 16.12 58.10 A
2.18 1.06 1.22 20.60 B
3.85 0.80 4.06 47.10 B
11.40 0.00 3.50 0.00 B
3.66 2.42 2.14 15.10 B
12.10 0.00 5.68 0.00 B
; /*这儿先建立有训练的样本数据集*/
data E113;
input x1-x4 group $;
cards;

8.85 3.38 5.17 26.10 .


28.60 2.40 1.20 127.0 .
20.70 6.70 7.60 30.20 .
7.90 2.40 4.30 33.20 .

239
SAS 操作入门 编者:江南大学 吴有炜 240

3.19 3.20 1.43 9.90 .


12.40 5.10 4.43 24.60 .
16.80 3.40 2.31 31.30 .
15.00 2.70 5.02 64.00 .
; /*再建立待判数据集*/
proc discrim data=E112 testdata=E113 list testlist; /*选项data=E112
testdata=E113分别说明了有训练的和待判数据集
list要求输出回代的判别结果*/
class group;
var x1-x4;
run;
判别结果如下(由于待判样本开始时也被认为是一类称为’空类’,
故判别后形式上标明’Missclassified ’)
:

第二节 Bayes 判别和广义平方距离判别

考虑先验概率-----k 个总体出现的概率 p1、p2、,,,、pk(可由历史资料或各总体样本量大


小比例或取成等概率)的前提下平均错判损失最小的 Beyes 判别法

例 11.2.1

胃癌的鉴别

三个总体:胃癌患者(group1),萎缩性胃炎患者(group2),非胃炎患者(group3)

各抽样 5 例化验 4 项指标,用广义平方距离法对 15 个样品进行判别归类

data E114;
input group x1-x4 @@;

240
SAS 操作入门 编者:江南大学 吴有炜 241

cards;
1 228 134 20 11 1 245 134 10 40
1 200 167 12 27 1 170 150 7 8
1 100 167 20 14 2 225 125 7 14
2 130 100 6 12 2 150 117 7 6
2 120 133 10 26 2 160 100 5 10
3 185 115 5 19 3 170 125 6 4
3 165 142 5 3 3 135 108 2 12
3 100 117 7 2
;
proc print data=E114;
run;

proc discrim data=E114 pool=no distance list;/*选项pool=no表示三个总体的协方差阵不


认为相等而不使用合并协方差阵此时采用广义平方距离法*/
class group;
priors '1'=0.33333 '2'=0.33333 '3'=0.33333; /*设定先验概率priors相等(若取为等概
率可缺省;实际应用常取为等概率)*/
var x1-x4;
run;
运行部分输出结果如下:
两两配对的组间马氏距离和广义平方距离 由选项list要求列出的
回代结果

下表为判别矩阵和错判信息

241
SAS 操作入门 编者:江南大学 吴有炜 242

例 11.2.2

已知长江中游 6 月份降水分三级:偏少、偏多、正常,分别用 1,2,3 来表示这三个


母体. 现利用 1951~1975 年共 25 年的观测资料(表 15.6.1)建立四因子(指标)的三类判别函
数.并将 1976~1979 年的观测资料(表 15.6.2)作为检验资料(主要是为了示范这类问题的
SAS 程序).

表 15.6.1 历年观测资料
年份 X1 X2 X3 X4 原分类
1951 0.58 82.0 44.0 40.6 1
1952 0.40 83.0 18.0 43.0 2
1953 0.55 85.0 36.0 30.7 2
1954 0.40 85.0 36.0 40.7 2
年份 X1 X2 X3 X4 原分类
1955 0.48 88.0 49.0 43.0 2
1956 0.41 82.0 35.0 78.6 3
1957 0.65 80.0 29.0 33.2 1
1958 0.45 82.0 32.0 33.1 3
1959 0.39 81.0 27.0 46.5 3
1960 0.34 85.0 28.0 41.7 3
1961 0.42 84.0 38.0 20.4 3
1962 0.52 86.0 38.0 0.2 1
1963 0.46 88.0 25.0 56.7 2
1964 0.48 83.0 46.0 13.6 1
1965 0.53 84.0 41.0 32.3 1
1966 0.65 81.0 31.0 28.9 1
1967 0.66 83.0 38.0 46.6 1
1968 0.53 80.0 42.0 93.1 3
1969 0.56 85.0 18.0 16.3 3
1970 0.45 83.0 27.0 23.9 3
1971 0.34 80.0 42.0 26.3 3
1972 0.41 79.0 38.0 40.8 3
1973 0.53 83.0 23.0 61.3 3
1974 0.48 84.0 19.0 23.2 2
1975 0.30 85.0 27.0 17.5 2

242
SAS 操作入门 编者:江南大学 吴有炜 243

表 15.6.2 检验数据(即作为待判样品)
年份 X1 X2 X3 X4 原分类
1976 0.42 81.0 21.0 52.2 3
1977 0.52 81.0 38.0 45.8 1
1978 0.36 82.0 34.0 34.9 2
1979 0.43 84.0 34.0 60.5 3

data rainfall;
title’ Discriminant Analisis of Rainfall data 雨量数据进行判别分析’;
input year x1-x4 species;
cards;
1951 0.58 82.0 44.0 40.6 1
1952 0.40 83.0 18.0 43.0 2
1953 0.55 85.0 36.0 30.7 2
1954 0.40 85.0 36.0 40.7 2
1955 0.48 88.0 49.0 43.0 2
1956 0.41 82.0 35.0 78.6 3
1957 0.65 80.0 29.0 33.2 1
1958 0.45 82.0 32.0 33.1 3
1959 0.39 81.0 27.0 46.5 3
1960 0.34 85.0 28.0 41.7 3
1961 0.42 84.0 38.0 20.4 3
1962 0.52 86.0 38.0 0.2 1
1963 0.46 88.0 25.0 56.7 2
1964 0.48 83.0 46.0 13.6 1
1965 0.53 84.0 41.0 32.3 1
1966 0.65 81.0 31.0 28.9 1
1967 0.66 83.0 38.0 46.6 1
1968 0.53 80.0 42.0 93.1 3
1969 0.56 85.0 18.0 16.3 3
1970 0.45 83.0 27.0 23.9 3
1971 0.34 80.0 42.0 26.3 3
1972 0.41 79.0 38.0 40.8 3
1973 0.53 83.0 23.0 61.3 3
1974 0.48 84.0 19.0 23.2 2
1975 0.30 85.0 27.0 17.5 2
1976 0.42 81.0 21.0 52.2 3
1977 0.52 81.0 38.0 45.8 1
1978 0.36 82.0 34.0 34.9 2
1979 0.34 84.0 34.0 60.5 3

proc discrim /*最大概率判别*/ data=rainfall outstat=info method=normal list;
/*选项 list 要求输出回代的判别结果*/
class species;
var x1-x4;
id year;
title2 ‘Using normal estmates with using covarince matrix 用协方差阵进行标
准估计’;

243
SAS 操作入门 编者:江南大学 吴有炜 244

(输出结果略)

第三节 非参数法

例 11.3.1

胃癌的鉴别

三个总体:胃癌患者(group1),萎缩性胃炎患者(group2),非胃炎患者(group3)

各抽样 5 例化验 4 项指标, 用非参数法对 15 个样品进行判别归类


data E115;
input group x1-x4 @@;
cards;
1 228 134 20 11 1 245 134 10 40
1 200 167 12 27 1 170 150 7 8
1 100 167 20 14 2 225 125 7 14
2 130 100 6 12 2 150 117 7 6
2 120 133 10 26 2 160 100 5 10
3 185 115 5 19 3 170 125 6 4
3 165 142 5 3 3 135 108 2 12
3 100 117 7 2
;

proc discrim data=E115 method=npar r=0.2 distance list;/*选项method=npar表示用


非参数法,r=0.2使用半径为0.2的核估计法
distance要求输出各组间的距离 list要求输出
按距离准则的判别结果*/
class group;
var x1-x4;
run;

运行部分结果如下:
两两配对的组间距离及均值差异的显著性检验 若采用选项k=数目即用样本点
邻近的k个观测点来估计密度
(本例r= 取成0.01----0.9输出结果都一样) 函数(最近邻法)本例
k=1时回代结果全对,但k≥2回代则出
误判,下表为k=3的判别结果

244
SAS 操作入门 编者:江南大学 吴有炜 245

第四节 Candisc(典型判别)过程

例 11.4.1

胃癌的鉴别

三个总体:胃癌患者(group1),萎缩性胃炎患者(group2),非胃炎患者(group3)

各抽样 5 例化验 4 项指标, 用典型判别法对 15 个样品进行判别归类

统计意义:各有序典型变量(内部两两正交)是原指标变量集的线性组合且依次与分类变
量在样本的归类上有着最大相关,先用 Candisc 过程求得顺序典型变量,然后分类变量根据新
指标集(降维的典型变量)用 discrim 过程进行归类判别
data E116;
input group x1-x4 @@;
cards;
1 228 134 20 11 1 245 134 10 40
1 200 167 12 27 1 170 150 7 8
1 100 167 20 14 2 225 125 7 14
2 130 100 6 12 2 150 117 7 6
2 120 133 10 26 2 160 100 5 10
3 185 115 5 19 3 170 125 6 4
3 165 142 5 3 3 135 108 2 12
3 100 117 7 2
;
proc candisc data=E116 out=can116 ncan=2 distance simple;/*选项ncan=2要求调用2
个典型变量*/
class group;
var x1-x4;

245
SAS 操作入门 编者:江南大学 吴有炜 246

run;

proc plot data=can116;


plot can2*can1 = group; /*给出两个典型变量的散布图*/
run;
proc print data=can116;
run;

proc discrim data=can116 distance list; /*再用discrim过程依据两个典型变量对样本进


行归类判别*/
class group;
var can1 can2;
run;
运行后部分输出结果:
下表为两个典型变量(和原变量关系见另表):

下表为用两个典型变量为判别指标对样本的判别结果(并标明了误判情况用*标记):

246
SAS 操作入门 编者:江南大学 吴有炜 247

第五节 Stepdisc(逐步判别)过程

统计意义:先用 discrim 过程对原指标变量集根据各指标判别能力的大小进行删选再根据保留指


标集对样本用 discrim 过程进行归类判别

例 11.5.1

胃癌的鉴别

三个总体:胃癌患者(group1),萎缩性胃炎患者(group2),非胃炎患者(group3)

各抽样 5 例化验 4 项指标, 用逐步判别法对 15 个样品进行判别归类

data E117;
input group x1-x4 @@;
cards;
1 228 134 20 11 1 245 134 10 40
1 200 167 12 27 1 170 150 7 8
1 100 167 20 14 2 225 125 7 14
2 130 100 6 12 2 150 117 7 6
2 120 133 10 26 2 160 100 5 10
3 185 115 5 19 3 170 125 6 4
3 165 142 5 3 3 135 108 2 12
3 100 117 7 2
;
proc stepdisc data=E117; /* proc stepdisc逐步判别进行变量删选*/
class group;
var x1-x4;
run;
/*(输出结果保留变量集为{x2,x3})*/
proc discrim data=E117 list;
class group;
var x2 x3;
run;

程序第一步先进行了判别指标的删选,输出的下表表明x2、x3被保留了而x1、x4被删除了:

247
SAS 操作入门 编者:江南大学 吴有炜 248

以下为用保留指标集{x2,x3}对样本的判别结果:

习题十一

11-1 14 块岩石矿分成含矿(type=1),不含矿(type=0)测定三种指标(数据见程序行)
data data111;
input type cu ag bi;
cards;
1 2.58 0.90 0.95
1 2.90 1.23 1.00

248
SAS 操作入门 编者:江南大学 吴有炜 249

1 3.55 1.15 1.00


1 2.35 1.15 0.79
1 3.54 1.85 0.79
1 2.70 2.23 1.30
1 2.70 1.70 0.48
0 2.25 1.98 1.06
0 2.16 1.80 1.06
0 2.33 1.74 1.10
0 1.96 1.48 1.04
0 1.94 1.40 1.00
0 3.00 1.30 1.00
0 2.78 1.70 1.48
. 2.95 2.15 1.54
;
proc print;
run;

(1) 设两类样本服从正态分布,用 discrim 过程进行判别计算(先验概率设为相等,并假定协方差


阵相等)

(2) 今有一样品指标为(2.95,2.15,1.54)判别有无含矿

11-2 某学院用大学平均学分(GPA)和研究生管理才能测验(GMAT)两项指标录取研究生(数据见
程序行). 85 名考生分成三类(录取,不录取,未定). 用判别分析方法导出判别函数对 85
名报考者进行判别归类;若另有一名指标为(3.21,497)是否录取?

data data112;
input obs type gpa gmat @@;
cards;
1 1 2.96 596 32 2 2.54 446 60 3 2.86 494
2 1 3.14 473 33 2 2.43 425 61 3 2.85 496
3 1 3.22 482 34 2 2.20 474 62 3 3.14 419
4 1 3.29 527 35 2 2.36 531 63 3 3.28 371
5 1 3.69 595 36 2 2.57 542 64 3 2.89 447
6 1 3.46 693 37 2 2.35 496 65 3 3.15 343
7 1 3.03 626 38 2 2.51 412 66 3 3.50 402
8 1 3.19 663 39 2 2.51 458 67 3 2.89 485
9 1 3.63 447 40 2 2.36 399 68 3 2.80 444
10 1 3.59 588 41 2 2.36 482 69 3 3.13 416
11 1 3.30 563 42 2 2.66 420 70 3 3.01 471
12 1 3.40 553 43 2 2.68 474 71 3 2.79 490
13 1 3.50 572 44 2 2.48 533 72 3 2.89 481
14 1 3.78 591 45 2 2.46 509 73 3 2.91 446
15 1 3.44 692 46 2 2.63 504 74 3 2.75 546
16 1 3.48 528 47 2 2.44 336 75 3 2.78 467
17 1 3.47 552 48 2 2.13 408 76 3 3.12 462
18 1 3.35 520 49 2 2.41 469 77 3 3.08 440
19 1 3.39 543 50 2 2.55 538 78 3 3.03 419
20 1 3.28 523 51 2 2.31 505 79 3 3.00 509

249
SAS 操作入门 编者:江南大学 吴有炜 250

21 1 3.21 530 52 2 2.41 489 80 3 3.03 438


22 1 3.58 564 53 2 2.09 441 81 3 3.05 399
23 1 3.33 565 54 2 2.35 321 82 3 2.85 483
24 1 3.40 431 55 2 2.60 394 83 3 3.01 453
25 1 3.38 605 56 2 2.55 528 84 3 3.03 414
26 1 3.26 664 57 2 2.70 399 85 3 3.04 446
27 1 3.60 609 58 2 2.85 381 86 . 3.21 497
28 1 3.37 559 59 2 2.90 364
29 1 3.80 521
30 1 3.76 646
31 1 3.24 467
;
proc print;
run;

11-3 四指标的三类样本,样本容量分别为 7,4,6. 另有 4 个待判样品(数据见程序行).假定样本


来自正态总体.

(1) 假设三总体为多元正态总体,试么马氏距离判别法进行判别分析,且对 4 个待判样品进行


判归类

(2) 用其它方法进行判别分析,且对 4 个待判样品进行判归类,并比较

data data113;
input x1-x4 type;
cards;
6.0 -11.5 19 90 1
-11.0 -18.5 25 -36 3
90.2 -17.0 17 3 2
-4.0 -15.0 13 54 1
0.0 -14.0 20 35 2
0.5 -11.5 19 37 3
-10.0 -19.0 21 -42 3
0.0 -23.0 5 -35 1
20.0 -22.0 8 -20 3
-100.0 -21.4 7 -15 1
-100.0 -21.5 15 -40 2
13.0 -17.2 18 2 2
-5.0 -18.5 15 18 1
10.0 -18.0 14 50 1
-8.0 -14.0 16 56 1
0.6 -13.0 26 21 3
-40.0 -20.0 22 -50 3
-8.0 -14.0 16 56 .
92.2 -17.0 18 3 .
-14.0 -18.5 25 -36 .
-36.0 -20.0 22 -50 .
;
proc print;

250
SAS 操作入门 编者:江南大学 吴有炜 251

run;

11-4 环境监测大气中二氧化硫,氮氧化物和可吸入物含量. 15 个观测点已经经过聚类分析分成三


类:严重污染地区(类别号 1),一般污染区(类别号 2),基本无污染区(类别号 3).(数据见程
序行)

(1) 设三类总体服从多元正态分布,用 discrim 过程进行判别计算(先验概率设为相等,并


假定协方差阵相等),给出回代结果

(2) 对另外二个观测点用马氏距离法进行判别归类

data data114;
input x1-x3 type ;
cards;
0.045 0.043 0.265 2
0.066 0.039 0.264 2
0.094 0.061 0.194 2
0.003 0.003 0.102 3
0.048 0.015 0.106 3
0.210 0.066 0.263 1
0.086 0.072 0.274 2
0.196 0.072 0.211 1
0.187 0.082 0.301 1
0.053 0.060 0.209 2
0.020 0.008 0.112 3
0.035 0.015 0.170 3
0.205 0.068 0.284 1
0.088 0.058 0.215 2
0.101 0.052 0.181 .
0.045 0.005 0.122 .
;

proc print data=data114;


run;

251
SAS 操作入门 编者:江南大学 吴有炜 252

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

附录一:教材<<试验设计与数据处理>>中
SAS 的例

第四章方差分析与协方差分析

1. 例.4.1.3

(两因素考虑交互作用的方差分析的例)

表 4.1.3 火箭的射程
推进器(M) M1 M2 M3
58. 2 56. 2 65. 3
燃料(F) F1
52. 6 41. 2 60. 8

252
SAS 操作入门 编者:江南大学 吴有炜 253

49. 1 54. 1 51. 6


F2
42. 8 50. 5 48. 4
60. 1 70. 9 39. 2
F3
58. 3 73. 2 40. 7
75. 8 58. 2 48. 7
F4
71. 5 51. 0 41. 4

data rockey; /* 注:输入 Rfmr(f=1-4;m=1-3;r=1,2)(两因素+重复)*/

do f=1 to 4; /*顺序行标 f→列标 m→重复 r */


do m=0 to 12 by 6; /* 注: m 分别取值 0,6,12; 步长为 1 时 by 语句可省略*/

do rep=1 to 2;
input R @@; /*注: @@可以使数据连续输入*/
output;
end;
end;
end; /* 用三个 do---end 语句输入带三个下标的一维变量 Rfmr(f=1-4;m=1-3;r=1,2)(两因素+重

复)*/

cards;
58.2 52.6 56.2 41.2 65.3 60.8
49.1 42.8 54.1 50.5 51.6 48.4
60.1 58.3 70.9 73.2 39.2 40.7
75.8 71.5 58.2 51.0 48.7 41.4
;
proc glm data=rockey;
class f m; /* class 语句说明对分类变量 f,m 分析*/
model r=f m f * m; /*模型: 连续变量 r;考虑因素 f,m 及交互 f*m*/

lsmeans f m f * m;
run;

2. 例.4.3.1

(单因素有一个协变量的协方差分析的例)
表 4.3.1 猪体重增长数据
x 15 13 11 12 12 16 14 17
A1
y 85 83 65 76 80 91 84 90
x 17 16 18 18 21 22 19 18
A2
y 97 90 100 95 103 106 99 94
x 22 24 20 23 25 27 30 32
A3
y 89 91 83 95 100 102 105 110

data pig;
input a $ @; /* 输入字符变量 A+数组@(do---end 语句实际给出@相当于 x1y1x2y2…x8y8)*/

do i=1 to 8;
input x @; /* 用 input x @; input y @;输入向量(x,y) */
input y @;
output;

253
SAS 操作入门 编者:江南大学 吴有炜 254

end;
cards;
A1 15 85 13 83 11 65 12 76 12 80 16 91 14 84 17 90
A2 17 97 16 90 18 100 18 95 21 103 22 106 19 99 18 94
A3 22 89 24 91 20 83 23 95 25 100 27 102 30 105 32 110

proc glm data=pig;
class a ;
model y=a x/solution; /*模型: 连续(响应)变量 y=分类变量 a ,协变量 x(用/solution 表示) */
lsmeans a; /*用最小误差平方和法估计的均值估计 a*/
means a; /*求出 a 中各组的均值*/
run;

/*注:以上数据输入还可用以下方法:
方法二:用二个 do---end 语句输入二个下标的二维向量(x,y)ai
(a=1,2,3;i=1-8) (下标: 单因素+重复)*/
data pig1;
do A=1 to 3; /* 注:1)顺序(外层 ⇒ 内层): 行 ⇒ 重复 ⇒ 向量*/
do rep=1 to 8; /* 2)向量(x,y)的输入: input x @; input y @;*/
input y @;
input x @;
output;
end;
end;
cards;
15 85 13 83 11 65 12 76 12 80 16 91 14 84 17 90
17 97 16 90 18 100 18 95 21 103 22 106 19 99 18 94
22 89 24 91 20 83 23 95 25 100 27 102 30 105 32 110
;
run;

254
SAS 操作入门 编者:江南大学 吴有炜 255

3. 例 4.3.2

(两因素考虑交互且有一个协变量的协方差分析的例)
表 4.3.3 合成纤维弹性
A1 A2 A3 A4
x 49. 0 49. 2 49. 8 49. 8 49. 9 49. 8 49. 7 49. 8
B1
y 71 73 73 75 76 73 75 73
x 49. 5 49. 3 49. 9 49. 8 50. 2 50. 1 49. 4 49. 4
B2
y 72 73 76 74 79 77 73 72
x 49. 7 19. 5 50. 1 50. 0 49. 7 50. 0 49. 5 49. 6
B3
y 75 73 78 77 74 75 70 71
x 49. 7 49. 7 49. 6 49. 3 49. 5 49. 2 49. 0 48. 9
B4
y 77 75 74 74 74 73 69 69
程序
data fab;
do b = 1 to 4;
do a = 1to 4;

do rep = 1 to 2 ; /*注: 用三个 do---end 语句输入三个下标的二维向量(x,y)bar*/

input x @ ; /*(b=1-4;a=1-3;r=1,2)(下标: 两因素+重复)顺序(外层 ⇒ 内层):*/


input y @; /*行(b=1-4) ⇒ 列(a=1-4) ⇒ 重复(r=1-2) ⇒ 向量(x,y)*/
output;
end;
end;
end;
cards;
49.0 71 49.2 73 49.8 73 49.8 75 49.9 76 49.8 73 49.7 75 49.8 73
49.5 72 49.3 73 49.9 76 49.8 74 50.2 79 50.1 77 49.4 73 49.4 72
49.7 75 49.5 73 50.1 78 50.0 77 49.7 74 50.0 75 49.5 70 49.6 71
49.9 77 49.7 75 49.6 74 49.3 74 49.5 74 49.2 73 49.0 69 48.9 69
;
proc glm;
class a b ;
model y= a b a * b x /solution;
lsmeans a b a * b;
means a b a * b ;
run;

4. 习题 4.3

为了检验雌激素及施用时间对动物血浆(plasma)的影响,采用两个因子,服从时间(time)
和剂量(dose). time 有两个水平:am 和 pm; dose 有两个水平:施用(t)与不施(c),做 5 次重

255
SAS 操作入门 编者:江南大学 吴有炜 256

复试验,得数据如下表.

剂量
时间
c t
am 8. 13 20. 53 12. 53 14. 00 10. 80 17. 53 21. 07 20. 80 17. 33 20. 07
pm 39. 14 26. 20 31. 33 45. 80 40. 20 32. 00 23. 80 28. 87 25. 06 29. 23
为了分析因子的作用,执行下列 SAS 程序
data lambs;
input time $ dose $ plasma;
cards;
am c 8.13
am c 20.53
am c 12.53
am c 14.00
am c 10.80
am t 17.53
am t 21.07
am t 20.80
am t 17.33
am t 20. 07
pm c 39. 14
pm c 26.24
pm c 31.33
pm c 45.80
pm c 40.20
pm c 32.00
pm c 23.00
pm c 28.87
pm c 25.06
pm c 29.23
;
proc means data=lambs;
by time dose;
output out = lambmean mean = plasmean;
proc plot data = lambmean;
plot plasmean * time = dose;
proc glm data = lambs;
class time dose;
model plasma = time dose time * dose;
proc glm data = lambs;
class dose;
model plasma = dose;
run;

256
SAS 操作入门 编者:江南大学 吴有炜 257

5. 习题 4.4

某园艺家研究花的品种(V)和温度(m)对鲜花产量(y)的影响,由于试验的地块不一样大,
她决定引用面积 x 为协变量,m 与 V 各取两个水平 1 和 2,对其 4 种组合各试验 6 次,得
下表.
V m X Y
1 1 15 98
1 1 4 60
1 1 7 77
1 1 9 80
1 1 14 95
1 1 5 65
1 2 10 71
1 2 12 80
1 2 14 86
1 2 13 82
1 2 2 46
1 2 3 35
2 1 4 55
2 1 5 60
2 1 8 75
2 1 7 65
2 1 13 87
2 1 11 78
2 2 11 76
2 2 10 68
2 2 2 43
2 2 3 47
2 2 7 62
2 2 9 70
为作协方差分析,执行程序 SAS

data flowers;
do v=1 to 2;
do m= 1 to 2;
do block=1 to 6;
input X Y @ @;
output;
end;
end;
end;
cards;
15 98 4 60 7 77 9 80 14 95
5 65 10 71 12 80 14 86 13 82
2 46 3 35 4 55 5 60 8 75
7 65 13 87 11 78 11 76 10 68
2 43 3 47 7 62 9 70
;
Run;
proc glm;
class v m;
model y= v m v * m x/solution;

257
SAS 操作入门 编者:江南大学 吴有炜 258

proc glm data=flowers;


class v m;
model y= v m x/solution;
proc glm data=flowers;
class v m;
model y =v m v * m x/solution;
means v*m; lsmeans v*m/pdiff out=outl;
proc plot data=outl;plot lsmean * v=m;
proc glm data=flowers;
class v m;
model y= v m v * m x v * x m * x;
run;

第六章回归分析

多元线性回归

1. 例 6.4.1

研究某一地区土壤中含植物可给态磷的情况. 设 y 是 35℃时土壤中可给态磷含量;x1
是土壤中所含无机盐浓度;x2 是土壤中溶于 K2CO3 溶液并受溴化物水解的有机磷;x3 是土
壤中溶于 K2CO3 溶液但不溶于溴化物的有机磷,经 18 次测量得数据表(略,见程序),求
x1,x2,x3 对 y 的线性回归方程.

解:回归模型是
y = b0 + b1 x1 + b2 x2 + b3 x3 + ε
为了估计 b0,b1,b2,b3,我们采用 SAS 程序*/
data pcontent;
input x1-x3 y;
cards;
0.4 52 158 64
0.4 23 163 60
3.1 19 37 71
0.6 34 157 61
4.7 24 59 54
1.7 65 123 77
9.4 44 46 81
10.1 31 117 93
11.6 29 173 93
12.6 58 112 51
10.9 37 111 76
23.1 46 114 96
23.1 50 134 77
21.6 44 73 93
23.1 56 168 95
1.9 36 143 54
26.8 58 202 168
29.9 51 124 99
;

258
SAS 操作入门 编者:江南大学 吴有炜 259

proc reg data=pcontent; /*reg 语句调用回归分析*/


model y=x1-x3; /*model 因变量=自变量;*/
run;

2. 例 6.5.1(逐步回归求最优回归方程)

为了预报入霉期 y(6 月 1 日为 1),考虑 6 个气象因子 x1,x2,…,x6 . 从过去 23 年的气象


资料查得数据表(见程序),试找出主要的预报因子(自变量)和回归方程.

表 6.5.1 预报入霉期气象资料
SAS 程序*/
data rumay;
input x1-x6 y;
cards;
31 7 16 5 4 265 23
30 5 4 7 4 262 23
33 10 0 0 0 258 3
25 4 6 0 6 262 20
26 6 12 5 7 260 26
27 9 19 4 9 266 27
27 7 19 4 5 259 19
31 13 4 2 2 257 6
31 8 1 0 2 266 16
28 14 0 0 4 265 22
25 16 18 4 7 268 24
30 12 5 2 4 262 30
24 5 22 9 8 264 28
28 3 19 2 4 262 24
30 0 0 0 0 264 24
27 2 14 4 8 259 30
26 10 7 3 9 262 17
30 11 1 0 2 260 9
28 6 7 0 5 260 20
29 9 22 1 5 259 16
32 13 0 0 1 263 9
20 7 12 0 5 251 16
34 7 6 0 3 257 16

Proc reg data=rumay;
Model y=x1-x6/selection=stepwise; /* selection=stepwise 逐步回归选项*/
Run;
/* 多项式回归转化为线性回归

259
SAS 操作入门 编者:江南大学 吴有炜 260

3. 例 6.6.1

经钻探某地区煤矿上表面高度数据如表 6.6.1,其中 x 为横坐标,y 为纵由于连续函数


可以用多项式逼近,所以在实际问题中常用多项式来拟合.

坐标,为了作趋势面分析,建立上表面高度 h 的回归方程. 我们用二次多项式拟合这


组数据,从而建立回归模型
h=b0+b1x+b2y+b3x2+b4xy+b5y2+ε (6.6.1)
其中ε是零均值随机变量,结合表 6.6.1,我们得
表 6.6.1 地质钻探数据
序号 X Y H
1 2.00 6.0 -11
2 2.00 5.5 0
3 2.00 5.0 10
4 2.00 4.5 20
5 2.00 4.0 31
6 2.25 6.0 -11
7 2.25 5.5 -1
8 2.25 5.0 9
9 2.25 4.5 19
10 2.25 4.0 30
11 2.50 6.0 -12
12 2.50 5.5 -2
13 2.50 5.0 8
14 2.50 4.50 19
15 2.50 4.0 29
16 2.75 6.0 -13
17 2.75 5.5 -2
18 2.75 5.0 7
19 2.75 4.5 18
20 2.75 4.0 28
21 3.00 6.0 -14
22 3.00 5.5 13
23 3.00 5.0 6
24 3.00 4.5 17
25 3.00 4.0 27
*/

data corn;

do x=2 to 3 by 0.25 ;
do y = 6 to 4 by -0.5 ;
input h @@;
t1=x;t2=y;t3=x*x;t4=x*y;t5=y*y; /*将多项式回归转化为线性回归的方法*/
output;
end;
end;
cards;
-11 0 10 20 31 -11 -1 9 19 30
-12 -2 8 19 29 -13 -2 7 18 28

260
SAS 操作入门 编者:江南大学 吴有炜 261

-14 13 6 17 27
;
proc reg data=corn;
model h=t1-t5;
run;
/* 非线性回归
形如:
proc nlin data =…;
model 因变量 = 非线性函数表达式;
parms 参数 1=初值 参数 2=初值 … ;
der.参数 1=偏导表达式 ;
der.参数 2=偏导表达式 ;
…………… ;
runs;

方法: 采用迭代求参数,要给出参数的一阶偏导表达式 der.参数=…; , 要赋参数初


值 parms 参数=…; .

4. 例 6.8.1(非线性回归)

已知牧草重量 y 与生长天数 x 的关系是


y=a exp(-exp(b-cx))+e
9 次观察的数据为表 6.8.1,试求出 a,b,c 的值.
表 6.8.1 牧草生长资料
x 9 14 21 28 42 57 63 70 79
y 8.93 10.80 18.59 22.33 39.35 56.11 61.73 64.62 67.08
分析:a,b,c 表示参数,x 是自变量,故
f(x;a,b,c)=a exp(-exp(b-cx)) */
/*求得,der.a=exp(-zz)(记为 term).der.b=-a*zz*term, der.c=a*x*zz*term,
其中 zz= exp(b-c*x) */
data hw;
input x y;
cards;
9 8.93
14 10.80
21 18.59
28 22.33
42 39.35
57 56.11
63 61.73
70 64.62
79 67.08

proc nlin data=hw; /*调用 nlin 进行非线性回归*/
zz=exp(b-c*x); /*简化记号*/
term=exp(-zz); /*简化记号*/
model y=a*term; /*因变量=非线性函数表达式,即 y=a exp(-exp(b-cx))*/
parms a=70 b=1.1 c=0.2; /*赋参数初值*/
der.a=term; /*给出参数的一阶偏导表达式*/

261
SAS 操作入门 编者:江南大学 吴有炜 262

der.b=-a*zz*term;
der.c=a*x*zz*term;
run;

5. 例 6.8.2(非线性回归)

/*设某种化学反应速度 y 作为因变量,醇和烯的偏压强 x1,x2 作为自变量,非线性回


归模型是

y=cx1/(1+ax1+bx2)

观察数据为表 6.8.2,试求出 a,b,c.

表 6.8.2 化学反应速度
x1 x2 y
1.0 1.0 0.126
2.0 1.0 0.219
1.0 2.0 0.076
2.0 2.0 0.126
0.1 0.0 0.186

分析:从例 6.8.1 可见求参数的初值是比较麻烦的,我们用计算机计算,将


y=cx1/(1+ax1+bx2)
改写为
y= a (-x1y)+ b (- x2y)+cx1
由于有 x1,x2,y 的观察值,可将上式看为形式上的线性回归模型 ,通过 REG 过程作线性
回归,求得线性回归系数作为非线性模型的初值,其程序为( 因为没有常数项,加上 NOINT
选择项)/*
data c1;
input x1 x2 y;
u1=-x1*y;u2=-x2*y;u3=x1;
cards;
1.0 1.0 0.126
2.0 1.0 0.219
1.0 2.0 0.076
2.0 2.0 0.126
0.1 0.0 0.186
;
run;
proc reg data=c1;
model y=u1-u3/noint; /*noint 选项说明线性回归无截矩项*/
run;
/*由计算求得 u1, u2, u3 的系数分别为 0.982126, 5.653542 和 0.935412. 所以,a,b,c
的初始估计值分别为 0.982126, 5.653542 和 0.935412.
为了打印简化,也为了提高计算速度,令

262
SAS 操作入门 编者:江南大学 吴有炜 263

dn=1+ax1+bx2,
cx 1
term = .
则 dn

∂ cx 2 term * x1
term = − 21 = − ,
∂a d n dn
∂ term * x 2
term = − ,
∂b dn

term = x1 / dn .
于是,我们用程序*/ ∂c
proc nlin data=c1; /*调用 nlin 进行非线性回归*/
dn=1+a*x1+b*x2; /*简化记号*/
term=c*x1/dn; /*简化记号*/
model y =term; /*因变量=非线性函数表达式*/
parms a=0.982126 b=5.653542 c=0.935412; /*用线性模型的参数作为非线性模型参
数初值*/
der.c=x1/dn; /*给出参数的一阶偏导表达式*/
der.b=-term*x2/dn;
der.a=-term*x1/dn;
run;

第十三章 主成份分析

1. 例 13.3.1

/*北京 1951~1976 年冬季的气温资料如表 13.3.1. 此时变量个数 p=3,对这些资料进


行主成份分析.

第一列为年份,X1 为 12 月份平均气温,X2 为 1 月份平均气温,X3 为 2 月份平均气温.


表 13.3.1 北京冬季气温
年份 X1 X2 X3
1951 1.0 -2.7 -4.3
1952 -5.3 -5.9 -3.5
1953 -2.0 -3.4 -0.8
1954 -5.7 -4.7 -1.1
1955 -0.9 -3.8 -3.1
1956 -5.7 -5.3 -5.9
1957 -2.1 -5.0 -1.6
1958 0.6 -4.3 -0.2
1959 -1.7 -5.7 2.0
1960 -3.6 -3.6 1.3
1961 3.0 -3.1 -0.8
1962 0.1 -3.9 -1.1
1963 -2.6 -3.0 -5.2

263
SAS 操作入门 编者:江南大学 吴有炜 264

1964 -1.4 -4.9 -1.7


1965 -3.9 -5.7 -2.5
1966 -4.7 -4.8 -3.3
1967 -6.0 -5.6 -4.9
1968 -1.7 -6.4 -5.1
1969 -3.4 -5.6 -2.9
1970 -3.1 -4.2 -2.0
1971 -3.8 -4.9 -3.9
1972 -2.0 -4.1 -2.4
1973 -1.7 -4.2 -2.0
1974 -3.6 -3.3 -2.0
1975 -2.7 -3.7 0.1
1976 -2.4 -7.6 -2.2
注:所示年份的冬季指当年 12 月份、翌年 1 月份和 2 月份.
我们采用如下程序作主成份分析:*/
data temperat;
input year Dec Jan Feb;
cards;
1951 1.0 -2.7 -4.3
1952 -5.3 -5.9 -3.5
1953 -2.0 -3.4 -0.8
1954 -5.7 -4.7 -1.1
1955 -0.9 -3.8 -3.1
1956 -5.7 -5.3 -5.9
1957 -2.1 -5.0 -1.6
1958 0.6 -4.3 -0.2
1959 -1.7 -5.7 2.0
1960 -3.6 -3.6 1.3
1961 3.0 -3.1 -0.8
1962 0.1 -3.9 -1.1
1963 -2.6 -3.0 -5.2
1964 -1.4 -4.9 -1.7
1965 -3.9 -5.7 -2.5
1966 -4.7 -4.8 -3.3
1967 -6.0 -5.6 -4.9
1968 -1.7 -6.4 -5.1
1969 -3.4 -5.6 -2.9
1970 -3.1 -4.2 -2.0
1971 -3.8 -4.9 -3.9
1972 -2.0 -4.1 -2.4
1973 -1.7 -4.2 -2.0
1974 -3.6 -3.3 -2.0
1975 -2.7 -3.7 0.1
1976 -2.4 -7.6 -2.2

264
SAS 操作入门 编者:江南大学 吴有炜 265

proc princomp data=temperat cov outstat =prin;


var Dec Jan Feb;
proc print data=prin;
run;

2. 习题 13.1

分析美国犯罪情况,统计 7 种罪行的犯罪率,分别为:Murder(谋杀)、Rape(强奸)、

Robbery(抢劫)、Assault(斗殴)、Burglary(夜盗罪)、Larceny(偷窃)、
Auto(汽车犯罪)。以各州平均每 100,000 人犯罪人数为 7 个变量的观察数据,做主成分分
析。

SAS程序过程:
data crime;
title 'Crime Rates per 100000 population by State';
input state $1-15 murder rape robbery assault burglary larceny auto;
cards;
Alabama 14.2 25.2 96.8 278.3 1135.5 1181.9 280.7
Alaska 10.8 51.6 96.8 284.0 1331.7 3369.8 753.3
Arizona 9.5 34.2 138.2 312.3 2346.1 4467.4 439.5
Arkansas 8.8 27.6 83.2 203.4 972.6 1862.1 183.4
California 11.5 49.4 287.0 358.0 2139.4 3499.8 663.5
Colorada 6.3 42.0 170.0 292.9 1935.2 3903.2 477.1
Connectieat 4.2 16.8 129.5 131.8 1346.0 2620.7 593.2

Delaware 6.0 24.9 157.0 194.2 1682.6 3678.4 467.0


Florida 10.2 39.6 187.9 449.1 1859.9 3840.5 351.4
Georgia 11.7 31.1 140.5 256.5 1351.1 2170.2 297.9
Hawaii 7.2 25.5 128.0 64.1 1911.5 3920.4 489.4
Idaho 5.5 19.4 39.6 172.5 1050.8 2599.6 237.6
Illinois 9.9 21.8 211.3 209.0 1085.0 2828.5 528.6
Indiana 7.4 26.5 123.2 153.5 782.2 1662.1 245.5
Iowa 2.3 10.6 41.2 89.8 812.5 2685.1 219.9
Kansas 6.6 22.0 100.7 180.5 1270.4 2739.3 244.3
Kentucky 10.1 19.1 81.1 123.3 872.2 1552.1 245.4
Louisiana 15.5 30.9 142.9 335.5 1165.5 2469.9 337.7
Maine 2.4 13.5 38.7 170.0 1253.2 2350.7 246.9
Maryland 8.0 34.8 292.1 358.9 1400.0 3177.7 428.5
Massachusetts 3.1 20.8 169.1 231.6 1532.2 2311.3 1140.1
Michigan 9.3 38.9 261.9 274.6 1522.7 3159.0 545.5
Minnsota 2.7 19.5 85.9 85.8 1134.7 2559.3 343.1
Mississippi1 4.3 19.6 65.7 189.1 915.6 1239.9 144.4
Missouri 9.6 28.3 189.0 233.5 1318.3 2424.2 378.4

265
SAS 操作入门 编者:江南大学 吴有炜 266

Montana 5.4 16.7 39.2 156.8 804.9 2316.1 309.2


Nebraska 3.9 18.1 64.7 112.7 760.0 2773.2 249.1
Nevada 5.8 49.1 323.1 355.0 2453.1 4212.6 559.2
New Hampshire 3.1 10.7 23.2 76.0 1041.7 2343.9 293.4
New Mexico 9.8 39.1 109.6 343.4 1418.7 3008.6 259.5
New York 10.7 29.4 472.6 319.1 1728.0 2782.0 745.8
North Carolina 10.6 17.0 61.3 318.3 1154.1 2037.8 192.1
North Dakota 0.9 9.0 13.3 43.8 446.1 1843.0 144.7
Ohio 7.8 27.3 190.5 181.1 1216.0 2696.8 400.4
Oklahoma 8.6 29.2 93.0 205.0 1288.2 2228.1 326.8
Oregon 8.9 39.0 124.1 286.9 1636.4 3506.1 388.9
Pennsylvania 5.6 19.0 130.3 128.0 877.5 1624.1 333.2
Rhode Island 3.6 10.5 86.5 201.0 1489.5 2844.1 791.4
South Carolina 11.9 33.0 105.9 485.3 1613.6 2342.4 245.1
South Dakota 2.0 13.5 17.9 155.7 570.5 1704.4 147.5
Tennessee 10.1 29.7 145.8 203.9 1259.7 1776.5 314.0
Texas 13.3 33.8 152.4 208.2 1603.1 2988.7 397.6
Utah 3.5 20.3 68.8 147.3 1171.6 3004.6 334.5
Vermont 1.4 15.9 30.8 101.2 1348.2 2201.0 265.2
Virginia 9.0 23.3 92.1 165.7 986.2 2521.2 226.7
Washington 4.3 39.6 106.2 224.8 1605.6 3386.9 360.3
West Virginia 6.0 13.2 42.2 90.9 597.4 1341.7 163.3
Wisconsin 2.8 12.9 52.2 63.7 846.9 2614.2 220.7
Wyoming 5.4 21.9 39.7 173.9 811.6 277.2 282.0
;
proc princomp out=crimcomp;
run;

proc sort data=crimcomp;


by prin1;
proc print;
id state;
var prin1;
proc sort data=crimcomp;
by prin2;
proc print;
id state;
var prin2;
run;
proc plot;
plot prin2*prin1=state;
run;

3. 习题 13.2

彩色胶卷显影液质量控制问题:将胶卷在不同的情况下曝光,再通过色片进行测量,

266
SAS 操作入门 编者:江南大学 吴有炜 267

测量在高、中、低三种密度下进行,这样一个胶卷有 9 个指标,共做 108 个试验,由 108


个数据所得样本协差阵如下表,试做主成分分析.

高 中 低
红 绿 蓝 红 绿 蓝 红 绿 蓝
177 179 95 96 53 32 -7 -4 -3
419 245 131 181 127 -2 1 4
302 60 109 142 4 4 11
158 102 42 4 3 2
137 96 4 5 6
128 2 2 8
34 31 33
39 89
48
输入协差阵的 SAS 程序可以这样写
data film (type=cov);
_type_ = ’cov’;
input _name_ $ x1-x9;
cards;
x1 117 . . . . . . . . /*输入相关阵或协方差阵时省略号必须有且点数必须正确*/
x2 179 419 . . . . . . .
x3 95 245 302 . . . . . .
x4 96 131 60 158 . . . . .
x5 53 181 109 102 137 . . . .
x6 32 127 142 42 96 128 . . .
x7 -7 -2 4 4 4 42 34 . .
x8 -4 1 4 3 5 2 31 39 .
x9 -3 4 11 2 6 8 33 89 48
;
proc princomp cov;
var x1-x9;
run;

第十三章 因子分析

1. 例 13.5.1

/* 选拔职员对应聘人员测验 6 门科目:

词汇、阅读、同义词、算术、代数、微积分记为 x1, x2, x3, y1, y2, y3, 将所有应聘者的


考试成绩作计算机处理,得样本相关阵,试对这六科成绩作因子分析. 样本相关阵见程序
对此问题采用程序*/
data score(type=corr);/* 建立名为 SCORE 数据库,其类型为 CORR 即相关阵*/

267
SAS 操作入门 编者:江南大学 吴有炜 268

_type_=’corr’;
input name $x1 x2 x3 y1 y2 y3;
cards;
x1 1 . . . . .
x2 .72 1 . . . .
x3 .63 .57 1 . . .
y1 .09 .15 .14 1 . .
y2 .09 .16 .15 .57 1 .
y3 .00 .09 .09 .63 .72 1

proc factor data =score;/* 调用因子分析过程对相关阵作因子分析,提取因子的方法
method=缺省,所以作主成分因子分析. */
var x1 x2 x3 y1 y2 y3;
title ’principal component analysis’;
run;
proc factor data =score priors =max n=2 /*没有规定提取因子的方法, 但规定了每一变
量共通性的预估值 PRIORS=为每一变量同其它
变量相关系数绝对值的最大值(PRIORS=MAX),
所以执行主因子分析, 同时要求提取两个因子
(n=2)*/
preplot rotate=varimax plot outstat=fact;/* 要求印出未经旋转的因子负荷矩阵;产
生方差最大旋转;印出旋转后的因子负荷矩阵*/
var x1 x2 x3 y1 y2 y3;
, ,
title2 principal factor analysis with varimax rotation ;
proc print data=fact;/* 打印旋转后的因子模型图*/
run;
以上程序 DATA 步用以建立名为 SCORE 数据库,其类型为 CORR 即相关阵,其中
x1,x2,x3 分别表示词汇、阅读、同义词,y1, y2, y3 分别表示算术、代数、微积分.
第一个 PROC FACTOR 语句用来调用因子分析过程对相关阵作因子分析,提取因子的
方法缺省,所以作主成分因子分析. 其输出结果见下表:
第二个 PROC FACTOR 语句中没有规定提取因子的方法, 但规定了先验公因子方差
估计, 使用它同其余任一变量相关的最大值(PRIORS=MAX), 所以此时执行主因子分析,
同时要求提取两个因子(n=2), 还要求打印没有旋转的因子模型图(PREPLPOT). POTATE=V
要求产生方差最大旋转,PLOT 要打印旋转后的因子模型图. 此程序的丰富输出结果见下列
诸表:

2. 习题 13.2

/* 为了分析解放后我国经济发展情况,采用 11 个指标,x1: 社会总产值;x2: 国民收


入;x3: 一次性能源生产总量;x4: 货物周转量;x5: 国有的固定资产投资额;x6: 职工工资
总额;x7: 社会商品零售额;x8: 财政收入;x9:财政支出;x10: 贷币流通量;x11: 银行各
项贷款余额. 考虑经济逐年增长,以每年值对上年的比为随机变量的观测值,共有 39 个观
测值,数据表见程序,试作因子分析(公共因子旋转)并分析因子含义.

表 11 项特征指标发展速度(1)

268
SAS 操作入门 编者:江南大学 吴有炜 269

资料来源:
《中国统计年鉴》1988~1992; 《中国统计年鉴》1988~1992. 可以采用如
下 SAS 程序.*/
data ecm;
input y x1-x11 @ @;
cards;
1953 1.2227 1.2037 1.0695 1.2992 2.1009 1.3177 1.2572 1.2134 1.4372 1.4372 1.2463

1954 1.0846 1.0550 1.2061 1.2152 1.1212 1.0978 1.0951 1.1772 1.0457 1.0457 1.3715

1955 1.0513 1.0535 1.1650 1.0937 1.0243 1.1012 1.0291 1.0366 0.98716 0.97816 1.1062

1956 1.1583 1.1193 1.1298 1.2053 1.5285 1.4577 1.1754 1.0566 1.4218 1.4218 1.1454

1957 0.97987 1.0295 1.1964 1.1376 0.94030 1.2030 1.0286 1.0793 0.92147 0.92147 1.1864

1958 0.13313 1.2313 2.0125 1.3536 1.8459 1.1048 1.1556 1.2495 1.2841 1.2841 1.7214

1959 1.1918 1.0930 1.3687 1.3355 1.3185 1.2481 1.1642 1.2567 1.1077 1.1077 1.3707

1960 1.0514 0.99863 1.0912 1.1207 1.1321 1.1277 1.0923 1.1749 1.2770 1.2770 1.2138

1961 0.73834 0.81639 0.71613 0.71613 0.37470 0.94607 0.87200 0.62223 1.3107 1.3107 0.82946

1962 0.91001 0.92771 0.80970 0.85116 0.55926 0.90595 0.99391 0.88065 0.84726 0.84726 0.84891

1963 1.0867 1.0823 0.98976 1.0501 1.3368 0.98270 1.0008 1.0915 0.84413 0.84413 0.83272

1964 1.1595 1.1660 1.0131 1.1716 1.4216 1.0552 1.0557 1.1671 0.88988 0.88988 1.0192

1965 1.1883 1.1895 1.0924 1.2592 1.3074 1.0705 1.0503 1.1847 1.1350 1.1350 1.1183

1966 1.1362 1.1435 1.1067 1.1264 1.1747 1.0496 1.0932 1.1804 1.1949 1.1949 1.1676

1967 0.90594 0.93758 0.83973 0.78156 0.73666 1.0405 1.0514 0.75067 1.1235 1.1235 1.0538

1968 0.95498 0.95158 1.0689 1.0193 0.80767 1.0120 0.95691 0.86147 1.1001 1.1001 1.1176

1969 1.2024 1.1428 1.2345 1.2075 1.6286 1.0340 1.0871 1.4581 1.0224 1.0224 1.0620

1970 1.9535 1.1911 1.3413 1.2163 1.4909 1.0363 1.0750 1.2584 0.90153 0.90153 1.0930

1971 1.1061 1.0784 1.1387 1.1397 1.1337 1.0888 1.0830 1.1234 1.1019 1.1019 1.0779

1972 1.0459 1.0284 1.0707 1.0846 0.98922 1.1253 1.1013 1.0294 1.1101 1.1101 1.0285

1973 1.0864 1.0852 1.0590 1.1152 1.0613 1.0476 1.0815 1.0562 1.0560 1.0985 1.1077

1974 1.0174 1.0129 1.0403 1.0032 1.0573 1.0298 1.0514 0.96715 0.97714 0.1032 1.0666

1975 1.1070 1.0660 1.1712 1.1555 1.1764 1.0489 1.0924 1.0415 1.0381 1.0340 1.0807

1976 1.0100 0.96964 1.0325 0.94627 0.96146 1.0554 1.0537 0.95218 0.98209 1.1172 1.0541

1977 1.1049 1.0894 1.1203 1.1543 1.0466 1.0523 1.0697 1.1261 1.0463 0.95784 1.0788

1978 1.1404 1.1384 1.1130 1.2334 1.2196 1.1051 1.0878 1.2820 1.3171 1.0850 1.1122

1979 1.1163 1.1130 1.0285 1.1583 1.0459 1.1368 1.1549 0.98412 1.1466 1.2627 1.1025

1980 1.1167 1.1009 0.98719 1.0563 1.0665 1.1944 1.1889 0.98359 0.95096 0.2932 1.1837

1981 1.0634 1.0686 0.992503 1.0097 0.89489 1.0616 1.0981 1.0041 0.91944 1.1447 1.1451

1982 1.0982 1.0804 1.0562 1.0746 1.2664 1.0756 1.0936 1.0316 1.0343 1.1080 1.1505

1983 1.1169 1.1123 1.0673 1.0770 1.1262 1.0596 1.1087 1.1112 1.1207 1.2066 1.1287

1984 1.1833 1.1934 1.0924 1.1167 1.2450 1.2127 1.1850 1.2025 1.1964 1.4951 1.3276

1985 1.2605 1.2420 1.0988 1.1150 1.4179 1.2202 1.2750 1.2427 1.1930 1.2471 1.2391

1986 1.1496 1.1195 1.0301 1.1116 1.1773 1.2001 1.1498 1.2110 1.2634 1.2334 1.2854

1987 1.2094 1.1850 1.0357 1.1032 1.1615 1.1334 1.1758 1.0480 1.0505 1.1938 1.1899

1988 1.2931 1.2604 1.0497 1.0718 1.2023 1.2313 1.2784 1.1094 1.1054 1.4675 1.1681

1989 1.1565 1.1225 1.0609 1.0741 0.91773 1.1305 1.0899 1.1217 1.1233 1.0981 1.1761

1990 1.1019 1.0917 1.0225 1.0241 1.1551 1.1270 1.0245 1.1237 1.1355 1.1282 1.2222

1991 1.1516 1.1205 1.0089 1.0679 1.2431 1.1263 1.1344 1.0901 1.1047 1.2017 1.1897


proc factor data=ecm outstat =ecfact;
var X1-X11;
proc factor data=ecm priors=max n=2
rotate=v;
var X1-X11;
proc print data=ecfact;
run;
/*试分析输出结果. 如果结果不好,可再作别的旋转.*/

269
SAS 操作入门 编者:江南大学 吴有炜 270

第十五章 系统聚类

1. 例 15.2.1

/*对于北京地区 1951~1961 年 11 年的冬季 12 月、1 月、2 月三个月的气温进行聚


类分析. 共采用五种聚类方法;类平均法、重心法、密度估计法、最小距离法和 Ward 法. 可
采用以下 SAS 程序. */

data temperat;
input year Dec Jan Feb;
cards;
1951 1.0 -2.7 -4.3
1952 -5.3 -5.9 -3.5
1953 -2.0 -3.4 -0.8
1954 -5.7 -4.7 -1.1
1955 -0.9 -3.8 -3.1
1956 -5.7 -5.3 -5.9
1957 -2.1 -5.0 -1.6
1958 0.6 -4.3 -0.2
1959 -1.7 -5.7 2.0
1960 -3.6 -3.6 1.3
1961 -3.0 -3.1 -0.8
;
proc cluster /*系统聚类*/ data = temperat method=average;/*类平均法*/
var Dec Jan Feb;
id year;
proc tree horizontal /*水平树*/spaces=2/*树上节点间的空隙*/; id year;/*年为样本*/
proc cluster data=temperat method=centroid;/*重心法*/
var Dec Jan Feb;
id year;
proc tree horizontal spaces=2; id year;

proc cluster data=temperat method =density k=3;/*密度估计法*/


var Dec Jan Feb;
id year;
proc tree horizontal spaces=2; id year;

proc cluster data=temperat method=single;/*最小距离法*/


var Dec Jan Feb;
id year;
proc tree horizontal spaces=2; id year;

proc cluster data=temperat method=ward;/*离差平方和法*/


var Dec Jan Feb;

270
SAS 操作入门 编者:江南大学 吴有炜 271

id year;
proc tree horizontal spaces=2; id year;
run;

2. 例 15.4.1(动态聚类)

/* 根据北京地区 1951~1976 年共 26 个观测的气温资料, 用动态聚类法把它们进行聚


类, 可调用 FASTCLUS 过程, 采用如下 SAS 程序分析.*/

proc fastclus data=temperat maxc=3 list; /*动态聚类*/


var Dec Jan Feb;
id year;
proc tree horizontal spaces=2; id year;
run;

3. 例 15.5.2 (变量分割聚类)

/*现有北京地区 1951~1976 年的气象资料,该资料见例 9.1. 要用重心法


对指标变量 Dec,Jan,Feb,High7,High4,High8 进行分割聚类可采用以下 SAS 程序:*/
data tempandhigh;
input year Dec Jan Feb high7 high4 high8;
cards;
1951 1.0 -2.7 -4.3 4 -7 12
1952 -5.3 -5.9 -3.5 0 21 5
1953 -2.0 -3.4 -0.8 6 -9 5
1954 -5.7 -4.7 -1.1 10 17 6
1955 -0.9 -3.8 -3.1 1 5 11
1956 -5.7 -5.3 -5.9 -3 1 -12
1957 -2.1 -5.0 -1.6 -15 3 13
1958 0.6 -4.3 -0.2 10 -3 0
1959 -1.7 -5.7 2.0 -9 -5 -14
1960 -3.6 -3.6 -1.3 11 -3 18
1961 -3.6 -3.1 -0.8 5 -15 4
1962 -0.1 -3.9 -1.1 8 12 1
1963 -2.6 -3.0 -5.2 11 3 -3
1964 -1.4 -4.9 -1.7 -11 -8 7
1965 -3.9 -5.7 -2.5 -18 6 -6
1966 -4.7 -4.8 -3.3 -9 -6 15
1967 -6.0 -5.6 -4.0 4 0 20
1968 -1.7 -6.4 -5.1 -7 -2 -15
1969 -3.4 -5.6 -2.0 4 17 -23
1970 -3.1 -4.2 -2.9 9 -16 23
1971 -3.8 -4.9 -3.9 -13 5 -2
1972 -2.0 -4.1 -2.4 7 0 10
1973 -1.7 -4.2 -2.0 27 -11 4
1974 -3.6 -3.3 -2.0 17 -2 0

271
SAS 操作入门 编者:江南大学 吴有炜 272

1975 -2.7 -3.7 0.1 -1 -13 10


1976 -2.4 -7.6 -2.2 5 9 -30

proc varclus data=tempandhigh centroid outtree=tree; /*变量分割聚类*/
var Dec Jan Feb high7 high4 high8;
proc tree pages=2;/*树根到树叶的长度为 2 页*/
run;

第十五章 判别分析

1. 例 15.6.1

已知长江中游 6 月份降水分三级:偏少、偏多、正常,分别用 1,2,3 来表示这三个


母体. 现利用 1951~1975 年共 25 年的观测资料(表 15.6.1)建立四因子(指标)的三类判别函
数.并将 1976~1979 年的观测资料(表 15.6.2)作为检验资料(主要是为了示范这类问题的
SAS 程序).

表 15.6.1 历年观测资料
年份 X1 X2 X3 X4 原分类
1951 0.58 82.0 44.0 40.6 1
1952 0.40 83.0 18.0 43.0 2
1953 0.55 85.0 36.0 30.7 2
1954 0.40 85.0 36.0 40.7 2
1955 0.48 88.0 49.0 43.0 2
1956 0.41 82.0 35.0 78.6 3
1957 0.65 80.0 29.0 33.2 1
1958 0.45 82.0 32.0 33.1 3
1959 0.39 81.0 27.0 46.5 3
1960 0.34 85.0 28.0 41.7 3
1961 0.42 84.0 38.0 20.4 3
1962 0.52 86.0 38.0 0.2 1
1963 0.46 88.0 25.0 56.7 2
1964 0.48 83.0 46.0 13.6 1
1965 0.53 84.0 41.0 32.3 1
1966 0.65 81.0 31.0 28.9 1
1967 0.66 83.0 38.0 46.6 1
1968 0.53 80.0 42.0 93.1 3
1969 0.56 85.0 18.0 16.3 3
1970 0.45 83.0 27.0 23.9 3
1971 0.34 80.0 42.0 26.3 3
1972 0.41 79.0 38.0 40.8 3
1973 0.53 83.0 23.0 61.3 3
1974 0.48 84.0 19.0 23.2 2
1975 0.30 85.0 27.0 17.5 2

表 15.6.2 检验数据(即作为待判样品)

272
SAS 操作入门 编者:江南大学 吴有炜 273

年份 X1 X2 X3 X4 原分类
1976 0.42 81.0 21.0 52.2 3
1977 0.52 81.0 38.0 45.8 1
1978 0.36 82.0 34.0 34.9 2
1979 0.43 84.0 34.0 60.5 3

data rainfall;
title’ Discriminant Analisis of Rainfall data 雨量数据进行判别分析’;
input year x1-x4 species;
cards;
1951 0.58 82.0 44.0 40.6 1
1952 0.40 83.0 18.0 43.0 2
1953 0.55 85.0 36.0 30.7 2
1954 0.40 85.0 36.0 40.7 2
1955 0.48 88.0 49.0 43.0 2
1956 0.41 82.0 35.0 78.6 3
1957 0.65 80.0 29.0 33.2 1
1958 0.45 82.0 32.0 33.1 3
1959 0.39 81.0 27.0 46.5 3
1960 0.34 85.0 28.0 41.7 3
1961 0.42 84.0 38.0 20.4 3
1962 0.52 86.0 38.0 0.2 1
1963 0.46 88.0 25.0 56.7 2
1964 0.48 83.0 46.0 13.6 1
1965 0.53 84.0 41.0 32.3 1
1966 0.65 81.0 31.0 28.9 1
1967 0.66 83.0 38.0 46.6 1
1968 0.53 80.0 42.0 93.1 3
1969 0.56 85.0 18.0 16.3 3
1970 0.45 83.0 27.0 23.9 3
1971 0.34 80.0 42.0 26.3 3
1972 0.41 79.0 38.0 40.8 3
1973 0.53 83.0 23.0 61.3 3
1974 0.48 84.0 19.0 23.2 2
1975 0.30 85.0 27.0 17.5 2
1976 0.42 81.0 21.0 52.2 3
1977 0.52 81.0 38.0 45.8 1
1978 0.36 82.0 34.0 34.9 2
1979 0.34 84.0 34.0 60.5 3

proc discrim /* 最 大 概 率 判 别 */ data=rainfall outstat=info method=normal
list;
class species;
var x1-x4;
id year;
title2 ‘Using normal estmates with using covarince matrix 用协方差阵进行标
准估计’;

273
SAS 操作入门 编者:江南大学 吴有炜 274

2. 例 15.6.3

/*是实例中抽取的部分资料. 这里有三个母体:胃癌患者母体用 SC 表示;最易误诊为


胃癌的萎缩性胃炎患者母体用 SW 表示;以及非胃病者母体用 NS 表示. 这里每个母体仅
抽 5 位病人,每人化验 4 项生化指标:铜蓝蛋白(X1)、蓝色反应(X2)、尿吲哚乙酸(X3)、
中性硫化物(X4). 现进行三类的逐步判别分析(采用逐步选择法).

表 15.6.3 胃癌检验生化指标测量值

铜蓝蛋白 蓝色反应 尿吲哚乙酸 中性硫化物


类 别 编 号
X1 X2 X3 X4

1 288 134 20 11
胃 胃 2 245 134 10 40
癌 癌
3 200 167 12 27
患 患
者 者 4 170 150 7 8
5 100 167 20 14
萎 6 255 125 7 14

7 130 100 6 12

胃 8 150 117 7 6

非 9 120 133 10 26


者 10 160 100 5 10

患 11 185 115 5 19

者 12 170 125 6 4

病 13 105 142 5 3

14 135 108 2 12

15 100 117 7 2
* 表中 X3,X4 是原始数据的 100 倍.
本题逐步判别程序如下:
data stomach;
title ’Discrimination of stomach cancer’;
input x1-x4 species $;
cards;
228 134 20 11 sc
245 134 10 40 sc
200 167 12 27 sc
170 150 7 8 sc
100 167 20 14 sc
255 125 7 14 sw
130 100 6 12 sw
150 117 7 6 sw
120 133 10 26 sw
160 100 5 10 sw
185 115 5 19 ns
170 125 6 4 ns

274
SAS 操作入门 编者:江南大学 吴有炜 275

165 142 5 3 ns
135 108 2 12 ns
100 117 7 2 ns
;
proc stepdisc data=stomach wco tco; /*逐步判别*/
chass species;
var x1-x4;
run;

3. 例 15.5.3

/*Fisher 于 1936 年发表的 Iris 蝴蝶花数据已广泛被作为判别分析和聚类分析的例子.


萼片的长、宽和花瓣的长、宽都可以视为随机变量,记为 SEPALLEN,SEPALWID,PETALLEN,
PETALWID 以毫米为单位. 样本取自三个品种,各取 50 个样品,(数据表见程序)
x1=SEPALLEN,x2=SEPALWID,x3=PETALLEN,x4=PETALWID,Y=SPECIES(品种号)
程序:*/
proc format;
value specname
1=’SETOSA’
2=’VERSICOLOR’
3=’VIRGINICA’ ;
value specchar
1=’S’ 2=’O’ 3=’V’;
data iris;
title’Fisher(1936)/Iris Data’;
input sepallen sepalwid petallen petalwid species @@;
format specics specname.;
label sepallen=’Sepal Length in mm.’
Sepalwid=’Speal Width in mm.’
Petallen=’Peatl Length in mm.’
Petalwid=’Petal Width in mm.’;
cards;
50 33 14 02 1 64 28 56 22 3 65 28 46 15 2 67 31 56 24 3

63 28 51 15 3 46 34 14 03 1 69 31 51 23 3 62 22 45 15 2

59 32 48 18 2 46 36 10 02 1 61 30 46 14 2 60 27 51 16 2

65 30 52 20 3 56 25 39 11 2 65 30 55 18 3 58 27 51 19 3

68 32 59 23 3 51 33 17 05 1 57 28 45 13 2 62 34 54 23 3

77 38 67 22 3 63 33 47 16 2 67 33 57 25 3 76 30 66 21 3

49 25 45 17 3 55 35 13 02 1 67 30 52 23 3 70 32 47 14 2

64 32 45 15 2 61 28 40 13 2 48 31 16 02 1 59 30 51 18 3

55 24 38 11 2 63 25 50 19 3 64 32 53 23 3 52 34 14 02 1

49 36 14 01 1 54 30 45 15 2 79 38 64 20 3 44 32 13 02 1

67 33 57 21 3 50 35 16 02 1 58 26 40 12 2 44 30 13 02 1

77 28 67 20 3 63 27 49 18 3 47 32 16 02 1 55 26 44 12 2

50 23 33 10 2 72 32 60 18 3 48 30 14 03 1 51 38 16 02 1

275
SAS 操作入门 编者:江南大学 吴有炜 276

61 30 49 18 3 48 34 19 02 1 50 30 16 02 1 50 32 12 02 1

61 26 56 14 3 64 28 56 21 3 43 30 11 01 1 58 40 12 02 1

51 38 19 04 1 67 31 44 14 2 62 28 48 18 3 49 30 14 02 1

51 35 14 02 1 56 30 45 15 2 58 27 41 10 2 50 34 16 04 1

46 32 14 02 1 60 29 45 15 2 57 26 35 10 2 57 44 15 04 1

50 36 14 02 1 77 30 61 23 3 63 34 56 24 3 58 27 51 19 3

57 29 42 13 2 72 30 58 16 3 54 34 15 04 1 52 41 15 01 1

71 30 59 21 3 64 31 55 18 3 60 30 48 18 3 63 29 56 18 3

49 24 33 10 2 56 27 42 13 2 57 30 42 12 2 55 42 14 02 1

49 31 15 02 1 77 26 69 23 3 60 32 50 15 3 54 39 17 04 1

66 29 46 13 2 52 27 39 14 2 60 34 45 16 2 50 34 15 02 1

44 29 14 02 1 50 20 35 10 2 55 23 37 10 2 58 27 39 12 2

47 32 13 02 1 46 31 15 02 1 59 32 57 23 3 62 29 43 13 2

74 28 61 19 3 59 30 42 15 2 51 34 15 02 1 50 35 13 03 1

56 28 49 20 3 60 22 40 10 2 73 29 63 18 3 67 25 58 18 3

49 31 15 01 1 67 31 47 15 2 63 23 44 13 2 54 37 15 02 1

56 30 41 13 2 63 25 49 15 2 61 28 47 12 2 64 29 43 13 2

51 25 30 11 2 57 28 41 13 2 65 30 58 22 3 69 31 54 21 3

54 39 13 04 1 51 35 14 03 1 72 36 61 25 3 65 32 51 20 3

61 29 47 14 2 56 29 36 13 2 69 31 49 15 2 64 27 53 19 3

68 30 55 21 3 55 25 40 13 2 48 34 16 02 1 48 30 14 01 1

45 23 13 03 1 57 25 50 20 3 57 38 17 03 1 51 38 15 03 1

55 23 40 13 2 66 30 44 14 2 68 28 48 14 2 54 34 17 02 1

51 37 15 04 1 2 35 15 02 1 58 28 51 24 3 67 30 50 17 2

63 33 60 25 3 53 37 15 02 1

;
proc candisc all out=outcan distance anova;
class species;
var sepallen sepalwid petallen petalwid;
proc plot vpercent=300;
plot can2*can1=spec_no/vaxis=-3 to 3 by 1 vspace=7;
title2’plot of canonical discriminant functions’;
run;

第十六章 典型相关分析

1. 例 16.2.1

现有北京地区 1951~1976 年的资料见表 16.2.1,其中

year:年份
Des:12 月份平均气温.
Jan:次年一月份平均气温.

276
SAS 操作入门 编者:江南大学 吴有炜 277

Feb:次年二月份平均气温.
º º º º
High7:7 月 500hpa 图上 13 ~14 E,40 ~50 N 范围内 6 点高度距平和.
º º º º º º
High4:4 月 500hpa 图上(110 E,45 N)(100 W,40 N)和(100 W,50 N)3 点高度距平和.
º º º º º º
High8:8 月 500hpa 图上 150 E,35 ~45 N;100 E,40 ~50 N 范围内5 点高度距平和.
表 16.2.1 北京地区冬季气温
Year Eec Jan Feb high7 high4 high8
1951 1.0 -2.7 -4.3 4 -7 12
1952 -5.3 -5.9 -3.5 0 21 5
1953 -2.0 -3.4 -0.8 6 -9 5
1954 -5.7 -4.7 -1.1 10 17 6
1955 -0.9 -3.8 -3.1 1 5 11
1956 -5.7 -5.3 -5.9 -3 1 -12
1957 -2.1 -5.0 -1.6 -15 3 13
1958 0.6 -4.3 -0.2 10 -3 0
1959 -1.7 -5.7 2.0 -9 -5 -14
1960 -3.6 -3.6 1.3 11 -3 18
1961 -3.0 -3.1 -0.8 5 -15 4
1962 0.1 -3.9 -1.1 8 12 1
1963 -2.6 -3.0 -5.2 11 3 -3
1964 -1.4 -4.9 -1.7 -11 -8 7
1965 -3.9 -5.7 -2.5 -18 6 -6
1966 -4.7 -4.8 -3.3 -9 -6 15
1967 -6.0 -5.6 -4.9 4 0 -20
1968 -1.7 -6.4 -5.1 -7 -2 -15
1969 -3.4 -5.6 -2.0 4 17 -23
1970 -3.1 -4.2 -2.9 9 -16 23
1971 -3.8 -4.9 -3.9 -13 5 -2
1972 -2.0 -4.1 -2.4 7 0 10
1973 -1.7 -4.2 -2.0 27 -11 4
1974 -3.6 -3.3 -2.0 17 -2 0
1975 -2.7 -3.7 0.1 -1 -13 10
1976 -2.4 -7.6 -2.2 5 9 -30

作典型相关分析:Dec,Jan 和 Feb 作为第一组变量,high7、high4 和 high8 是第二组,


采用以下程序
data temperat;
input year Dec Jan Feb high7 high4 high8;
cards;
1951 1.0 -2.7 -4.3 4 -7 12
1952 -5.3 -5.9 -3.5 0 21 5
1953 -2.0 -3.4 -0.8 6 -9 5
1954 -5.7 -4.7 -1.1 10 17 6
1955 -0.9 -3.8 -3.1 1 5 11
1956 -5.7 -5.3 -5.9 -3 1 -12
1957 -2.1 -5.0 -1.6 -15 3 13
1958 0.6 -4.3 -0.2 10 -3 0
1959 -1.7 -5.7 2.0 -9 -5 -14
1960 -3.6 -3.6 1.3 11 -3 18

277
SAS 操作入门 编者:江南大学 吴有炜 278

1961 -3.0 -3.1 0.8 5 -15 4


1962 0.1 -3.9 -1.1 8 12 1
1963 -2.6 -3.0 -5.2 11 3 -3
1964 -1.4 -4.9 -1.7 -11 -8 7
1965 -3.9 -5.7 -2.5 -18 6 -6
1966 -4.7 -4.8 -3.3 -9 -6 15
1967 -6.0 -5.6 -4.9 4 0 -20
1968 -1.7 -6.4 -5.1 -7 -2 -15
1969 -3.4 -5.6 -2.0 4 17 -23
1970 -3.1 -4.2 -2.9 9 -16 23
1971 -3.8 -4.9 -3.9 -13 5 -2
1972 -2.0 -4.1 -2.4 7 0 10
1973 -1.7 -4.2 -2.0 27 -11 4
1974 -3.6 -3.3 -2.0 17 -2 0
1975 -2.7 -3.7 0.1 -1 -13 10
1976 -2.4 -7.6 -2.2 5 9 -30
;
proc cancorr all; /*PROC CANCORR 语句指示 SAS 对数据集 FIT 作典型相关分析,其中 ALL

选项要求输出所有计算结果*/

var Dec Jan Feb;


with high7 high4 high8; /*var…with…给出前后两组分析变量*/
run;
说明:第一步 DATA 步建立名为 temperat 的数据集,第一列至第七列依次为 year Dec Jan
Feb high7 high4 high8.
第二步调用 proc cancorr 过程对 DATA=temperat 作典型相关分析 var 和 with 语句分
别表示两组变量分别为 Dec Jan Feb 和 high7 high4 high8.

2. 习题 16.1

某健身房对 20 个中年人测量三个生理变量:WEIGHT(体重)、WAIST(腰围)、PULSE(脉
膊)和三个训练变量:CHIWS(引体向上)、SITVPS(起坐次数)、JVMPS(跳跃次数).试分析这
两组变量间的相关性.观察数据是 SAS 程序中哪一部分?

为此,我们可采用下述 SAS 程序
data fit;
input weight waist pulse chins situps jumps;
cards;
191 36 50 5 162 60
189 37 52 2 110 60
193 38 58 12 101 101
162 35 62 123 105 37
189 35 46 13 155 58
182 36 56 4 101 42
211 38 56 8 101 38
167 34 60 6 125 40
176 31 74 15 200 40
154 33 56 17 251 250
169 34 50 17 120 38
166 33 52 13 210 115
154 34 64 14 215 105
247 46 50 1 50 50

278
SAS 操作入门 编者:江南大学 吴有炜 279

193 36 46 6 70 31
202 37 62 12 210 120
176 37 54 4 60 25
157 32 52 11 230 80
156 33 54 15 225 73
138 33 68 2 110 43
;
proc cancorr data=fit all /*PROC CANCORR 语句指示 SAS 对数据集 FIT 作典型
相关分析,其中 ALL 选项要求输出所有计算结果*/
vprefix=phys /*v 组变量名前缀,缺省时为 v*/
vname=’physiological Measuremets’ /*v 组变量标签,缺省时为’VAR’variables*/
wprefix=exer /*w 组变量名前缀,缺省时为 w*/
wname=’Exercises’; /*w 组变量标签,缺省时为’WITH’variables*/

var weight waist pulse; /*var…with…给出前后两组分析变量*/


with chins situps jumps;
title’Middle-Aged Men in a Health Fithess Club;
run;

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

附录二: SAS 常用统计程序及含义表


常见 SAS 语句及其用途如下表:
表 数据步主要语句及其例

279
SAS 操作入门 编者:江南大学 吴有炜 280

序号 语句名称 例句 例句意义
1 DATA DATA ZHAO3; 建立名为 ZHAO3 的数据集
输入名为 X,Y,Z 的变量;X,Z 是数值变量;Y 是字
2 INPUT INPUT X Y $ Z;
符串变量
3 INFILE INFILE ’A:\YU.1’ 输入 A 驱名为 YU.1 的文件
4 CARDS CARDS; 告诉 SAS 系统该语句之后的是数据
建立新变量 U,其每一观察值是相应 X 与 Y 观察值之
5 赋值 U=X*Y;

6 DROP DROP X; 从数据集中去掉变量 X 及其数据
数据集中仅保存变量 X1,X2,X3,X4 及其值,其余
7 KEEP KEEP X1-X4;
变量及其观察值删去
8 PUT PUT X Y $ Z; 输出变量 X,Y,Z 的值,其中 Y 是字符串变量
输出文件名为 A 驱 W.3 文件,将当前屏幕上的值写入
9 FILE FILE ’A:/W.3’;
正建立的数据集
DO I=1 TO 10; 建立变量 I,其 10 次观察值为 1,2,…,10,建立变量 J,
J=I*I 其 10 次观察值为 1,4,9,…,100,它们并入当前数据集
10 DO-END
OUTPUT;
END;
11 RETAIN RETAIN X; 数据步重复执行时 X 保留前次所建立 X 的值
12 FORMAT FORMAT X 把格式与变量 X 联系起来
表 过程步常用统计程序及含义
序号 统计程序名称 统计程序含义
调用 MEANS(描述性统计分析)过程,产生均值、标准差、最大、
1 PROC MEANS; 小值、峰度、偏度等基本描述性统计值,并能产生含统计值的
输出文件和报表输出文件.
调用 SUMMARY(产生描述性统计值的输出文件)过程,类似程
2 PROC SUMMARY;
序 1,但不能产生报表分析.
调用 UNIVARIATE(描述性统计值的计算与绘图)过程,类似程序
3 PROC UNIVARIATE; 1,并用能对变量的分布提供更多信息,如分布图、频数分布图、
正态分布检验等.
调用 CHART(统计值的图形表示)过程,可绘制表示一个或多个
4 PROC CHART; 变量描述性统计值的图形,如横轴图、纵轴图、方形图、星形
图、圆形图等.
调用 TABULATE(统计表格的制作)过程,制作各式统计表格,
5 PROC TABULATE; 这些表格目录多可分为三维即表格的行(column)、列(row)与页
(page).
调用 CORR(相关性分析)过程,对长度尺度测量的参数统计方
6 PROC CORR; 法,产生相关系数阵,对等尺度测量的无参数,统计方法,产
生关联系数阵.
调用 PLOT(一般制图),将二维的变量值转化为坐标值,用二维
7 PROC PLOT;
图形绘出;绘制三维轮廓图(contour)
调用 STANDARD(标准化分数)过程:采用标准化公式
8 PROC STANDARD; t = 原始样本− 样本均值 将资料文件内数值变量加以标准化.
样本标准差

调用 RANK(排名、序)过程:将文件中数据从小到大重新排列,
9 PROC RANK;
遇到完全相等的数据,则采用平均名次(average rank)
调用 SCORE (变量值的线性组合)过程:对一系列变量值赋权(比
10 PROC SCORE;
重或系数),然后以线性组合的方式求和,产生新的资料文件.

280
SAS 操作入门 编者:江南大学 吴有炜 281

(注:统计程序 8-10 为计分程序模块).


调用 FREQ(分类数据的归纳)过程:画出频数分布或列联表
11 PROC FREQ; (contingency tables),算出几种检验统计值,如 χ 2 检验,Fish 精
确性检验,相关系数.
调用 CATMOD(分类数据的线性模型)过程:将各种线性模型(方
12 PROC CATMOD; 差分析、回归分析、对数线性分析、对数回归分析及重复试验
分析)应用到分类变量数据的函数上.
(注:统计程序 11-12 为分类数据处理模块,分类变量可以是类别变量(如性别)、绝对变量(如家庭人口
数目),次序变量(如对某事物赞成、无意见、反对),区间变量(如温度).
调用 REG(一般性回归统计分析)过程:回归分析中应用最广泛的
程序,可同时考虑多个线性回归模型,由最小二乘法估计参数,
13 PROC REG; 检验回归系数,检验多变量假设,绘制回归图输出因变量的预
测值、误差、标准化误差,置信区间,绘制散点图,输出内积
阵,诊断变量间的线性相关性,选择简化模型.
调用 PROBIT(二分数据的预估)过程:二分数据是因变量只取二
14 PROC PROBIT;
个值的数据,采用最大似然估计给出回归模型的参数估计.
调用 LOGISTIC(逻辑回归分析)过程:类似程序 14,但可以处理
15 PROC LOGISTIC;
次序变量作为因变量的回归分析.
调用 ORTHOREG(正交回归分析)过程:当数据阵“病态”(即复
16 PROC ORTHOREG; 共线性较严重时)采用 REG 程序只能求 LS 近似阵,而采用本程
序可以消除复共线性,产生精确的 LS(最小误差平方)解.
调用 RSREG(多项式回归及响应面分析)过程,执行二次多项式
17 PROC RSREG; 回归,进行逐项和方程的检验,预测响应值,指明响应面类型,
必要时进行脊岭分析.
调用 NLIN(非线性回归分析)过程:对回归参数非线性的模型提
18 PROC NLIN;
供 5 种搜索方法,找出参数估计值.
19 PROC GLM; 调用 GLM(一般线性模型)过程
(注)统计程序 13-19 为回归分析模块,内容参见第六、七章,GLM 过程说明见序号 26.
调用 TTEST(比较两组均值的 t 检验)过程:两个总体均值差,μ
2 2
1-μ2 的 t-检验 H0:μ1=μ2(要求方差σ1 =σ 2 ),该程序先用 F
20 PROC TTEST; 2 2
检验判断σ1 =σ 是否成立,若成立,则进行 t 检验,若不成立,
2

则给出 t 的近似值与近似自由度.
调用 ANOVA(平衡实验设计的方差分析)过程:平衡实验是指各
21 PROC ANOVA; 组内样本数相同的实验,进行各因子的主效应、交互效应的显
著性的析因分析.
调用 VARCOMP(方差成份分解)过程:一般线性模型中各成份的
方差分析,可采用四种估计方差的方法(1)用 F 检验各效应的均
22 PROC VARCOMP;
方(MS)(2)局部最小二乘无偏估计(3)最大似然估计,(4)局部最大
似然估计.
调用 MIXED(混合式模型的方差分析)过程,特别适用于重复试
23 PROC MIXED;
验的试验设计,随机效果的试验设计.
调用 PLAN(方差分析的实验设计)过程:设计实验中随机取样的
24 PROC PLAN;
各种可能性.
调用 NPAR 1 WAY(无参数的单因子方差分析)过程:对数据的名
25 PROC NPAR 1 WAY; 次(而非数据据值本身)进行单因素方差分析,原假设:各组间平
均名次无显著差异).

281
SAS 操作入门 编者:江南大学 吴有炜 282

调用 GLM(一般线性模型与方差分析)过程:在方差分析中应用
最广泛的程序,(1)方差分析(2)协方差分析(3)多因素方差分析(4)
26 PROC GLM 重复试验的方差分析(5)一元线性回归分析(6)多元线性回归分析
(7)多项式回归分析(8)加权回归分析(9)二次多项式响应面分析
(10)相关性计算.
(注:统计程序 20-26 为方差分析模块,内容参见第四、十章. )
调用 PRINCOMP(主成分分析)过程:内容参见第十三章,程序
27 PROC PRINCOMP 对输入原料数据(或相关系数阵,或协方差阵)执行主成份分析,
输出包括特征值,特征向量及(未经)标准化的主成份值.
调用 FACTOR(因子分析)过程:内容参见第十三章,程序提供 8
28 PROC FACTOR
种取因子的方式和 8 种公共因子的旋转方法供选择.
调用 CANCORR(典型相关分析)过程,内容参见第十六章,程序
执行典型相关分析,分析结果包括(未经过)标准化的各顺序典型
29 PROC CANCORR
变量对、典型相关系数之所有典型变量与原始变量之间的相关
系数,以及典型变量值.
调用 MDS(多维标度法)过程:MDS(multidimensional scaling):
30 PROC MDS
程序从一组距离距阵中逆推样本的坐标.
(注:过程语句 27-30 为多元综合分析模块. )
31 PROC DISCRIM 调用 DISCRIM(分类判别分析)过程:将样本分到某一类别内
32 PROC CANDISC 调用 CANDISC(典型判别分析)过程:将各类别区分开来
调用 STEPDISC(逐步判别分析)过程:依据本对类别判断能力贡
33 PROC STEPDISC
献大小,删选进出类别,完成类别区分.
(注:过程语句 31-33 为判别分析模块,内容参见第十五章. )
调用 CLUSTER(系统聚类分析)过程,依据样本及类距离,将距
34 PROC CLUSTER 离最近的两类并成一类,由各样本自成一类开始直至全部样本
并成一大类.
调用 FASTCLUS(动态聚类分析)过程:在一个初始分类(或一些
35 PROC FASTCLUS 凝聚点)的基础上,依据一定的原则进行分类修改,直至合理为
止.
调用 VARCLUS(变量聚类分析)过程:指标变量基于相关阵或协
36 PROC VARCLUS
方差阵进行分割聚类或系统聚类.
37 PROC TREE 调用 TREE(聚类分析树形图)过程:绘制聚类分析的树形图.
调 用 ACECLUS( 协 方 差 估 计 值 聚 类 分 析 ) 过 程 :
38 PROC ACECLUS ACECLUS(approximate covariance estimation for clustering)利用
样本(或指标)集的协方差的估计值进行聚类分析
(注:过程语句 34-38 为聚类分析模块,内容参见第十五章)
表 17.2.3 过程步常用语句及例句
序号 语句名称 例句 例句含义

1 VAR VAR X Y1-Y8 只分析变量 X,Y1,Y2,…,Y8

以 X,Y 的值标识打印输出的观测值或该过程建
2 ID ID X Y;
立的 SAS 数据集
X,Y 相同的观测值成为一个分组,过程分析每
3 BY BY X Y;
一分组

4 CLASS CLASS YZ; 以 YZ 变量为分类变量

5 LABEL LABELX=’DAY’
; 使变量名 X 不完全表达的意义由标号详细说明

每个观测值中除 NN 外的变量重复的次数由 NN
6 FREQ FREQ NN;
决定

7 MODEL MODEL Y=X; 分析的模式是以 X 为自变量,Y 为因变量

8 OUTPUT OUT=ABC; 规定输出数据集的名字为 ABC

表 可用在各处的 SAS 语句

282
SAS 操作入门 编者:江南大学 吴有炜 283

语句 例句 例句含义
注一句话,略去变量,该句话不被
注释语句 /*DROP VAREABLE*/
执行
ENDSAS ENDSAS SAS 停止作业并退出 SAS 系统
将库逻辑名 AA 与目录 B:/CC 联
LIBNAME LIBNAME AA ’B:/CC’;
系起来
从当前目录中的一个文件里读数据
FILENAME ’BOOK ’BOOKING.DAT’;
FILENAME 行,这个目录被文件逻辑名 BOOK
DATA TICKET
所标识,并且建立一个临时数据集
为输出 SAS 打印文件规定标题’
TITLE TITLE ’FIRST RESULT’;
FIRST RESULT’

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

附录三 <<SAS 操作入门>>习题答案

/*习题五

习题 5—1*/
title;
data data51(drop=i);

283
SAS 操作入门 编者:江南大学 吴有炜 284

do group=1 to 3;
input n@;
do i=1 to n;
input y @@;
output;
end;
end;
cards;
8 2 6 4 13 5 8 4 6
10 6 4 4 1 8 2 12 1 5 2
9 2 1 3 3 1 7 1 4 2
;
proc print;
run;
proc anova data=data51;
class group;
model y=group;
means group;
run;
quit;

/*习题5—2*/
title;
data data52;
do type='a','b','c';
input n @;
do i=1 to n;
input cea @@; output;
end;
end;
drop i n;
cards;
32 20.4 265.3 170.5 28.5 57.0 64.6 30.2 175.0 360.0 108.5 189.6
87.3 210.4 169.8 78.4 472.5 59.3 365.0 356.4 86.4 158.6 259.3
56.8 254.0 128.0 238.7 380.2 37.8 262.3 24.1 253.6 210.5 35
281.0 766.2 66.8 425.7 584.1 587.7 377.1 495.0 521.3 270.8 648.8
86.8 230.0 87.3 327.8 378.5 485.6 532.1 537.9 389.8 421.4 228.0 110.8
311.6 248.7 423.9 149.7 538.7 398.7 442.2 571.4 577.3 47.5 245.6 452.6 28
480.0 725.6 600.0 608.4 348.6 488.9 590.0 1380.0 688.5 550.0
350.7 765.0 438.5 630.5 640.0 652.8 1200.0 652.4 750.0 464.8
1400.0 231.2 432.8 815.0 850.0 485.3 296.1 664.0
;
proc print;
run;

284
SAS 操作入门 编者:江南大学 吴有炜 285

/* 5-2(1) ;*/
proc sort;
by type;
proc univariate data=data52 normal;
by type;
var cea;
run;

/* 5-2(2) ;*/
proc anova data=data52;
class type;
model cea=type;
means type/t;
run;
proc glm data=data52;
class type;
model cea=type;
run;
quit;

/*习题5—3*/
data data53;
do a='a1','a2','a3';
do b='b1','b2','b3','b4';
do n=1 to 2;
input x@@;output;
end;
end;
end;
cards;
19.3 19.2 24.0 27.3 26.0 28.5 27.8 28.5
21.7 22.6 27.5 30.3 29.0 28.7 30.2 29.8
20.0 20.1 24.2 27.3 24.5 27.1 28.1 27.7
;
proc print;
run;

/* 5-3(1),(2),(3),(4),(5) ;*/
proc anova data=data53;
class a b ;
model x=a b a*b;
means a b / t ;
run;
quit;

/*习题5—4*/

285
SAS 操作入门 编者:江南大学 吴有炜 286

data ads;
do ad='paper','radio','people','display';
do area=1 to 6;
do n=1 to 6;
input sales @@;
output;
end;end;
end;
cards;
75 57 76 68 75 83 77 75 72 66 66 76 76 81 63 70 86 62
94 54 70 88 56 86 87 65 65 84 77 78 79 62 75 80 62 70
69 51 100 54 78 79 90 77 60 83 74 69 33 79 73 68 75 65
100 61 68 70 53 73 68 63 83 79 66 65 76 73 74 81 57 65
63 67 85 58 82 78 80 87 62 87 70 77 70 75 40 68 61 55
64 40 67 76 70 77 51 61 75 42 71 65 64 50 62 78 37 83
52 61 61 41 44 86 76 57 52 75 75 63 33 69 60 52 61 43
61 66 41 69 43 51 65 58 50 60 52 55 44 45 58 52 45 60
;
proc print;
run;

/* 5-4(1)+(2) ;*/
proc sort;
by ad;
run;
proc univariate data=ads plot normal;
by ad;
var sales;
run;

/* 5-4(2) ;*/
proc anova data=ads;
class ad;
model sales=ad;
means ad /t;
run;

/* 5-4(3) ;*/
proc anova data=ads;
class ad area;
model sales=ad area ad*area;
means ad area/t;
run;

286
SAS 操作入门 编者:江南大学 吴有炜 287

quit;

/*习题六*/

/*习题6—1*/
data data61;
input x1 x2 y;
n=_n_;
cards;
120 100 102
140 110 100
190 90 120
130 150 77
155 210 46
175 150 93
125 250 26
145 270 69
180 300 65
150 250 85
170 160 .
;
proc print;
run;

/* 6-1(1)+(2)+(3) ;*/
proc reg data=data61;
model y=x1 x2 / r;
output out=o61 cookd=d student=stu ;
run;

/* 6-1(2) ;*/
data r61(keep= n y d stu );
set o61;
if abs(stu)>=2 or abs(d) > 4/10 ;
run;
proc print data=r61;
id n;
var y d stu;
run;

/* 6-1(4) ;*/
data da61;
set data61;

287
SAS 操作入门 编者:江南大学 吴有炜 288

x3=x1*x1;x4=x1*x2;x5=x2*x2;
run;
proc print;
run;

proc reg data=da61;


model y=x1-x5/selection=stepwise
sle=0.10 sls=0.10;
run;
quit;

/*习题6—2*/
data data62;
input x1-x4 y;
cards;
82.9 92.0 17.1 94.0 8.4
88.0 93.0 21.3 96.0 9.6
99.9 96.0 25.1 97.0 10.4
105.3 94.0 29.0 97.0 11.4
117.7 100.0 34.0 100.0 12.2
131.0 101.0 40.0 101.0 14.2
148.2 105.0 44.0 104.0 15.8
161.8 112.0 49.0 109.0 17.9
174.2 112.0 51.0 111.0 19.6
184.7 112.0 53.0 111.0 20.8
;
proc print;
run;

proc reg data=data62;


model y=x1-x4;
run;
quit;

/*习题6—3*/

data data63;
input x1 x2 y;
n=_n_;
cards;

288
SAS 操作入门 编者:江南大学 吴有炜 289

1.5 5.0 96
2.0 2.0 90
1.5 4.0 95
2.5 2.5 92
3.3 3.0 95
2.3 3.5 95
4.2 2.5 94
2.5 3.0 94
3.5 2.0 .
;
proc print;
run;

/* 6-3(1)+(2)+(3)+(4) ;*/
proc reg data=data63;
model y=x1 x2 / r;
output out=o63 cookd=d student=stu ;
run;

/* 6-3(2) ;*/
data r63(keep= n y d stu );
set o63;
if abs(stu)>=2 or abs(d) > 4/8 ;
run;
proc print data=r63;
id n;
var y d stu;
run;

data data64;
input x y @@;
cards;
2 106.42 3 108.20 4 109.58 5 109.50 7 110.00 8 109.93 10 110.49
11 110.59 14 110.60 15 110.90 16 110.76 18 111.00 19 111.20
;
proc print;
run;

/*习题6--4
* 6-4(1);*/
proc plot data=data64;
plot y*x='*';
run;

289
SAS 操作入门 编者:江南大学 吴有炜 290

/* 6-4(2.1) + (3);*/
data da64a;
set data64;
ya=1/y;xa=1/x;
run;
proc reg data=da64a;
model ya=xa;
output out=ba p=yp1;
run;
data _null_;
retain sumy 0;
set ba;
yb=1/yp1;
sumy+(yb-y)**2;
if _n_<13 then return;
sum0=21.21051;
s=sqrt(sumy/11);r2=1-sumy/sum0;
put @10 sumy= @30 s= @50 r2=;
run;

/* 6-4(2.2) +(3);*/
data da64b;
set data64;
xa=LOG10(x);
run;
proc reg data=da64b;
model y=xa;
run;

/* 6-4(2.3)+(3) ;*/
data da64c;
set data64;
xa=sqrt(x);
run;
proc reg data=da64c;
model y=xa;
run;

/* 6-4(2.4)+(3) ;*/
data da64d;
set data64;
ya=log(y);xa=-1/x;

290
SAS 操作入门 编者:江南大学 吴有炜 291

run;
proc reg data=da64d;
model ya=xa;
output out=bd p=ypd;
run;
data _null_;
retain sum2 0;
set bd;
yd=exp(ypd);sum2+(yd-y)**2;
if _n_<13 then return;
sum0=21.21051;r2=1-sum2/sum0;
s=sqrt(sum2/11);
put @10 sum2= @30 s= @50 r2=;
run;

/*习题6—5*/
data data65;
input x y1 y2 y3 x4 y4;
cards;
10.0 8.04 9.14 7.46 8 6.58
8.0 6.95 8.14 6.77 8 5.76
13.0 7.58 8.74 12.74 8 7.71
9.0 8.81 8.77 7.11 8 8.84
11.0 8.33 9.26 7.81 8 8.47
14.0 9.96 8.10 8.84 8 7.04
6.0 7.24 6.13 6.08 8 5.25
4.0 4.26 3.10 5.39 19 12.50
12.0 10.84 9.13 8.15 8 5.56
7.0 4.82 7.26 6.44 8 7.91
5.0 5.68 4.74 5.73 8 6.89
;
proc print;
id x;
run;

/* 6-5(1) ;*/
options ps=40 ls=75;
proc plot data=data65 vpct=50 hpct=50;
plot y1*x='1' y2*x='2' y3*x='3' y4*x4='4';
run;

/* 6-5(2)+(3) ;*/
options ps=35;
proc reg data=data65;

291
SAS 操作入门 编者:江南大学 吴有炜 292

m1: model y1=x / r;


plot y1*x='1' p.*x='*'/overlay;
plot r.*p.;
m2: model y2=x / r;
plot y2*x='2' p.*x='*'/overlay;
plot r.*p.;
m3: model y3=x/r;
plot y3*x='3' p.*x='*'/overlay;
plot r.*p.;
m4: model y4=x4/r;
plot y4*x4='4' p.*x='*'/overlay;
plot r.*p.;
run;
quit;

/*习题6—6*/
data data66;
input x y @@;
cards;
294 30 247 32 267 37 358 44
423 47 311 49 450 56 534 62
438 68 697 78 688 80 630 84
709 88 627 97 615 100 999 109
1022 114 1015 117 700 106 850 128
980 130 1025 160 1021 97 1200 180
1250 112 1500 210 1650 135
;
proc print;
run;

/* 6-6(1) ;*/
proc reg data=data66;
model y=x / r;
run;

/* 6-6(3)+(2);*/
plot r.*p.='*' r.*x='x';
output out=O66 student=st rstudent=rst residual=r;
run;

/* 6-6(2);*/
proc univariate data=O66 normal;

292
SAS 操作入门 编者:江南大学 吴有炜 293

var st rst r;
run;

/* 6-6(4) ;*/
data da66;
set data66;
ya=sqrt(y);
run;
proc reg data=da66;
model ya=x/r;
plot r.*p.='*' r.*x='x';
run;
quit

/*习题七*/

/*习题 7—1*/
data data71;
input colour $ sex $ n @@;
cards;
男 红 30 男 蓝 10 男 绿 10 女 红 20 女 蓝 10 女 绿 20
;

proc freq data=data71;


tables colour*sex / expected chisq;
weight n;
run;

/*习题7—2*/

data data72;
input a b n @@;
cards;
1 0 36 1 1 14 2 0 22 2 1 28
;

proc freq data=data72;


tables a*b / expected chisq;
weight n;
run;

/*习题7—3*/
data data73;

293
SAS 操作入门 编者:江南大学 吴有炜 294

input method year n @@;


cards;
1 1 38 1 2 12 2 1 43 2 2 32
;
proc freq data=data73;
tables method*year / expected chisq ;
weight n;
run;

/*习题7—4*/

data data74;
input a b n @@;
cards;
0 0 30 0 1 15 0 2 11 0 3 12
1 0 7 1 1 18 1 2 19 1 3 29
2 0 5 2 1 23 2 2 7 2 3 19
;

proc freq data=data74;


tables a*b / expected chisq measures;
weight n;
run;

/*习题7—5*/
data data75;
input purchase income $ sex $ n @@;
cards;
0 低 男 35 0 低 女 55 1 低 男 8 1 低 女 34
0 中 男 58 0 中 女 40 1 中 男 15 1 中 女 31
0 高 男 37 0 高 女 44 1 高 男 38 1 高 女 36
;

/* 7-5(1);*/
proc freq data=data75 order=data;
tables purchase*(income sex) / expected chisq;
weight n;
run;

/* 7-5(2) ;*/
proc freq data=data75 order=data;
tables sex*purchase*income / expected chisq ;
weight n;
run;

294
SAS 操作入门 编者:江南大学 吴有炜 295

/* 7-5(3) ;*/
proc freq data=data75 order=data;
tables purchase*income / expected chisq measures;
weight n;
run;

/*习题八

习题8—1*/
data data81;
input name : $18. x1-x8;
cards;
1(冶金) 90342 52455 101091 19272 82.000 16.100 197435 0.172
2(电力) 4903 1973 2035 10313 34.200 7.100 592077 0.003
3(煤炭) 6735 21139 3767 1780 36.100 8.200 726396 0.003
4(化学) 49454 36241 81557 22504 98.100 25.900 348226 0.985
5(机械) 139190 203505 215898 10609 93.200 12.600 139572 0.628
6(建材) 12215 16219 10351 6382 62.500 8.700 145818 0.066
7(森工) 2372 6572 8103 12329 184.400 22.200 20921 0.152
8(食品) 11062 23078 54935 23804 370.400 41.000 65486 0.263
9(纺织) 17111 23907 52108 21796 221.500 21.500 63806 0.276
10(缝纫) 1206 3930 6126 15586 330.400 29.500 1840 0.437
11(皮革) 2150 5704 6200 10870 184.200 12.000 8913 0.274
12(造纸) 5251 6155 10383 16875 146.400 27.500 78796 0.151
13(文教艺术用品) 14341 13203 19396 14691 94.600 17.800 6354 1.574
;
proc print data=data81;
run;

/* 8-1(1) ;*/
proc princomp data=data81 prefix=z out=o81;
var x1-x8;
run;

/* 8-1(2) ;*/
proc sort data=o81;
by z1;
run;
proc print data=o81;
var name z1 z2 x1-x8;
run;

proc plot data=o81;

295
SAS 操作入门 编者:江南大学 吴有炜 296

plot z2*z1 $ name='*';


run;

proc cluster data=o81 method=ave outtree=b81;


var z1-z3;
run;
proc tree data=b81 horizontal graphics;
run;

/*习题8—2*/
data data82;
input n x1 x2 y1-y7;
cards;
1 843 4000 920 1038 1166 1536 1692 2743 2741
2 942 5215 1216 1280 1549 1924 2717 3743 4160
3 895 6379 1836 2287 2715 3281 3240 4572 5439
4 884 3770 978 1010 1227 1558 1755 2552 2623
5 1002 3329 757 684 718 931 1422 1827 2222
6 792 3039 759 765 1253 1296 1902 1822 2233
7 930 2476 559 616 611 863 891 1539 1768
8 758 2127 633 661 762 769 864 1241 1482
9 886 2721 703 836 813 914 895 1272 1431
10 859 1664 427 451 507 551 581 839 1107
11 808 2435 772 790 839 990 771 1132 1316
12 845 2661 557 599 670 855 1128 1639 1861
13 877 2242 549 471 480 643 664 1173 1530
14 787 3088 1061 1021 978 1102 1301 2373 2452
15 943 3322 567 557 630 836 984 1994 2704
16 866 3507 675 678 847 1187 1476 2107 2415
17 924 3412 545 729 821 1017 1079 1878 2325
18 1806 5869 1268 1227 1607 1765 2318 2959 3157
19 1027 3605 651 835 924 1125 1194 2176 2411
;

proc print data=data82;


run;

/* 8-2(1) ;*/
proc princomp data=data82 n=2 out=o82;
var x1 x2 y1-y7;
run;

/* 8-2(2) ;*/
proc sort data=o82;
by prin1;
run;

296
SAS 操作入门 编者:江南大学 吴有炜 297

proc print data=o82;


var n prin1 prin2 x1 x2 y1-y7;
run;

/* 8-2(3) ;*/
proc cluster data=o82 method=ave outtree=b82;
var prin1 prin2;
id n;
run;
proc tree data=b82 horizontal graphics;
run;
proc cluster data=data82 method=ave outtree=o82;
var x1 x2 y1-y7;
id n;
run;
proc tree data=o82 horizontal graphics;
run;

/*习题8—3*/
data data83;
input group $ x1-x6;
n=_n_;
cards;
北京 190.33 43.77 9.73 60.54 49.01 9.04
天津 135.20 36.40 10.47 44.16 36.49 3.94
河北 95.21 22.83 9.30 22.44 22.81 2.80
山西 104.78 25.11 6.40 9.89 18.17 3.25
内蒙 128.41 27.63 8.94 12.58 23.99 3.27
辽宁 145.68 32.83 17.79 27.29 39.09 3.47
吉林 159.37 33.38 18.37 11.81 25.29 5.22
黑龙江 116.22 29.57 13.24 13.76 21.75 6.04
上海 221.11 38.64 12.53 115.65 50.82 5.89
江苏 144.98 29.12 11.67 42.60 27.30 5.74
浙江 169.92 32.75 12.72 47.12 34.35 5.00
安徽 153.11 23.09 15.62 23.54 18.18 6.39
福建 144.92 21.26 16.96 19.52 21.75 6.73
江西 140.54 21.50 17.64 19.19 15.97 4.94
山东 115.84 30.26 12.20 33.61 33.77 3.85
河南 101.18 23.26 8.46 20.20 20.50 4.30
;
proc print data=data83;
run;
proc princomp data=data83 out=o83;
var x1-x6;
run;

297
SAS 操作入门 编者:江南大学 吴有炜 298

proc sort data=o83;


by prin1;
run;
proc print data=o83;
var group prin1 prin2 x1-x6;
run;

proc cluster data=o83 method=ave outtree=b83;


var prin1 prin2;
id group;
run;
proc tree data=b83 horizontal graphics;
run;

/*习题8—4*/
data data84;
input x1-x6;
n=_n_;
cards;
0.056 0.084 0.031 0.038 0.0081 0.0220
0.049 0.055 0.100 0.110 0.0220 0.0073
0.038 0.130 0.079 0.170 0.0580 0.0430
0.034 0.095 0.058 0.160 0.2000 0.0290
0.084 0.066 0.029 0.320 0.0120 0.0410
0.064 0.072 0.100 0.210 0.0280 1.3800
0.048 0.089 0.062 0.260 0.0380 0.0360
0.069 0.087 0.027 0.050 0.0890 0.0210
;

proc factor data=data84 method=prin rotate=promax p=0.8


n=4 score out=o84 ;
var x1-x6;
run;

proc plot data=o84;


plot factor2*factor2 $ n='+';
run;

proc princomp data=data84 out=o84;


var x1-x6;
run;
proc sort data=o84;
by prin1;
run;
proc print data=o84;
id n prin1 prin2 x1-x6;

298
SAS 操作入门 编者:江南大学 吴有炜 299

run;
options ps=35 ls=80;
proc plot data=o84;
plot prin2*prin1 $ n='*';
run;

/*习题8—5*/
data data85;
input x1-x5 @@;
label x1='力学(闭)' x2='物理(闭)'
x3='代数(开)' x4='分析(开)' x5='统计(开)';
n=_n_;
cards;
77 82 67 67 81 63 78 80 70 81
75 73 71 66 81 55 72 63 70 68
63 63 65 70 63 53 61 72 64 73
51 67 65 65 68 59 70 68 62 56
62 60 58 62 70 64 72 60 62 45
52 64 60 63 54 55 67 59 62 44
50 50 64 55 63 65 63 58 56 37
31 55 60 57 73 60 64 56 54 40
44 69 53 53 53 42 69 61 55 45
62 46 61 57 45 31 49 62 63 62
44 61 52 62 46 49 41 61 49 64
12 58 61 63 67 49 53 49 62 47
54 49 56 47 53 54 53 46 59 44
44 56 55 61 36 18 44 50 57 81
46 52 65 50 35 32 45 49 57 64
30 69 50 52 45 46 49 53 59 37
40 27 54 61 61 31 42 48 54 68
36 59 51 45 51 56 40 56 54 35
46 56 57 49 32 45 42 55 56 40
42 60 54 49 33 40 63 53 54 25
23 55 59 53 44 48 48 49 51 37
41 63 49 46 34 46 52 53 41 40
;
proc print data=data85;
run;
proc factor data=data85 p=0.8 method=prin simple;
var x1-x5;
run;

proc factor data=data85 rotate=varimax n=2 ;


var x1-x5;
run;

299
SAS 操作入门 编者:江南大学 吴有炜 300

proc factor data=data85 score n=2 out=o85;


var x1-x5;
run;
proc print data=o85;
var factor1 factor2;
run;
proc plot data=o85;
plot factor2*factor1 $ n='*'/href=0 vref=0;
run;
quit;

/*习题8—6*/
data data86;
input x1-x4;
n=_n_;
cards;
1.611 10.59 0.69 1.67
1.429 9.44 0.61 1.50
1.447 5.97 0.24 1.25
1.572 10.72 0.75 1.71
1.483 10.99 0.75 1.44
1.371 6.46 0.41 1.31
1.665 10.51 0.53 1.52
1.403 6.11 0.17 1.32
2.620 21.51 1.40 2.59
2.033 24.15 1.80 1.89
2.015 26.86 1.93 2.02
1.501 9.74 0.87 1.48
1.578 14.52 1.12 1.47
1.735 14.64 1.21 1.91
1.453 12.88 0.87 1.52
1.765 17.94 0.89 1.40
1.532 29.42 2.52 1.80
1.488 9.23 0.81 1.45
2.586 16.07 0.82 1.83
1.992 21.63 1.01 1.89
;
proc print data=data86;
run;

/* 8-6(1) ;*/
proc factor data=data86 p=0.8 method=prin simple;
var x1-x4;
run;
proc factor data=data86 rotate=varimax n=2 ;
var x1-x4;

300
SAS 操作入门 编者:江南大学 吴有炜 301

run;
proc factor data=data86 score n=2 out=o86;
var x1-x4;
run;
/* 8-6 (2) ;*/
proc sort data=o86;
by factor1;
run;

proc print data=o86;


var n factor1 factor2 x1-x4;
run;
proc plot data=o86;
plot factor2*factor1 $ n='*'/href=0 vref=0;
run;

proc cluster data=data86 method=ave outtree=oc86;


var x1-x4;
run;
proc tree data=oc86 horizontal graphics;
run;
proc cluster data=data86 method=ward outtree=oc86;
var x1-x4;
run;
proc tree data=oc86 horizontal graphics;
run;
quit;

/*习题九

习题9—1*/
data data91;
input x1-x5 @@;
input x1-x5 @@;
label x1='力学(闭)' x2='物理(闭)'
x3='代数(开)' x4='分析(开)' x5='统计(开)';
n=_n_;
cards;
77 82 67 67 81 63 78 80 70 81
75 73 71 66 81 55 72 63 70 68
63 63 65 70 63 53 61 72 64 73
51 67 65 65 68 59 70 68 62 56
62 60 58 62 70 64 72 60 62 45
52 64 60 63 54 55 67 59 62 44
50 50 64 55 63 65 63 58 56 37
31 55 60 57 73 60 64 56 54 40

301
SAS 操作入门 编者:江南大学 吴有炜 302

44 69 53 53 53 42 69 61 55 45
62 46 61 57 45 31 49 62 63 62
44 61 52 62 46 49 41 61 49 64
12 58 61 63 67 49 53 49 62 47
54 49 56 47 53 54 53 46 59 44
44 56 55 61 36 18 44 50 57 81
46 52 65 50 35 32 45 49 57 64
30 69 50 52 45 46 49 53 59 37
40 27 54 61 61 31 42 48 54 68
36 59 51 45 51 56 40 56 54 35
46 56 57 49 32 45 42 55 56 40
42 60 54 49 33 40 63 53 54 25
23 55 59 53 44 48 48 49 51 37
41 63 49 46 34 46 52 53 41 40
;
proc print data=data91;
run;
proc cancorr data=data91 vprefix=open wprefix=close ;
var x1 x2;
with x3 x4 x5;
run;

/*习题9—2*/
data data92;
input x1-x4;
cards;
191 155 179 145
195 149 201 152
181 148 185 149
183 153 188 149
176 144 171 142
208 157 192 152
189 150 190 149
197 159 189 152
188 152 197 159
192 150 187 151
179 158 186 148
183 147 174 147
174 150 185 152
190 159 195 157
188 151 187 158
163 137 161 130
195 155 183 158
186 153 173 148
181 145 182 146
175 140 165 137

302
SAS 操作入门 编者:江南大学 吴有炜 303

192 154 185 152


174 143 178 147
176 139 176 143
197 167 200 158
190 163 187 150
;
proc print data=data92;
run;

proc cancorr data=data92;


var x1 x2;
with x3 x4;
run;

/*习题十

习题10—1*/
data data101;
input x1-x7;
cards;
0.05798 5.5150 347.10 21.910 8586 1742 61.69
0.08441 3.9700 347.20 19.710 7947 2000 2440.00
0.07217 1.1530 54.85 3.052 3860 1445 9497.00
0.15010 1.7020 307.50 15.030 12290 1461 6380.00
5.74400 2.8540 229.60 9.657 8099 1266 12520.0
0.21300 0.7058 240.30 13.910 8980 2820 4135.00
;
proc print;
run;

/* 10-1(1) ;*/
proc cluster data=data101 method=ave outtree=o101;
var x1-x7;
run;
proc tree data=o101 horizontal graphics;
run;
proc cluster data=data101 method=ward outtree=o101;
var x1-x7;
run;
proc tree data=o101 horizontal graphics;
run;

proc corr data=data101 outp=oc101;


var x1-x7;
run;

303
SAS 操作入门 编者:江南大学 吴有炜 304

data ob101(drop=i);
set oc101(firstobs=4);
array x(7) x1-x7;
do i=1 to 7;
x(i)=1-abs(x(i));
end;
run;
proc print data=ob101;
run;
proc cluster data=ob101 method=ave outtree=o101;
var x1-x7;
run;
proc tree data=o101 horizontal graphics;
run;
proc cluster data=ob101 method=ward outtree=o101;
var x1-x7;
run;
proc tree data=o101 horizontal graphics;
run;

data od101(drop=i);
set oc101(firstobs=4);
array x(7) x1-x7;
do i=1 to 7;
x(i)=sqrt(1-abs(x(i)*x(i)));
end;
run;
proc print data=od101;
run;
proc cluster data=od101 method=ave outtree=o101;
var x1-x7;
run;
proc tree data=o101 horizontal graphics;
run;
proc cluster data=od101 method=ward outtree=o101;
var x1-x7;
run;
proc tree data=o101 horizontal graphics;
run;

/* 10-1 (2) ;*/


proc varclus data=data101;
run;
proc varclus data=data101 maxc=3 summary outtree=tree;
run;

304
SAS 操作入门 编者:江南大学 吴有炜 305

proc tree data=tree horizontal graphics;


run;

/*习题10-2(1) ;*/
data data101;
input type cu ag bi;
cards;
1 2.58 0.90 0.95
1 2.90 1.23 1.00
1 3.55 1.15 1.00
1 2.35 1.15 0.79
1 3.54 1.85 0.79
1 2.70 2.23 1.30
1 2.70 1.70 0.48
0 2.25 1.98 1.06
0 2.16 1.80 1.06
0 2.33 1.74 1.10
0 1.96 1.48 1.04
0 1.94 1.40 1.00
0 3.00 1.30 1.00
0 2.78 1.70 1.48
. 2.95 2.15 1.54
;
proc cluster data=data101 method=ave outtree=o1021;
var cu ag bi;
run;
proc tree data=o1021 horizontal graphics;
run;
proc cluster data=data101 method=ward outtree=o1021;
var cu ag bi;
run;
proc tree data=o1021 horizontal graphics;
run;

/*习题10-2(2) ;*/
data data102;
input obs type gpa gmat @@;
cards;
1 1 2.96 596 32 2 2.54 446 60 3 2.86 494
2 1 3.14 473 33 2 2.43 425 61 3 2.85 496
3 1 3.22 482 34 2 2.20 474 62 3 3.14 419
4 1 3.29 527 35 2 2.36 531 63 3 3.28 371
5 1 3.69 595 36 2 2.57 542 64 3 2.89 447

305
SAS 操作入门 编者:江南大学 吴有炜 306

6 1 3.46 693 37 2 2.35 496 65 3 3.15 343


7 1 3.03 626 38 2 2.51 412 66 3 3.50 402
8 1 3.19 663 39 2 2.51 458 67 3 2.89 485
9 1 3.63 447 40 2 2.36 399 68 3 2.80 444
10 1 3.59 588 41 2 2.36 482 69 3 3.13 416
11 1 3.30 563 42 2 2.66 420 70 3 3.01 471
12 1 3.40 553 43 2 2.68 474 71 3 2.79 490
13 1 3.50 572 44 2 2.48 533 72 3 2.89 481
14 1 3.78 591 45 2 2.46 509 73 3 2.91 446
15 1 3.44 692 46 2 2.63 504 74 3 2.75 546
16 1 3.48 528 47 2 2.44 336 75 3 2.78 467
17 1 3.47 552 48 2 2.13 408 76 3 3.12 462
18 1 3.35 520 49 2 2.41 469 77 3 3.08 440
19 1 3.39 543 50 2 2.55 538 78 3 3.03 419
20 1 3.28 523 51 2 2.31 505 79 3 3.00 509
21 1 3.21 530 52 2 2.41 489 80 3 3.03 438
22 1 3.58 564 53 2 2.09 441 81 3 3.05 399
23 1 3.33 565 54 2 2.35 321 82 3 2.85 483
24 1 3.40 431 55 2 2.60 394 83 3 3.01 453
25 1 3.38 605 56 2 2.55 528 84 3 3.03 414
26 1 3.26 664 57 2 2.70 399 85 3 3.04 446
27 1 3.60 609 58 2 2.85 381 86 . 3.21 497
28 1 3.37 559 59 2 2.90 364
29 1 3.80 521
30 1 3.76 646
31 1 3.24 467
;
proc print;
run;
proc cluster data=data102 method=ave outtree=o1022;
var gpa gmat; copy obs;
id obs;
run;
proc tree data=o1022 horizontal graphics;
run;
proc cluster data=data102 method=ward outtree=o1022;
var gpa gmat;
id obs;
run;
proc tree data=o1022 ncl=3 out=b1022 horizontal graphics;
copy obs;
run;
proc sort data=b1022;
by cluster obs;
proc print data=b1022;
var cluster obs;

306
SAS 操作入门 编者:江南大学 吴有炜 307

run;

/*习题10-2(3) ;*/
data data103;
input x1-x4 type;
cards;
6.0 -11.5 19 90 1
-11.0 -18.5 25 -36 3
90.2 -17.0 17 3 2
-4.0 -15.0 13 54 1
0.0 -14.0 20 35 2
0.5 -11.5 19 37 3
-10.0 -19.0 21 -42 3
0.0 -23.0 5 -35 1
20.0 -22.0 8 -20 3
-100.0 -21.4 7 -15 1
-100.0 -21.5 15 -40 2
13.0 -17.2 18 2 2
-5.0 -18.5 15 18 1
10.0 -18.0 14 50 1
-8.0 -14.0 16 56 1
0.6 -13.0 26 21 3
-40.0 -20.0 22 -50 3
-8.0 -14.0 16 56 .
92.2 -17.0 18 3 .
-14.0 -18.5 25 -36 .
-36.0 -20.0 22 -50 .
;
proc cluster data=data103 method=ave outtree=o1023;
var x1-x4;
run;
proc tree data=o1023 horizontal graphics;
run;
proc cluster data=data103 method=ward outtree=o1023;
var x1-x4;
run;
proc tree data=o1023 horizontal graphics;
run;

307
SAS 操作入门 编者:江南大学 吴有炜 308

/*习题10-2(4) ;*/
data data104;
input x1-x3 type ;
cards;
0.045 0.043 0.265 2
0.066 0.039 0.264 2
0.094 0.061 0.194 2
0.003 0.003 0.102 3
0.048 0.015 0.106 3
0.210 0.066 0.263 1
0.086 0.072 0.274 2
0.196 0.072 0.211 1
0.187 0.082 0.301 1
0.053 0.060 0.209 2
0.020 0.008 0.112 3
0.035 0.015 0.170 3
0.205 0.068 0.284 1
0.088 0.058 0.215 2
0.101 0.052 0.181 .
0.045 0.005 0.122 .
;

proc cluster data=data104 method=ave outtree=o1024;


var x1-x3;
run;
proc tree data=o1024 horizontal graphics;
run;
proc cluster data=data104 method=ward outtree=o1024;
var x1-x3;
run;
proc tree data=o1024 horizontal graphics;
run;

/*习题十一

习题11-1(1) ;/
data data111;
input type cu ag bi;
cards;
1 2.58 0.90 0.95
1 2.90 1.23 1.00
1 3.55 1.15 1.00
1 2.35 1.15 0.79
1 3.54 1.85 0.79
1 2.70 2.23 1.30

308
SAS 操作入门 编者:江南大学 吴有炜 309

1 2.70 1.70 0.48


0 2.25 1.98 1.06
0 2.16 1.80 1.06
0 2.33 1.74 1.10
0 1.96 1.48 1.04
0 1.94 1.40 1.00
0 3.00 1.30 1.00
0 2.78 1.70 1.48
. 2.95 2.15 1.54
;
proc print;
run;

* 11-1(2)+(3) ;
proc discrim data=data111 distance list;
class type;
var cu ag bi;
run;

/* 11-1(1) ;*/
data data111;
input type cu ag bi;
cards;
1 2.58 0.90 0.95
1 2.90 1.23 1.00
1 3.55 1.15 1.00
1 2.35 1.15 0.79
1 3.54 1.85 0.79
1 2.70 2.23 1.30
1 2.70 1.70 0.48
0 2.25 1.98 1.06
0 2.16 1.80 1.06
0 2.33 1.74 1.10
0 1.96 1.48 1.04
0 1.94 1.40 1.00
0 3.00 1.30 1.00
0 2.78 1.70 1.48
. 2.95 2.15 1.54
;
proc print;
run;

/* 11-1(2)+(3) ;*/
proc discrim data=data111 distance list;
class type;
var cu ag bi;

309
SAS 操作入门 编者:江南大学 吴有炜 310

run;

/*习题11—2*/
data data112;
input obs type gpa gmat @@;
cards;
1 1 2.96 596 32 2 2.54 446 60 3 2.86 494
2 1 3.14 473 33 2 2.43 425 61 3 2.85 496
3 1 3.22 482 34 2 2.20 474 62 3 3.14 419
4 1 3.29 527 35 2 2.36 531 63 3 3.28 371
5 1 3.69 595 36 2 2.57 542 64 3 2.89 447
6 1 3.46 693 37 2 2.35 496 65 3 3.15 343
7 1 3.03 626 38 2 2.51 412 66 3 3.50 402
8 1 3.19 663 39 2 2.51 458 67 3 2.89 485
9 1 3.63 447 40 2 2.36 399 68 3 2.80 444
10 1 3.59 588 41 2 2.36 482 69 3 3.13 416
11 1 3.30 563 42 2 2.66 420 70 3 3.01 471
12 1 3.40 553 43 2 2.68 474 71 3 2.79 490
13 1 3.50 572 44 2 2.48 533 72 3 2.89 481
14 1 3.78 591 45 2 2.46 509 73 3 2.91 446
15 1 3.44 692 46 2 2.63 504 74 3 2.75 546
16 1 3.48 528 47 2 2.44 336 75 3 2.78 467
17 1 3.47 552 48 2 2.13 408 76 3 3.12 462
18 1 3.35 520 49 2 2.41 469 77 3 3.08 440
19 1 3.39 543 50 2 2.55 538 78 3 3.03 419
20 1 3.28 523 51 2 2.31 505 79 3 3.00 509
21 1 3.21 530 52 2 2.41 489 80 3 3.03 438
22 1 3.58 564 53 2 2.09 441 81 3 3.05 399
23 1 3.33 565 54 2 2.35 321 82 3 2.85 483
24 1 3.40 431 55 2 2.60 394 83 3 3.01 453
25 1 3.38 605 56 2 2.55 528 84 3 3.03 414
26 1 3.26 664 57 2 2.70 399 85 3 3.04 446
27 1 3.60 609 58 2 2.85 381 86 . 3.21 497
28 1 3.37 559 59 2 2.90 364 29 1 3.80 521
30 1 3.76 646 31 1 3.24 467
;
proc print;
run;

310
SAS 操作入门 编者:江南大学 吴有炜 311

proc discrim data=data112 distance listerr;


id obs;
class type;
var gpa gmat;
run;
proc discrim data=data112 distance listerr crosslisterr;
id obs;
class type;
var gpa gmat;
run;

/*习题11-3(1) ;*/
data data113;
input x1-x4 type;
cards;
6.0 -11.5 19 90 1
-11.0 -18.5 25 -36 3
90.2 -17.0 17 3 2
-4.0 -15.0 13 54 1
0.0 -14.0 20 35 2
0.5 -11.5 19 37 3
-10.0 -19.0 21 -42 3
0.0 -23.0 5 -35 1
20.0 -22.0 8 -20 3
-100.0 -21.4 7 -15 1
-100.0 -21.5 15 -40 2
13.0 -17.2 18 2 2
-5.0 -18.5 15 18 1
10.0 -18.0 14 50 1
-8.0 -14.0 16 56 1
0.6 -13.0 26 21 3
-40.0 -20.0 22 -50 3
-8.0 -14.0 16 56 .
92.2 -17.0 18 3 .
-14.0 -18.5 25 -36 .
-36.0 -20.0 22 -50 .
;
proc print;
run;

/* 11-3(2) ;*/
proc discrim data=data113 distance list;
class type;
var x1-x4;

311
SAS 操作入门 编者:江南大学 吴有炜 312

run;
* 11-3(3) ;
proc discrim data=data113 pool=test distance list;
class type;
priors proportional;
var x1-x4;
run;
proc discrim data=data113 method=npar k=1 list;
class type;
var x1-x4;
run;
proc discrim data=data113 method=npar r=0.5 list;
class type;
var x1-x4;
run;
proc stepdisc data=data113 simple sle=0.18 sls=0.18 ;
class type;
var x1-x4;
run;
proc discrim data=data113 list;
class type;
var x2 x4;
run;
proc stepdisc data=data113 ;
class type;
var x1-x4;
run;
proc discrim data=data113 list;
class type;
var x3 x4;
run;

/*习题11—4*/
data data114;
input x1-x3 type ;
cards;
0.045 0.043 0.265 2
0.066 0.039 0.264 2
0.094 0.061 0.194 2
0.003 0.003 0.102 3
0.048 0.015 0.106 3
0.210 0.066 0.263 1
0.086 0.072 0.274 2
0.196 0.072 0.211 1
0.187 0.082 0.301 1
0.053 0.060 0.209 2

312
SAS 操作入门 编者:江南大学 吴有炜 313

0.020 0.008 0.112 3


0.035 0.015 0.170 3
0.205 0.068 0.284 1
0.088 0.058 0.215 2
0.101 0.052 0.181 .
0.045 0.005 0.122 .
;
proc print data=data114;
run;

/* 11-4(1)+(2) ;*/
proc discrim data=data114 pool=yes list;
class type;
var x1-x3;
priors proportional;
run ;
proc discrim data=data114 pool=test list;
class type;
priors proportional;
var x1-x3;
run ;

SAS 操作入门
(V8 版本)

编者 江南大学理学院 吴有炜

313
SAS 操作入门 编者:江南大学 吴有炜 314

314

You might also like