Blog

  • 화에 대하여, 세네카, 김경숙 옮김

    이 책은 매우 좋은 책이다.

    서문을 보면 편지글을 모은 형식으로 쓰는 것은 당대의 흔한 저술 형식이라고 한다. 1~2권과 3권의 시기가 다른데, 내용의 완성도도 다르다. 3권의 내용이 1~2권의 내용보다 더 완성도가 있는 것 같다.

    ‘화’를 설명하고 있는 것에만 그치고 있는 것에 아니라 어떻게 하면 ‘화’를 내지 않을 것인가에 대한 것을 설명하고 있다.

    내가 어떻게 쓰더라도 이 책은 반드시 읽어 보아야만 그 진가를 이해할 수 있을 것이다.

    이 책의 내용은 매우 좋다. 단, 그와는 별개로 세네카는 권신으로서 대단한 권력을 누렸다고 한다. 그리고 고리대금업으로 사회에 지대한 악영향을 끼친 사람이다. 개인적인 성향이 저서에 들어나 있지 않다는게 대단할 정도이다.

  • CDM 운영 요령

    PostgreSQL의 특성에 따른 문제로 추정된다. UPDATE, DELETE가 잦으면 dead tuple이 증가하여 공간을 차지한다고 한다. 이를 해결하기 위한 vacuum 과정이 있으나 일정 조건에 해당하면 동작을 한다.

    CDM 포맷에 맞게 변환된 자료를 DB에 입력한다. 그리고 적절한 과정을 거쳐 분석할 수 있는 형태로 가공해야 한다. concept_id 매핑과 measurement 테이블의 data cleaning 과정이 주된 부분이다. 500GB SSD에 250GB 정도의 자료를 입력시킨다. 그 이후 강도 높은 매핑 및 클리닝 작업을 하면 dead tuple로 인한 용량 문제가 생긴다.

    지난 번에는 vacuum full analyze가 먹혔는데 이번에는 용량이 매우 부족해져서 작업이 진행되지 않는다. 일단 vacuum verbose analyze로 용량을 조금 확보한 이후에 진행해 봐야 할 것 같다. 용량이 큰 녀석을 이용하는 것이 가장 손쉬운 방법이 될 것 같다.

    CDM 운영에 중요한 경험을 쌓을 수 있을 것 같다.

  • COLUMN 의 일부만 insert 하기

    PostgreSQL이 그렇게까지 꽉 막힌 프로그램은 아닐텐데라고 생각하면서도 컬럼의 일부만 INSERT 하는 것에 실패하여 컬럼 이름을 다 쓰고 있었다.

    오늘 한 참을 시도해 보았고, 방법을 찾을 수 있었다.

    SELECT 이후에 컬럼 이름을 바꾸는 부분은 사실 필요 없을 것 같지만, 혹시나 싶어서 같은 이름으로 변경하도록 하게 한 다음에 시도했었는데 먹혔다.

    INSERT INTO cdm.measurement (person_id, measurement_concept_id, measurement_date, measurement_datetime, value_as_text, measurement_source_value) \
    SELECT vs_person_id AS person_id, '3025315' AS measurement_concept_id, vs_measure_date AS measurement_date, vs_measure_time AS measurement_datetime, vs_weight AS value_as_text, 'weight' AS measurement_source_value FROM cdm.vital
  • AUC 구하기

    급하면 코딩이 잘 되는 법이다. AUC를 구해 달라는 연락을 받고 인터넷 서핑을 통하여 해결했다. AUC 구하는 패키지는 많이 있는데, 잘 알려진 pROC 패키지를 이용했다.

    dt %>% roc('group', 'variable')
    plot(roc1, print.auc=T, print.thres=T)

    해석은 variable이 34.654일 때 sensitivity 0.850, specifity 0.897, AUC 0.927이다.

    AUC의 95% 신뢰구간과 p-value는 따로 구한다.

    ci(roc1) #95% CI
    var(ci(roc1)) # p-value