앞선 Kaplan-Meier
와 Log-Rank Test
방법은 생존율을 추정하는 가장 단순한 방법입니다. 시간(Time)과 사건(Event)만을 고려하여 생존율을 추정하기 때문입니다. 이러한 측면에서 앞선 두 방법은 데이터의 특성을 전혀 반영하지 못하는 Non-Parametric한 분석 방법이라고 합니다. 이와 반대로, Parametric 방법은 생존 시간 분포(예를 들어 정규분포)가 존재한다고 가정하고 회귀 모델로 생존 기간을 예측하는 방법입니다. 대표적으로 Linear Regression
이 있으며, 그 외에도 Accelerated Failure Time Model
이 존재합니다.
Survival Analysis. 로그 순위법 (Log-Rank Test)
앞선 포스팅 Kaplan-Meier Estimation에서 구간생존율을 누적하여 누적생존율을 구하는 방법을 확인했습니다. 의료 분야에서는 생존 분석을 위해 다양한 방법들이 사용됩니다. Kaplan-Meier 방법이 특정 집단의 생존율을 추정하는 방법이라면, 이번 포스팅에서 살펴볼 Log-Rank Test
는 두 집단의 생존율의 차이가 유의미하게 있는지 확인하기 위한 방법입니다. 기존의 생존 분석과 마찬가지로 시간(Time)과 사건(Event) 개념이 필요합니다. Log-Rank Test는 두 집단의 데이터를 병합하여 관찰 시간 순으로 정렬하고, 절단 데이터(Censored Data)를 제거합니다. 결과적으로 사건이 발생한 구간만을 남기는 방식으로 생존 분석을 진행합니다. 예제 데이터를 생성하여 Log-Rank Test를 진행해보겠습니다.
Survival Analysis. 카플란-마이어 추정 (Kaplan Meier Estimation)
생존 분석(Survival Analysis)
는 시간의 흐름에 따른 어떠한 사건의 발생 확률을 알아보는 통계 분석 및 예측 기법 중 하나입니다. 일반적으로 의료분야에서 특정 수술 방법 혹은 치료 방법에 따른 환자의 생존 기간을 분석할 때 활용하거나, 일반적인 IT 분야에서는 시간에 따른 사용자 이탈 분석에도 활용합니다. Survival Analysis
에는 크게 3가지 주요 개념 사건(Event)
, 시간(Time)
, 중도절단(Censored)
이 존재합니다.
Algorithm. 행렬의 대각 성분을 출력하는 방법
파이썬에서 행렬(Matrix) 데이터 타입을 다룰 때, 대각 성분을 출력하고자 하는 경우가 있습니다. NUMPY
등의 라이브러리를 사용하면 손쉽게 대각 성분을 출력할 수 있지만, 본 포스팅에서는 각 인덱스에 접근하여 출력하는 방법을 소개하고자 합니다.
Python. 정규 표현식(Regular Expression) - 1
정규 표현식(Regular Expression)은 복잡한 문자열을 손쉽게 처리할 수 있도록 하는 프로그래밍 방법 중 하나입니다. 파이썬을 포함한 대부분의 프로그래밍 언어에서 정규 표현식(이하 정규식)을 지원합니다. 문자열을 처리해야 하는 코드를 작성할 때 정규식을 사용하면 간단하게 나타낼 수 있습니다. 만약, 사용자의 이메일에서 아이디 부분을 모자이크 처리해야 하는 코드가 필요하다고 할 때, 일반적으로 다음과 같은 맥락으로 코드가 구성됩니다.
Python. 매직 메소드(Magic Method)
매직 메소드(Magic Method or Special Method)는 클래스 내에 정의할 수 있는 특별한 메소드를 의미합니다. 매직 메소드를 사용하여 미리 정의되어 있는 메소드를 재정의하여 데이터 객체를 만들거나, 연산하는데 사용합니다. 다시 말하면, 다양한 빌트인(Built-in) 함수들이 처리할 연산을 원하는대로 다시 정의할 수 있습니다.
Python. 정적 메소드(@classmethod & @staticmethod)
파이썬에서 클래스 안에서 정의되는 메소드는 크게 인스턴스 메소드, 스태틱 메소드, 클래스 메소드가 있습니다. 스태틱 메소드와 클래스 메소드를 정적 메소드라 표현합니다. 정적 메소드는 클래스를 통해 직접 접근할 수 있는 메소드를 의미합니다. 기존에는 클래스 속 정의된 인스턴스 메소드를 호출하기 위해 1)클래스 정의 2)객체 생성 3)함수 호출의 과정을 거쳐야 했으나, 정적 메소드를 활용하면 객체를 생성하지 않고 클래스 이름 뒤에 마침표(.)를 찍어 직접 호출이 가능합니다.
Python. @Property
클래스에서 함수를 사용하여 값을 가져오거나 저장하는 경우가 있습니다. 일반적으로 getter
, setter
라고 명명합니다. 말 그대로 값을 가져오거나 저장하기 위해 만들어진 함수를 의미합니다. 아래의 예제는 Person
이라는 클래스에 이름을 저장하는 setter set_name
함수와 이름을 가져오는 getter get_name
함수로 구성되어 있습니다.
Tensorflow Basic. Overview of the tensorflow
텐서플로(Tensorflow)
를 사용하면 머신 러닝 문제를 아주 효과적으로 해결할 수 있습니다. 머신 러닝은 음성 인식, 자연어 처리, 영상 처리 등의 다양한 분야에서 사용되고 있습니다. 텐서플로가 동작하는 방식이 처음에는 낮설게 느껴질 수 있지만, 이러한 복잡한 계산 방식 덕분에 복잡한 알고리즘을 쉽게 개발할 수 있습니다.
Python. List Comprehension
List Comprehension은 리스트를 생성하는 파이썬의 독특한 코드 형태를 의미합니다. List Comprehension을 활용하면 리스트를 생성하고 값을 하나씩 넣어줘야 하는 번거로운 과정을 단 몇 줄로 간단하게 표현할 수 있다는 장점을 가지고 있습니다.