CAFE

PK/PD

SAS로 AUC 계산하기

작성자안재형|작성시간10.03.23|조회수1,940 목록 댓글 2

data auc;
  input time conc;
  obs=_n_;
  datalines;
0 0
0.5 0.12
1 1.85
1.5 2.92
2 1.85
3 0.99
4 0.73
6 0.42
8 0.19
run;

proc sql;
  create table cmax as
  select obs, conc as cmax
  from auc
  having conc=max(conc)
;quit;

proc sql;
  select a1.time, a1.conc, a0.conc, cmax.cmax,
           (a1.time-a0.time)*(a1.conc+a0.conc)/2 as linear,
           case when a1.conc*a0.conc then (a1.time-a0.time)*(a1.conc-a0.conc)/log(a1.conc/a0.conc)
                                                    else calculated linear end as log,
           sum(calculated linear) as auc_linear,
           sum(calculated log) as auc_log,
           sum((a1.obs<=cmax.obs)*calculated linear+(a1.obs>cmax.obs)*calculated log) as auc,
           sum((a1.conc>=a0.conc)*calculated linear+(a1.conc<a0.conc)*calculated log) as auc_up_down
  from auc as a0
    left join auc as a1 on a0.obs+1=a1.obs
    left join (select obs, cmax from cmax having obs=min(obs)) as cmax on a0.conc<=cmax.cmax
  where a1.time is not missing
;quit;

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
  • 작성자성원 | 작성시간 11.11.30 sql 코드도 쓰시네요..
  • 답댓글 작성자안재형 작성자 본인 여부 작성자 | 작성시간 11.11.30 저는 data step대신 sql을 씁니다.
댓글 전체보기
맨위로

카페 검색

카페 검색어 입력폼