Immortal Time Bias Explained: Time-Dependent Exposure vs Landmark Analysis
- Mayta
- Aug 28
- 4 min read
Introduction
Immortal time bias arises when a period of time during which an individual must survive (i.e., cannot experience the outcome) is misclassified or improperly handled in the analysis.
🧠 Deep Dive Into the Bias Logic
1. Where It Emerges
Most common in observational cohort studies evaluating treatment effectiveness.
Especially occurs when treatment exposure is defined post-baseline.
2. Root Cause
Follow-up starts at time zero (e.g., diagnosis).
Treatment assignment is conditional on future survival—you can’t get chemo unless you’re alive to receive it.
Those who die early are automatically classified as "untreated", even if they might have eventually been treated.
3. Why It’s Biased
This creates an "immortal period" in the treated group—during which death cannot occur because the patient must survive to be treated.
The comparison is unfair: you're comparing the survival of treated patients who survived long enough to get treatment vs. all untreated patients (including early deaths).
🧠 Immortal Time Bias คืออะไร?
ความหมายแบบเข้าใจง่าย:
เป็นอคติ (bias) ที่เกิดขึ้นเมื่อ “ช่วงเวลาที่ต้องมีชีวิตอยู่” (immortal time) ถูกนับเป็นส่วนหนึ่งของกลุ่มที่ได้รับการรักษา ทั้งที่จริงยังไม่ได้รับการรักษาในช่วงเวลานั้น
ตัวอย่างจากโลกจริง:
ผู้ป่วยมะเร็งถูกวินิจฉัย (Diagnosis) วันที่ 1
เริ่มให้เคมีบำบัด (Treatment) วันที่ 20
หากมีการวิเคราะห์ข้อมูลโดยระบุว่า “คนไข้ที่ได้รับเคมีบำบัดมีอัตรารอดชีวิตสูงกว่า”
แต่นับวันตั้งแต่ วันวินิจฉัยเป็นต้นไป เป็น “ช่วงเวลาหลังรักษา”
นั่นหมายความว่า คนไข้ที่เสียชีวิตก่อนวันที่ 20 จะถูกนับเป็น “กลุ่มไม่ได้รับการรักษา”
📌 ปัญหา:กลุ่มที่ได้รับเคมีบำบัด “ต้องรอดชีวิตให้ถึงวันรักษา” → นี่คือช่วง “อมตะ”→ ทำให้ดูเหมือนว่าการรักษาช่วยชีวิต ทั้งที่ความจริงแค่รอดชีวิตพอจะได้รักษา
เวลาเริ่มนับ (time zero) สำหรับ ทั้งสองกลุ่ม ต้องเท่ากันเสมอ!
วิธีที่ 1: Time-Dependent Exposure ที่ถูกต้องคืออะไร?
ทุกคนในการศึกษาจะเริ่มนับจากวันวินิจฉัย (Diagnosis day)
แต่...
ถ้า ยังไม่ได้รับยา → คนนั้นจะถือว่าเป็น “ยังไม่รักษา” ณ เวลานั้น
ถ้า ได้รับยาแล้ว → ตั้งแต่วันที่เริ่มรับยาเป็นต้นไป คนนั้นจะถูกถือว่าเป็น “ได้รับการรักษา”
🔁 ช่วงเวลาของแต่ละคนถูกแบ่งแบบนี้:
คนไข้ | ช่วงเวลาก่อนเริ่มยา | ช่วงเวลาหลังเริ่มยา |
นาย A (เริ่มยา วันที่ 20) | วันที่ 0–19 = ยังไม่รักษา | วันที่ 20+ = รักษาแล้ว |
นาย B (ไม่ได้รับยาเลย) | วันที่ 0–สิ้นสุด = ยังไม่รักษา | ไม่มี “รักษาแล้ว” |
นาย C (เสียชีวิตก่อนเริ่มยา) | วันที่ 0–ตาย = ยังไม่รักษา | ไม่มี “รักษาแล้ว” |
⛔ ไม่มีใครจะถือว่า "รักษาแล้ว" ตั้งแต่วันวินิจฉัย
💡 สรุปแบบเข้าใจง่าย
❌ ผิด (ทำให้เกิด bias):
กลุ่มได้รับยา: เริ่มนับจากวันได้รับยา
กลุ่มไม่ได้รับยา: เริ่มนับจากวันวินิจฉัย
✅ ถูก (time-dependent):
ทุกคนเริ่มนับจากวันวินิจฉัย
แต่สถานะ “ได้รับการรักษา” จะเปลี่ยนตามเวลา → จาก 0 = ไม่รักษา → 1 = รักษาแล้ว (ถ้าได้รับ)
📈 แนวคิดแบบกราฟเวลา
Time (days) → 0 5 10 15 20 25 30
นาย A U U U U T T T (U = Untreated, T = Treated)
นาย B U U U U U U U
นาย C U U ✝️
นาย A เริ่มยา วันที่ 20 → เปลี่ยนสถานะเป็น “Treated” ตั้งแต่วันนั้น
นาย B ไม่ได้รับยาเลย → ตลอดชีวิตเป็น “Untreated”
นาย C เสียชีวิตก่อนถึงวันรักษา → ถือเป็น “Untreated” ทั้งช่วงชีวิต
🔍 ทำไมมันแฟร์?
เพราะว่า เราให้ทุกคน “โอกาสเท่ากัน” ที่จะได้รับยาและ เราไม่นับเวลาที่เขายังไม่ได้รับยาเป็น “เวลาที่รักษาแล้ว”
ดังนั้น ไม่มี “ช่วงเวลาที่เป็นอมตะ” ถูกบวกเข้าไปผิดๆ ในกลุ่มรักษาอีกต่อไป
✅ สรุป Time-Dependent Exposure
ทุกคนเริ่มนับจาก “วันวินิจฉัย” เหมือนกัน
สถานะการรักษา “เปลี่ยนแปลงตามเวลา” ไม่ใช่กำหนดตั้งแต่แรก
นี่คือแก่นแท้ของ Time-Dependent Exposure Analysis
วิธีนี้ ป้องกัน Immortal Time Bias ได้อย่างมีประสิทธิภาพ
วิธีที่ 2: วิเคราะห์แบบ Landmark Analysis
กำหนด "หมุดเวลา" เช่น วันที่ 30 หลังการวินิจฉัยเลือกเฉพาะคนที่ยังมีชีวิตถึงวันนั้น แล้วจึงดูว่าใครได้รับการรักษาแล้ว ใครยังไม่ได้
นับระยะเวลารอดชีวิต หลังจาก landmark เท่านั้น
เปรียบเทียบระหว่าง “รักษาแล้ว” กับ “ยังไม่รักษา” ตั้งแต่หมุดเวลา
ยอดเยี่ยมมากครับที่คุณถามจุดนี้! เพราะ ความต่างระหว่าง Time-Dependent Exposure กับ Landmark Analysis มัน คล้ายกันในผิวเผิน แต่ต่างกันในแก่น — และ timeline จะช่วยให้คุณ “เห็นภาพ” ชัดเจนที่สุด
📊 ภาพ Timeline เปรียบเทียบ
สมมุติว่ามีผู้ป่วย 4 คน และวันวินิจฉัยคือ วันที่ 0 บางคนได้ยาเร็ว บางคนได้ช้า บางคนไม่รอดถึง Landmark (วันที่ 30)
Time (วัน) → 0 10 20 30 40 50 60
นาย A (เริ่มยาเร็ว) |----TREATED-----------------------> ยังมีชีวิต
นาย B (ได้ยาหลัง 35) |----------UNTREATED---TREATED-----> ยังมีชีวิต
นาย C (ไม่เคยได้ยา) |----------------UNTREATED---------> ยังมีชีวิต
นาย D (ตายก่อน 30) |--------X ตายก่อน Landmark
✅ วิธีที่ 1: Time-Dependent Exposure (แบบเปลี่ยนสถานะ)
ทุกคน เริ่มนับตั้งแต่วันวินิจฉัย (Day 0)
แล้วระบบจะ เปลี่ยนสถานะตามเวลา เช่น:
คนไข้ | วันที่ 0–ยาเริ่ม | หลังจากวันเริ่มยา |
A | Treated (ตั้งแต่ต้น) | Treated ตลอด |
B | Untreated | Treated (หลังวันที่ 35) |
C | Untreated | Untreated ตลอด |
D | Untreated | ตายก่อนเปลี่ยนสถานะ |
→ ทุกวินาทีถูกนับในแบบ ยืดหยุ่นตามเวลา→ แม่นยำ แต่ซับซ้อน (ต้องใช้ Cox time-varying)
✅ วิธีที่ 2: Landmark Analysis (แบบตัดชัด ณ วันเดียว)
กำหนดว่า จะเริ่มนับ survival ตั้งแต่ Day 30 เท่านั้น
เอาเฉพาะคนที่ “ยังไม่ตาย” ณ วันที่ 30
แล้วดูว่า ตอนวันนั้น ได้ยาแล้วหรือยัง
🔒 หลักการสำคัญของ Landmark Analysis
เมื่อคุณกำหนด "หมุดเวลา" เช่น วันที่ 30:
คุณจะดูว่า ในวันที่ 30 แต่ละคน “มีสถานะอะไร”
ได้รับการรักษาแล้ว? → ใส่กลุ่ม Treated
ยังไม่ได้รับการรักษา? → ใส่กลุ่ม Untreated
แล้วคุณจะ “ล็อกสถานะนั้น” ไว้ตลอดการวิเคราะห์
คนไข้ | ยังมีชีวิตถึงวันที่ 30? | ได้ยาแล้ว ณ วันที่ 30? | กลุ่มที่จัด |
A | ✅ | ✅ | Treated |
B | ✅ | ❌ | Untreated |
C | ✅ | ❌ | Untreated |
D | ❌ | ไม่เกี่ยว | ❌ ถูกตัดออก |
→ เห็นไหมครับ? แม้ B ได้ยาหลังวันที่ 30 เขาก็ยังนับเป็น "Untreated"→ เพราะ Landmark “ล็อกกลุ่ม” แบบคงที่ ไม่เปลี่ยนตามเวลา
🔍 สรุปความแตกต่างชัด ๆ
จุดเปรียบเทียบ | Time-Dependent Exposure | Landmark Analysis |
นับทุกวันตั้งแต่วินิจฉัย? | ✅ ใช่ | ❌ ไม่ (เริ่มจาก landmark) |
สถานะการรักษาเปลี่ยนได้ไหม? | ✅ เปลี่ยนได้ตามเวลา | ❌ ไม่เปลี่ยน (ยึดตามวัน landmark) |
คนตายก่อนวัน landmark ถูกนับไหม? | ✅ นับเป็น "ไม่รักษา" ก่อนตาย | ❌ ไม่ถูกนับเลย |
ความแม่นของข้อมูล | 🔝 สูงสุด | ⚠️ ปานกลาง |
ใช้งานง่าย | ❌ ยาก (ต้องใช้ time-varying model) | ✅ ง่ายกว่า |
🧠 ถ้าให้ง่ายที่สุด
แบบที่ 1 (Time-Dependent) → ละเอียด เที่ยงตรง เหมือน “กล้องวิดีโอ”
แบบที่ 2 (Landmark) → ตัด ณ จุดเวลาเดียว เหมือน “ถ่ายภาพนิ่ง”
วิธีที่ 3: เปลี่ยน time-zero จุดเริ่มต้นเป็น “วันเริ่มรักษา” (ใช้เฉพาะบางกรณี)
ติดตามผู้ป่วยเฉพาะจากวันที่เริ่มรับยาเท่านั้นไม่เปรียบเทียบกับผู้ที่ไม่ได้รับยาเลย
เหมาะกับการรายงาน “ผลลัพธ์หลังการรักษา” เท่านั้น เช่น Median Survival After Chemotherapy
❌ ไม่สามารถใช้เพื่อเปรียบเทียบกับกลุ่มไม่ได้รับการรักษาได้
🔎 ใช้ได้เมื่อไหร่?
คุณ ไม่ต้องการเปรียบเทียบ กับกลุ่มที่ ไม่ได้รับการรักษา
คุณแค่สนใจ:
“เมื่อผู้ป่วยเริ่มได้รับยาแล้ว…เขาจะรอดได้นานแค่ไหน?”
🔬 ใช้ในสถานการณ์แบบไหน?
ตัวอย่างคำถาม | ใช้วิธีนี้ได้ไหม? |
“ยาเคมีบำบัดชนิด A มีประสิทธิภาพเท่าไหร่ เทียบกับไม่ให้ยา?” | ❌ ไม่ได้ |
“หลังให้ยา A แล้ว คนไข้รอดชีวิตเฉลี่ยกี่เดือน?” | ✅ ได้ |
“ผู้ที่ได้ยาเร็ว vs ได้ยาช้า มี survival ต่างกันไหม?” | ✅ ได้ (ถ้าเปรียบเฉพาะในกลุ่มที่ได้ยา) |
🔥 ข้อดี
ง่ายสุดในสามวิธี
ใช้ได้ดีกับรายงาน descriptive เช่น:
Kaplan-Meier survival curve
Median survival time after treatment
⚠️ ข้อเสีย (สำคัญมาก)
❌ ไม่ได้ควบคุม Immortal Time Bias เพราะคุณ คัดเอาเฉพาะคนที่รอดพอจะได้ยา
❌ ไม่มี baseline comparison → ไม่รู้ว่ายานั้น “ดีกว่าไม่ได้ให้” จริงหรือไม่
❌ ไม่สามารถใช้ infer causality หรือทำ conclusion แบบเชิงเปรียบเทียบได้
📊 เปรียบเทียบกับอีกสองวิธี
ประเด็น | Time-Dependent Exposure | Landmark Analysis | เริ่มจากวันเริ่มรักษา |
เปรียบเทียบกลุ่มได้ไหม? | ✅ ได้ | ✅ ได้ | ❌ ไม่ได้ |
ป้องกัน immortal time bias? | ✅ สูงสุด | ✅ ปานกลาง | ❌ ไม่ได้เลย |
ใช้งานง่าย? | ❌ ยาก | ✅ ปานกลาง | ✅ ง่ายที่สุด |
ใช้เมื่อไหร่ดี? | ต้องการ causal effect แม่นๆ | ประเมิน treatment effect ณ วันคัดกรอง | แค่สนใจผลลัพธ์ “หลังรักษา” |
🧠 ภาพตัวอย่าง (Timeline)
Time → 0 10 20 30 40 50
นาย A |------------เริ่มยา------------->
นาย B |-------------------เริ่มยา------>
นาย C |--------เสียชีวิตก่อนเริ่มยา (ไม่ถูกรวม)
คุณจะวิเคราะห์แค่ A และ B เท่านั้น
เริ่มนับ จากวันที่แต่ละคนได้ยา
นาย C ❌ ไม่ถูกวิเคราะห์เลย
✅ สรุป Redefine Time-Zero as Treatment Start
วิธีที่ 3 เหมาะสำหรับคำถามว่า: “หลังจากผู้ป่วยเริ่มได้รับการรักษาแล้ว ผลลัพธ์ของเขาเป็นอย่างไร?” ❌ ไม่เหมาะกับคำถามว่า:“การรักษาดีกว่าไม่รักษาหรือไม่?” เพราะมัน เลือกเฉพาะผู้ที่รอดมาพอจะได้ยา แล้ว




