## Mistake in my computation

Solved
Super Contributor
Posts: 324

# Mistake in my computation

data kaplan;

input time survival1;

cards;

4 .6

5 .55

6 .3

7 .1

9  0

;

run;

proc iml;

use kaplan;

read all  var{TIME SURVIVAL1} into DM;

close;

SURVIVAL1 = DM[,2]; TIME = DM[,1];

n = nrow(DM);

segment = J(nrow(DM),1,1); *print segment;

SS=J(nrow(survival1),1,1);

do i = 1 to n ;

if 1=n then SS=0;

else if  i< n-1 then SS=SURVIVAL1-SURVIVAL1[i+1];

end;

TT=J(nrow(time),1,1);

do i = 1 to n;

if 1=n then TT=0;

else if i < n-1  then TT=time[i+1]-time;

end;

create kaplann var{time  survival1 SS TT };

append;

quit;

data kaplan_sum;

set kaplann;

sur_time=SS*TT;

drop time  survival1;

run;

proc print data=kaplan_sum;

run;

This output is wrong, there is supposed to be just 4 observations. The 4th and fifth observation for SS is wrong.

SS= (.6-.55)+(.55-.3)+(.3-.1)+(.1-0)

TT= (5-4)+(6-5)+((7-6)+(9-7))

This is wrong.

i   SS  TT  TT*SS

 1 2 3 0.05 1 0.05 0.25 1 0.25 0.2 1 0.2 1 1 1 1 1 1

This is how the correct output is supposed to look like;

SS= (.6-.55)+(.55-.3)+(.3-.1)+(.1-0)

TT= (5-4)+(6-5)+((7-6)+(9-7))

i    SS   TT       SS*TT

 1 0.05 1 0.05 2 0.25 1 0.25 3 0.2 1 0.2 4 0.1 2 0.2

Accepted Solutions
Solution
‎07-14-2013 11:43 AM
Super Contributor
Posts: 324

## Re: Mistake in my computation

proc iml;

use kaplan;

read all  var{TIME SURVIVAL1} into DM;

close;

SURVIVAL1 = DM[,2]; TIME = DM[,1];

n = nrow(DM);

segment = J(nrow(DM),1,1); *print segment;

SS=J(nrow(survival1),1,1);

do i = 1 to n ;

if i=n then SS=0;

else if  i< n-1 then SS=SURVIVAL1-SURVIVAL1[i+1];

end;

TT=J(nrow(time),1,1);

do i = 1 to n;

if i=n then TT=0;

else if i < n-1  then TT=time[i+1]-time;

end;

create kaplann var{time  survival1 SS TT };

append;

quit;

data kaplan_sum;

set kaplann;

sur_time=SS*TT;

drop time  survival1;

run;

proc print data=kaplan_sum;

run;

All Replies
Super Contributor
Posts: 324

## Re: Mistake in my computation

Solution
‎07-14-2013 11:43 AM
Super Contributor
Posts: 324

## Re: Mistake in my computation

proc iml;

use kaplan;

read all  var{TIME SURVIVAL1} into DM;

close;

SURVIVAL1 = DM[,2]; TIME = DM[,1];

n = nrow(DM);

segment = J(nrow(DM),1,1); *print segment;

SS=J(nrow(survival1),1,1);

do i = 1 to n ;

if i=n then SS=0;

else if  i< n-1 then SS=SURVIVAL1-SURVIVAL1[i+1];

end;

TT=J(nrow(time),1,1);

do i = 1 to n;

if i=n then TT=0;

else if i < n-1  then TT=time[i+1]-time;

end;

create kaplann var{time  survival1 SS TT };

append;

quit;

data kaplan_sum;

set kaplann;

sur_time=SS*TT;

drop time  survival1;

run;

proc print data=kaplan_sum;

run;

🔒 This topic is solved and locked.