以下是我用于变量选择的代码:
proc glmselect data=abct;
where incex1=1;
title 'GLMSELECT with Elastic Net';
model devmood_c = asetot age yrseduc sex employyn cohabyn caucyn asitot penntot
anxdis ahealthuse ahospit ventxpwk acmn nhospit bmi comorb
aqllimmn aqlsubmn aqlsympmn aqlemotmn aqlenvirmn aqltotmn
smoke3gp nalcwkcurr
/selection=elasticnet(steps=120 L2=0.001 choose=validate);
run;
问题在于,当我运行它时,它会告诉我:
错误:变量incex1不在文件WORK.ABCT。
此incex1
变量用于排除数据库中特定问题得分过高的人。它适用于LASSO,但即使代码相似,似乎也不适用于elasticnet。
是否有人知道如何使用它,或者是否有其他方法可以排除在问卷调查中得分低于某个阈值的患者?
这是incex1
的编码方式:
if devmood_c = 0 then incex1=1;
if devmood_c = 1 then incex1=1;
if devmood_c = . then incex1=0;
if bdisev > 2 then incex1=0;
label incex1 = "1=no mood at baseline or BDI > 20, 0=excluded";
答案 0 :(得分:1)
这适用于测试数据,因此您的源数据可能不具备您期望的特征。例如,
ods graphics on;
proc glmselect data=sashelp.Leutrain valdata=sashelp.Leutest
plots=coefficients;
where x1>0;
model y = x2-x7129/
selection=elasticnet(steps=120 l2=0.001 choose=validate);
run;
按预期工作。