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

- Jul 3
- 5 min read
Updated: Jul 17
🧠 บริบทของปัญหา: ข้อมูลแบบ "วัดซ้ำ" หรือ "สัมพันธ์กัน"
ข้อมูลที่เรามักเจอในงานวิจัยคลินิกมีลักษณะ ไม่เป็นอิสระ (non-independent) เช่น:
คนไข้คนเดียววัด FBS หลายครั้ง
คนไข้ที่อยู่ในโรงพยาบาลเดียวกัน
วัดค่าซ้าย-ขวาของตา หรือหู
เด็กในห้องเรียนเดียวกัน
ถ้าใช้สถิติทั่วไป (Naïve model) ที่ สมมุติว่าแต่ละข้อมูลเป็นอิสระ ผลจะ ผิด ทันที (เช่น SE ต่ำไป สูงไป, 95% Ci ผิด, p-value ผิด)
📌 เป้าหมายของโมเดล: รับมือกับ "correlation"
เราต้องเลือกว่าจะวิเคราะห์ด้วย:
Marginal model → คำนวณค่าเฉลี่ยของทั้งกลุ่ม (Population-Averaged)
Conditional model → สนใจแต่ละรายหรือกลุ่ม (Subject-Specific)
ดูแผนภาพด้านล่าง:
🔹 ครึ่งบน: Marginal Model (โมเดลค่าเฉลี่ยประชากร)
📍 คำอธิบาย
เป็น โมเดลชั้นเดียว (Single-level) ไม่สนว่าใครเป็นใคร
คิดแบบ “ทุกคนรวมกัน เฉลี่ยว่าเกิดอะไรขึ้น”
ไม่สร้างตัวแปรเฉพาะคนไข้
🔧 วิธีจัดการความสัมพันธ์ในข้อมูล
แบ่งเป็น 2 แบบตามการคำนวณ ความแปรปรวน (Variance):
✅ ใช้ใน GEE (Generalized Estimating Equations)
🔸 ครึ่งล่าง: Conditional Model (โมเดลเฉพาะราย/กลุ่ม) 📍 คำอธิบาย
เป็น โมเดลหลายชั้น (Multilevel model) หรือ Hierarchical model
คิดว่า “คนไข้แต่ละคนเริ่มต้นไม่เหมือนกัน” → ใส่ความแปรปรวนระดับกลุ่มเข้าไป
เหมาะกับข้อมูลที่มี คลัสเตอร์ เช่น คนไข้ในแพทย์ต่างคน, โรงพยาบาลต่างกัน
🔧 มี 2 ทางเลือก:
✅ ใช้ใน Mixed-effects model เช่นใน Stata: ใช้คำสั่ง mixed WSSMAXaorta i.section##i.group_bin sex Age || id:
📊 คำทับศัพท์ที่ควรรู้:
Random intercept ทุกตัวมี model ของตัวเอง แต่ ความชันเท่า

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

Fixed effect เอา Random intercept with Random slope แต่ละคนมาคิดเลย
📊 ลำดับโมเดลวิเคราะห์ข้อมูลวัดซ้ำ: ดีที่สุด → ถอยตามข้อมูล
Conditional Model = “Subject-Specific”
เราไม่ได้สนใจแค่ “คนโดยเฉลี่ย”
แต่เราบอกว่า: “คนแต่ละคนไม่เหมือนกัน”
จึงต้อง model intercepts and/or slope เฉพาะราย
➡️ เพื่อให้ทำเช่นนี้ได้ เราต้อง มีหลายระดับ (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
🥇 1. Conditional Model — Random Effects (Mixed-Effects Model)
ใช้:
mixed outcome predictors || id:
รองรับ: • Random intercept • Random slope • Nested/complex structure
เหมาะเมื่อ: • มี ID / cluster • กลุ่ม ≥ 5 • สนใจการพยากรณ์เฉพาะรายบุคคล
❌ ถอยเมื่อ: • กลุ่มน้อย • ข้อมูลไม่พอ estimate slope • โมเดลไม่ converge
🥈 2. Conditional Model — Fixed Effects
ใช้:
xtreg outcome predictors, fe reg outcome i.group
เหมาะเมื่อ: • กลุ่มน้อย • ต้องการควบคุมเฉพาะกลุ่มในข้อมูล
❌ ถอยเมื่อ: • ไม่มี ID / cluster • ต้องการผลแบบ population-average
"Mixed" = Fixed + Random
mixed = fixed effects + random effects
📌 ส่วนที่ “Fixed” = ตัวแปรทั่วไป (predictors)
เหมือนใช้ใน regress, xtreg, เช่น:
เพศ
อายุ
ชนิดยา
เวลา
📌 ส่วนที่ “Random” = ความแปรปรวนของกลุ่ม (cluster-specific variation)
intercept/slope ที่แตกต่างกันในแต่ละ ID
nested structure: คนในรพ., เด็กในห้องเรียน, ข้อมูลวัดซ้ำในคนเดียวกัน
📘 ตัวอย่างสมการเบื้องหลัง mixed
สมมุติ: วัด HbA1c หลายครั้งในแต่ละคน
HbA1c_ij = β0 + β1*time_ij + u0j + ε_ij
β0, β1 = Fixed effects
u0j = Random intercept (แต่ละคน j เริ่มต้นต่างกัน)
ε_ij = residual error
→ ใน Stata:
mixed HbA1c i.time || id:
🧪 สาระสำคัญของ mixed
Marginal Model
เพราะ Marginal Model สนใจ “ผลรวมเฉลี่ย” ของประชากร → ไม่ model กลุ่ม/บุคคล→ จึงไม่ต้อง (และไม่สามารถ) แยกชั้นข้อมูล → ไม่มีโครงสร้าง multilevel
Single-level
📌 Correlation ไม่จำเป็นต้อง Multilevel
🔹 Multilevel = มีชั้น (e.g. รพ. > คน)
ใช้ mixed … || hospital: || id:
มี structure hierarchy ชัดเจน
🔸 Single-level ก็มี correlation ได้ ถ้า…
มี ข้อมูลซ้ำในกลุ่มเดียวกัน เช่น:
ตาซ้าย-ขวา → ซ้ำในคน
เด็กในห้องเรียนเดียวกัน
หลายคนจากคลินิกเดียวกัน
ใช้ xtgee … i(cluster), corr(...)
🥉 3. Marginal Model — Model-Based Variance (GEE with correlation)
🎯 เป้าหมาย
วิเคราะห์ ผลเฉลี่ยของประชากร (Population-Averaged)
สนใจว่า “ในภาพรวม ทุกคนตอบสนองต่อ X อย่างไร”
📦 วิธีคิด
Model สมมุติว่า: ข้อมูลมีการวัดซ้ำ → เกิด correlation
แต่ ไม่ได้ model แบบ subject-specific (ไม่มี uⱼ เหมือนใน mixed)
ใช้ correlation matrix เพื่อระบุว่าข้อมูลใน subject เดียวกันมีความสัมพันธ์กันแค่ไหน
🧩 ต้องระบุ correlation structure (working correlation)
🧪 Clinical Use Case:
❌ ข้อจำกัด:
ถ้า เลือก structure ผิด → SE จะผิด → p-value ไม่แม่น
ถ้า กลุ่มน้อย → การประมาณ correlation จะไม่นิ่ง
🔴 corr(independent)
สมมุติว่าไม่มีความสัมพันธ์เลย (ρ = 0)
🟢 corr(exchangeable)
สมมุติว่า ทุกคู่สัมพันธ์เท่ากัน (ρ = 0.80)
🟡 corr(ar1)
ความสัมพันธ์ลดลงตามระยะเวลา (ρ = 0.90)
🔵 corr(sta1)
ความสัมพันธ์เฉพาะระยะติดกัน (lag 1), ρ = 0.80
🟣 corr(uns)
ไม่สมมุติใด ๆ → ให้แต่ละค่ามี correlation ของตัวเอง
🪙 4. Marginal Model — Empirical (Robust SE)
🎯 เป้าหมาย
ปรับ SE ให้ ถูกต้องแม้ model correlation ผิด
ตีความแบบ population-average เช่นเดียวกับ GEE ปกติ
📦 วิธีคิด
xtgee y x1 x2, corr(anything) vce(robust)
vce(robust) = ใช้ sandwich estimator แทนการพึ่ง working correlation
จะ ignore structure ในการหา SE → ใช้ข้อมูลจริงเป็นหลัก
✅ ข้อดี:
แม้คุณสมมุติว่า correlation เป็น exchangeable หรือ ar1
ถ้า model ผิด → SE ยังคง robust ถูกต้อง
🔐 เหมาะกับ:
ข้อมูลไม่สมบูรณ์ (missing visit, spacing ไม่เท่ากัน)
กลุ่มน้อย
ไม่มั่นใจว่าโครงสร้าง correlation แบบไหน
ต้องการ safe fallback ที่ไม่ overstate ความแม่นยำ
🧪 Clinical Use Case:
🧭 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
ถ้าคุณ ระบุ corr() ได้ถูกต้องจริง (เช่น ar1 กับข้อมูล 0-3-6 เดือน)
GEE Model-Based จะให้ SE ที่มี efficiency สูงกว่า
→ แปลว่า พลังทางสถิติดีกว่า (statistical power ↑)
📈 นี่คือเหตุผลที่ textbook บอกว่า Model-based “preferred when structure known”





Comments