出于某种原因,当SAS进行比例风险回归时,它包括那些被指定为的观察结果。作为结果中的一组。我怀疑它与我如何创建我的变量有关(而SAS认为我的数字变量是字符)但我无法弄清楚我做错了什么。我使用的是SAS 9.4
data final; set final;
if edu_d = 'hs less' then edu_regress = 1;
else if edu_d = 'hs' then edu_regress = 1;
else if edu_d = 'some college' then edu_regress = 2;
else if edu_d = 'college plus' then edu_regress = 3;
else if edu_d = 'missing' then edu_regress=.;
run;
然后我运行我的回归:
proc phreg data=final;
class edu_regress;
model fuptime*dc(0)=edu_regress/rl;
run;
输出如下:
edu_regress . 1 0.10963 0.12941 0.7177 0.3969 1.116 0.866 1.438
edu_regress 1 1 0.22514 0.10949 4.2278 0.0398 1.252 1.011 1.552
edu_regress 2 1 0.21706 0.11410 3.6190 0.0571 1.242 0.993 1.554
哪里。是一个类别而不是被视为缺失。
我确定我犯了一个菜鸟错误,但我无法理解。
答案 0 :(得分:0)
我会清除你的输出,并重新运行代码,并检查日志和输出。
当我阅读文档时,要将缺失的值视为一个类别,您需要在CLASS语句中使用List
,这在您显示的代码中没有。没有它,我认为应该自动排除缺失值。
当我使用具有缺失值的CLASS变量运行PHREG时,我在日志中得到一条关于由于缺少值而被删除的观察结果的注释,并且输出显示所使用的观察数量小于读取的观察数量。
答案 1 :(得分:0)
如果SAS认为edu_regress
是字符,那么如果它已作为字符存在于数据集中,则可能。这是不data x; set x;
而是创建新数据集的一个原因。如果确实存在这个问题,你应该按照现在的数字到字符转换的方式在datastep中看到注释。
无论如何,调整此方法的一种方法是使用CALL MISSING。无论类型如何,它都会将变量设置为正确缺失。
data final;
set final;
if edu_d = 'hs less' then edu_regress = 1;
else if edu_d = 'hs' then edu_regress = 1;
else if edu_d = 'some college' then edu_regress = 2;
else if edu_d = 'college plus' then edu_regress = 3;
else if edu_d = 'missing' then call missing(edu_Regress);
run;