← All posts

Marginal vs Conditional Models: Repeated measures is a subset of Correlation

Clinical Epidemiology ResearchUniqcret doctor knowledgesData Analytics or StatisticsStata [Data Analytics]Methodology and Research Design
Marginal vs Conditional Models: Repeated measures is a subset of Correlation

🧠 บริบทของปัญหา: ข้อมูลแบบ "วัดซ้ำ" หรือ "สัมพันธ์กัน"

ข้อมูลที่เรามักเจอในงานวิจัยคลินิกมีลักษณะ ไม่เป็นอิสระ (non-independent) เช่น:

ถ้าใช้สถิติทั่วไป (Naïve model) ที่ สมมุติว่าแต่ละข้อมูลเป็นอิสระ ผลจะ ผิด ทันที (เช่น SE ต่ำไป สูงไป, 95% Ci ผิด, p-value ผิด)

📌 เป้าหมายของโมเดล: รับมือกับ "correlation"

เราต้องเลือกว่าจะวิเคราะห์ด้วย:

  1. Marginal model → คำนวณค่าเฉลี่ยของทั้งกลุ่ม (Population-Averaged)
  2. Conditional model → สนใจแต่ละรายหรือกลุ่ม (Subject-Specific)

ดูแผนภาพด้านล่าง:

Markmap

🔹 ครึ่งบน: Marginal Model (โมเดลค่าเฉลี่ยประชากร)

📍 คำอธิบาย

🔧 วิธีจัดการความสัมพันธ์ในข้อมูล

แบ่งเป็น 2 แบบตามการคำนวณ ความแปรปรวน (Variance):

ประเภทวิธีคิดจุดเด่น
Empirical-basedใช้ข้อมูลจริงมาคำนวณ SE (เรียก robust SE หรือ sandwich estimator)ไม่ต้องเดาว่าความสัมพันธ์เป็นแบบไหน
Model-based varianceสมมุติว่าโครงสร้างความสัมพันธ์เป็นแบบหนึ่ง เช่น AR(1), exchangeableแม่นยำกว่าเมื่อสมมุติถูกรูปแบบ

✅ ใช้ใน GEE (Generalized Estimating Equations)


🔸 ครึ่งล่าง: Conditional Model (โมเดลเฉพาะราย/กลุ่ม) 📍 คำอธิบาย

🔧 มี 2 ทางเลือก:

ประเภทรายละเอียดใช้เมื่อ
Fixed effectใส่ตัวแปร "ชื่อกลุ่ม" เช่น แพทย์ A, B, Cถ้ากลุ่มมีน้อย
Random effectไม่ใส่ชื่อกลุ่ม แต่บอกให้โมเดล "เรียนรู้ว่ากลุ่มต่างกันแค่ไหน"ถ้ากลุ่มมีจำนวนมาก

✅ ใช้ใน Mixed-effects model เช่นใน Stata: ใช้คำสั่ง mixed WSSMAXaorta i.section##i.group_bin sex Age || id:


📊 คำทับศัพท์ที่ควรรู้:

ศัพท์ความหมาย
Random interceptจุดเริ่มต้นเฉพาะของแต่ละกลุ่ม (baseline ต่างกัน) จุดตัดแกน Y
Random slopeความชันของแนวโน้มต่างกันในแต่ละกลุ่ม
Fixed effectใส่ชื่อกลุ่มชัด ๆ ลงในโมเดล
Marginal modelโมเดลที่คิดเฉลี่ยภาพรวมของทุกคน
Conditional modelโมเดลที่แยกเฉพาะกลุ่ม/รายบุคคล
GEEวิธีวิเคราะห์แบบ Marginal model โดยใช้ correlation
Mixed-effect modelวิธีวิเคราะห์แบบ Conditional model โดยใช้ random effect

Random intercept ทุกตัวมี model ของตัวเอง แต่ ความชันเท่า

Random intercept with Random slope ทุกตัวมี model ของตัวเอง และ ความชันต่าง

Fixed effect เอา Random intercept with Random slope แต่ละคนมาคิดเลย


📊 ลำดับโมเดลวิเคราะห์ข้อมูลวัดซ้ำ: ดีที่สุด → ถอยตามข้อมูล

อันดับโมเดลคำอธิบาย
🥇 1Conditional Model — Multi-level — Random Effectโมเดลเฉพาะราย รองรับผลแตกต่างทั้ง intercept และ slope
🥈 2Conditional Model — Multi-level — Fixed Effectเฉพาะกลุ่มที่มีในข้อมูล ใช้ dummy ไม่สามารถทำนายกลุ่มใหม่
🥉 3Marginal Model — Single-level — Model-Based Varianceค่าเฉลี่ยประชากร สมมุติโครงสร้างความสัมพันธ์
🪙 4Marginal Model — Single-level — Empirical (Robust SE)ใช้ sandwich SE ไม่ต้องสมมุติโครงสร้างใดๆ


Conditional Model = “Subject-Specific”

➡️ เพื่อให้ทำเช่นนี้ได้ เราต้อง มีหลายระดับ (Multi-level) ที่ซ้อนอยู่ในข้อมูล

Multi-level

แนวทางระบุ Cluster หลัก vs ย่อย (Nested Structure)

ถ้ามีหลายระดับ เช่น:ตาซ้าย-ขวา ในแต่ละช่วง follow-up ของแต่ละคน

ให้ดูตามนี้:

ระดับ 1 (หลัก): คน (id)
ระดับ 2: ดวงตา (eye)
ระดับ 3: เวลา (visit/month)

→ Stata syntax:

mixed outcome predictors || id: || eye: || month:

หรือถ้า "eye" เป็น within-subject factor (ไม่ใช่คลัสเตอร์), ก็จัดแบบนี้:

mixed outcome i.eye i.month || id:

📌 Tips: ระบุ Cluster

ลักษณะข้อมูลCluster คืออะไร?Model อย่างไร?
วัดซ้ำในคนเดิมคน`mixed y x
วัดตาซ้าย-ขวาคน (eye = within factor)`mixed y i.eye
คนในโรงพยาบาลรพ. > คน`mixed y x
คนในหลายแพทย์แพทย์ > คน`mixed y x
คนก่อน-หลัง COVIDคน (time = covariate)`mixed y i.period

🥇 1. Conditional Model — Random Effects (Mixed-Effects Model)

🥈 2. Conditional Model — Fixed Effects

"Mixed" = Fixed + Random

mixed = fixed effects + random effects

📌 ส่วนที่ “Fixed” = ตัวแปรทั่วไป (predictors)

เหมือนใช้ใน regress, xtreg, เช่น:

📌 ส่วนที่ “Random” = ความแปรปรวนของกลุ่ม (cluster-specific variation)

📘 ตัวอย่างสมการเบื้องหลัง mixed

สมมุติ: วัด HbA1c หลายครั้งในแต่ละคน

HbA1c_ij = β0 + β1*time_ij + u0j + ε_ij

→ ใน Stata:

mixed HbA1c i.time || id:

🧪 สาระสำคัญของ mixed

Featureอธิบาย
“Fixed effect”ใช้ตีความทั่วไป (e.g. ยาลด HbA1c)
“Random effect”สะท้อน variation เฉพาะบุคคล/กลุ่ม
ใช้กับ data ซ้ำในคน✔️ รองรับ repeat/reclustered
Prediction เฉพาะคน✔️ ได้ curve รายคน

Marginal Model

เพราะ Marginal Model สนใจ “ผลรวมเฉลี่ย” ของประชากร → ไม่ model กลุ่ม/บุคคล→ จึงไม่ต้อง (และไม่สามารถ) แยกชั้นข้อมูล → ไม่มีโครงสร้าง multilevel

Single-level

📌 Correlation ไม่จำเป็นต้อง Multilevel

🔹 Multilevel = มีชั้น (e.g. รพ. > คน)

🔸 Single-level ก็มี correlation ได้ ถ้า…

🥉 3. Marginal Model — Model-Based Variance (GEE with correlation)

🎯 เป้าหมาย

📦 วิธีคิด

🧩 ต้องระบุ correlation structure (working correlation)

corr()ความหมายเหมาะเมื่อ...
indไม่มีความสัมพันธ์เลย (ρ = 0)❌ ห้ามใช้ถ้าเป็น repeated measures
exchangeableทุกคู่สัมพันธ์เท่ากันเวลาห่างกันไม่เท่ากัน หรือซ้ำไม่เยอะ
ar1ความสัมพันธ์ลดตามเวลา (ρ^lag)เวลาห่างเท่ากัน เช่น 0,3,6 เดือน
sta1มีเฉพาะ lag 1 (neighbor เท่านั้น)ข้อมูลถี่ เช่น hourly
unsไม่สมมุติอะไรเลยN ใหญ่ + วัดหลายรอบ (≥6)

🧪 Clinical Use Case:

ตัวอย่างcorr() ที่ควรใช้
HbA1c วัดทุก 3 เดือนar1
BP วัด admit, discharge, f/uexchangeable
CRP วัดรายวันsta1
Biomarker ทุกสัปดาห์ 8 ครั้งuns

❌ ข้อจำกัด:

🔴 corr(independent)

สมมุติว่าไม่มีความสัมพันธ์เลย (ρ = 0)

 T1T2T3T4T5
T11.000.000.000.000.00
T20.001.000.000.000.00
T30.000.001.000.000.00
T40.000.000.001.000.00
T50.000.000.000.001.00

🟢 corr(exchangeable)

สมมุติว่า ทุกคู่สัมพันธ์เท่ากัน (ρ = 0.80)

 T1T2T3T4T5
T11.000.800.800.800.80
T20.801.000.800.800.80
T30.800.801.000.800.80
T40.800.800.801.000.80
T50.800.800.800.801.00

🟡 corr(ar1)

ความสัมพันธ์ลดลงตามระยะเวลา (ρ = 0.90)

 T1T2T3T4T5
T11.000.900.810.730.66
T20.901.000.900.810.73
T30.810.901.000.900.81
T40.730.810.901.000.90
T50.660.730.810.901.00

🔵 corr(sta1)

ความสัมพันธ์เฉพาะระยะติดกัน (lag 1), ρ = 0.80

 T1T2T3T4T5
T11.000.800.000.000.00
T20.801.000.800.000.00
T30.000.801.000.800.00
T40.000.000.801.000.80
T50.000.000.000.801.00

🟣 corr(uns)

ไม่สมมุติใด ๆ → ให้แต่ละค่ามี correlation ของตัวเอง

 T1T2T3T4T5
T11.000.860.740.550.33
T20.861.000.710.490.40
T30.740.711.000.690.50
T40.550.490.691.000.66
T50.330.400.500.661.00

🪙 4. Marginal Model — Empirical (Robust SE)

🎯 เป้าหมาย

📦 วิธีคิด

xtgee y x1 x2, corr(anything) vce(robust)

✅ ข้อดี:

🔐 เหมาะกับ:

🧪 Clinical Use Case:

สถานการณ์ทำไมต้องใช้ vce(robust)?
Visit 0, 3, 9 เดือน (uneven time)ar1 ใช้ไม่ได้ → ต้อง robust
มีคนไข้แค่ 15 คนSE จาก exchangeable จะไม่นิ่ง
ไม่รู้ว่า time spacing สม่ำเสมอไหมStructure uncertain → robust ปลอดภัยสุด

🧭 Marginal Model Decision Tree

START →
→ มีข้อมูลวัดซ้ำหรือกลุ่มที่สัมพันธ์กัน? →
   → ไม่ → regress ปกติ
   → ใช่ →
     → สนใจภาพรวมกลุ่ม (population-avg)? →
         → ใช่ →
             → รู้ structure? →
                 → ใช่ → GEE model-based (xtgee, corr(ar1/exch))
                 → ไม่แน่ใจ → GEE robust (xtgee, vce(robust))
         → ไม่สนใจภาพรวม → ใช้ conditional model (mixed)

✅ หลักการ: Model-Based SE > Empirical SE

📈 นี่คือเหตุผลที่ textbook บอกว่า Model-based “preferred when structure known”

❌ แต่ในโลกจริง: Structure มัก “ไม่รู้แน่ชัด” → Empirical ในตารางล่างเลยดูดีกว่า 📊 เปรียบเทียบสุดท้าย: GEE แบบ Model-based vs Empirical

FeatureModel-Based (GEE)Empirical (Robust SE)
ต้องกำหนด corr()?✔️ ใช่❌ ไม่จำเป็น
ถ้า structure ผิด → SE ผิดไหม?❌ ใช่✅ SE ยังถูกต้อง
เหมาะกับข้อมูลกลุ่มน้อย?❌ ไม่เหมาะ✅ เหมาะมาก
ใช้ sandwich SE?❌ ไม่ใช้✅ ใช้
เหมาะกับภาพรวมประชากร?✅ ใช่✅ ใช่
ตัวอย่างใน Stataxtgee y x, corr(ar1)xtgee y x, vce(robust)

Comments

No comments yet. Be the first to share your thoughts.

Sign in to comment