请选择 进入手机版 | 继续访问电脑版
楼主: webgu
25192 16

[原创博文] 关于Logistic回归中哑变量的设置及OR值的计算 [推广有奖]

贵宾

学科带头人

95%

还不是VIP/贵宾

-

TA的文库  其他...

Python与统计

SAS与统计

威望
2
论坛币
102554 个
通用积分
3.6187
学术水平
475 点
热心指数
493 点
信用等级
434 点
经验
62375 点
帖子
1557
精华
4
在线时间
2201 小时
注册时间
2009-5-4
最后登录
2023-10-23

初级学术勋章 初级热心勋章 初级信用勋章 中级学术勋章 中级热心勋章 中级信用勋章

webgu 发表于 2012-11-27 16:18:47 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币


proc logistic中,如果自变量是多值 分类变量,需要设置哑变量。多数统计书中会告诉你如果某一变量有N个值,那么你可以设N-1个哑变量。早期的SAS书或统计书中都会教 你用if语句设置哑变量,而后代入Logistic模型。其实,proclogistic是可以用class语句为分类变量 自动设置哑变量。具体而言,是在class语句后加选面paraeffct|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;

可以看到哑变量的设计矩阵。

1.png

把三种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 如下:

2.png

可以看出,Para的不同参数,其设计矩阵是不一样的。估计的系数也不尽相同。但SAS给出的OR是相同的。其间的计算过程是怎么样的,对这一块一直有些模糊,今天终于清理了下。

Logistic的线性部分其实是ln(Odds)部分,odds=exp(线性部分)。当自变量取值 分别为e1, e0时,e1相对于e0Odds  Ratioexp(β(e1-e0) )据此,把设计矩阵里的值代入,可推得其计算过程大体如下图黄色部分。


3.png

paramglm时,cat=3β0,所以和para=ref的结果是一样的。Para=effect时,βOR会很细小的差异。


请多多指导,谢谢。


http://blog.sina.com.cn/s/blog_41889b900101fskx.html




二维码

扫码加我 拉你入群

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

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

关键词:logistic回归 logistic ogistic logisti logist 计算

本帖被以下文库推荐

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365
henryyhl 发表于 2012-11-28 08:50:39 |显示全部楼层 |坛友微信交流群
支持楼主,还得需要在实践中才能体会到啊,继续体会
It's not going to be easy, but it is going to be worth it.

使用道具

webgu 发表于 2012-11-28 09:43:14 |显示全部楼层 |坛友微信交流群
henryyhl 发表于 2012-11-28 08:50
支持楼主,还得需要在实践中才能体会到啊,继续体会
谢谢支持。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

pingguzh 发表于 2012-12-3 10:19:29 |显示全部楼层 |坛友微信交流群
支持一下哦,从设计矩阵的角度谈到了这个问题的原理
统计爱好

使用道具

webgu 发表于 2012-12-3 10:52:27 |显示全部楼层 |坛友微信交流群
pingguzh 发表于 2012-12-3 10:19
支持一下哦,从设计矩阵的角度谈到了这个问题的原理
呵呵,这个贴子要沉了。好像没人感兴趣。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

可青 发表于 2013-3-23 11:04:38 来自手机 |显示全部楼层 |坛友微信交流群
谢谢分享,请教一个问题,是否遇见过OR不包含1,而P值大于0.05的情况?我现在碰到了不知道是什么原因

使用道具

webgu 发表于 2013-3-23 12:05:48 |显示全部楼层 |坛友微信交流群
可青 发表于 2013-3-23 11:04
谢谢分享,请教一个问题,是否遇见过OR不包含1,而P值大于0.05的情况?我现在碰到了不知道是什么原因
应该很接近1吧?
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

jingju11 发表于 2013-4-25 06:17:29 |显示全部楼层 |坛友微信交流群
可青 发表于 2013-3-23 11:04
谢谢分享,请教一个问题,是否遇见过OR不包含1,而P值大于0.05的情况?我现在碰到了不知道是什么原因
看似矛盾的可能(也许唯一)原因是使用了effect的参数化方式(或者说非glm和ref)。p值检测的是beta=0,恒等于检测exp(beta) =1,因为exp方程是1-1的。而后者即是在glm和ref的条件下检测or=1.不包含1的or在GLM/REF的条件下当然意味着p<0.05.
另外通常意义上的OR和设计矩阵是独立的。所以无论用了何种设计矩阵,or往往是不变的,改变得的是exp(beta),就是通常讲的ilink。
例子里的or有差异,估计是在excel做运算时的输入值的计算误差造成的。也就是说PROC logistic的ODDSRATIOS给出的OR值和模型里规定的设计矩阵没有关系,应该并不存在差异,即使是微小的差异。
京剧

使用道具

不同的param的设置,其得到德OR必须是一样的,你当中的细微差别是因为你导出的回归系数只是精确到小数点后4位,其实这个系数的小数点后长度可能长达100位,甚至是无穷。所以在将第5位小数点数值四舍五入后,系数本身的值在不同的param=设置下有了细微的差别,然后就显示在OR值上了。这三个param=的设置本身就是构建了不同的设计矩阵,其原理是一样的。其结果是一致的。
Logistic Model是一个可以很数学化的模型,其过程简单、直观、易懂。背离统计学理论本身做程序的测试,以机器结果为理论根本,是本末倒置的。
看来要和数据打一辈子的交道了!

使用道具

吕小布韦 发表于 2013-7-26 16:40:07 |显示全部楼层 |坛友微信交流群
比较不理解的是,设置这三种模式有何区别?是为了分别应对不同的任务么?

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-17 06:36