หา Risk Ratio เมื่อผลลัพธ์พบบ่อย: ลำดับขั้นถอยลงเมื่อ Log-Binomial ชนกำแพง

On this page
Read the English version
บทคัดย่อ
สำหรับ outcome แบบ binary ที่ต้องการรายงานเป็น risk ratio การเลือก model มีลำดับขั้นถอยลงที่ตายตัว เริ่มจาก log-binomial regression ก่อน ถ้าไม่ converge ให้ใช้ modified Poisson regression พร้อม robust standard error แล้วจึงเป็น Gaussian working model พร้อม robust standard error และเปลี่ยนไปใช้ logistic regression เฉพาะเมื่อยอมรับ odds ratio ได้ ลำดับนี้จะเข้าใจง่ายเมื่อแยกสามคำถามที่ปนอยู่ในคำว่า “model” ออกจากกัน คือจะรายงาน effect อะไร ใช้ link อะไร และสมมติ variance แบบไหน log link คือสิ่งที่ทำให้ coefficient เป็น risk ratio ส่วน family กำหนดแค่ variance Log-binomial ตรงกับข้อมูล binary แต่ fitted risk ของผู้ป่วยทุกคนต้องไม่เกิน 1 optimizer จึงต้องค้นหาชิดกำแพงและอาจติดขัด Modified Poisson ใช้ mean equation เดียวกัน รื้อกำแพงออก แล้วซ่อม variance ของ Poisson ที่ผิดด้วย robust standard error บทความนี้ไล่ลำดับขั้นถอยลงก่อน แล้วจึงอธิบายเหตุผล พร้อมตัวอย่างคำนวณด้วยมือสั้น ๆ
ภาวะแทรกซ้อนหลังผ่าตัด กับ model ที่ไม่ converge
ทีมศัลยกรรมทีมหนึ่งศึกษาปัจจัยที่สัมพันธ์กับการเกิดภาวะแทรกซ้อนหลังผ่าตัด outcome เป็น binary คือผู้ป่วยเกิดภาวะแทรกซ้อนหรือไม่เกิด ทีมต้องการรายงาน adjusted risk ratio จึงเริ่มวิเคราะห์ด้วย log-binomial regression
แต่ model ไม่ converge คือ algorithm ที่ใช้ fit ไม่เคยลงตัวที่ค่าประมาณที่เสถียร ทีมควร fit model อะไรต่อ? คำตอบเป็นลำดับขั้นถอยลงที่ตายตัว และเหตุผลอยู่บนสามเรื่อง คือ link, variance และกำแพงที่ risk เท่ากับ 1
ลำดับขั้นถอยลงเพื่อหา risk ratio
เมื่อ outcome เป็น binary เช่น หาย/ไม่หาย, ตาย/รอด หรือเกิดโรค/ไม่เกิดโรค และผลที่ต้องรายงานคือ Risk Ratio (RR) การเลือก model มีสี่ขั้นตามลำดับที่ตายตัว [1, 2] แต่ละขั้นใช้เฉพาะเมื่อขั้นก่อนหน้าล้มเหลว หรือไม่ตรงกับคำถาม
1. Log-binomial regression: เริ่มจากตัวนี้ก่อน
เป้าหมาย: หา risk ratio โดยตรง
จำง่าย ๆ ว่า binary outcome + อยากได้ RR → เริ่ม log-binomial Log-binomial model จับคู่ binomial distribution ซึ่งเป็น distribution ตามธรรมชาติของ outcome แบบใช่/ไม่ใช่ เข้ากับ log link ซึ่ง model ค่า log ของ risk ข้อดีคือ model นี้ตรงกับข้อมูล binary และให้ risk ratio โดยตรง
แต่ข้อเสียสำคัญคือบางครั้ง model ไม่ converge โดยเฉพาะเมื่อ model ซับซ้อนหรือมีหลาย covariates [3] ถ้า log-binomial ทำงานได้ ก็ใช้ต่อได้เลย ถ้าโปรแกรมขึ้น convergence failure ให้ลงไปขั้นที่ 2
2. Modified Poisson regression + robust variance
นี่คือตัวสำรองหลักเมื่อ log-binomial ไม่ converge: log-binomial พัง → modified Poisson [4]
Poisson regression เดิมสร้างมาใช้กับ count data แต่ในกรณีนี้เรา “ยืม” วิธีคำนวณของ Poisson มาเพื่อประมาณ risk ratio ปัญหาคือข้อมูลจริงของเราเป็น binary ไม่ใช่ Poisson ดังนั้นการคำนวณ variance แบบ Poisson ธรรมดาจึงไม่เหมาะ
จึงต้องเติม robust variance หรือ robust standard error (SE): Poisson + robust SE = modified Poisson ผลที่ได้ยังรายงานเป็น risk ratio ได้
3. Gaussian working model + robust variance
ถ้า modified Poisson ยังมีปัญหา ขั้นถัดไปตามลำดับคือ Gaussian working model + robust variance จุดสำคัญคือคำว่า working model หมายความว่าเราใช้ Gaussian (normal) distribution เป็นเครื่องมือช่วยในการประมาณ model ไม่ได้หมายความว่า binary outcome ของเรากลายเป็น normal data [5]
เช่นเดียวกับ modified Poisson เราใช้ robust variance เพื่อให้ standard error เหมาะสมขึ้น model นี้ยังใช้ log link อยู่ coefficient จึงยังเป็น risk ratio ลำดับจนถึงตอนนี้คือ log-binomial → modified Poisson → Gaussian robust
4. Logistic regression: เมื่อยอมรับ odds ratio แทน
ถ้าวิธีก่อนหน้าไม่เหมาะกับข้อมูล หรืองานวิจัยรายงาน Odds Ratio (OR) แทน risk ratio ได้ ให้ใช้ logistic regression ข้อสำคัญคือ logistic regression ให้ odds ratio ไม่ใช่ risk ratio นี่คือจุดที่เรายอมเปลี่ยน effect measure: logistic → OR
ถ้า outcome พบไม่บ่อย OR และ RR จะมีค่าใกล้กัน แต่เมื่อ outcome พบบ่อยขึ้น OR กับ RR อาจห่างกันมากขึ้น [1] risk 10% มักใช้เป็นจุดช่วยจำเรื่อง “rare” แต่ให้มองเป็น rule of thumb ไม่ใช่กำแพงทางคณิตศาสตร์แบบตายตัว
กลับไปที่ทีมศัลยกรรม
ทีมต้องการ adjusted risk ratio ของ outcome ภาวะแทรกซ้อนแบบ binary และ log-binomial ที่ fit ไว้ไม่ converge
-
ต้องการอะไร?
Adjusted risk ratio ของ binary outcome จึงต้องไปทางลำดับขั้นของ risk ratio ไม่ใช่ logistic regression
-
ล้มเหลวที่ไหน?
ที่ขั้นที่ 1: log-binomial regression ไม่ converge
-
ถอยลงหนึ่งขั้น
ตัวสำรองหลักเมื่อ log-binomial พังคือ modified Poisson regression with robust variance ซึ่งยังประมาณ risk ratio ได้
ผลลัพธ์: Model ถัดไป: modified Poisson regression with robust variance เหตุผลแบบสั้นในบรรทัดเดียว: เพราะต้องการ RR แต่ log-binomial ไม่ converge จึงใช้ modified Poisson with robust variance เป็นขั้นถัดไป
ทำไมลำดับขั้นจึงเป็นแบบนี้: สามคำถามในคำเดียว
คำว่า model เอาสามเรื่องมาปนกัน: อยากรายงาน effect อะไร, ใช้ link อะไร และสมมติ variance แบบไหน พอแยกสามเรื่องนี้ออก ลำดับขั้นจะง่ายขึ้นมาก เรามีหลาย model เพราะมันตอบคนละ effect measure หรือใช้คนละวิธีคำนวณ effect measure เดียวกัน
เริ่มจาก effect ก่อน สมมติเรามี outcome 0/1 เช่น neonatal death กลุ่มไม่สัมผัสมี risk 10% กลุ่มสัมผัสมี risk 20% จากข้อมูลเดียวกัน เราตอบได้สามแบบ
ข้อมูลเดียวกัน สามคำตอบ
| สิ่งที่ถาม | คำตอบ |
|---|---|
| Risk difference | 20% − 10% = 10% |
| Risk ratio | 20% / 10% = 2.0 |
| Odds ratio | (0.20/0.80) / (0.10/0.90) = 2.25 |
Logistic regression ให้ odds ratio
Logistic regression model ค่า log odds:
\[ \operatorname{logit}(p) = \log\left(\frac{p}{1-p}\right) = \beta_0 + \beta_1 X \]
ดังนั้น
\[ e^{\beta_1} = \mathrm{OR} \]
นี่คือเหตุผลเดียวเลยว่าทำไม logistic regression ให้ odds ratio มันไม่ได้ผิด แต่ตอบอีกคำถามหนึ่ง ถ้า OR = 3.9 ห้ามเขียนว่า “risk สูงขึ้น 3.9 เท่า” เพราะมันหมายถึง odds สูงขึ้น 3.9 เท่า และเมื่อ outcome พบบ่อย OR อาจห่างจาก RR มาก
ทำไม log link จึงให้ risk ratio
ถ้าอยากได้ risk ratio โดยตรง ต้อง model ค่า log ของ risk ไม่ใช่ log odds
-
Model
\[ \log(p) = \beta_0 + \beta_1 X \;\Rightarrow\; p = e^{\beta_0 + \beta_1 X} \]
เมื่อ exponentiate ค่า log ของ risk จะกลับมาเป็น risk
-
กลุ่มไม่สัมผัส, X = 0
\[ p_0 = e^{\beta_0} \]
เหลือแค่ intercept
-
กลุ่มสัมผัส, X = 1
\[ p_1 = e^{\beta_0 + \beta_1} \]
intercept บวก coefficient ของ exposure
-
หารกัน
\[ \frac{p_1}{p_0} = \frac{e^{\beta_0 + \beta_1}}{e^{\beta_0}} = e^{\beta_1} \]
intercept ตัดกันหมด
ผลลัพธ์: RR = exp(β1): coefficient ของ exposure ที่ exponentiate แล้วคือ risk ratio
ทำไมจึงมีทั้ง log-binomial และ modified Poisson
เพราะทั้งคู่ใช้ log link เหมือนกัน Log-binomial สมมติ $Y \sim \text{Binomial}$ และ $\log(p) = X\beta$ ส่วน modified Poisson ใช้ working model ว่า $Y \sim \text{Poisson}$ แต่ยังใช้ $\log(p) = X\beta$ เหมือนเดิม ในที่นี้ $X\beta$ คือชื่อย่อของ $\beta_0 + \beta_1 X_1 + \beta_2 X_2 + \cdots$
ดังนั้นในทั้งสอง model $e^{\beta}$ จึงตีความเป็น risk ratio เหมือนกัน แล้วสร้างสอง model มาทำไม ในเมื่อมันให้ risk ratio เหมือนกัน?
Log-binomial ถูกสร้างมาให้เข้ากับ binary outcome โดยตรง แต่คำนวณยากกว่า ส่วน modified Poisson ยอมใช้ variance model ที่ไม่ตรงกับ binary outcome เพื่อให้ fitting ง่ายขึ้น แล้วใช้ robust SE แก้เรื่อง variance
แยก link กับ family ออกจากกัน
นี่คือ root ของเรื่องนี้เลย ให้คิดว่า model มีสองชิ้น: family + link [6]
Link กำหนดว่า coefficient หมายถึงอะไร เมื่อใช้ logit link $\log\{p/(1-p)\} = X\beta$ coefficient ให้ odds ratio เมื่อใช้ log link $\log(p) = X\beta$ coefficient ให้ risk ratio Link เป็นตัวกำหนด effect measure หลักที่ coefficient แสดง
Family กำหนดว่า variance ถูกคิดอย่างไร binary outcome จริงมี $\mathrm{Var}(Y) = p(1-p)$ ซึ่งคือ binomial variance แต่ Poisson สมมติ $\mathrm{Var}(Y) = p$ ซึ่งไม่ถูกสำหรับ binary outcome
สอง variance ที่ risk เท่ากับ 0.30
-
Binomial: variance ที่แท้จริง
\[ p(1-p) = 0.3(0.7) = 0.21 \]
variance ที่ binary outcome มีจริงเมื่อ p = 0.30
-
Poisson: variance ที่สมมติไว้
\[ \mathrm{Var}(Y) = p = 0.30 \]
Poisson กำหนดให้ variance เท่ากับ mean
ผลลัพธ์: Modified Poisson บอกว่า: “ฉันยืม Poisson มา estimate coefficient เพราะมัน fit ง่าย แต่ฉันไม่เชื่อ variance ของ Poisson ดังนั้น SE จะใช้ robust sandwich แทน” นี่แหละคือความหมายของคำว่า “modified”
Robust SE มีไว้ทำอะไร
แยกให้ออกจาก coefficient ก่อน ค่าประมาณ $\hat\beta$ กับ standard error ของมัน $SE(\hat\beta)$ เป็นคนละเรื่องกัน
Coefficient บอก effect เช่น $e^{\beta_1} = 1.89$ ส่วน SE บอก uncertainty รอบ coefficient นั้น และใช้สร้าง confidence interval กับ P value
ใน modified Poisson variance ของ Poisson ผิดสำหรับ binary outcome ดังนั้น SE ธรรมดาอาจผิดไปด้วย Robust sandwich SE ซึ่งคำนวณจากความกระจายที่สังเกตได้จริงของข้อมูล ไม่ใช่จากสูตรของ family ทำให้ inference ยังใช้ได้แม้ variance ที่สมมติไว้จะผิด [4] ตอนที่ 4 อธิบายว่า sandwich ทำงานอย่างไร
ทำไม log-binomial ไม่ต้อง “modified” และพังตรงไหน
เพราะ binary outcome จริง ๆ ก็คือ binomial binomial variance $p(1-p)$ จึงตรงอยู่แล้ว model นี้จึง conceptually natural มาก: binary outcome → binomial family → log link → risk ratio [7]
ปัญหาอยู่ที่ข้อจำกัด $0 \le p \le 1$ แต่ log-binomial กำหนด $p = e^{X\beta}$ ถ้า $X\beta > 0$ ก็จะได้ $e^{X\beta} > 1$ ซึ่งเป็น probability ที่เป็นไปไม่ได้
Optimizer คือ algorithm ที่ค้นหา coefficient ที่ดีที่สุด จึงต้องพยายามหาคำตอบภายในพื้นที่แคบ ๆ ที่ทุก observation ต้องมี $p_i \le 1$ และบาง dataset จึงเกิด convergence failure [3]
ทำไม modified Poisson ไม่ติดปัญหานี้
Poisson model ไม่ได้บังคับ fitted mean ให้ไม่เกิน 1 มันจึงยอมให้ค่าเช่น $\hat p = 1.03$ ซึ่งถ้าตีความเป็น probability ย่อมเป็นไปไม่ได้ แต่ optimization ก็ง่ายกว่ามาก นี่คือ trade-off
Log-binomial เทียบกับ modified Poisson
| คุณสมบัติ | Log-binomial | Modified Poisson |
|---|---|---|
| Binary distribution ถูกต้อง | ใช่ | ไม่ใช่: เป็น working family |
| Log link | ใช่ | ใช่ |
| ได้ risk ratio | ใช่ | ใช่ |
| Probability ถูกจำกัดไม่ให้เกิน 1 | ใช่ | ไม่ใช่ |
| Convergence | อาจมีปัญหา | โดยทั่วไปง่ายกว่า |
| Robust SE จำเป็น | ไม่ได้จำเป็นโดยหลัก | จำเป็น |
Crude model: ทำไมสอง model ให้ risk ratio เท่ากันเป๊ะ
เมื่อมี exposure แบบ binary อย่างเดียว $X = 0$ หรือ $X = 1$ model มี parameter แค่พอที่จะสร้าง risk สองกลุ่ม คือ $p_0$ และ $p_1$ มันจึง fit ทั้งสองกลุ่มได้ตรงกับ observed risk
-
Observed risk
\[ p_0 = 0.0067241, \quad p_1 = 0.0139787 \]
risk ของกลุ่มไม่สัมผัสและกลุ่มสัมผัส
-
Risk ratio
\[ \mathrm{RR} = \frac{0.0139787}{0.0067241} = 2.0789 \]
ทั้ง log-binomial และ modified Poisson สร้าง risk สองค่านี้ได้ตรง จึงให้ ratio นี้เท่ากัน
ผลลัพธ์: Crude model นี้ถามเพียงว่า risk กลุ่ม exposed หารด้วย risk กลุ่ม unexposed เท่าไร? ทั้งสอง model จึงไปถึงคำตอบเดียวกัน คือ 2.0789
Adjusted model: ทำไมอาจต่างกันเล็กน้อย
พอเพิ่ม covariates ในที่นี้คือ antenatal care (ANC), อายุ และ socioeconomic status (SES) แต่ละคนก็มี risk ของตัวเอง:
\[ \log(p_i) = \beta_0 + \beta_1\,\mathrm{ANC}_i + \beta_2\,\mathrm{Age}_i + \beta_3\,\mathrm{SES}_i + \cdots \]
ตอนนี้ $p_i$ ของแต่ละคนไม่เหมือนกันแล้ว และ binomial กับ Poisson ใช้ variance ต่างกัน จึงให้ weight ต่างกันในการ estimate $\beta$ สอง model จึงอาจได้ เช่น RR = 1.886733 กับ RR = 1.886706 ซึ่งต่างกันเล็กน้อย
Outcome rare: ทำไมยิ่งเหมือนกัน
Binomial variance คือ $p(1-p)$ ส่วน Poisson variance คือ $p$
-
Outcome ที่พบน้อย
\[ p = 0.0088, \quad 1 - p = 0.9912 \]
ผู้ป่วยเกือบทุกคนไม่เกิด outcome
-
Binomial variance
\[ p(1-p) = 0.0088 \times 0.9912 = 0.00872 \]
แทบไม่ต่างจาก Poisson variance คือ p = 0.0088
ผลลัพธ์: เมื่อ outcome rare, binomial กับ Poisson มอง variance คล้ายกันมาก จึงไม่แปลกที่ผลออกมาแทบเหมือนกัน
ต่างกันชัด ไม่ได้แปลว่าเป็น interaction โดยอัตโนมัติ
ประโยคนี้แรงเกินไป: “ถ้า adjusted สองวิธีต่างกันชัด ให้สงสัย interaction” Interaction เป็นหนึ่งในสาเหตุที่เป็นไปได้ แต่ไม่ใช่สาเหตุเดียว ถ้า log-binomial กับ modified Poisson ต่างกันชัด อาจเกิดจาก model misspecification หลายแบบ [8] เช่น
- มี interaction ที่ไม่ได้ใส่ใน model
- continuous covariate จริง ๆ เป็น nonlinear แต่ใส่แบบ linear
- functional form ผิด
- omitted covariates
- model บังคับ common risk ratio ค่าเดียว ทั้งที่ risk ratio แตกต่างตาม covariates
- extreme fitted risks
ถ้าผลสองวิธีต่างกันมาก โดยเฉพาะเมื่อ outcome common ควรตรวจ model specification ไม่ใช่สรุปว่าเป็น interaction โดยอัตโนมัติ อีกจุดคือ modified Poisson โดยทั่วไป converge ง่ายมาก แต่ไม่ควรพูดว่า converge เสมอ 100%
ต้นไม้เดียวสำหรับทุก binary outcome
เวลามี binary outcome ให้เริ่มด้วยคำถามว่า ฉันอยากรายงานอะไร? คำตอบจะกำหนด link และ link จะกำหนด model
ดังนั้นไม่ต้องจำว่ามี “models เยอะแยะ” จริง ๆ มีเพียงสองคำถาม คำถามแรก: ต้องการ effect อะไร OR, RR หรือ RD? คำถามที่สอง: ถ้าต้องการ RR จะ estimate ด้วย log-binomial หรือ modified Poisson + robust SE?
p ใน modified Poisson มาจากไหน
การเขียน $\log(p) = X\beta$ สำหรับ modified Poisson อาจดูแปลก เพราะ Poisson ปกติไม่ได้มี p Poisson regression “ของจริง” หน้าตาแบบนี้:
\[ Y_i \sim \text{Poisson}(\mu_i), \quad \log(\mu_i) = X_i\beta, \quad \mu_i = e^{X_i\beta} \]
โดย $\mu_i$ คือ expected count หรือ mean count ไม่ใช่ probability ตัวอย่างเช่น จำนวนครั้งที่ admit โรงพยาบาลในหนึ่งปี $Y_i = 0, 1, 2, 3, \ldots$ ใช้ model $\log(\mu_i) = \beta_0 + \beta_1\,\mathrm{Treatment}_i$ ดังนั้น $e^{\beta_1} = \mu_1/\mu_0$ คือ count ratio หรือ rate ratio ตามบริบท (ดูPoisson regression สำหรับ rate)
สำหรับ binary outcome, mean ก็คือ risk
แต่พอเป็น modified Poisson เราเอา binary outcome $Y_i \in \{0, 1\}$ มาใส่ใน model นั้น binary variable มี property สำคัญว่า
\[ E(Y) = 0(1-p) + 1(p) = p \]
ดังนั้น Poisson mean model $\log(E[Y_i]) = X_i\beta$ จึงเขียนใหม่เป็น $\log(p_i) = X_i\beta$ ได้ นี่คือเหตุผลที่มันดูเหมือน log-binomial มาก
สาม model เทียบกัน
| Model | Distribution | Mean equation | Outcome |
|---|---|---|---|
| Poisson จริง | Y ~ Poisson(μ) | log(μ) = Xβ | Count เช่น จำนวน infection |
| Log-binomial | Y ~ Binomial(p) | log(p) = Xβ; exp(β) = RR | 0/1 |
| Modified Poisson | Y ~ Poisson(μ) แบบ “pretend” | log(μ) = Xβ โดย μ = E(Y) = p จึงได้ log(p) = Xβ; exp(β) = RR | 0/1 |
Risk ที่เกิน 1 ไม่ได้มาจากข้อมูล
ในความจริง probability ไม่มีทางเกิน 1 เลข $p > 1$ ไม่ได้เกิดจากข้อมูลจริง แต่เกิดจากค่าชั่วคราวที่ model กำลังลองระหว่างการหาค่า $\beta$ ให้แยก “ข้อมูลจริง” กับ “สมการที่ใช้ประมาณค่า” ออกจากกันก่อน
ข้อมูลจริง กับ coefficient ที่ลอง
กลุ่มไม่ exposed: 20/100 คนเกิด outcome ดังนั้น $p_0 = 0.20$ กลุ่ม exposed: 40/100 ดังนั้น $p_1 = 0.40$ ทุกอย่างอยู่ระหว่าง 0 ถึง 1 ตามความจริง
-
สิ่งที่บอก regression
\[ \log(p) = \beta_0 + \beta_1 X \;\Rightarrow\; p = e^{\beta_0 + \beta_1 X} \]
regression ไม่ได้รู้คำตอบตั้งแต่แรก computer ต้องค้นหา β0 และ β1 ที่เหมาะที่สุด
-
ค่าที่ลองแล้วใช้ได้
\[ \beta_0 = -1.5,\ \beta_1 = 0.7: \quad p = e^{-1.5 + 0.7} = e^{-0.8} = 0.45 \]
สำหรับ X = 1 risk นี้เป็นไปได้
-
ค่าที่ลองแล้วใช้ไม่ได้
\[ \beta_0 = -0.2,\ \beta_1 = 0.5: \quad X\beta = -0.2 + 0.5 = 0.3, \quad p = e^{0.3} = 1.35 \]
สำหรับ X = 1 นี่คือ probability 135% ซึ่งเป็นไปไม่ได้
ผลลัพธ์: เลข 1.35 นี้ไม่ได้แปลว่า “ข้อมูลบอกว่าความเสี่ยงคือ 135%” แต่แปลว่า “ชุด coefficient ที่ optimizer เพิ่งลองนี้ ใช้ไม่ได้” นี่คือ root ของปัญหาเลย
ทำไม log link ยอมให้เกิดเลขแบบนั้น
เขียน $\eta = X\beta$ สัญลักษณ์ η (eta) คือ linear predictor คือ intercept บวก coefficient คูณ predictor แต่ละตัว (หัวข้อสุดท้ายอธิบายเต็ม ๆ) Log-binomial ใช้ $p = e^{\eta}$ และ $e^{\eta}$ มีค่าได้ทุกค่าในช่วง $0 < e^{\eta} < \infty$:
\[ \eta = -2 \Rightarrow p = 0.135, \quad \eta = -1 \Rightarrow p = 0.368, \quad \eta = 0 \Rightarrow p = 1 \]
\[ \eta = 0.1 \Rightarrow p = 1.105, \quad \eta = 1 \Rightarrow p = 2.718 \]
ดังนั้น exponential function เองไม่ได้รู้ว่าเรากำลังใช้มันแทน probability มันรู้แค่ว่า $e^x > 0$ เท่านั้น เพื่อให้มันเป็น probability เราจึงต้องเพิ่ม constraint ว่า $X_i\beta \le 0$ สำหรับทุกคน เพราะเมื่อนั้น $e^{X_i\beta} \le 1$
ทำไม logistic regression จึง fit ง่าย
ดู logistic inverse link: $p = e^{X\beta}/(1 + e^{X\beta})$ ไม่ว่า $X\beta$ จะเป็นอะไรก็ตาม $p$ อยู่ระหว่าง 0 ถึง 1 เสมอ $X\beta = -10$ ได้ $p \approx 0$, $X\beta = 0$ ได้ $p = 0.5$ และ $X\beta = 10$ ได้ $p \approx 1$ แต่ไม่เคยเกิน 1
\[ -\infty < X\beta < \infty \;\Rightarrow\; 0 < p < 1 \]
นี่เป็นข้อดีมหาศาลของ logit link มาเปรียบเทียบสอง link กัน
Log link: p = exp(η)
| η | p | ใช้ได้? |
|---|---|---|
| -3 | 0.05 | ใช่ |
| -1 | 0.37 | ใช่ |
| 0 | 1.00 | ใช่ ตรงขอบพอดี |
| 0.2 | 1.22 | ไม่ได้ |
| 1 | 2.72 | ไม่ได้ |
Logit link: p = exp(η) / (1 + exp(η))
| η | p |
|---|---|
| -3 | 0.047 |
| -1 | 0.269 |
| 0 | 0.500 |
| 1 | 0.731 |
| 3 | 0.953 |
| 100 | ≈ 1 |
กำแพง: ผู้ป่วยคนเดียวก็ขวางทั้ง step ได้
Log-binomial ที่ “ถูกต้อง” มี parameter space แบบจำกัด:
\[ \{\beta : X_i\beta \le 0 \text{ for every } i\} \]
computer ต้องหาค่า $\beta$ ภายในพื้นที่นี้เท่านั้น ปัญหาคือเมื่อมี predictors เยอะ ต้องมี $\beta_0 + \beta_1 X_{i1} + \beta_2 X_{i2} + \cdots \le 0$ สำหรับทุก observation
ผู้ป่วยคนหนึ่งอาจมีอายุสูง + exposed + severe disease จน linear predictor ใกล้ศูนย์มาก: $X_i\beta = -0.0001$ และ $p_i = e^{-0.0001} \approx 0.9999$ optimizer อยากขยับ coefficient อีกนิดเพื่อ fit คนอื่นดีขึ้น แต่ถ้าขยับจน $X_i\beta = +0.001$ ก็จะกลายเป็น $p_i = 1.001$ ซึ่งห้าม
ดังนั้น optimizer เหมือนกำลังเดินอยู่ชิดกำแพง และค่าประมาณที่ดีที่สุดอาจอยู่ชิดกำแพงพอดี นี่เป็นสาเหตุสำคัญที่ log-binomial ขึ้น “convergence not achieved” ไม่ใช่เพราะข้อมูลผิด ไม่ใช่เพราะ probability จริงเกิน 1 แต่เพราะวิธี parameterization ด้วย log link ทำให้ optimizer ต้องค้นหาคำตอบภายใต้ข้อจำกัด $p \le 1$
Poisson ยืดพื้นที่ค้นหา ไม่ได้ยืด probability
ภาพที่ต้องเห็นคือ Poisson ไม่ได้ “ยืด probability” มันยืดพื้นที่ที่ optimizer มีสิทธิ์เดินหา coefficient ทั้ง log-binomial และ Poisson ใช้ $\mu = e^{\eta}$ โดย $\eta = X\beta$ บนกราฟ $y = e^x$ เส้น $y = 1$ คือเพดานของ probability
สำหรับ log-binomial เราตีความ $y$ เป็น $p$ จึงใช้ได้เฉพาะด้านซ้าย คือ $\eta \le 0$ ตรงนั้น $\eta = -2$ ได้ 0.135, $\eta = -0.5$ ได้ 0.607 และ $\eta = 0$ ได้ 1 แต่ $\eta = 0.2$ ได้ 1.22 ซึ่งไม่ได้แล้ว
การค้นหาติดขัดที่กำแพงอย่างไร
สมมติเริ่มที่ $\eta = -0.5$ ตอนนี้ $p = e^{-0.5} = 0.61$ ข้อมูลบอกว่า “ขยับ coefficient ขึ้นอีกหน่อยน่าจะ fit ดีขึ้น” optimizer จึงอยากเดินแบบนี้ $-0.5 \to -0.3 \to -0.1 \to +0.1$
-
เดินไปถึงกำแพง
\[ \eta = +0.1 \;\Rightarrow\; p = e^{0.1} = 1.105 \]
log-binomial หยุดทันที เพราะ step นี้ห้าม
-
ย้อนกลับ แล้วลด step
ลอง +0.1: ไม่ได้ ย้อนกลับ แล้วลอง -0.05 และ -0.01: ได้ ลอง +0.005: ไม่ได้ ย้อนกลับอีก ลอง -0.002: ได้ แล้ววนต่อไปแบบนี้
-
เด้งไปเด้งมาที่กำแพง
อาการเหมือนคนพยายามหาจุดที่ดีที่สุด แต่ติดกำแพงแล้วเด้งไปเด้งมา
ผลลัพธ์: อาการเด้งไปเด้งมานี้แหละคือ convergence problem
แล้ว Poisson ทำอะไรต่างออกไป
Poisson ไม่ได้บอกว่า $\mu$ เป็น probability มันบอกว่า $\mu$ เป็น mean count ดังนั้น $\mu = e^{\eta}$ จะเป็น 0.5, 1, 2, 10 หรือ 100 ก็ได้หมด จึงไม่มีเพดานตรง 1 บนแกนของ Poisson $\eta$ ตั้งแต่ -3 ถึง +2 ให้ 0.05, 0.14, 0.37, 1, 2.72 และ 7.39 ใช้ได้หมด
ถ้า optimizer เดิน $-0.5 \to -0.3 \to -0.1 \to +0.1 \to +0.2$ แล้วกลับมา $-0.05$ Poisson บอกว่า: เดินไปเลย likelihood และ estimating equation คำนวณได้ทุกจุด มันสามารถเดินผ่านบริเวณที่ถ้าตีความเป็น probability จะเกิน 1 เพื่อค้นหาว่าค่า coefficient ไหนดีที่สุด นี่คือความหมายของ “fit ง่ายกว่า”
ไม่ใช่ว่า $p > 1$ กลายเป็นของจริง แต่คือoptimizer ไม่มีผนังมาขวางระหว่างการค้นหา
ผู้ป่วยหลายคน ยิ่งเห็นปัญหาชัด
ข้อมูลจริงมีผู้ป่วยหลายคน สมมติมีสี่คน โดย $\eta_i = \beta_0 + \beta_1 X_{1i} + \beta_2 X_{2i}$ log-binomial ต้องให้ทุกคนมี $\eta_i \le 0$ optimizer อยากเพิ่ม $\beta_1$ อีก 0.1 เพื่อ fit คนที่ 1 ถึง 3 ดีขึ้น
ผู้ป่วยสี่คน กับ step เดียวที่ถูกขวาง
| ผู้ป่วย | η ตอนนี้ | η หลังขยับ | ใช้ได้? |
|---|---|---|---|
| 1 | -1.2 | -1.1 | ใช่ |
| 2 | -0.8 | -0.7 | ใช่ |
| 3 | -0.3 | -0.2 | ใช่ |
| 4 | -0.01 เกือบชนกำแพง | +0.09 | ไม่ได้ |
Modified Poisson เหมือนเอากำแพงออก
ใน log-binomial coefficient ที่ใช้ได้ (feasible coefficients) เป็นพื้นที่ที่มีรั้วล้อม และค่าประมาณที่ดีที่สุดมักอยู่ชิดขอบ ขยับออกนอกพื้นที่ = probability เกิน 1 = ห้าม ส่วน modified Poisson ไม่มี boundary $p \le 1$ optimizer จึงเดินได้อิสระทุกทิศ
ดังนั้น numerical algorithm เช่น Newton-Raphson หรือ IRLS (iteratively reweighted least squares) ไม่ต้องคอยกังวลว่า step นี้จะทำให้ใครมี predicted risk เกิน 1 หรือเปล่า จึง converge ง่ายกว่ามาก
แล้วทำไมยังเอามาใช้กับ binary outcome ได้
เพราะสำหรับ binary $Y = 0, 1$ มี $E(Y) = p$ modified Poisson จึงใช้ mean equation $\log E(Y \mid X) = X\beta$ ซึ่งเท่ากับ $\log p = X\beta$ ดังนั้น $e^{\beta_1} = \mathrm{RR}$
สิ่งที่ “ยืม” จาก Poisson คือวิธี estimating mean ที่ไม่มี boundary แต่ Poisson variance $\mathrm{Var}(Y) = \mu$ ผิดสำหรับ binary เพราะของจริงคือ $p(1-p)$ จึงแก้ด้วย robust SE
η คืออะไร
η ไม่ได้เป็นตัวแปรใหม่จากข้อมูล มันเป็นแค่ชื่อย่อของสิ่งที่อยู่ด้านขวาของสมการ regression ใน $\log(p) = \beta_0 + \beta_1 X$ เราตั้งชื่อว่า $\eta = \beta_0 + \beta_1 X$ สมการเดิมจึงเขียนสั้นลงเป็น $\log(p) = \eta$ แล้วแก้กลับได้ว่า $p = e^{\eta}$ ตัว η เรียกว่า linear predictor
η ของผู้ป่วยหนึ่งคน
-
Coefficient กับผู้ป่วย
\[ \beta_0 = -2, \quad \beta_1 = 0.7, \quad X = 1 \]
ผู้ป่วยที่มี exposure
-
Linear predictor
\[ \eta = \beta_0 + \beta_1 X = -2 + 0.7(1) = -1.3 \]
คะแนนก่อนแปลงกลับ
-
แปลงกลับเป็น risk แบบ log-binomial
\[ \log(p) = \eta = -1.3 \;\Rightarrow\; p = e^{-1.3} \approx 0.27 \]
inverse ของ log link เปลี่ยนคะแนนนี้เป็น risk
ผลลัพธ์: ลำดับคือ X → β0 + β1X → η → inverse link → p เสมอ
η ในทุก model
ถ้ามีหลายตัวแปรก็เหมือนเดิม เช่น $\eta = \beta_0 + \beta_1(\text{ANC}) + \beta_2(\text{Age}) + \beta_3(\text{SES})$ η ก็คือคะแนนรวมที่ regression คำนวณให้แต่ละคน ก่อนแปลงกลับเป็น probability หรือ risk
η ไม่ใช่ probability η จะติดลบ บวก หรือเป็นเลขอะไรก็ได้ จากนั้น link function ต่างหากที่เอา η ไปแปลงเป็นค่าที่เราต้องการ:
- Logistic: $\eta = \log\{p/(1-p)\}$
- Log-binomial: $\eta = \log(p)$
- Poisson: $\eta = \log(\mu)$
ดังนั้น η จริง ๆ คือแค่ $\eta = X\beta$ เป็น shorthand ของ “ผลรวมของ intercept + coefficient × predictor” เท่านั้น
ความเข้าใจผิดที่พบบ่อยและวิธีแก้
-
อ่าน OR = 3.9 ว่า “risk สูงขึ้น 3.9 เท่า”
Logistic regression ให้ odds ratio และเมื่อ outcome พบบ่อย OR อาจห่างจาก risk ratio มาก
วิธีแก้: ให้พูดว่า odds สูงขึ้น 3.9 เท่า หรือใช้ลำดับขั้นของ risk ratio เมื่อต้องการ risk ratio
-
ถือว่า risk 10% เป็นเส้นตายตัวของคำว่า “rare”
OR กับ RR ค่อย ๆ ห่างกันขึ้นเมื่อ outcome พบบ่อยขึ้น
วิธีแก้: ใช้ 10% เป็นเพียง rule of thumb ไม่ใช่กำแพงทางคณิตศาสตร์
-
“Rare outcome → ใช้ modified Poisson”
Modified Poisson ใช้ estimate risk ratio ได้แม้ outcome common
วิธีแก้: ความ rare สำคัญต่อคำถามว่า OR ≈ RR หรือไม่ ไม่ใช่ต่อคำถามว่าใช้ modified Poisson ได้หรือไม่
-
“สอง adjusted model ต่างกันชัด แปลว่ามี interaction”
Interaction เป็นเพียงหนึ่งในสาเหตุ ท่ามกลาง model misspecification หลายแบบ
วิธีแก้: ตรวจ model specification: interaction ที่ไม่ได้ใส่, nonlinearity, functional form, omitted covariates, common risk ratio ที่ถูกบังคับ และ extreme fitted risks
-
“Modified Poisson converge เสมอ”
โดยทั่วไป converge ง่ายมาก แต่ไม่ใช่ 100%
วิธีแก้: พูดว่าโดยทั่วไป converge ง่าย อย่าพูดว่า converge เสมอ
-
อ่าน fitted value 1.35 ว่า “ข้อมูลบอกว่า risk คือ 135%”
ค่าที่เกิน 1 คือค่าที่ optimizer ลองระหว่างค้นหา β
วิธีแก้: อ่านค่าแบบนี้ว่าเป็นชุด coefficient ที่ใช้ไม่ได้ ไม่ใช่ risk จากข้อมูล
-
“Poisson fit ง่าย จึงเป็น distribution ที่จริงกว่าสำหรับ binary data”
variance ของมันคือ p ซึ่งผิดสำหรับ binary outcome ที่ variance จริงคือ p(1 − p)
วิธีแก้: fit ง่ายหมายถึง optimization ง่ายกว่า ส่วน robust SE คือสิ่งที่ซ่อม variance ที่ผิด
-
“Modified Poisson ให้ risk ratio เพราะเป็น Poisson”
Risk ratio มาจาก log link ซึ่ง log-binomial ก็ใช้เหมือนกัน
วิธีแก้: Link กำหนด effect measure ส่วน family กำหนด variance
อภิธานศัพท์
- convergence
- จุดที่ค่าประมาณของ algorithm ที่ใช้ fit หยุดเปลี่ยนแปลง ถ้า fit แล้วไปไม่ถึงจุดนี้ แปลว่าไม่ converge
- log-binomial model (แบบจำลอง log-binomial)
- Binomial model ที่ใช้ log link ให้ risk ratio โดยตรง แต่อาจไม่ converge เมื่อ fitted risk เข้าใกล้ 1
- modified Poisson regression (Poisson ดัดแปลง)
- Poisson regression ที่ใช้ log link และ robust SE ใช้กับ binary outcome เพื่อประมาณ risk ratio
- robust (sandwich) standard error (ค่าคลาดเคลื่อนมาตรฐานแบบแซนด์วิช)
- Standard error ที่คำนวณจากความกระจายที่สังเกตได้จริงของข้อมูล จึงยังใช้ได้เมื่อ variance ที่สมมติไว้ผิด
- working model
- Distribution ที่ใช้เป็นเครื่องมือช่วยประมาณค่า ไม่ได้อ้างว่า outcome มีการแจกแจงแบบนั้นจริง
- link function (ฟังก์ชันเชื่อมโยง)
- ฟังก์ชันที่เชื่อม mean ของ outcome เข้ากับ linear predictor จึงกำหนด effect measure
- family (family (การแจกแจงของผลลัพธ์))
- สมมติฐานเรื่อง distribution ของ model ซึ่งกำหนดวิธีคำนวณ variance และ standard error
- optimizer
- Algorithm ที่ค้นหา coefficient ที่ fit ข้อมูลได้ดีที่สุด
- linear predictor (η) (ตัวทำนายเชิงเส้น)
- Intercept บวก coefficient คูณ predictor แต่ละตัว ก่อนแปลงกลับด้วย inverse ของ link
เอกสารอ้างอิง
- McNutt LA, Wu C, Xue X, Hafner JP. Estimating the relative risk in cohort studies and clinical trials of common outcomes. Am J Epidemiol. 2003;157(10):940-943. doi:10.1093/aje/kwg074 https://doi.org/10.1093/aje/kwg074
- Spiegelman D, Hertzmark E. Easy SAS calculations for risk or prevalence ratios and differences. Am J Epidemiol. 2005;162(3):199-200. doi:10.1093/aje/kwi188 https://doi.org/10.1093/aje/kwi188
- Williamson T, Eliasziw M, Fick GH. Log-binomial models: exploring failed convergence. Emerg Themes Epidemiol. 2013;10:14. doi:10.1186/1742-7622-10-14 https://doi.org/10.1186/1742-7622-10-14
- Zou G. A modified Poisson regression approach to prospective studies with binary data. Am J Epidemiol. 2004;159(7):702-706. doi:10.1093/aje/kwh090 https://doi.org/10.1093/aje/kwh090
- Cheung YB. A modified least-squares regression approach to the estimation of risk difference. Am J Epidemiol. 2007;166(11):1337-1344. doi:10.1093/aje/kwm223 https://doi.org/10.1093/aje/kwm223
- McCullagh P, Nelder JA. Generalized Linear Models. 2nd ed. London: Chapman & Hall; 1989. doi:10.1007/978-1-4899-3242-6 https://doi.org/10.1007/978-1-4899-3242-6
- Wacholder S. Binomial regression in GLIM: estimating risk ratios and risk differences. Am J Epidemiol. 1986;123(1):174-184. doi:10.1093/oxfordjournals.aje.a114212 https://doi.org/10.1093/oxfordjournals.aje.a114212
- Chen W, Qian L, Shi J, Franklin M. Comparing performance between log-binomial and robust Poisson regression models for estimating risk ratios under model misspecification. BMC Med Res Methodol. 2018;18:63. doi:10.1186/s12874-018-0519-5 https://doi.org/10.1186/s12874-018-0519-5
ประเด็นสำคัญ
- สำหรับ binary outcome ที่ต้องการ risk ratio ให้ถอยลงตามลำดับ: log-binomial, modified Poisson พร้อม robust SE, Gaussian working model พร้อม robust SE และ logistic regression เฉพาะเมื่อยอมรับ odds ratio ได้
- ถามก่อนว่าต้องการ effect อะไร: risk 10% กับ 20% ชุดเดียวกันให้ RD เท่ากับ 10%, RR เท่ากับ 2.0 และ OR เท่ากับ 2.25
- Risk ratio มาจาก log link ส่วน family กำหนดแค่ variance และ variance ของ Poisson ผิดสำหรับ binary data modified Poisson จึงต้องใช้ robust SE
- Log-binomial ติดขัดเพราะ exp(η) ต้องไม่เกิน 1 สำหรับผู้ป่วยทุกคน ผู้ป่วยคนเดียวที่อยู่ชิดกำแพงจึงขวาง step ทั้งหมดได้
- Modified Poisson เอากำแพงออกระหว่างการค้นหา มัน fit ง่ายกว่า ไม่ได้จริงกว่า และเมื่อสอง model ต่างกันชัด ให้ตรวจ model specification ไม่ใช่สรุปว่าเป็น interaction โดยอัตโนมัติ
อ่านต่อในวิกิ: [[glm-link-family-guide-th]] [[heteroskedasticity-robust-standard-errors-th]]