如何修改PROC PLM中EffectPlot的目标事件概率展示?
解决方法
问题根源是你在PROC GEE里加了DESCENDING选项,这个选项会强制把变量排序靠后的类别(这里"Nej"字母顺序在"Ja"之后)设为事件类别,直接覆盖了MODEL语句里event='Ja'的设置,导致后续绘图展示的是"Nej"的概率。
你可以按以下两种方式修改:
方式一:移除DESCENDING选项(推荐)
直接删掉PROC GEE语句里的DESCENDING,保留MODEL中的event='Ja',这样模型会正确以"Ja"为事件类别估计概率,PLM绘图也会同步展示"Ja"的概率:
proc gee data=longdata plot=all; class kod enkat(ref="Bas") haft_basvar_hand_handled; model haft_basvar_hand_handled(event='Ja')=enkat jamar_hoger enkat*jamar_hoger/dist=binary; repeated subject=kod; store out=jamarhand; run; title; quit; proc plm restore=jamarhand; effectplot slicefit (x=jamar_hoger sliceby=enkat) / clm; run;
方式二:在PLM中明确指定响应类别
如果不想改动GEE的设置,也可以在PROC PLM的effectplot语句里加上response='Ja'参数,强制指定展示"Ja"的概率:
proc gee data=longdata plot=all DESCENDING; class kod enkat(ref="Bas") haft_basvar_hand_handled; model haft_basvar_hand_handled(event='Ja')=enkat jamar_hoger enkat*jamar_hoger/dist=binary; repeated subject=kod; store out=jamarhand; run; title; quit; proc plm restore=jamarhand; effectplot slicefit (x=jamar_hoger sliceby=enkat) / clm response='Ja'; run;
说明
- 字符型变量默认按字母顺序排序,"Ja"在"Nej"之前,
DESCENDING会反转这个顺序,把后出现的"Nej"设为事件,和你指定的event='Ja'冲突,所以移除它是最直接的解决办法。 - 第二种方式通过PLM的
response参数直接指定要展示的类别,即使GEE里有冲突设置,也能强制输出目标概率。
内容的提问来源于stack exchange,提问作者Tobias Nordqvist
相关产品推荐
相关产品推荐

