在proc logistic中,如果自变量是多值 分类变量,需要设置哑变量。多数统计书中会告诉你如果某一变量有N个值,那么你可以设N-1个哑变量。早期的SAS书或统计书中都会教 你用if语句设置哑变量,而后代入Logistic模型。其实,proclogistic是可以用class语句为分类变量 自动设置哑变量。具体而言,是在class语句后加选面para=effct|glm|ref来实现的。不用para选项时,默认是effect.
借sashelp.class为例(只是图个方便,不要考虑实际意义)
data class;
setsashelp.class;
cat=floor(ranuni(199323)*3+1);
run;
proclogisticdata=class;
classcat;
modelsex=cat age height weight;
run;
可以看到哑变量的设计矩阵。
把三种PARA全跑一下:
proclogisticdata=class;
classcat/param=effect;
modelsex=cat age height weight;
run;
proclogisticdata=class;
classcat/param=glm;
modelsex=cat age height weight;
run;
proclogisticdata=class;
classcat/param=ref;
modelsex=cat age height weight;
run;
总结其设计矩阵及OR值 如下:
可以看出,Para的不同参数,其设计矩阵是不一样的。估计的系数也不尽相同。但SAS给出的OR是相同的。其间的计算过程是怎么样的,对这一块一直有些模糊,今天终于清理了下。
Logistic的线性部分其实是ln(Odds)部分,odds=exp(线性部分)。当自变量取值 分别为e1, e0时,e1相对于e0的Odds Ratio=exp(β(e1-e0) )。据此,把设计矩阵里的值代入,可推得其计算过程大体如下图黄色部分。
当param=glm时,cat=3的β=0,所以和para=ref的结果是一样的。Para=effect时,β、OR会很细小的差异。
请多多指导,谢谢。
http://blog.sina.com.cn/s/blog_41889b900101fskx.html