BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
jengarcia1122
Calcite | Level 5

Hello community,

I have no identifiable data or data that is confidential. I have the following code to give output for a score test using Breslow's method. The log tells me there is an issue with the 11 censored variables, maybe not reading in. I tried an ELSE statement in my code in the set statement and it doesn't fix the error with my output. This is part of a homework question. I am supposed to obtain a p-value of 0.098 for the Breslow score, but obtain a 0.9132... I don't know what I am doing wrong. I think the syntax is correct, because I have output, but I may be missing an option.

The first column of my data represents a dummy variable assignment for type of cancer tumor ( 2 kinds), time observation is the second column, and third column is if the value is censored. From proc phreg the censored value is 0.

Below is my code:

data tcancer;

input type time d;

cards;

1 1 1

1 3 1

1 3 1

1 4 1

1 10 1

1 13 1

1 13 1

1 16 1

1 16 1

1 24 1

1 26 1

1 27 1

1 28 1

1 30 1

1 30 1

1 32 1

1 41 1

1 51 1

l 65 1

1 67 1

1 70 1

1 72 1

1 73 1

1 77 1

1 91 1

1 93 1

1 96 1

1 100 1

1 104 1

1 157 1

1 167 1

1 61 0

1 74 0

1 79 0

1 80 0

1 81 0

1 87 0

1 87 0

1 88 0

1 89 0

1 93 0

1 97 0

1 101 0

1 104 0

1 108 0

1 109 0

1 120 0

1 131 0

1 150 0

1 231 0

1 240 0

l 400 0

2 l l

2 3 l

2 4 1

2 5 l

2 5 1

2 8 l

2 l2 1

2 13 l

2 l8 1

2 23 l

2 26 1

2 27 1

2 30 1

2 42 1

2 56 1

2 62 1

2 69 1

2 104 l

2 104 1

2 112 1

2 129 1

2 181 1

2 8 0

2 67 0

2 76 0

2 104 0

2 176 0

2 231 0

;

run;

data tcan1;

set tcancer;

if type = 1 then zl= 1;

ELSE zl= 0;

run;

proc phreg data=tcan1;

model time*d(0)= zl/ itprint risklimits;

run;

1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

Also, you don't need to create an indicator variable, you should use the class statement instead.

proc phreg data=tcancer;

class type (ref='2')/param=ref;

model time*d(0)= type/ itprint risklimits;

run;

View solution in original post

9 REPLIES 9
stat_sas
Ammonite | Level 13

Your input data is not correct. Model is not using full number of observations.

Reeza
Super User

Also, you don't need to create an indicator variable, you should use the class statement instead.

proc phreg data=tcancer;

class type (ref='2')/param=ref;

model time*d(0)= type/ itprint risklimits;

run;

jengarcia1122
Calcite | Level 5

Thank you for your help Reeza for the new insight

jengarcia1122
Calcite | Level 5

Reeza, I did the Ctrl+H and it did help me find the lower case l's you found, but I still get a p-valueof 0.1768 for the score test.

I also included your code to not make a new indicator variable, here is the amended code:

data tcancer;

input type time d;

cards;

1 1 1

1 3 1

1 3 1

1 4 1

1 10 1

1 13 1

1 13 1

1 16 1

1 16 1

1 24 1

1 26 1

1 27 1

1 28 1

1 30 1

1 30 1

1 32 1

1 41 1

1 51 1

1 65 1

1 67 1

1 70 1

1 72 1

1 73 1

1 77 1

1 91 1

1 93 1

1 96 1

1 100 1

1 104 1

1 157 1

1 167 1

1 61 0

1 74 0

1 79 0

1 80 0

1 81 0

1 87 0

1 87 0

1 88 0

1 89 0

1 93 0

1 97 0

1 101 0

1 104 0

1 108 0

1 109 0

1 120 0

1 131 0

1 150 0

1 231 0

1 240 0

1 400 0

2 1 1

2 3 1

2 4 1

2 5 1

2 5 1

2 8 1

2 l2 1

2 13 1

2 l8 1

2 23 1

2 26 1

2 27 1

2 30 1

2 42 1

2 56 1

2 62 1

2 69 1

2 104 1

2 104 1

2 112 1

2 129 1

2 181 1

2 8 0

2 67 0

2 76 0

2 104 0

2 176 0

2 231 0

;

run;

proc phreg data=tcancer;

class type (ref='2')/param=ref;

model time*d(0)= type/ itprint risklimits;

run;

Reeza
Super User

I don't think your data is still being read in properly, does your output for number of events and censored match what I have below?

Summary of the Number of Event and Censored Values

                                                               Percent

                             Total       Event    Censored    Censored

                                80          53          27       33.75

Reeza
Super User

Here's my input data:


data tcancer;

input type time d;

cards;

1 1 1

1 3 1

1 3 1

1 4 1

1 10 1

1 13 1

1 13 1

1 16 1

1 16 1

1 24 1

1 26 1

1 27 1

1 28 1

1 30 1

1 30 1

1 32 1

1 41 1

1 51 1

1 65 1

1 67 1

1 70 1

1 72 1

1 73 1

1 77 1

1 91 1

1 93 1

1 96 1

1 100 1

1 104 1

1 157 1

1 167 1

1 61 0

1 74 0

1 79 0

1 80 0

1 81 0

1 87 0

1 87 0

1 88 0

1 89 0

1 93 0

1 97 0

1 101 0

1 104 0

1 108 0

1 109 0

1 120 0

1 131 0

1 150 0

1 231 0

1 240 0

1 400 0

2 1 1

2 3 1

2 4 1

2 5 1

2 5 1

2 8 1

2 12 1

2 13 1

2 18 1

2 23 1

2 26 1

2 27 1

2 30 1

2 42 1

2 56 1

2 62 1

2 69 1

2 104 1

2 104 1

2 112 1

2 129 1

2 181 1

2 8 0

2 67 0

2 76 0

2 104 0

2 176 0

2 231 0

;

run;

Reeza
Super User

You have some "L" instead of 1 in your data, but they're lower case L's so it looks like 1's.

In your SAS code you can highlight the data, find and replace them using CTRL+H and then use the in selection only.

Then you'll get the correct p-value (0.0975)

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 9 replies
  • 1249 views
  • 6 likes
  • 3 in conversation