SAS Logistic回归:一个完整例子
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
假设我们有一个数据,45 个观测值,四个变量,包括:
1. age(年龄,数值型); 2. vision(视力状况,分类型,1 表示好,0 表示有问题); 3. drive(驾车教育,分类型,1 表示参加过驾车教育,0 表示没有) 和 4. 一个分类型输出变量 accident(去年是否出过事故,1 表示出过事故,0
则 SAS 会认为出现了一个缺失值。数据输入完毕,以分号结束,这个分号一定要 另起一行。
*/
data logistic; input accident age vision drive; datalines; 1 17 1 1 1 44 0 0 1 48 1 0 1 55 0 0 1 75 1 1 0 35 0 1 0 42 1 1 0 57 0 0 0 28 0 1 0 20 0 1 0 38 1 0 0 45 0 1 0 47 1 1 0 52 0 0 0 55 0 1 1 68 1 0 1 18 1 0 1 68 0 0 1 48 1 1 1 17 0 0 1 70 1 1 1 72 1 0 1 35 0 1 1 19 1 0 1 62 1 0 0 39 1 1 0 40 1 1 0 55 0 0 0 68 0 1 0 25 1 0 0 17 0 0 0 45 0 1 0 44 0 1 0 67 0 0 0 55 0 1 1 61 1 0
/*
前三行,首先 data 步,建立一个叫 logistic 的临时数据集,它在 work 临时文 件夹里。一般推荐用记事本把程序保存起来;input 语句表示一下是几个变量; 从 datalines 开始就一行一行输入数据,每个单独的数据之间用空格隔开,每个 观测值各占一行。需要注意的是,datalines 和下面的数据之间不要有空行,否
(2) Forward Selection Procedure
Step 0. Intercept entered:
Model Convergence Status
Convergence criterion (GCONV=1E-8) satisfied.
Residual Chi-Square Test
Testing Global Null Hypothesis: BETA=0 Test Chi-Square DF Pr > ChiSq Likelihood Ratio 6.5830 1 0.0103 Score 6.4209 1 Biblioteka Baidu.0113 Wald 6.0756 1 0.0137
Residual Chi-Square Test Chi-Square DF Pr > ChiSq 4.9818 2 0.0828
Testing Global Null Hypothesis: BETA=0 Test Chi-Square DF Pr > ChiSq Likelihood Ratio 11.5391 2 0.0031 Score 10.5976 2 0.0050 Wald 8.5949 2 0.0136
Residual Chi-Square Test Chi-Square DF Pr > ChiSq 0.1293 1 0.7191
表示没有)。我们的目的就是要考察前三个变量与发生事故的关系。
为了保持程序的可读性,以下我就直接在代码中一行一行敲入数据,在实际工作 中,超过 20 个观测值的数据就要写程序导入了。另外,/* */之间的语句都是注 释,SAS 运行时会把它们忽略掉:
—————————————————————————————————— ———————-
Logistic 回归处理因变量是分类型变量如“0、1”的情形。一下就假设你至少 对它模模糊糊有些印象,比如说我们用 p 表示正例(如输出变量为“1”)的概 率,那么 p/(1-p)就被称作 odds ratio,对 p 做 logit 变换记做 logit(p),它等 于 log(p/(1-p),我们回归方程的形式就如 logit(p)=log(p/(1-p)=a+bx,你可以 把它理解成向量形式。
Step 2. Effect drive entered: Model Convergence Status Convergence criterion (GCONV=1E-8) satisfied.
Model Fit Statistics Criterion Intercept Only Intercept and Covariates AIC 63.827 56.287 SC 65.633 61.707 -2 Log L 61.827 50.287
NOTE: No (additional) effects met the 0.05 significance level for entry into the model.
(2) 给出了自变量进入模型的次序。先是截距项 Step 0 了,不管它。Step 1 vision 第一个进入模型,附带了很多评估它对因变量预测能力的指标。-2 Log L 和 Score 用来检测自变量是否显著。-2 Log L 中的 L 就是 Likelihood Ratio,它 的 p 值是 0.0103,Score 的 p 值是 0.0113,都小于 0.05,故 vision 是一个很 显著的解释变量。还有,AIC(Akaike Information Criterion)和 SC(Schwarz Criterion)两个信息量标准用来比较不同的模型,它们数值越小,模型变现就越 好,这个接下来我们看 step2 drive 变量进入模型后的情况。 我们可以看到模 型的表现变好了,因为这是 AIC 和 SC 的值变小了,-2 Log L 和 Score 对应的 p 值也更小。
1 19 1 0 1 69 0 0 1 23 1 1 1 19 0 0 1 72 1 1 1 74 1 0 1 31 0 1 1 16 1 0 1 61 1 0 ;
/*
以下两行我们不妨称作过程步甲。过程步以 proc 开头,加上要实现功能的名字, 这里是 logistics,接下来是要引用的数据。值得注意的是那个 desending 选项。 SAS 的 Logistic 回归方程 log(odds)默认的形式是处理那个变量值比较小的,这 里是 accident=0,但我们要考察的是发生事故 accident=1 的情况,加上 desending 降序排列,它就处理 accident=1 的 log(odds)了。再 model 引导的就 是回归方程的形式,写成“因变量=自变量 1 自变量 2 自变量 3”的样子。最后 以 run 结束语句,与 proc 对应。
(3) Summary of Forward Selection Step Effect Entered DF Number In Score Chi-Square Pr > ChiSq 1 vision 1 1 6.4209 0.0113 2 drive 1 2 4.8680 0.0274
(3) 总结了我们模型使用的前向选择方法,包括自变量进入模型的次序,以及每 个自变量的卡方值和 p 值。
Chi-Square DF Pr > ChiSq
10.7057 3 0.0134
Step 1. Effect vision entered:
Model Convergence Status
Convergence criterion (GCONV=1E-8) satisfied. Model Fit Statistics Criterion Intercept Only Intercept and Covariates AIC 63.827 59.244 SC 65.633 62.857 -2 Log L 61.827 55.244
SAS Logistic 回归:代码及输出报告详解
这篇将作为五一后一个讲稿的阅读材料之一,先整出来就搁这。如果没有耐心读 下去,你可以立即转到以下的参考资料,该篇所有的知识都来自它们:
1. Cody, R.F. and Smith, J.K. Applied Statistics and the SAS Programming Language,4th ed..NJ: Prentice-Hall,1997.这书已经出第 五版了,北大图书馆只有这第四版。非常容易上手的一本书,前半部分用 input 和 datalines 让读者专心做统计,后半部分从导入导出数据开始阐 述 SAS 的通用编程语言。这本书用的是 SAS8.这里我们只关注它第九章 Multiple-Regression Analysis 的最后 Logistic Regression 部分。我 这篇的例子即来于此,有简化;
*/
proc logistic data=logistic descending; model accident=age vision drive; run;
/*
运行以上程序,就要跑出一大堆结果了。但在处理多元回归时,语句很难得会只 像过程步甲一样简洁。以下过程步乙只加入一个变量选择选项 forward。SAS 在 处理自变量选择上采用了 5 个技术,这里只简单提一下 3 个常用的技术。
1.forward——前向选择,变量一个个进入回归方程,按照一些卡方标准,最显 著的也就是最好的变量最先进入,然后就是次最好的,以此类推。某个变量一旦 进入,就不再退出;
2.backward——后向剔除,一开始全部变量都进入回归方程,又按照一些标准, 把最不好的变量一一剔除;
3.stepwise——逐步回归,这个跟 forward 有些类似,不同的是,stepwise 在 变量进入以后还有一个 backward 后向剔除的过程,而在 forward 里,变量一旦 进入,就不再退出。
*/
proc logistic data=logistic descending; model accident=age vision drive / selection=forward;run;
—————————————————————————————————— ———————-
用上面这个过程步乙替代过程步甲,再运行一遍。这两个过程步的输出结果大同 小异,只是过程步乙多了个 forward 选项。以下用的是过程步乙的输出结果,其 中黑体字是输出结果本身,我做的注释语句以红笔描出,包括数字编号。
2. SAS OnlineDoc V8, 或者 SAS OnlineDoc V9, 是要花功夫熟悉它们的结 构了。以前我四处下载了数 G 的电子书,现在才发觉还是它们好使。体例 上 V8 和 V9 一样,你找到 SAS/STAT–>SAS/STAT User’s Guide–>The LOGISTIC Procedure, 就可以跟着学习了,文字都非常简明。
(1) The SAS System 10:47 Tuesday, May 4, 2007 1
The LOGISTIC Procedure
Model Information
Data Set WORK.LOGISTIC Response Variable accident Number of Response Levels 2 Number of Observations 45 Model binary logit Optimization Technique Fisher’s scoring
Response Profile Ordered Value accident Total Frequency
1 1 25 2 0 20
Probability modeled is accident=1.
(1) 给出了本模型的基本信息,意思大多自明。需要注意的是 Response Profile 中,accident=1 排在首位。前面我们说过,SAS 的 Logistic 回归方程 log(odds) 默认的形式是处理那个变量值比较小的,加上 descending 选项后,accident=1 就排在首位了。
1. age(年龄,数值型); 2. vision(视力状况,分类型,1 表示好,0 表示有问题); 3. drive(驾车教育,分类型,1 表示参加过驾车教育,0 表示没有) 和 4. 一个分类型输出变量 accident(去年是否出过事故,1 表示出过事故,0
则 SAS 会认为出现了一个缺失值。数据输入完毕,以分号结束,这个分号一定要 另起一行。
*/
data logistic; input accident age vision drive; datalines; 1 17 1 1 1 44 0 0 1 48 1 0 1 55 0 0 1 75 1 1 0 35 0 1 0 42 1 1 0 57 0 0 0 28 0 1 0 20 0 1 0 38 1 0 0 45 0 1 0 47 1 1 0 52 0 0 0 55 0 1 1 68 1 0 1 18 1 0 1 68 0 0 1 48 1 1 1 17 0 0 1 70 1 1 1 72 1 0 1 35 0 1 1 19 1 0 1 62 1 0 0 39 1 1 0 40 1 1 0 55 0 0 0 68 0 1 0 25 1 0 0 17 0 0 0 45 0 1 0 44 0 1 0 67 0 0 0 55 0 1 1 61 1 0
/*
前三行,首先 data 步,建立一个叫 logistic 的临时数据集,它在 work 临时文 件夹里。一般推荐用记事本把程序保存起来;input 语句表示一下是几个变量; 从 datalines 开始就一行一行输入数据,每个单独的数据之间用空格隔开,每个 观测值各占一行。需要注意的是,datalines 和下面的数据之间不要有空行,否
(2) Forward Selection Procedure
Step 0. Intercept entered:
Model Convergence Status
Convergence criterion (GCONV=1E-8) satisfied.
Residual Chi-Square Test
Testing Global Null Hypothesis: BETA=0 Test Chi-Square DF Pr > ChiSq Likelihood Ratio 6.5830 1 0.0103 Score 6.4209 1 Biblioteka Baidu.0113 Wald 6.0756 1 0.0137
Residual Chi-Square Test Chi-Square DF Pr > ChiSq 4.9818 2 0.0828
Testing Global Null Hypothesis: BETA=0 Test Chi-Square DF Pr > ChiSq Likelihood Ratio 11.5391 2 0.0031 Score 10.5976 2 0.0050 Wald 8.5949 2 0.0136
Residual Chi-Square Test Chi-Square DF Pr > ChiSq 0.1293 1 0.7191
表示没有)。我们的目的就是要考察前三个变量与发生事故的关系。
为了保持程序的可读性,以下我就直接在代码中一行一行敲入数据,在实际工作 中,超过 20 个观测值的数据就要写程序导入了。另外,/* */之间的语句都是注 释,SAS 运行时会把它们忽略掉:
—————————————————————————————————— ———————-
Logistic 回归处理因变量是分类型变量如“0、1”的情形。一下就假设你至少 对它模模糊糊有些印象,比如说我们用 p 表示正例(如输出变量为“1”)的概 率,那么 p/(1-p)就被称作 odds ratio,对 p 做 logit 变换记做 logit(p),它等 于 log(p/(1-p),我们回归方程的形式就如 logit(p)=log(p/(1-p)=a+bx,你可以 把它理解成向量形式。
Step 2. Effect drive entered: Model Convergence Status Convergence criterion (GCONV=1E-8) satisfied.
Model Fit Statistics Criterion Intercept Only Intercept and Covariates AIC 63.827 56.287 SC 65.633 61.707 -2 Log L 61.827 50.287
NOTE: No (additional) effects met the 0.05 significance level for entry into the model.
(2) 给出了自变量进入模型的次序。先是截距项 Step 0 了,不管它。Step 1 vision 第一个进入模型,附带了很多评估它对因变量预测能力的指标。-2 Log L 和 Score 用来检测自变量是否显著。-2 Log L 中的 L 就是 Likelihood Ratio,它 的 p 值是 0.0103,Score 的 p 值是 0.0113,都小于 0.05,故 vision 是一个很 显著的解释变量。还有,AIC(Akaike Information Criterion)和 SC(Schwarz Criterion)两个信息量标准用来比较不同的模型,它们数值越小,模型变现就越 好,这个接下来我们看 step2 drive 变量进入模型后的情况。 我们可以看到模 型的表现变好了,因为这是 AIC 和 SC 的值变小了,-2 Log L 和 Score 对应的 p 值也更小。
1 19 1 0 1 69 0 0 1 23 1 1 1 19 0 0 1 72 1 1 1 74 1 0 1 31 0 1 1 16 1 0 1 61 1 0 ;
/*
以下两行我们不妨称作过程步甲。过程步以 proc 开头,加上要实现功能的名字, 这里是 logistics,接下来是要引用的数据。值得注意的是那个 desending 选项。 SAS 的 Logistic 回归方程 log(odds)默认的形式是处理那个变量值比较小的,这 里是 accident=0,但我们要考察的是发生事故 accident=1 的情况,加上 desending 降序排列,它就处理 accident=1 的 log(odds)了。再 model 引导的就 是回归方程的形式,写成“因变量=自变量 1 自变量 2 自变量 3”的样子。最后 以 run 结束语句,与 proc 对应。
(3) Summary of Forward Selection Step Effect Entered DF Number In Score Chi-Square Pr > ChiSq 1 vision 1 1 6.4209 0.0113 2 drive 1 2 4.8680 0.0274
(3) 总结了我们模型使用的前向选择方法,包括自变量进入模型的次序,以及每 个自变量的卡方值和 p 值。
Chi-Square DF Pr > ChiSq
10.7057 3 0.0134
Step 1. Effect vision entered:
Model Convergence Status
Convergence criterion (GCONV=1E-8) satisfied. Model Fit Statistics Criterion Intercept Only Intercept and Covariates AIC 63.827 59.244 SC 65.633 62.857 -2 Log L 61.827 55.244
SAS Logistic 回归:代码及输出报告详解
这篇将作为五一后一个讲稿的阅读材料之一,先整出来就搁这。如果没有耐心读 下去,你可以立即转到以下的参考资料,该篇所有的知识都来自它们:
1. Cody, R.F. and Smith, J.K. Applied Statistics and the SAS Programming Language,4th ed..NJ: Prentice-Hall,1997.这书已经出第 五版了,北大图书馆只有这第四版。非常容易上手的一本书,前半部分用 input 和 datalines 让读者专心做统计,后半部分从导入导出数据开始阐 述 SAS 的通用编程语言。这本书用的是 SAS8.这里我们只关注它第九章 Multiple-Regression Analysis 的最后 Logistic Regression 部分。我 这篇的例子即来于此,有简化;
*/
proc logistic data=logistic descending; model accident=age vision drive; run;
/*
运行以上程序,就要跑出一大堆结果了。但在处理多元回归时,语句很难得会只 像过程步甲一样简洁。以下过程步乙只加入一个变量选择选项 forward。SAS 在 处理自变量选择上采用了 5 个技术,这里只简单提一下 3 个常用的技术。
1.forward——前向选择,变量一个个进入回归方程,按照一些卡方标准,最显 著的也就是最好的变量最先进入,然后就是次最好的,以此类推。某个变量一旦 进入,就不再退出;
2.backward——后向剔除,一开始全部变量都进入回归方程,又按照一些标准, 把最不好的变量一一剔除;
3.stepwise——逐步回归,这个跟 forward 有些类似,不同的是,stepwise 在 变量进入以后还有一个 backward 后向剔除的过程,而在 forward 里,变量一旦 进入,就不再退出。
*/
proc logistic data=logistic descending; model accident=age vision drive / selection=forward;run;
—————————————————————————————————— ———————-
用上面这个过程步乙替代过程步甲,再运行一遍。这两个过程步的输出结果大同 小异,只是过程步乙多了个 forward 选项。以下用的是过程步乙的输出结果,其 中黑体字是输出结果本身,我做的注释语句以红笔描出,包括数字编号。
2. SAS OnlineDoc V8, 或者 SAS OnlineDoc V9, 是要花功夫熟悉它们的结 构了。以前我四处下载了数 G 的电子书,现在才发觉还是它们好使。体例 上 V8 和 V9 一样,你找到 SAS/STAT–>SAS/STAT User’s Guide–>The LOGISTIC Procedure, 就可以跟着学习了,文字都非常简明。
(1) The SAS System 10:47 Tuesday, May 4, 2007 1
The LOGISTIC Procedure
Model Information
Data Set WORK.LOGISTIC Response Variable accident Number of Response Levels 2 Number of Observations 45 Model binary logit Optimization Technique Fisher’s scoring
Response Profile Ordered Value accident Total Frequency
1 1 25 2 0 20
Probability modeled is accident=1.
(1) 给出了本模型的基本信息,意思大多自明。需要注意的是 Response Profile 中,accident=1 排在首位。前面我们说过,SAS 的 Logistic 回归方程 log(odds) 默认的形式是处理那个变量值比较小的,加上 descending 选项后,accident=1 就排在首位了。