proc logistic 输出拟合模型预测的是 1 还是 0
proc logistic output whether the fitted model predicted a 1 or 0
我正在获取一个复制以下内容的数据集
DATA HAVE
(DROP=I);
DO I = 1 TO 100;
Y = RAND("Integer",0,1);
X1 = I ** RANUNI(I);
X2 = I ** I ** RANUNI(I);
output;
END;
RUN;
然后我像这样对这个数据集进行逻辑回归,
PROC LOGISTIC
DATA=have
PLOTS(ONLY)=NONE
;
MODEL Y (Event = '1') = x1 /
SELECTION=NONE
LINK=LOGIT
;
OUTPUT OUT=fitted_model
PREDICTED = y_hat
PREDPROBS=INDIVIDUAL;
RUN;
QUIT;
我得到的输出是预测概率,但我想得到的是 y_hat 是“1”还是“0”的预测 - 这在 SAS 中是否可行?
逻辑回归生成概率。您通常使用用户定义的截断值将它们转换为预测的 0/1,即如果概率 > 0.7,那么您会将其分配给 1。一旦您指定了截断值,您就可以使用数据步骤来识别它。
为了确定一个好的截止点,我推荐 CTABLE 和 PPROB 选项。
data Neuralgia;
input Treatment $ Sex $ Age Duration Pain $ @@;
datalines;
P F 68 1 No B M 74 16 No P F 67 30 No
P M 66 26 Yes B F 67 28 No B F 77 16 No
A F 71 12 No B F 72 50 No B F 76 9 Yes
A M 71 17 Yes A F 63 27 No A F 69 18 Yes
B F 66 12 No A M 62 42 No P F 64 1 Yes
A F 64 17 No P M 74 4 No A F 72 25 No
P M 70 1 Yes B M 66 19 No B M 59 29 No
A F 64 30 No A M 70 28 No A M 69 1 No
B F 78 1 No P M 83 1 Yes B F 69 42 No
B M 75 30 Yes P M 77 29 Yes P F 79 20 Yes
A M 70 12 No A F 69 12 No B F 65 14 No
B M 70 1 No B M 67 23 No A M 76 25 Yes
P M 78 12 Yes B M 77 1 Yes B F 69 24 No
P M 66 4 Yes P F 65 29 No P M 60 26 Yes
A M 78 15 Yes B M 75 21 Yes A F 67 11 No
P F 72 27 No P F 70 13 Yes A M 75 6 Yes
B F 65 7 No P F 68 27 Yes P M 68 11 Yes
P M 67 17 Yes B M 70 22 No A M 65 15 No
P F 67 1 Yes A M 67 10 No P F 72 11 Yes
A F 74 1 No B M 80 21 Yes A F 69 3 No
;
proc logistic data=Neuralgia;
class Treatment Sex / param=ref;
model Pain= Treatment Sex Treatment*Sex Age Duration / expb ctable pprob=(0.3, 0.5 to 0.8 by 0.1);
run;
我正在获取一个复制以下内容的数据集
DATA HAVE
(DROP=I);
DO I = 1 TO 100;
Y = RAND("Integer",0,1);
X1 = I ** RANUNI(I);
X2 = I ** I ** RANUNI(I);
output;
END;
RUN;
然后我像这样对这个数据集进行逻辑回归,
PROC LOGISTIC
DATA=have
PLOTS(ONLY)=NONE
;
MODEL Y (Event = '1') = x1 /
SELECTION=NONE
LINK=LOGIT
;
OUTPUT OUT=fitted_model
PREDICTED = y_hat
PREDPROBS=INDIVIDUAL;
RUN;
QUIT;
我得到的输出是预测概率,但我想得到的是 y_hat 是“1”还是“0”的预测 - 这在 SAS 中是否可行?
逻辑回归生成概率。您通常使用用户定义的截断值将它们转换为预测的 0/1,即如果概率 > 0.7,那么您会将其分配给 1。一旦您指定了截断值,您就可以使用数据步骤来识别它。
为了确定一个好的截止点,我推荐 CTABLE 和 PPROB 选项。
data Neuralgia;
input Treatment $ Sex $ Age Duration Pain $ @@;
datalines;
P F 68 1 No B M 74 16 No P F 67 30 No
P M 66 26 Yes B F 67 28 No B F 77 16 No
A F 71 12 No B F 72 50 No B F 76 9 Yes
A M 71 17 Yes A F 63 27 No A F 69 18 Yes
B F 66 12 No A M 62 42 No P F 64 1 Yes
A F 64 17 No P M 74 4 No A F 72 25 No
P M 70 1 Yes B M 66 19 No B M 59 29 No
A F 64 30 No A M 70 28 No A M 69 1 No
B F 78 1 No P M 83 1 Yes B F 69 42 No
B M 75 30 Yes P M 77 29 Yes P F 79 20 Yes
A M 70 12 No A F 69 12 No B F 65 14 No
B M 70 1 No B M 67 23 No A M 76 25 Yes
P M 78 12 Yes B M 77 1 Yes B F 69 24 No
P M 66 4 Yes P F 65 29 No P M 60 26 Yes
A M 78 15 Yes B M 75 21 Yes A F 67 11 No
P F 72 27 No P F 70 13 Yes A M 75 6 Yes
B F 65 7 No P F 68 27 Yes P M 68 11 Yes
P M 67 17 Yes B M 70 22 No A M 65 15 No
P F 67 1 Yes A M 67 10 No P F 72 11 Yes
A F 74 1 No B M 80 21 Yes A F 69 3 No
;
proc logistic data=Neuralgia;
class Treatment Sex / param=ref;
model Pain= Treatment Sex Treatment*Sex Age Duration / expb ctable pprob=(0.3, 0.5 to 0.8 by 0.1);
run;