转载自:http://Johnthu.spaces.live.com/
这篇将作为五一后一个讲稿的阅读材料之一,先整出来就搁这。如果没有耐心读下去,你可以立即转到以下的参考资料,该篇所有的知识都来自它们:
- 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部分。我这篇的例子即来于此,有简化; - SAS OnlineDoc V8, 或者SAS OnlineDoc V9, 是要花功夫熟悉它们的结构了。以前我四处下载了数G的电子书,现在才发觉还是它们好使。体例上V8和V9一样,你找到SAS/STAT–>SAS/STAT User’s Guide–>The LOGISTIC Procedure, 就可以跟着学习了,文字都非常简明。
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,你可以把它理解成向量形式。
假设我们有一个数据,45个观测值,四个变量,包括:
- age(年龄,数值型);
- vision(视力状况,分类型,1表示好,0表示有问题);
- drive(驾车教育,分类型,1表示参加过驾车教育,0表示没有) 和
- 一个分类型输出变量accident(去年是否出过事故,1表示出过事故,0表示没有)。我们的目的就是要考察前三个变量与发生事故的关系。
为了保持程序的可读性,以下我就直接在代码中一行一行敲入数据,在实际工作中,超过20个观测值的数据就要写程序导入了。另外,之间的语句都是注释,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
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 logistic data=logistic desending;
model accident=age vision drive; run;
proc logistic data=logistic desending;
model accident=age vision drive /
selection=forward;run;
—————————————————————————————————————————-
用上面这个过程步乙替代过程步甲,再运行一遍。这两个过程步的输出结果大同小异,只是过程步乙多了个forward选项。以下用的是过程步乙的输出结果,其中黑体字是输出结果本身,我做的注释语句以红笔描出,包括数字编号。
Data Set
Response Variable
Number of Response Levels
Number of Observations
Model
Optimization Technique
Ordered
Probability modeled is accident=1.
(1) 给出了本模型的基本信息,意思大多自明。需要注意的是Response Profile 中,accident=1排在首位。前面我们说过,SAS的Logistic回归方程log(odds)默认的形式是处理那个变量值比较小的,加上descending选项后,accident=1就排在首位了。
Step 0. Intercept entered:
Convergence criterion (GCONV=1E-8) satisfied.
Chi-Square
Step 1. Effect vision entered:
Convergence criterion (GCONV=1E-8) satisfied.
Criterion
AIC
SC
-2 Log L
Test
Likelihood Ratio
Score
Wald
Chi-Square
Step 2. Effect drive entered:
Criterion
AIC
SC
-2 Log L
Test
Likelihood Ratio
Score
Wald
Chi-Square
NOTE: No (additional) effects met the 0.05 significance level for entry into the model.
(2) 给出了自变量进入模型的次序。先是截距项Step 0了,不管它。Step 1 vision第一个进入模型,附带了很多评估它对因变量预测能力的指标。-2 Log L
Step
1
2
Parameter
Intercept
vision
drive
(4) 给出了模型参数的估计,据此可以写出改回归方程的形式是log(odds of having an accident)=log(p/(1-p))=0.1110+1.7137*vision-1.5000*drive。我们知道,odds=p/(1-p),有p=odds/(1+odds)。假设有个哥们,视力没问题但没有受过驾车教育(vision=0,drive=0),代入方程,有log(odds)=0.1110,再odds=exp(0.110)=1.1174,p=1.1174/2.1174=0.5277,即我们说这人发生事故的概率为0.5277;又另一个,视力有问题同样没受过驾车教育(vision=1,drive=0),同样的步骤得log(odds)=1.8249,odds=exp(1.8249)=6.2022,p=6.2022/7.2022=0.8612,即这人发生事故的概率为0.8612(视力多重要)。
Effect
vision
drive
Percent Concordant
Percent Discordant
Percent Tied
Pairs
(6) 这个东西就有些复杂,大概说些预测概率与观测道德因变量间的关联性,我们看到一致性比率Percent Concordant
最后注意到,上面我们用过程步乙得出的输出结果没有age这个自变量,用过程步甲得出的输出有,这不是因为年龄在这个预测模型中不重要,而是上面以数值型面目出现的年龄在是否出现事故的两组人中分布不均匀,为了解决这个问题,把年龄分组就是,不多说了。
原创文章,作者:xsmile,如若转载,请注明出处:http://www.17bigdata.com/sas-logistic%e5%9b%9e%e5%bd%92%ef%bc%9a%e4%b8%80%e4%b8%aa%e5%ae%8c%e6%95%b4%e4%be%8b%e5%ad%90/
注意:本文归作者所有,未经作者允许,不得转载