PROC GENMOD中修正泊松回归estimate语句语法正确性咨询
修正泊松回归中ESTIMATE语句的语法疑问
我正尝试在数据上运行修正泊松回归,暴露变量exposure_var包含3个水平,参考水平设置为1。从未使用过estimate语句,想咨询以下三段代码中哪段的estimate语句语法正确?
代码版本一
class exposure_var(ref='1')/ param = ref; model outcome_var = exposure_var covar1 covar2 cover3 / dist=poisson link=log; weight weight_var; estimate 'outcome_var level 2 vs ref' exposure_var 2 1 / exp; estimate 'outcome_var level 3 vs ref' exposure_var 3 1 / exp; run;
代码版本二
class exposure_var(ref='1')/ param = ref; model outcome_var = exposure_var covar1 covar2 cover3 / dist=poisson link=log; weight weight_var; estimate 'outcome_var level 2 vs ref' exposure_var 2 -1 / exp; estimate 'outcome_var level 3 vs ref' exposure_var 3 -1 / exp; run;
代码版本三
class exposure_var(ref='1')/ param = ref; model outcome_var = exposure_var covar1 covar2 cover3 / dist=poisson link=log; weight weight_var; estimate 'outcome_var level 2 vs ref' exposure_var 2 -1 / exp; estimate 'outcome_var level 3 vs ref' exposure_var 3 -2 / exp; run;
解答
首先明确:当分类变量使用param=ref(参考编码)时,SAS会为该变量生成虚拟变量。对于exposure_var的3个水平(1、2、3),参考水平设为1,模型中会生成2个参数:
- 参数1:对应水平2与参考水平1的效应差异
- 参数2:对应水平3与参考水平1的效应差异
ESTIMATE语句需要指定的是模型中每个参数的系数,而非分类变量的水平值。基于此,你的三段代码均不符合正确语法:
- 版本一的
2 1、3 1是给两个参数赋无意义的系数,无法实现“水平vs参考”的对比; - 版本二的
2 -1、3 -1是参数的错误组合,对应非目标对比; - 版本三的
3 -2同样是无意义的参数组合,逻辑错误。
正确写法
要实现“水平2 vs 参考水平1”和“水平3 vs 参考水平1”的对比,ESTIMATE语句应指定对应参数的系数为1,其余为0:
class exposure_var(ref='1')/ param = ref; model outcome_var = exposure_var covar1 covar2 cover3 / dist=poisson link=log; weight weight_var; estimate 'outcome_var level 2 vs ref' exposure_var 1 0 / exp; estimate 'outcome_var level 3 vs ref' exposure_var 0 1 / exp; run;
更简便的替代方法
如果只是需要组间对比,推荐使用LSMEANS语句,它会自动生成正确的对比结果,无需手动指定参数系数:
class exposure_var(ref='1')/ param = ref; model outcome_var = exposure_var covar1 covar2 cover3 / dist=poisson link=log; weight weight_var; lsmeans exposure_var / diff exp; /* diff输出组间差异,exp输出指数化结果(相对风险RR) */ run;
内容的提问来源于stack exchange,提问作者kelsz24
相关产品推荐
相关产品推荐

