没有调整其他因素前:A/B/P三种治疗方式出现神经痛的频率是15%,25%及75%,现在想了解调整其他因素之后三种方式神经痛的出现频率。
事例来源:SAS 帮助proc logistic回归 Example 54.2 Logistic Modeling with Categorical Predictors,为方便分析,稍加修改。
- Data Neuralgia;
- input Treatment [ DISCUZ_CODE_14 ]nbsp; Sex Age Duration Pain @@;
- datalines;
- P 0 68 1 0 B 1 74 16 0 P 0 67 30 0
- P 1 66 13 1 B 0 67 28 0 B 0 77 32 0
- A 0 71 24 0 B 0 72 50 0 B 0 76 9 1
- A 1 71 34 0 A 0 63 27 0 A 0 69 36 0
- B 0 66 24 0 A 1 62 42 0 P 0 64 1 1
- A 0 64 34 0 P 1 74 4 0 A 0 72 25 0
- P 1 70 1 1 B 1 66 19 0 B 1 59 29 0
- A 0 64 30 0 A 1 70 28 0 A 1 69 10 0
- B 0 78 1 0 P 1 83 1 1 B 0 69 42 0
- B 1 75 30 0 P 1 77 11 1 P 0 79 10 1
- A 1 70 24 0 A 0 69 12 0 B 0 65 28 0
- B 1 70 10 0 B 1 67 23 0 A 1 76 12 1
- P 1 78 12 1 B 1 77 1 1 B 0 69 24 0
- P 1 66 4 1 P 0 65 29 0 P 1 60 13 1
- A 1 78 5 1 B 1 75 10 1 A 0 67 22 0
- P 0 72 27 0 P 0 70 13 1 A 1 75 6 1
- B 0 65 14 0 P 0 68 13 1 P 1 68 1 1
- P 1 67 17 1 B 1 70 22 0 A 1 65 30 0
- P 0 67 1 1 A 1 67 10 0 P 0 72 1 1
- A 0 74 10 0 B 1 80 11 1 A 0 69 9 0
- ;
- proc freq data= Neuralgia;
- table Pain*Treatment/nopercent norow;
- run;
- /*检验Logistic回归能否得到与freq过程一样的频数*/
- PROC LOGISTIC DATA= Neuralgia Descend ;
- class Treatment ;
- MODEL Pain = Treatment ;
- OUTPUT OUT= logi_out1 prob=prob ;
- RUN;
- proc sort data= logi_out1;
- by Treatment;
- run;
- proc univariate data=logi_out1 noprint;
- var prob;
- by Treatment;
- output out=sum1 mean=mean_prob;
- run;
- proc print data=sum1;
- var _all_;
- run;
- /*检验GLM模型能否得到与freq过程一样的频数*/
- PROC GLM data= Neuralgia;
- class Treatment ;
- MODEL Pain = Treatment /solution;
- lsmeans Treatment /stderr;
- RUN;
从结果可以看到:
1、Logistic回归可以得到与freq过程一样的频数,从相应过程来看,实际Logistic回归得到的频数是结局事件按照分组变量所得到的的平均预测概率
2、GLM模型同样可以得到与freq过程一样的频数,但从GLM过程可以知道,所得的频率是将两种结局的取值0和1当成简单的数值0和1,然后采用协方差思想得到的最小二乘估计的均数(lsmeans)
基于如此的思路,理论上可以采用Logistic回归以及GLM模型得到调整其他变量之后的结局变量相对于分组变量的调整概率。
同时从上述程序可以看到,GLM模型相对更加容易得到结局变量相当于分组变量的调整概率。具体程序如下:
- /*基于Logistic回归得到调整其他变量之后,Pain根据Treatment分组之后的调整概率*/
- PROC LOGISTIC DATA= Neuralgia Descend ;
- class Treatment Sex;
- MODEL Pain = Treatment Sex Age Duration;
- OUTPUT OUT= logi_out2 prob=prob ;
- RUN;
- proc sort data= logi_out2;
- by Treatment;
- run;
- proc univariate data=logi_out2 noprint;
- var prob;
- by Treatment;
- output out=sum2 mean=mean_prob;
- run;
- proc print data=sum2;
- var _all_;
- run;
- /*基于GLM模型得到调整其他变量之后,Pain根据Treatment分组之后的调整概率*/
- PROC GLM data= Neuralgia;
- class Treatment Sex;
- MODEL Pain = Treatment Sex Age Duration/solution;
- lsmeans Treatment /stderr;
- RUN;
Logistic回归可以得到的“调整概率”与未调整前是一样的,但是GLM模型得到的调整概率却发生了变化,简单的理解:Logistic回归构建的调整概率是结局事件按照分组变量所得到的的平均预测概率。这种平均预测概率未发生改变的原因是:在调整其他因素之后,虽然个体预测概率确实发生改变了,但实际是将人群按照分层变量分组后,重新将处于同一组的人群进行了一个更加细致的分层,而实际同一组人群的平均概率并未发生改变。
至于为什么GLM模型得到的调整概率发生了变化,而且很有可能更加接近真实想要的结果,需要进一步的研究。



雷达卡





京公网安备 11010802022788号







