全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
16833 19
2012-08-01
悬赏 20 个论坛币 未解决
在SAS 的logistic过程中,对于自变量是分类变量时,该如果选择Class选项??
有无Class及Class后的参数不同结果相差很大,并且,2分类及3分类又不相同。

为了什么问题,我设计程序如下,希望高人回答。
/*
sex: 取值0、1
sex1:取值F、M
test:取值0、1、2
数据中,sex对应sex1,其中sex=1对应sex1="M",sex=0对应sex1="F"。
*/

data a;
input y sex sex1$ test @@;
cards;
0      1      M    1
1      1      M    2
0      1      M    2
0      1      M    1
1      1      M    0
0      1      M    1
0      0      F    0
0      0      F    0
0      1      M    1
0      1      M    1
0      1      M    1
0      1      M    1
1      0      F    0
0      1      M    1
0      1      M    2
0      1      M    2
0      1      M    2
0      1      M    1
1      1      M    1
0      1      M    1
0      1      M    1
0      0      F    0
0      1      M    1
0      1      M    1
1      1      M    1
0      1      M    1
1      1      M    2
0      0      F    0
0      1      M    1
0      1      M    2
0      1      M    1
0      1      M    2
0      1      M    1
0      1      M    1
1      0      F    2
0      1      M    2
0      1      M    2
0      1      M    1
0      0      F    0
0      1      M    1
0      1      M    2
1      1      M    1
0      1      M    1
0      0      F    0
0      1      M    1
0      1      M    2
0      1      M    1
0      0      F    0
0      1      M    1
1      1      M    1
;
run;

proc  logistic data=a desc;
title '例1:SEX1 F and M 有class Ref=“M”';
class sex1(param=ref ref="M");
model y=sex1;
run;

proc  logistic data=a desc;
title '例2:SEX1 F and M 有class Ref=“F”';
class sex1(param=ref ref="F");
model y=sex1;
run;

proc  logistic data=a desc;
title '例3:SEX 0 and 1 有 class  ref="1"';
class sex(param=ref ref="1");
model y=sex;
run;

proc  logistic data=a desc;
title '例4:SEX 0 and 1 有 class  ref="0"';
class sex(param=ref ref="0");
model y=sex;
run;

proc  logistic data=a desc;
title '例5:SEX 0 and 1 无 class';
model y=sex;
run;

proc  logistic data=a desc;
title '例6:SEX 0 and 1 有 class  ref=last';
class sex(param=ref ref=last);
model y=sex;
run;

proc  logistic data=a desc;
title '例7:SEX 0 and 1 有 class  ref=first';
class sex(param=ref ref=first);
model y=sex;
run;

proc  logistic data=a desc;
title '例8:SEX 0 and 1 有 class 有param无ref参数';
class sex(param=ref);
model y=sex;
run;

proc  logistic data=a desc;
title '例9:SEX 0 and 1 有 class 无任何参数';
class sex;
model y=sex;
run;

proc  logistic data=a desc;
title '例10:Test 0、1、2 有 class  ref="2"';
class Test(param=ref ref="2");
model y=Test;
run;

proc  logistic data=a desc;
title '例11:Test 0、1、2 有 class  ref="0"';
class Test(param=ref ref="0");
model y=Test;
run;

proc  logistic data=a desc;
title '例12:Test 0、1、2 无 class';
model y=Test;
run;

proc  logistic data=a desc;
title '例13:Test 0、1、2 有 class  ref=last';
class Test(param=ref ref=last);
model y=Test;
run;

proc  logistic data=a desc;
title '例14:Test 0、1、2 有 class  ref=first';
class Test(param=ref ref=first);
model y=Test;
run;

proc  logistic data=a desc;
title '例15:Test 0、1、2 有 class 有param无ref参数';
class Test(param=ref);
model y=Test;
run;

proc  logistic data=a desc;
title '例16:Test 0、1、2 有 class 无任何参数';
class Test;
model y=Test;
run;



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-8-1 15:28:15
为了方便观察结果异同,我把主要结果摘录如下

                                    Parameter      DF    Estimate       Error    Chi-Square    Pr > ChiSq
例1:SEX1 F and M 有class Ref=“M”:sex1      F     1      0.3278      0.9028        0.1319        0.7165
例2:SEX1 F and M 有class Ref=“F”:sex1      M     1     -0.3278      0.9028        0.1319        0.7165
例3:SEX 0 and 1 有 class  ref="1" :sex       0     1      0.3278      0.9028        0.1319        0.7165
例4:SEX 0 and 1 有 class  ref="0" :sex       1     1     -0.3278      0.9028        0.1319        0.7165
例5:SEX 0 and 1 无 class          :sex             1     -0.3278      0.9028        0.1319        0.7165
例6:SEX 0 and 1 有 class  ref=last:sex       0     1      0.3278      0.9028        0.1319        0.7165
例7:SEX 0 and 1 有 class ref=first:sex       1     1     -0.3278      0.9028        0.1319        0.7165
例8:SEX 0and1 有class有param无ref参数:sex    0     1      0.3278      0.9028        0.1319        0.7165
例9:SEX 0 and 1 有class 无任何参数:sex       0     1      0.1639      0.4514        0.1319        0.7165

                                        Parameter      DF    Estimate       Error    Chi-Square    Pr > ChiSq
例10:Test 0、1、2 有 class  ref="2":   test      0     1     -0.0488      1.0374        0.0022        0.9625
                                        test      1     1     -0.5878      0.8515        0.4765        0.4900

例11:Test 0、1、2 有 class  ref="0":   test      1     1     -0.5390      0.9667        0.3109        0.5771
                                        test      2     1      0.0488      1.0374        0.0022        0.9625

例12:Test 0、1、2 无 class         :   test            1      0.0877      0.5604        0.0245        0.8757

例13:Test 0、1、2 有 class  ref=last:  test      0     1     -0.0488      1.0374        0.0022        0.9625
                                        test      1     1     -0.5878      0.8515        0.4765        0.4900

例14:Test 0、1、2 有 class  ref=first: test      1     1     -0.5390      0.9667        0.3109        0.5771
                                        test      2     1      0.0488      1.0374        0.0022        0.9625

例15:Test 0、1、2 有 class 有param无ref参数:test 0     1     -0.0488      1.0374        0.0022        0.9625
                                        test      1     1     -0.5878      0.8515        0.4765        0.4900

例16:Test 0、1、2 有 class 无任何参数: test      0     1      0.1634      0.6052        0.0729        0.7872
                                        test      1     1     -0.3756      0.4992        0.5661        0.4518
结果截图
aaa.txt
大小:(2.63 KB)

 马上下载



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-8-1 18:16:31
Rock2000 发表于 2012-8-1 15:28
为了方便观察结果异同,我把主要结果摘录如下

                                    Parameter      DF  ...
1.如果是两分类变量,其实分类不分类效果都是一样的;
2.多分类变量,如果是数值型,不指定分类,SAS会当做连续变量处理(分类变量时有序分类变量时,比如年龄段,工资水平等,记成1,2,3,4等等,这样处理是有意义的,如果是无序分类变量,这样处理就没有任何意 义);如果是非数值型,SAS会报错;
3.对待多分类无序变量,是必须要设置成分类变量的;
SAS对分类变量,采用param=ref;
即分类变量 Response Profile是
[1 0
0 1
0 0]
的形式;
作为参照对象的参数估计为0;这样在估计oddratios比较方便,分类水平vs参照的水平的优势比=exp(该水平参数估计)
4.不指定ref参数,SAS会以最大值最为参照水平,比如sex会以1作为参照水平;
所以楼主上面好多程序其实是一样的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-8-1 18:52:11
实在太长了,没有仔细看。
不过,楼上是正解!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-8-1 19:07:59
ziyenano 发表于 2012-8-1 18:16
1.如果是两分类变量,其实分类不分类效果都是一样的;
2.多分类变量,如果是数值型,不指定分类,SAS会当 ...
对于二分类变量,请注意例1、例5、例8、例9。
按SAS help,如果有Class=ref未再加任何任何参数,或没有Class,均默认 class=ref ref=last;从结果看确实是如此,但现在问题是,例9有Class没有加参数,结果完全不一样了,何解???

如果遇到二分类变量,是否加Class?还是不加Class?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-8-1 19:55:34
Rock2000 发表于 2012-8-1 19:07
对于二分类变量,请注意例1、例5、例8、例9。
按SAS help,如果有Class=ref未再加任何任何参数,或没有C ...
1.例8,没有设置ref参数,以1为参照水平,也即sex='M',故例1,例8是完全一样的;
其结果为0.378,即与参照水平M相比,F高出M 0.3278,(注:为了容易理解就这么说了,严格来讲这种说法是不正确的)
2.例5,没有设置分类变量,故等同于连续变量,0到1增加一个单位,-3.278*1-0.3278*0=-0.3278,
即 F 到 M 下降了0.3278,与上面是一致的(综上就是两分类变量分类不分类一样的原因);
3.例9,在没有设置param参数时,SAS默认是param=effect;
Response Profile
[1 0
0 1
-1 -1]
的形式;
参照水平的参数估计=-1*其余水平1参数估计+-1*其余水平2参数估计....
故例9的参照水平M=-1*0.1639=-0.1639;
F与M参数估计差为=0.1639-(-0.1639)=0.3278;
与上述的结论是一样的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群