BookmarkSubscribeRSS Feed
FriendJen
Fluorite | Level 6

I'm working with a multiple-imputed dataset, using a treatment and covariates to look at competing risks (I'm using 14.3). I'm having at least three issues: First, my outest= option in PROC PHREG isn't working (along with a bunch of other similar issues); Second, I have no idea what else to have the PHREG procedure output to use in MIANALYZE; Third, I don't know how to work MIANALYZE in this situation.

 

Here is the code I'm trying to use for the PROC PHREG stuff:

proc phreg data=abx_compete outest=outest_phreg2;
   class antibx(ref='no abx') sex(ref='male') admretin(ref='no') 
capref(ref='yes') deepbr(ref='yes') grunt(ref='no') chstin(ref='no') nasflaring(ref='no') hivresults(ref='no')/param=ref; model hours*event(0)= antibx &varlist /eventcode(cox)=1; format antibx ab. event event. sex sex. hivresults yesno. admretin capref deepbr grunt chstin nasflaring yesno.; by _imputation_; run;

It doesn't give me any errors, but it gives me this warning:

NOTE: The data set WORK.OUTEST_PHREG2 has 0 observations and 0 variables.
WARNING: Data set WORK.OUTEST_PHREG2 was not replaced because new file is incomplete.

Why isn't the OUTEST= option working?

This is what I'm trying for the PROC MIANALYZE stuff:

proc mianalyze data=phreg_parmest2;
	modeleffects estimate;
	stderr stderr;
run;

But I'm not sure this will give me what I want, or if it'll even work once I get the PROC PHREG to work.  

 

I've been spending so much time on this and trying to do many different things that I'm not even sure what I'm doing anymore. I just know I am doing competing risks analysis and need to account for the fact that I'm using imputed data. Any help would be greatly appreciated.

4 REPLIES 4
SteveDenham
Jade | Level 19

What does your PHREG output look like?  Are there any messages there that might explain what is happening?  What method of imputation did you use?  As all of your variables are categorical, I suspect that at least one is singular in value, with all observations having identical values for that variable.  That may influence the imputation, and could be causing the PHREG issue as well. One other possibility is that there is something unusual in your macro variable &varlist, but that is another thing that can be remedied by looking at the output.

 

SteveDenham

FriendJen
Fluorite | Level 6

There are no notes or messages in the results viewer, the log has this type of note for every imputation/event:

 

NOTE: The above message was for event=2.
NOTE: The above message was for the following BY group:
      Imputation Number=1

followed by

NOTE: The data set WORK.OUTEST_PHREG2 has 0 observations and 0 variables.
WARNING: Data set WORK.OUTEST_PHREG2 was not replaced because new file is incomplete.
NOTE: PROCEDURE PHREG used (Total process time):

I used Multiple Imputation Missingness Pattern (MIMP) Method using a macro I got from Analysis of Observation Healthcare Data Using SAS and PROC MI. I had the imputations for the binary variables stay binary and the imputations for the continuous ones stay within the range. I've done stuff with PROC LOGISTIC and PROC CAUSALTRT and other stuff with the imputed data with no real issues, so I don't think it's my imputation method.

Not all of my variables are categorical, I have 8 binary, one categorical being treated as continuous, and 7 continuous variables. The &varlist contains all of them except for the outcomes and treatment variable.

 

 

SAS_Rob
SAS Employee

With a CLASS statement I would suggest not using the OUTEST= data set, but an ODS OUTPUT ParameterEstimates= statement instead.  You should be able to do something similar to my example below.

proc format;
value DiseaseGroup 1='ALL'
2='AML-Low Risk'
3='AML-High Risk';

data Bmt;
input Disease T Status @@;
label T='Disease-Free Survival in Days';
format Disease DiseaseGroup.;
datalines;
1 2081 0 1 1602 0 1 1496 0 1 1462 0 1 1433 0
1 1377 0 1 1330 0 1 996 0 1 226 0 1 1199 0
1 1111 0 1 530 0 1 1182 0 1 1167 0 1 418 2
1 383 1 1 276 2 1 104 1 1 609 1 1 . 2
1 487 2 1 662 1 1 194 2 1 230 1 1 526 2
1 122 2 1 129 1 1 74 1 1 122 1 1 86 2
1 466 2 1 192 1 1 109 1 1 55 1 1 1 2
1 107 2 1 110 1 1 332 2 2 2569 0 2 2506 0
2 . 0 2 2218 0 2 1857 0 2 1829 0 2 1562 0
2 1470 0 2 1363 0 2 1030 0 2 860 0 2 1258 0
2 2246 0 2 1870 0 2 1799 0 2 1709 0 2 1674 0
2 1568 0 2 1527 0 2 1324 0 2 957 0 2 932 0
2 847 0 2 848 0 2 1850 0 2 1843 0 2 1535 0
2 1447 0 2 . 0 2 414 2 2 2204 2 2 1063 2
2 481 2 2 105 2 2 641 2 2 390 2 2 288 2
2 421 1 2 79 2 2 748 1 2 486 1 2 48 2
2 272 1 2 1074 2 2 381 1 2 10 2 2 53 2
2 80 2 2 35 2 2 248 1 2 704 2 2 211 1
2 219 1 2 606 1 3 2640 0 3 2430 0 3 2252 0
3 2140 0 3 2133 0 3 1238 0 3 1631 0 3 2024 0
3 1345 0 3 1136 0 3 845 0 3 422 1 3 162 2
3 84 1 3 . 1 3 2 2 3 47 1 3 242 1
3 456 1 3 268 1 3 318 2 3 32 1 3 467 1
3 47 1 3 390 1 3 183 2 3 105 2 3 115 1
3 164 2 3 93 1 3 120 1 3 80 2 3 677 2
3 64 1 3 168 2 3 74 2 3 16 2 3 157 1
3 625 1 3 48 1 3 273 1 3 63 2 3 76 1
3 113 1 3 . 2
;
proc mi data=bmt out=bmt_mi seed=1;
class disease;
var disease status t;
fcs regression;
run;

proc phreg data=Bmt_mi;
by _imputation_;
class Disease (order=internal ref=first);
model T*Status(0)=Disease / eventcode=1;
ods output parameterestimates=parms2;
run;
proc mianalyze parms(classvar=classval)=parms2;
class disease;
modeleffects disease;
run;

 

 

 

FriendJen
Fluorite | Level 6
I read your response and tried this:

proc phreg data=abx_compete outest=outest_phreg2;
class antibx(ref='no abx') sex(ref='male') admretin(ref='no')
capref(ref='yes') deepbr(ref='yes') grunt(ref='no') chstin(ref='no')
nasflaring(ref='no') hivresults(ref='no')/param=ref;
model hours*event(0)= antibx &varlist /eventcode(cox)=1;
format antibx ab. event event. sex sex. hivresults yesno.
admretin capref deepbr grunt chstin nasflaring yesno.;
by _imputation_;
ods output ParameterEstimates=parmest;
run;

proc mianalyze parms(classvar=classval)=parmest;
class antibx sex admretin capref deepbr grunt chstin nasflaring hivresults;
modeleffects antibx &varlist;
run;
And I got this error:

ERROR: Variable ClassVal0 is not in the PARMS= data set.
NOTE: The SAS System stopped processing this step because of errors.

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

What is ANOVA?

ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 4 replies
  • 1657 views
  • 0 likes
  • 3 in conversation