<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Survival Analysis |</title><link>https://chaeniverse.github.io/tags/survival-analysis/</link><atom:link href="https://chaeniverse.github.io/tags/survival-analysis/index.xml" rel="self" type="application/rss+xml"/><description>Survival Analysis</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Wed, 01 Oct 2025 00:00:00 +0000</lastBuildDate><image><url>https://chaeniverse.github.io/media/icon_hu_da05098ef60dc2e7.png</url><title>Survival Analysis</title><link>https://chaeniverse.github.io/tags/survival-analysis/</link></image><item><title>Improved Survival in Multiple Myeloma with Early Precursor Detection</title><link>https://chaeniverse.github.io/projects/mm-precursor-survival/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate><guid>https://chaeniverse.github.io/projects/mm-precursor-survival/</guid><description>&lt;h4 id="개요"&gt;개요&lt;/h4&gt;
&lt;p&gt;다발골수종(Multiple Myeloma, MM) 환자에서 전구 질환(MGUS, smoldering MM)의 사전 진단 여부에 따라 생존 확률이 어떻게 달라지는지 비교 분석한 전국 규모 후향적 코호트 연구입니다. 조기 검진(early detection)이 생존률을 높임을 입증해, MM 환자에 대한 초기 단계 screening의 임상적 가치를 제안했습니다.&lt;/p&gt;
&lt;h4 id="데이터"&gt;데이터&lt;/h4&gt;
&lt;p&gt;건강보험심사평가원(Health Insurance Review and Assessment Service, HIRA) 빅데이터 약 5천만 명 코호트에서 SQL을 활용해 MGUS, smoldering MM, &lt;em&gt;de novo&lt;/em&gt; MM 환자군을 정의하고 추출했습니다.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Cohort selection flowchart from HIRA big data"
srcset="https://chaeniverse.github.io/projects/mm-precursor-survival/cohort-flowchart_hu_f1653ffdb5e08212.webp 320w, https://chaeniverse.github.io/projects/mm-precursor-survival/cohort-flowchart_hu_3f8e95e62323dd81.webp 480w, https://chaeniverse.github.io/projects/mm-precursor-survival/cohort-flowchart_hu_328ee8696d1b5504.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chaeniverse.github.io/projects/mm-precursor-survival/cohort-flowchart_hu_f1653ffdb5e08212.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="분석-방법"&gt;분석 방법&lt;/h4&gt;
&lt;p&gt;선택 편향을 보정하기 위해 inverse probability of treatment weighting (IPTW) 매칭을 적용하고, weighted survival curve와 marginal Cox proportional hazards 분석으로 그룹 간 생존 확률을 비교했습니다. 분석은 R과 SAS로 구현했습니다.&lt;/p&gt;
&lt;h4 id="성과"&gt;성과&lt;/h4&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;S. Choi, S.S. Park, C.H. Lee, et al., &amp;ldquo;Improved Survival in Multiple Myeloma Following Prior Detection of Precursor Conditions: A Nationwide Real-world Study,&amp;rdquo; &lt;em&gt;Blood Cancer Journal&lt;/em&gt;, Oct. 2025.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Survival Analysis: Exposure Period, Immortal Time Bias, Fine-and-Gray</title><link>https://chaeniverse.github.io/blog/survival-analysis/</link><pubDate>Mon, 31 Mar 2025 00:00:00 +0000</pubDate><guid>https://chaeniverse.github.io/blog/survival-analysis/</guid><description>&lt;h2 id="ggsurvfit-survfit2-잠깐"&gt;ggsurvfit (&lt;code&gt;survfit2&lt;/code&gt;) 잠깐&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;survfit2()&lt;/code&gt; 는 survival curve를 깔끔하게 그려주는 함수로 &lt;strong&gt;&lt;code&gt;ggsurvfit&lt;/code&gt;&lt;/strong&gt; 패키지에 있다. base R &lt;code&gt;survfit()&lt;/code&gt; 결과를 ggplot 스타일로 변환.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ggsurvfit&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;survfit2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;Surv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;|&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;ggsurvfit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;add_confidence_interval&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;add_risktable&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="wash-out-기간"&gt;Wash-out 기간&lt;/h2&gt;
&lt;p&gt;중재/약물 연구에서 &lt;strong&gt;이전 치료의 잔여 효과가 몸에서 사라지도록 두는 기간&lt;/strong&gt;. 이 동안 참가자는 어떤 치료도 받지 않는다.&lt;/p&gt;
&lt;p&gt;예) 약물 A 효과 평가 후 같은 참가자에게 약물 B를 투여하기 전, A의 잔여 효과가 완전히 사라질 때까지 기다린다 → B 효과를 정확히 측정 가능.&lt;/p&gt;
&lt;h2 id="index-date를-어디로-잡을-것인가--exposure-period-문제"&gt;Index Date를 어디로 잡을 것인가 — Exposure Period 문제&lt;/h2&gt;
&lt;p&gt;후향적 약물 연구의 핵심 질문 중 하나: &lt;strong&gt;약 복용 시점을 index date로 잡을지, 진단일로 잡을지.&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&amp;ldquo;팽이 비유: 팽이 던진 순간부터는 가만 둬야 한다. 그 이후에 행위(약 처방)를 추가하면 그게 time-varying cox이고, 결과 활용이 어려워서 잘 안 쓴다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="index-date--진단일로-잡으면"&gt;Index date = 진단일로 잡으면&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;좋은 점: control 군의 index를 잡기 쉽다.&lt;/li&gt;
&lt;li&gt;문제: 복용군이 약을 &lt;strong&gt;언제&lt;/strong&gt; 먹었는지 모를 때 immortal time bias.
&lt;ul&gt;
&lt;li&gt;약을 1년 뒤에 먹은 사람 = &amp;ldquo;1년 동안 죽지 않았다&amp;rdquo; 는 정보가 미래에서 새는 셈.&lt;/li&gt;
&lt;li&gt;control 군은 그런 보장이 없다 → &lt;strong&gt;항상 약 먹은 사람이 더 오래 산다 (효과 좋음)&lt;/strong&gt; 로 잘못 나옴.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="index-date--약-복용일로-잡으면"&gt;Index date = 약 복용일로 잡으면&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;control 군의 index를 잡을 수 없다 (약을 안 먹었으니까).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="가장-흔한-해결-landmark--exposure-period"&gt;가장 흔한 해결: Landmark + Exposure Period&lt;/h3&gt;
&lt;p&gt;진단일부터 일정 기간 (예: 1년, 2년) 을 &lt;strong&gt;exposure period&lt;/strong&gt; 로 정의:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;진단 시점부터 진단 + N년까지를 exposure 정의 구간&lt;/strong&gt; 으로 둔다.&lt;/li&gt;
&lt;li&gt;그 안에 약을 먹었으면 treatment, 아니면 control.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;분석 시작은 진단 + N년 시점부터&lt;/strong&gt; (이게 새 index date).&lt;/li&gt;
&lt;li&gt;분석엔 N년 이전 데이터는 버림.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;효과&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Treatment 군과 control 군이 &lt;strong&gt;같은 시점부터 추적 시작&lt;/strong&gt; → immortal time이 양쪽에 동일하게 작용해 상쇄.&lt;/li&gt;
&lt;li&gt;미래 정보 누설 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;단점&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;N년 사이에 사망한 사람은 분석에서 제거 → 표본 수 감소.&lt;/li&gt;
&lt;li&gt;N이 너무 길면 표본이 많이 빠진다.&lt;/li&gt;
&lt;li&gt;결과는 &amp;ldquo;진단 후 N년까지 살아남은 사람들&amp;rdquo; 에 한정된 효과.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="실무-팁"&gt;실무 팁&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;랜드마크 1년 vs 2년 vs 3년&lt;/strong&gt; 으로 표본 수와 결과를 비교해보고 합리적인 기간을 고른다.&lt;/li&gt;
&lt;li&gt;가능하면 &lt;strong&gt;진단 전에 먹은 것만&lt;/strong&gt; 분석하는 게 가장 깔끔 (statin 연구처럼).&lt;/li&gt;
&lt;li&gt;&amp;ldquo;약을 끊는 시점&amp;rdquo; 같이 &lt;strong&gt;미래 정보를 봐야 하는 분석&lt;/strong&gt;은 본질적으로 어렵다. 그래도 landmark로 어느 정도 우회 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="treatment-군-정의의-시점성"&gt;Treatment 군 정의의 시점성&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&amp;ldquo;팽이를 만드는 거랑 팽이를 치는 거랑 차이가 있다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;treatment 군 / control 군을 정할 때는 &lt;strong&gt;현재 기준&lt;/strong&gt; 으로 해야 한다.&lt;/li&gt;
&lt;li&gt;그냥 raw data로 &amp;ldquo;이 사람이 치료받은 사람이고 저 사람은 아니다&amp;rdquo; 라고 하면 사실상 &lt;strong&gt;미래를 본 거&lt;/strong&gt; (그 사람이 약을 먹은 게 미래라).&lt;/li&gt;
&lt;li&gt;그래서 landmark를 걸면 그 시점까지의 정보로 그룹을 정의 — &amp;ldquo;현재 기준&amp;rdquo; 이 됨 → 사기 X.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="competing-risk-regression-실무-코드"&gt;Competing Risk Regression (실무 코드)&lt;/h2&gt;
&lt;h3 id="cause-specific-hazard-model"&gt;Cause-Specific Hazard Model&lt;/h3&gt;
&lt;p&gt;특정 사망 (e.g., cancer death) 의 위험만 본다. 다른 event는 censoring 처리.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;coxph&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;Surv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="bp"&gt;T&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# status == 1 만 event, 그 외(예: 사망)는 censor&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="fine-and-gray-sub-distribution-model"&gt;Fine-and-Gray Sub-Distribution Model&lt;/h3&gt;
&lt;p&gt;다른 event 발생 시 그 사람을 &lt;strong&gt;risk set에서 빼지 않고 무한대로 둔다.&lt;/strong&gt; Cumulative incidence와 1:1 대응.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cmprsk&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# crprep으로 weighted long-format data 생성&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# (또는 직접 crr 사용)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;fit.crr&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;crr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ftime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;d.age&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fstatus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="n"&gt;cod2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cov1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;covs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;failcode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cencode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fit.crr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="두-모델-어떻게-다른가"&gt;두 모델 어떻게 다른가&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cause-specific&lt;/strong&gt; — 특정 원인 사망의 hazard rate를 추정. 다른 event는 censor 처리. 인과적 해석에 가깝지만, cumulative incidence plot과 직접 매칭되지 않는다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fine-and-Gray&lt;/strong&gt; — sub-distribution hazard. &lt;strong&gt;Cumulative incidence plot과 1:1 대응&lt;/strong&gt; → HR과 CI plot을 같이 보여주기 좋다. 임상에서 더 많이 쓰임.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;임상에서 cuminc plot과 HR을 함께 보여주려면 &lt;strong&gt;Fine-and-Gray&lt;/strong&gt; 가 자연스럽다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="fine-and-gray가-cuminc와-일치하는-이유-간단-설명"&gt;Fine-and-Gray가 cuminc와 일치하는 이유 (간단 설명)&lt;/h2&gt;
&lt;p&gt;Fine-and-Gray model의 핵심은 &lt;strong&gt;다른 event가 일어난 사람도 끝까지 본다&lt;/strong&gt;는 것 — 사망 시점에서 끊지 않고 연구 종료일까지 추적한다고 본다.&lt;/p&gt;
&lt;p&gt;다만 &amp;ldquo;언제까지 볼지&amp;rdquo; 가 애매하므로 &lt;strong&gt;시간이 멀어질수록 weight를 작게&lt;/strong&gt; 준다. 이렇게 &lt;strong&gt;stabilized censoring weight&lt;/strong&gt;를 곱한 long-format 데이터를 만들면, &lt;code&gt;survfit + ggsurvplot&lt;/code&gt; 로 그린 cumulative incidence plot이 &lt;code&gt;cmprsk::cuminc&lt;/code&gt; / &lt;code&gt;prodlim::Hist&lt;/code&gt; 결과와 정확히 일치한다.&lt;/p&gt;
&lt;p&gt;→ Geskus 가 증명한 결과. R에서는 &lt;code&gt;cmprsk::crprep()&lt;/code&gt; 함수가 이 long-format 데이터를 만들어준다.&lt;/p&gt;
&lt;h2 id="matching-with-matchit"&gt;Matching with &lt;code&gt;MatchIt&lt;/code&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;MatchIt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;m.out&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;matchit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;sex&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;comorbidities&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;method&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;nearest&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;caliper&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;m.data&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;match.data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m.out&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;coxph&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;Surv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;~&lt;/span&gt; &lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m.data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;method = &amp;quot;full&amp;quot;&lt;/code&gt; 을 주면 optimal full matching이 자동으로 적용됨.&lt;/p&gt;
&lt;h3 id="greedy-vs-full-matching"&gt;Greedy vs Full Matching&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Greedy (nearest, 1:1)&lt;/strong&gt; — 임상 국룰. 거리 가까운 짝부터 차례로 매칭. caliper로 정밀도 제어. 표본 손실 있음.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Full&lt;/strong&gt; — &lt;code&gt;optmatch&lt;/code&gt; 패키지 기반. 모든 케이스를 활용해 더 효율적이지만 해석/보고가 까다롭다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="한-줄-요약"&gt;한 줄 요약&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;Index date 결정이 곧 immortal time bias 처리의 핵심.&lt;/strong&gt; Exposure period + landmark가 가장 흔한 실무 해법이고, competing risk가 있을 땐 Fine-and-Gray가 cumulative incidence plot과 1:1 대응해 가장 자주 쓰인다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="관련"&gt;관련&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="참고"&gt;참고&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;
&lt;/em&gt; (Austin, Statistics in Medicine)&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Competing Risk Analysis</title><link>https://chaeniverse.github.io/blog/competing-risk-analysis/</link><pubDate>Fri, 15 Mar 2024 00:00:00 +0000</pubDate><guid>https://chaeniverse.github.io/blog/competing-risk-analysis/</guid><description>&lt;h2 id="competing-risk란"&gt;Competing Risk란&lt;/h2&gt;
&lt;p&gt;생존분석에서 &lt;strong&gt;관심 event 외에 다른 event가 있어 두 event가 서로의 발생 확률에 영향을 주는&lt;/strong&gt; 상황. 그래서 한 event가 다른 event의 변동을 일으킨다 → &amp;ldquo;경쟁 위험&amp;rdquo;.&lt;/p&gt;
&lt;h3 id="직관-예시"&gt;직관 예시&lt;/h3&gt;
&lt;p&gt;술이 위암(A)의 원인이라고 하자. 술 먹는 사람은 위암 위험이 ↑.&lt;/p&gt;
&lt;p&gt;근데 술이 간암(A&amp;rsquo;)의 원인도 된다면? → 술 먹은 사람 중 어떤 이는 간암이 먼저 생기고, 어떤 이는 위암이 생긴다.&lt;/p&gt;
&lt;p&gt;간암 생긴 사람은 &lt;strong&gt;사망이라는 event가 먼저 발생&lt;/strong&gt; → 그 사람의 위암은 더 이상 관찰되지 않는다. 결과적으로 위암은 작게 측정되는 (감소하는) 방향으로 작동한다.&lt;/p&gt;
&lt;p&gt;이렇게 하나의 원인에 대해 다른 event가 경쟁적으로 작동해, &lt;strong&gt;A&amp;rsquo;(간암) event 때문에 A(위암) event가 변동되는&lt;/strong&gt; 게 competing risk이다.&lt;/p&gt;
&lt;h3 id="mgus--mm-코호트-예시"&gt;MGUS / MM 코호트 예시&lt;/h3&gt;
&lt;p&gt;MGUS 코호트에서 outcome이 (MM 발생, 사망, censored) 라고 하자.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;관심 event: MM 발생 (event = 1)&lt;/li&gt;
&lt;li&gt;Competing risk: 사망 (사망으로 인해 MM outcome으로 갈 확률이 줄어드는 거니까)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="두-가지-처리-방법"&gt;두 가지 처리 방법&lt;/h2&gt;
&lt;h3 id="cause-specific-model"&gt;Cause-Specific Model&lt;/h3&gt;
&lt;p&gt;다른 event를 &lt;strong&gt;censored&lt;/strong&gt; 로 처리하고 관심 event에 대해 standard Cox 회귀를 적용. 진정한 인과적 효과 (cause-specific hazard) 를 본다.&lt;/p&gt;
&lt;h3 id="fine-gray-sub-distribution-model"&gt;Fine-Gray Sub-Distribution Model&lt;/h3&gt;
&lt;p&gt;다른 event 발생 시 &lt;strong&gt;추적 기간을 연구 종료일까지로 두고&lt;/strong&gt; sub-distribution hazard를 모델링. → &lt;strong&gt;Cumulative incidence plot (CIF)&lt;/strong&gt; 와 1:1 대응.&lt;/p&gt;
&lt;h2 id="어느-걸-쓰나"&gt;어느 걸 쓰나&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;인과적 효과&lt;/strong&gt;를 보고 싶다 → cause-specific model이 더 적합&lt;/li&gt;
&lt;li&gt;그러나 &lt;strong&gt;실무에서는 Fine-Gray가 압도적으로 많이 쓰인다&lt;/strong&gt; — cumulative incidence plot과 직관적으로 매칭되기 때문&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="참고"&gt;참고&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;
&lt;/em&gt; (Austin, Statistics in Medicine)&lt;/li&gt;
&lt;li&gt;출처:
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>