Hi,
I have a dataset like the one below, where Lag_level and Level can take any value from {0,1,2,3,4} and LOS_category takes values from set {1,2,3,4}.
Lag_level Level LOS_category
0 1 1
4 2 2
I am trying to estimate the probability of Level as the dependent variable and independent variables are Lag_level and LOS_category. I used ordered multinomial logit regression with the following code.
proc logistic data =have;
class lag_level (param = ref ref="4") LOS_category(param = ref ref="4");
model Level (descending)=lag_level LOS_category /unequalslopes=(lag_level);
output out=outreg predicted=p1;
store out=Level_transition;
run;
Now I want to predict the (individual) probabilities (as opposed with cumulative probabilities) for a test dataset like this:
data test2;
input lag_level LOS_category;
datalines;
0 1
1 1
2 1
3 1
4 1
0 3
1 3
2 4
3 3
4 2
;
I tried to use proc plm and restore the model as follows:
proc plm restore=level_transition;
score data=test2 out=testout2 predicted / ilink;
run;
proc print data=testout2;
run;
But then I received an error "ERROR: The file WORK.LEVEL_TRANSITION does not exist or it is not a valid item store." Because these procedure works for standard logistic regression, I was wondering if anybody can help with this cumulative multinomial one.
Thanks!
If you want to do it in a single call, you can use the SCORE statement
proc logistic data =Have;
class lag_level (param = ref ref="4") LOS_category(param = ref ref="4");
model Level (descending)=lag_level LOS_category /unequalslopes=(lag_level);
output out=outreg predicted=p1;
SCORE data=test2 out=pred;
run;
proc print data=pred;
run;
I believe the problem is that you are using the UNEQUALSLOPES option. The doc for the LOGISTIC PROCEDURE says,
"The STORE statement is not available for models created with the LINK=ALOGIT option, the EQUALSLOPES or UNEQUALSLOPES options, a STRATA statement, or an EXACT statement."
You can work around the problem by removing the option. You can create a separate PROC LOGISTIC call that performs the unequal slopes analysis but does not contain the STORE statement.
Thanks for the reply. So do you know any other way that I can estimate probabilities?
If you want to do it in a single call, you can use the SCORE statement
proc logistic data =Have;
class lag_level (param = ref ref="4") LOS_category(param = ref ref="4");
model Level (descending)=lag_level LOS_category /unequalslopes=(lag_level);
output out=outreg predicted=p1;
SCORE data=test2 out=pred;
run;
proc print data=pred;
run;
Thanks for your help!
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.