국민건강보험 DB에는 TOT_MCNT라는 변수가 있는데, 이 변수는 총 투여 일수 또는 총 실시 횟수를 나타낸다. 하지만 이 변수를 duration이나 period 등에 그대로 사용하기에는 문제가 있다고 생각을 하는 이유는, 입원 시작 일자는 알 수 있어도 종료 일자는 알 수 없고, 입원 시작 일자에서 총 투여 일수를 더해 보더라도 입원 기간 중간중간에 다른 CMN_KEY를 통해 새로운 청구가 생기는 등 이런저런 문제가 있기 때문이다. 어떤 청구가 우리가 원하는 질병 또는 행위에 대한 것인지를 명확하게 알 수 없다는 것이 큰 단점이라고 할 수 있겠다. (개인적 의견ㅎㅎ)그래서 이번에 작성하는 글은, TOT_MCNT 변수가 1일마다 발생한 행위의 총 투여 일수라고 가정하고 이 변수를 사용해 행위의 dur..
때때로 건강보험공단 데이터를 분석하다 보면 CCI (Charlson Comorbidity Index) 지수를 계산해야 할 때가 있다. 이걸 공단에서 붙여주는 경우도 있다고 하는데, 아닐 때도 있다고 해서 (확실하지 않음) 나는 교수님께 코드를 받아 데이터에 맞게 수정하고 계산했다.아래는 표본코호트 DB에 적용할 수 있는 CCI 지수 계산 SAS 코드이다. CCI 지수는 관심 질환으로 진단을 받은 시점부터 1년 이전까지의 의료 이용 기록을 보는 것이 일반적이고, 주진단 및 부진단명에 나온 동반질환들을 확인한다. (참고자료: https://doi.org/10.4332/KJHPA.2016.26.1.71)그래서 아래 코드는 분석을 원하는 진단의 최초 의료 이용 시점을 확인하고, 그로부터 1년 이전까지의 의..
아래는 SAS를 사용해 Hazard Ratio (HR) Forest Plot를 그리는 코드인데, 커스터마이징하기 힘드니 최후의 보루로 사용하도록 하자. (참고 자료: https://support.sas.com/resources/papers/proceedings10/195-2010.pdf)참고로 SAS는 대부분의 커스터마이징이 매크로를 쓰는데, 공단은 컴퓨터가 네트워크를 지원하지 않아서 매크로도 쓰기 힘들다.DATA HAZARDS;INPUT COVARIATES$ HR LOWERCI UPPERCI;CARDS;/*순서대로 변수, HR, LOWERCI, UPPERCI 넣기*/;RUN;TITLE "Hazard Ratio Forest Plot For Cox PH Model";PROC SGPLOT DATA=HAZA..
비례위험가정을 만족하는 변수들에 대해서는 Cox Proportional Hazard Model, 일명 Cox PH Model을 사용할 수 있다. 하지만 그렇지 않은 변수는 층화를 진행해야 하는데, 이러한 두 경우에 대한 코드를 소개한다.아래에 있는 것은 모두 Multivariable (다변수) 분석이다. Univariate (단변량) 분석을 진행하고 싶을 경우 독립변수를 하나만 넣으면 된다.1. 비례위험가정을 만족하는 경우PROC PHREG DATA=MAIN_TABLE;CLASS SEX DM;MODEL SURVIVED_TIME*CENSORED(0) = AGE SEX DM /RL; /*CI 표시*/RUN;ODS GRAPHICS ON;PROC PHREG DATA=MAIN_TABLE PLOTS(OVERL..
1. 다중공선성다중공선성은 SAS에서 3가지 옵션을 통해 계산할 수 있다.주석에 적힌 다중공선성의 기준은 사람마다 다르게 받아들여지기 때문에 참고만 하자. PROC REG DATA=MAIN_TABLE;MODEL SURVIVED_TIME=AGE SEX DM / VIF; /*VIF, 기준 5 이상*/RUN;PROC REG DATA=MAIN_TABLE;MODEL SURVIVED_TIME=AGE SEX DM / TOL; /*TOL, 기준 0.2 이하*/RUN;PROC REG DATA=MAIN_TABLE;MODEL SURVIVED_TIME=AGE SEX DM / COLLIN; /*CI, 15 이상일 경우 의심*/RUN; 2. 비례위험가정Cox Proportional Hazard Model을 생성하기 위해 선행되..
아래 코드는 건강보험공단 DB에 사용하였던 코드를 표본코호트 DB에 맞게 변수명을 변형한 것으로, 실제로 적용하기에는 호환이 잘 안 될 수도 있으며 추후 (내가 다시) 참고하려고 작성하였으니 너무 믿지 마시길 바랍니다. (저는 제가 아직도 왜 전공자인지 의심이 됨ㅋㅋ)코드에 나와 있는 추적관찰기간은 전부 제가 한 실제 분석과 관계 없는 가짜 데이터입니다. 1. 사망연계자료 JOIN하여 전처리 테이블 만들기PROC SQL;CREATE TABLE DEATH_TABLE ASSELECT A.*, B.DTH_YYYYMMFROM MAIN_DATA_TABLE AS AINNER JOIN NSC2_BND AS BON A.RN_INDI=B.RN_INDI;QUIT;PROC SQL;CREATE TABLE DEATH_TA..