การแปลผล Linear , Logistic regression, และ Interaction

อาทิตย์, 16 กุมภาพันธ์ 2020

การเขียน Math ในนี้ ผมใช้ Katex มันดีมากๆ บอกเลย ใช้แล้วจะอยากลืม Equation ใน Microsoft Word ไปเลย

Linear regression

สมการจะมีรูปแบบดังนี้

Y^=α+β1x1+β2x2+β3x3+...\hat{Y} = \alpha + \beta_1x_1 + \beta_2x_2 + \beta_3x_3 + ...

ตัวอย่างเช่น

SBP=90+5(female)+1.5(age)SBP = 90 + 5(female) + 1.5(age)

ที่นี้ลองดูสมการ SBP ของแต่ละเพศ
SBP ของผู้หญิง (1):SBP=90+5(1)+1.5(age)(1):SBP = 90 + 5(1) + 1.5(age)
SBP ของผู้ชาย (2):SBP=90+5(0)+1.5(age)(2):SBP = 90 + 5(0) + 1.5(age)
SBP ของผู้หญิงเทียบกับผู้ชาย (1)(2):SBPfemalemale=5=β1(1)-(2):SBP_{female - male} = 5 = \beta_1

ดังนั้นจะแปลว่า เพศมีความสัมพันธ์กับความดันโลหิตขณะหัวใจบีบตัว (SBP) อย่างมีนัยสำคัญทางสถิติ เมื่อควบคุมตัวแปรอายุให้เหมือนกัน โดยเพศหญิงจะมีความดันโลหิตเฉลี่ย มากกว่าเพศชาย 5 mmHg

ลองดูสมการ SBP ของอายุบ้าง
SBP อายุ 20 (1):SBP=90+5(female)+1.5(20)(1):SBP = 90 + 5(female) + 1.5(20)
SBP อายุ 21 (2):SBP=90+5(female)+1.5(21)(2):SBP = 90 + 5(female) + 1.5(21)
SBP อายุ 22 (3):SBP=90+5(female)+1.5(22)(3):SBP = 90 + 5(female) + 1.5(22)
SBP อายุ 21-20 (2)(1):SBP2120=1.5(2120)=1.5=β2(2)-(1):SBP_{21 - 20} = 1.5(21-20) = 1.5 = \beta_2
SBP อายุ 22-20 (3)(1):SBP2220=1.5(2220)=3.0=2β2(3)-(1):SBP_{22 - 20} = 1.5(22-20) = 3.0 = 2\beta_2

ดังนั้นจะแปลว่า อายุมีความสัมพันธ์กับความดันโลหิตขณะหัวใจบีบตัว (SBP) อย่างมีนัยสำคัญทางสถิติ เมื่อควบคุมตัวแปรเพศให้เหมือนกัน โดยทุกๆ อายุที่เพิ่มขึ้น 1 ปี จะมีความดันโลหิตเฉลี่ย เพิ่มขึ้น 1.5 mmHg

Logistic regression

ทบทวนคณิตศาสตร์พื้นฐานของ Logarithm กันก่อน โดยฟังก์ชัน Log นั้นจะมี Domain คือ (0,)(0,\infty) Range คือ (,)(-\infty,\infty)

logb(y)=xy=bxlogb(1)=0logb(0)=undefinelog_b(y) = x \dashrightarrow y = b^x \\ log_b(1) = 0 \\ log_b(0) = undefine
logb(x)+logb(y)=logb(xy)logb(x)logb(y)=logb(xy)log_b(x) + log_b(y) = log_b(xy) \\ log_b(x) - log_b(y) = log_b(\frac{x}{y})

และการเปลี่ยนฐานของ log

logm(n)=logb(n)logb(m)log_m(n) = \frac{log_b(n)}{log_b(m)} \\

ต่อกันดีกว่า สมการ Logistic regression จะมีรูปแบบดังนี้

loge(P1P)=α+β1x1+β2x2+β3x3+...log_e(\frac{P}{1-P}) = \alpha + \beta_1x_1 + \beta_2x_2 + \beta_3x_3 + ...

โดย PP คือความน่าจะเป็น (Probability) ทีจะเกิดเหตุการณ์นั้น ดังนั้นจะเห็นว่า P1P\frac{P}{1-P} ก็คือแต้มต่อ (Odds) ของเหตุการณ์ที่เราสนใจ และเราสามารถเขียนในรูปของ Logit ได้ด้วย

loge(P1P)=loge(Oddsf)=logit(P)log_e(\frac{P}{1-P}) = log_e(Odds_f)= logit(P)

ตัวอย่างเช่น

logit(PHypertension)=10+1.3(female)+1.1(age)logit(P_{Hypertension}) = 10 + 1.3(female) + 1.1(age)

ลองดูสมการ PHypertensionP_{Hypertension} ของแต่ละเพศ
Hypertension ของผู้หญิง (1):logit(PHypertension)=10+1.3(1)+1.1(age)(1):logit(P_{Hypertension}) = 10 + 1.3(1) + 1.1(age)
Hypertension ของผู้ชาย (2):logit(PHypertension)=10+1.3(0)+1.1(age)(2):logit(P_{Hypertension}) = 10 + 1.3(0) + 1.1(age)
Hypertension ของผู้หญิงเทียบกับผู้ชาย (1)(2):logit(PHypertensionFemale)logit(PHypertensionMale)=1.3=β1(1)-(2):logit(P_{Hypertension_{Female}}) - logit(P_{Hypertension_{Male}})= 1.3 =\beta_1

แต่เราไม่ได้ต้องการค่า Logit แต่เราอยากได้ค่า Odds Ratio ของการเกิดโรคความดันโลหิตสูง เราจึงต้องคำนวนต่อ

logit(PHypertensionFemale)logit(PHypertensionMale)=loge(OddsHypertensionFemale)loge(OddsHypertensionMale)loge(OddsRatioHypertensionFemale,Male)=1.3=β1OddsRatioHypertensionFemale,Male=e1.3=eβ13.669logit(P_{Hypertension_{Female}}) - logit(P_{Hypertension_{Male}}) = log_e(Odds_{Hypertension_{Female}}) - log_e(Odds_{Hypertension_{Male}}) \\ log_e(OddsRatio_{Hypertension_{Female,Male}}) = 1.3 = \beta_1\\ OddsRatio_{Hypertension_{Female,Male}} = e^{1.3} = e^{\beta_1} \approx 3.669

ดังนั้นจะแปลว่า เพศมีความสัมพันธ์กับการเกิดโรคความดันโลหิตสูง อย่างมีนัยสำคัญทางสถิติ เมื่อควบคุมตัวแปรอายุให้เหมือนกัน โดยเพศหญิงจะมีแต้มต่อการเกิดโรคความดันโลหิตสูงเป็น 3.7 เท่าเมื่อเทียบกับเพศชาย

ลองดูสมการของแต่ละอายุบ้าง
Hypertension อายุ 20: (1):logit(PHypertension)=10+1.3(female)+1.1(20)(1):logit(P_{Hypertension}) = 10 + 1.3(female) + 1.1(20)
Hypertension อายุ 21: (2):logit(PHypertension)=10+1.3(female)+1.1(21)(2):logit(P_{Hypertension}) = 10 + 1.3(female) + 1.1(21)
Hypertension อายุ 22: (3):logit(PHypertension)=10+1.3(female)+1.1(22)(3):logit(P_{Hypertension}) = 10 + 1.3(female) + 1.1(22)
Hypertension อายุ 21-20:(2)(1):logit(PHypertension21)logit(PHypertension20)=1.1(2)-(1):logit(P_{Hypertension_{21}}) - logit(P_{Hypertension_{20}})= 1.1
Hypertension อายุ 22-20:(3)(1):logit(PHypertension22)logit(PHypertension20)=(1.1)=2β2(3)-(1):logit(P_{Hypertension_{22}}) - logit(P_{Hypertension_{20}})= (1.1) = 2*\beta_2

ต้องคำนวนต่อเหมือนกรณีข้างบน

กรณี 21-20

loge(OddsRatioHypertension21,20)=1.1=β2OddsRatioHypertensionFemale,Male=e1.1=eβ23.004log_e(OddsRatio_{Hypertension_{21,20}}) = 1.1 = \beta_2\\ OddsRatio_{Hypertension_{Female,Male}} = e^{1.1} = e^{\beta_2} \approx 3.004

กรณี 22-20

loge(OddsRatioHypertension22,20)=21.1=2β2OddsRatioHypertensionFemale,Male=e21.1=e1.1e1.1=e2β2=eβ2eβ29.025log_e(OddsRatio_{Hypertension_{22,20}}) = 2*1.1 = 2*\beta_2\\ OddsRatio_{Hypertension_{Female,Male}} = e^{2*1.1} = e^{1.1} * e^{1.1} = e^{2*\beta_2} = e^{\beta_2}*e^{\beta_2} \approx 9.025

ดังนั้นจะแปลว่า อายุมีความสัมพันธ์กับการเกิดโรคความดันโลหิตสูง อย่างมีนัยสำคัญทางสถิติ เมื่อควบคุมตัวแปรเพศให้เหมือนกัน โดยอายุที่เพิ่มขึ้น 1 ปี จะมีแต้มต่อการเกิดโรคความดันโลหิตสูงเป็น 3.004 เท่าเมื่อเทียบกับอายุเดิม จะสังเกตุเห็นว่าในกรณีของ log นั้น เมื่อเราถอด log แล้ว ค่าที่เพิ่มเป็นการคูณกันไม่ใช่การบวก

Interaction

การทำ Interactive Graph ในนี้ ผมใช้ JSXGraph

คือการทีความสัมพันธ์ระหว่างตัวแปร 2 ตัว ขึ้นกับตัวแปรที่ 3 ว่ามีสถานะเป็นอย่างไร ลองดูกราฟความสัมพันธ์ระหว่างรายได้ เพศและอายุงาน ที่แสดงถึงความไม่เท่าเทียมกัน 🤔

จะเห็นว่าผู้ชายนั้นจะมีรายได้มากกว่าผู้หญิง ซึ่งถ้าเราลองหาสมการจากราฟโดยใช้ y=mx+cy=mx+c จะเห็นว่าผู้ชายนั้นจะมีรายได้มากกว่าผู้หญิง

ผู้ชาย

income=11000+24500(workyears)income = 11000 + 24500(workyears)

ผู้หญิง

income=10000+10000(workyears)income = 10000 + 10000(workyears)

จะเห็นว่าความสัมพันธ์ (ก็คือ Slope) ระหว่างรายได้และอายุงาน นั้นขึ้นกับว่าเป็นเพศไหน (Slope ไม่เท่ากัน) แบบนี้คือ เพศกับอายุงานมีปฏิสัมพันธ์กัน (Interaction)

คำว่า เพศกับอายุงานมีปฏิสัมพันธ์กัน (Interaction) สามารถแปลได้ทั้งสองทางว่า รายได้กับอายุงาน ขึ้นกับว่าเป็นเพศไหน และ รายได้กับเพศ ขึ้นกับว่าอายุงานเป็นเท่าไหร่

อายุงาน 0 ปี

income=10000+1000(gender)income = 10000 + 1000(gender)

อายุงาน 1 ปี

income=20000+15500(gender)income = 20000 + 15500(gender)

อายุงาน 2 ปี

income=30000+30000(gender)income = 30000 + 30000(gender)

แบบนี้จะแปลว่า เพศกับอายุงานมีปฏิสัมพันธ์กัน (p-value < 0.05) โดยที่ หากเป็นเพศชาย รายได้จะเพิ่มขึ้นปีละ 24500 บาท ในชณะที่เพศหญิง รายได้จะเพิ่มขึ้นปีละ 10000 บาท

ลองหา Constant และ Coefficient สมการนี้ดู

income=α+β1gender+β2workyears+γgenderworkyearsincome = \alpha + \beta_1*gender + \beta_2*workyears + \gamma*gender*workyears