Causal Mediation: ทำไม a x b จึงใช้ไม่ได้อีกต่อไป

Clinical Epidemiology ResearchMethodology and Research Design THUniqcret doctor knowledges TH
Causal Mediation: ทำไม a x b จึงใช้ไม่ได้อีกต่อไป
On this page

Read the English version

บทคัดย่อ

การวิเคราะห์ตัวแปรสื่อกลาง (mediation analysis) ถามว่าผลของสิ่งสัมผัส (exposure) ต่อผลลัพธ์ผ่านตัวแปรสื่อกลาง (mediator) ซึ่งเป็นตัวแปรบนเส้นทางเหตุและผลระหว่างทั้งสองมากเพียงใด สูตรที่คุ้นเคยคือการคูณความชันสองค่า ผลคูณ a x b เท่ากับ natural indirect effect ก็ต่อเมื่อแบบจำลองทั้งสองเป็นเชิงเส้นและไม่มีปฏิกิริยาสัมพันธ์ระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง และจะมีความหมายเชิงเหตุผลได้ก็ต่อเมื่อไม่มีตัวกวนที่ไม่ได้วัดระหว่างสิ่งสัมผัสกับผลลัพธ์ ระหว่างตัวแปรสื่อกลางกับผลลัพธ์ และระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง รวมทั้งไม่มีตัวกวนระหว่างตัวแปรสื่อกลางกับผลลัพธ์ที่ถูกสิ่งสัมผัสส่งผลกระทบ ใน cohort จำลองของผู้ใหญ่ 2,000 คน การออกกำลังกายลดความดันโลหิตส่วนหนึ่งผ่านการเปลี่ยนแปลงของน้ำหนัก และน้ำหนักแต่ละกิโลกรัมมีผลมากขึ้นเมื่อออกกำลังกายมากขึ้น สำหรับการออกกำลังกาย 2.5 ชั่วโมงต่อสัปดาห์เทียบกับ 0 ชั่วโมง ผลทางอ้อมตามธรรมชาติที่แท้จริงในประชากรจำลองคือ -4.95 mmHg ขณะที่วิธีผลคูณมีเป้าหมายอยู่ที่ -4.06 mmHg บทความนี้นิยามผลเหล่านี้ด้วยผลลัพธ์ที่อาจเกิดขึ้น (potential outcomes) ให้สูตรในรูปปิดที่คงปฏิกิริยาสัมพันธ์ไว้ แสดงโค้ด Stata และ R พร้อมช่วงเชื่อมั่นจากวิธีเดลตา (delta method) ครอบคลุมผลลัพธ์แบบสองค่าที่พบบ่อย และระบุข้อสมมติข้ามโลก (cross-world assumption)


ภาพสรุป ข้อมูลจำลอง

ผลคูณของความชันสองค่า และคำถามของผู้ทบทวนร่างรายงาน

ทีมสุขภาพชุมชนทีมหนึ่งจัดโปรแกรมออกกำลังกายมาเป็นเวลาหนึ่งปี ในผู้ใหญ่ 2,000 คน ผู้ที่ออกกำลังกายมากกว่ามีความดันโลหิตซิสโตลิก (systolic blood pressure, SBP) ต่ำกว่าเมื่อสิ้นปี และน้ำหนักลดลงมากกว่าด้วย ทีมต้องการทราบว่าความดันที่ลดลงเกิดผ่านการลดน้ำหนักเป็นสัดส่วนเท่าใด โปรแกรมนี้เป็นของสมมติและข้อมูลเป็นข้อมูลจำลอง

นักวิเคราะห์ใช้สูตรที่คุ้นเคย คือถดถอยการเปลี่ยนแปลงของน้ำหนักบนการออกกำลังกาย ถดถอยความดันโลหิตบนการออกกำลังกายและการเปลี่ยนแปลงของน้ำหนัก แล้วคูณความชันสองค่านั้น ผลคูณถูกรายงานเป็นผลทางอ้อม (indirect effect) และความชันของการออกกำลังกายในแบบจำลองที่สองถูกรายงานเป็นผลทางตรง (direct effect)

ผู้ทบทวนอ่านร่างรายงานแล้วชี้ไปที่แผนภาพการกระจาย ในผู้ที่ออกกำลังกายมากกว่า น้ำหนักที่ลดลงทุกกิโลกรัมสัมพันธ์กับความดันที่ลดลงมากกว่า การออกกำลังกายกับการเปลี่ยนแปลงของน้ำหนักจึงมีปฏิกิริยาสัมพันธ์บนมาตรวัด mmHg ของความดันโลหิต และผู้ทบทวนถามว่าความชันของน้ำหนักค่าไหนควรอยู่ในผลคูณ

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

วิธีผลคูณและกรณีที่ใช้ได้

ให้ $A$ แทนสิ่งสัมผัส (exposure) คือชั่วโมงออกกำลังกายต่อสัปดาห์ และ $M$ แทนตัวแปรสื่อกลาง คือการเปลี่ยนแปลงของน้ำหนักเป็นกิโลกรัมตลอดหนึ่งปี โดยค่าติดลบหมายถึงน้ำหนักลด $Y$ คือผลลัพธ์ ได้แก่ SBP หน่วย mmHg และ $C$ แทนตัวแปรร่วม ณ จุดเริ่มต้น ในที่นี้คืออายุและเพศ ซึ่งอาจเป็นตัวกวนของความสัมพันธ์เหล่านี้ ตัวแปรสื่อกลาง (mediator) คือตัวแปรบนเส้นทางเหตุและผลจากสิ่งสัมผัสไปสู่ผลลัพธ์ การออกกำลังกายเปลี่ยนน้ำหนัก และน้ำหนักเปลี่ยนความดัน

วิธีถดถอยแบบดั้งเดิมในการวิเคราะห์ตัวแปรสื่อกลางประมาณแบบจำลองเชิงเส้นสองแบบ แบบหนึ่งสำหรับตัวแปรสื่อกลางและอีกแบบสำหรับผลลัพธ์ [1] แบบจำลองของตัวแปรสื่อกลางถดถอย $M$ บน $A$ และ $C$ ความชันของการออกกำลังกายในแบบจำลองนี้คือ $\beta_1$ ซึ่งเป็นการเปลี่ยนแปลงของค่าเฉลี่ยการเปลี่ยนแปลงน้ำหนักต่อชั่วโมงต่อสัปดาห์ที่เพิ่มขึ้น แบบจำลองของผลลัพธ์ถดถอย $Y$ บน $A$, $M$ และ $C$ โดยไม่มีพจน์ผลคูณ ความชันของน้ำหนักในแบบจำลองนี้คือ $b$ ซึ่งเป็นการเปลี่ยนแปลงของค่าเฉลี่ย SBP ต่อกิโลกรัม และความชันของการออกกำลังกายคือ $c'$ ซึ่งอ่านเป็นผลทางตรงต่อชั่วโมงต่อสัปดาห์

$$\text{indirect effect} = \beta_1 \times b \times (a - a^*)$$

ในสูตรนี้ $a^*$ และ $a$ คือระดับการออกกำลังกายสองระดับที่นำมาเปรียบเทียบ โดย $a^* = 0$ และ $a = 2.5$ ชั่วโมงต่อสัปดาห์ ความกว้างของคอนทราสต์ (contrast) $a - a^*$ จึงเท่ากับ 2.5 ชั่วโมง ผลทางตรงในคอนทราสต์เดียวกันคือ $c' \times (a - a^*)$ ในสูตร a x b ที่คุ้นเคย ความชันจากสิ่งสัมผัสไปยังตัวแปรสื่อกลางถูกเรียกว่า $a$ แต่บทความนี้สงวน $a$ ไว้เป็นระดับของสิ่งสัมผัส และเขียนความชันนั้นเป็น $\beta_1$

ผลคูณ a x b เท่ากับ natural indirect effect ก็ต่อเมื่อแบบจำลองทั้งสองเป็นเชิงเส้นและไม่มีปฏิกิริยาสัมพันธ์ระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง และจะมีความหมายเชิงเหตุผลได้ก็ต่อเมื่อไม่มีตัวกวนที่ไม่ได้วัดระหว่างสิ่งสัมผัสกับผลลัพธ์ ระหว่างตัวแปรสื่อกลางกับผลลัพธ์ และระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง รวมทั้งไม่มีตัวกวนระหว่างตัวแปรสื่อกลางกับผลลัพธ์ที่ถูกสิ่งสัมผัสส่งผลกระทบ [2] natural indirect effect (ผลทางอ้อมตามธรรมชาติ) มีนิยามอย่างเป็นทางการในหัวข้อถัดไป ในกรณีเชิงเส้นที่ไม่มีปฏิกิริยาสัมพันธ์บนมาตรวัดผลต่างหน่วย mmHg การออกกำลังกายเลื่อนค่าเฉลี่ยของน้ำหนักไป $\beta_1$ ต่อชั่วโมงต่อสัปดาห์ น้ำหนักทุกกิโลกรัมเลื่อนค่าเฉลี่ยของความดันไป $b$ เท่ากันหมด และการเลื่อนทั้งสองคูณกันได้ เครื่องหมายสำคัญพอ ๆ กับขนาด ดังที่ตัวอย่างคำนวณด้วยมือแสดง

ตัวอย่างคำนวณด้วยมือ: รักษาเครื่องหมายไว้

ตัวอย่างคำนวณด้วยมือ สมมติว่าการออกกำลังกายเพิ่มขึ้นหนึ่งหน่วยเปลี่ยนน้ำหนักไป -2 กิโลกรัม คือน้ำหนักลด และน้ำหนักที่เพิ่มขึ้นหนึ่งกิโลกรัมทำให้ SBP สูงขึ้น +3 mmHg ความชันทั้งสองมาจากแบบจำลองเชิงเส้นที่ไม่มีพจน์ผลคูณระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง จึงไม่มีปฏิกิริยาสัมพันธ์บนมาตรวัดผลต่างหน่วย mmHg

  1. จากสิ่งสัมผัสไปตัวแปรสื่อกลาง

    \[ \beta_1 = -2 \ \text{kg per unit of exercise} \]

    การออกกำลังกายทำให้น้ำหนักลด ความชันนี้จึงเป็นลบ

  2. จากตัวแปรสื่อกลางไปผลลัพธ์

    \[ b = +3 \ \text{mmHg per kg} \]

    น้ำหนักมากขึ้นหมายถึงความดันสูงขึ้น ความชันนี้จึงเป็นบวก น้ำหนักที่ลดลงทุกกิโลกรัมลด SBP ลง 3 mmHg

  3. คูณโดยรักษาเครื่องหมายไว้

    \[ \beta_1 \times b = (-2) \times (+3) = -6 \]

    ผลคูณคือ -6 mmHg ต่อหน่วยการออกกำลังกาย เครื่องหมายลบบอกทิศทางของผล

ผลลัพธ์: ผ่านน้ำหนัก การออกกำลังกายเพิ่มขึ้นหนึ่งหน่วยลด SBP ลง 6 mmHg หากคูณเฉพาะขนาดจะได้ +6 ซึ่งอ่านเป็นความดันที่สูงขึ้น เครื่องหมายจึงเป็นส่วนหนึ่งของคำตอบ

วิธีผลคูณใน cohort จำลอง

cohort จำลองที่ใช้ตลอดบทความนี้มีผู้ใหญ่ 2,000 คน อายุ 30 ถึง 80 ปี แต่ละคนมีข้อมูลการออกกำลังกายรายสัปดาห์ การเปลี่ยนแปลงของน้ำหนักตลอดหนึ่งปี SBP เมื่อครบหนึ่งปี อายุ และเพศ เครื่องหมายหมวก (hat) แสดงค่าประมาณ เมื่อประมาณแบบจำลองเชิงเส้นสองแบบโดยใช้อายุและเพศเป็นตัวแปรร่วม จะได้ $\hat\beta_1 = -1.19$ กิโลกรัมต่อชั่วโมงต่อสัปดาห์ และ $\hat b = 1.37$ mmHg ต่อกิโลกรัม ช่วงเชื่อมั่น 95% ที่พิมพ์ในผลลัพธ์สองชุดด้านล่างครอบคลุมค่าที่ความชันเหล่านี้มีในประชากรจำลอง

ในคอนทราสต์ 2.5 ชั่วโมง ผลคูณของความชันสองค่ากับความกว้างของคอนทราสต์คือ -4.09 mmHg ช่วงเชื่อมั่น 95% จากวิธีเดลตา (delta method) คือ -4.81 ถึง -3.37 mmHg วิธีเดลตาให้ค่าคลาดเคลื่อนมาตรฐานของฟังก์ชันของสัมประสิทธิ์ที่ประมาณได้ เช่นผลคูณ โดยถือว่าฟังก์ชันนั้นเกือบเป็นเส้นตรงในบริเวณใกล้ค่าประมาณ สำหรับผลคูณของความชันสองค่า วิธีนี้ยังเรียกว่าค่าคลาดเคลื่อนมาตรฐานของ Sobel ทุกช่วงเชื่อมั่นในตารางผลลัพธ์สองตารางเป็นช่วงเชื่อมั่น 95% จากวิธีเดลตา ส่วนผลลัพธ์ของคำสั่ง mediate ของ Stata และแพ็กเกจ mediation ของ R ใช้วิธีหาช่วงอื่น ตามที่คำอธิบายใต้ผลลัพธ์ระบุไว้

Stata: แบบจำลองของตัวแปรสื่อกลาง

โค้ด Stata w6_sim.do (บรรทัด 47-48 จาก 475)
* Mediator model: weight change on exercise and the confounders (age, sex)
regress wtchg exercise age male
ผลลัพธ์จากการรัน w6_sim.log
. * Mediator model: weight change on exercise and the confounders (age, sex)
. regress wtchg exercise age male

      Source |       SS           df       MS      Number of obs   =     2,000
-------------+----------------------------------   F(3, 1996)      =    412.53
       Model |  7937.34882         3  2645.78294   Prob > F        =    0.0000
    Residual |  12801.4031     1,996  6.41352861   R-squared       =    0.3827
-------------+----------------------------------   Adj R-squared   =    0.3818
       Total |  20738.7519     1,999  10.3745632   Root MSE        =    2.5325

------------------------------------------------------------------------------
       wtchg | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
    exercise |  -1.194437   .0435007   -27.46   0.000    -1.279749   -1.109126
         age |   .0236362   .0044603     5.30   0.000     .0148888    .0323836
        male |   .2156961   .1139233     1.89   0.058     -.007725    .4391173
       _cons |  -.1197085   .3035733    -0.39   0.693    -.7150622    .4756452
------------------------------------------------------------------------------
ข้อมูลจำลอง ทั้งสองส่วนเป็นข้อความที่ตัดมาจากสคริปต์จำลองเบื้องหลังชุดบทความนี้และผลลัพธ์ที่สคริปต์พิมพ์ออกมา ชื่อไฟล์และเลขบรรทัดบอกเพียงตำแหน่งของข้อความที่ตัดมาในสคริปต์นั้น และทุกอย่างที่ต้องใช้เพื่ออ่านก็แสดงไว้ครบแล้ว แบบจำลองของตัวแปรสื่อกลางถดถอยการเปลี่ยนแปลงของน้ำหนักบนการออกกำลังกาย อายุ และเพศ แถว exercise ให้ความชันที่สูตรผลทางอ้อมทุกสูตรใช้ คือ -1.19 กิโลกรัมต่อชั่วโมงต่อสัปดาห์

Stata: แบบจำลองของผลลัพธ์ที่ไม่มีพจน์ปฏิกิริยาสัมพันธ์

โค้ด Stata w6_sim.do (บรรทัด 58-59 จาก 475)
* Product method: outcome model without the interaction gives b, then a x b over the 2.5-hour contrast
regress sbp exercise wtchg age male
ผลลัพธ์จากการรัน w6_sim.log
. * Product method: outcome model without the interaction gives b, then a x b over the 2.5-hour contrast
. regress sbp exercise wtchg age male

      Source |       SS           df       MS      Number of obs   =     2,000
-------------+----------------------------------   F(4, 1995)      =    403.71
       Model |  263039.698         4  65759.9245   Prob > F        =    0.0000
    Residual |  324960.139     1,995  162.887288   R-squared       =    0.4473
-------------+----------------------------------   Adj R-squared   =    0.4462
       Total |  587999.837     1,999  294.146992   Root MSE        =    12.763

------------------------------------------------------------------------------
         sbp | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
    exercise |  -1.979195   .2573194    -7.69   0.000    -2.483838   -1.474552
       wtchg |   1.369749   .1128015    12.14   0.000     1.148528     1.59097
         age |   .4485983   .0226358    19.82   0.000      .404206    .4929905
        male |   3.890667   .5746421     6.77   0.000     2.763706    5.017629
       _cons |   103.2818   1.529944    67.51   0.000     100.2814    106.2823
------------------------------------------------------------------------------
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ เมื่อแบบจำลองไม่มีพจน์ผลคูณ แถว weight change ให้ความชัน $\hat b$ คือ 1.37 mmHg ต่อกิโลกรัม จากนั้นสคริปต์คูณความชันสองค่ากับความกว้าง 2.5 ชั่วโมง ได้ค่าประมาณของวิธีผลคูณคือ -4.09 mmHg

สามกรณีที่วิธีผลคูณใช้ไม่ได้

สูตรนี้ถือว่าผลของน้ำหนักต่อความดันมีเพียงค่าเดียว หากต้องการให้ผลนั้นเปลี่ยนไปตามการออกกำลังกาย ให้เพิ่มพจน์ผลคูณในแบบจำลองของผลลัพธ์

$$E[Y \mid a, m, c] = \theta_0 + \theta_1 a + \theta_2 m + \theta_3\, a m + \theta_4' c$$

ในสมการนี้ $E[Y \mid a, m, c]$ คือ SBP เฉลี่ยที่ระดับการออกกำลังกาย $a$ การเปลี่ยนแปลงของน้ำหนัก $m$ และตัวแปรร่วม $c$ สัมประสิทธิ์ $\theta_1$ คือความชันของการออกกำลังกายเมื่อน้ำหนักไม่เปลี่ยน $\theta_2$ คือความชันของน้ำหนักเมื่อไม่ออกกำลังกาย และ $\theta_4$ คือสัมประสิทธิ์ของตัวแปรร่วม ส่วน $\theta_3$ คือปฏิกิริยาสัมพันธ์ระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง (exposure-mediator interaction) หมายถึงความชันของน้ำหนักเปลี่ยนไปเท่าใดต่อชั่วโมงออกกำลังกายต่อสัปดาห์ที่เพิ่มขึ้น ความชันของน้ำหนักที่ระดับการออกกำลังกาย $a$ จึงเท่ากับ $\theta_2 + \theta_3 a$

cohort จำลองสร้างขึ้นโดยใช้ $\theta_2 = 0.4$ และ $\theta_3 = 0.5$ น้ำหนักที่เปลี่ยนไปทุกกิโลกรัมจึงเปลี่ยน SBP ไป 0.4 mmHg เมื่อไม่ออกกำลังกาย และเปลี่ยนไป $0.4 + 0.5 \times 2.5 = 1.65$ mmHg เมื่อออกกำลังกาย 2.5 ชั่วโมงต่อสัปดาห์ ตัวเลขทั้งสองไม่ใช่ $b$ ของวิธีผลคูณ แบบจำลองที่ไม่มีพจน์ผลคูณผสมความชันของน้ำหนักข้ามระดับการออกกำลังกายต่าง ๆ ใน cohort และในตัวอย่างจำลองขนาดใหญ่มาก $b$ จะลงตัวที่ 1.35 mmHg ต่อกิโลกรัม

การผสมนั้นคือความล้มเหลวประการแรก เป้าหมายของวิธีผลคูณในประชากรจำลองคือ -4.06 mmHg ขณะที่ natural indirect effect ซึ่งนิยามในหัวข้อถัดไปคือ -4.95 mmHg ช่องว่างเกิดจากการใช้ความชันของน้ำหนักที่เฉลี่ยแล้วเพียงค่าเดียว ทั้งที่ผลทางอ้อมต้องใช้ความชันที่ระดับการออกกำลังกายซึ่งนำมาเปรียบเทียบ

ความล้มเหลวประการที่สองคือแบบจำลองของผลลัพธ์ที่ไม่เป็นเชิงเส้น สำหรับผลลัพธ์แบบใช่หรือไม่ใช่ เช่นความดันโลหิตสูง แบบจำลองของผลลัพธ์มักเป็นการถดถอยโลจิสติก ซึ่งสัมประสิทธิ์คือการเปลี่ยนแปลงของ log odds ผลคูณของ $\beta_1$ กับสัมประสิทธิ์ log odds ไม่ใช่ผลบนมาตรวัดผลต่างความเสี่ยง (risk-difference scale) เมื่อคูณด้วยความกว้างของคอนทราสต์แล้วยกกำลังด้วยเลขชี้กำลัง ผลคูณนั้นประมาณ natural indirect effect บนมาตรวัด odds ratio ได้ แต่เฉพาะเมื่อผลลัพธ์พบน้อยและแบบจำลองโลจิสติกไม่มีพจน์ผลคูณระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง นั่นคือไม่มีปฏิกิริยาสัมพันธ์บนมาตรวัด log odds

ความล้มเหลวประการที่สามคือตัวแปรสื่อกลางแบบสองค่า เช่นการเข้าร่วมแผนลดเกลือระหว่างโปรแกรมหรือไม่ แบบจำลองของมันก็เป็นโลจิสติกเช่นกัน และ $\beta_1$ กลายเป็นการเปลี่ยนแปลงของ log odds ของตัวแปรสื่อกลาง ไม่ใช่การเลื่อนของค่าเฉลี่ย ผลทางอ้อมจึงขึ้นกับว่าความน่าจะเป็นของตัวแปรสื่อกลางขยับไปไกลเท่าใด ระยะนั้นขึ้นกับตัวแปรร่วมของแต่ละคน เพราะ log odds ที่เปลี่ยนเท่ากันขยับความน่าจะเป็นได้ไม่เท่ากันเมื่อความน่าจะเป็นตั้งต้นต่างกัน

เมื่อประมาณแบบจำลองของผลลัพธ์ที่มีพจน์ผลคูณกับ cohort จำลอง จะได้ $\hat\theta_3 = 0.55$ mmHg ต่อกิโลกรัมต่อชั่วโมงต่อสัปดาห์ โดย $\hat\theta_1 = -0.84$ mmHg ต่อชั่วโมงต่อสัปดาห์ และ $\hat\theta_2 = 0.29$ mmHg ต่อกิโลกรัม ช่วงเชื่อมั่น 95% ในผลลัพธ์ด้านล่างครอบคลุมค่าที่ใช้สร้างข้อมูล คือ 0.5, -1 และ 0.4 ค่าประมาณแต่ละค่าจึงอยู่ในขอบเขตความคลาดเคลื่อนจากการสุ่มของค่าที่ใช้สร้างมัน

Stata: แบบจำลองของผลลัพธ์ที่มีปฏิกิริยาสัมพันธ์ระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง

โค้ด Stata w6_sim.do (บรรทัด 70-71 จาก 475)
* Outcome model with the exposure-mediator interaction (theta1 A + theta2 M + theta3 A M)
regress sbp exercise wtchg exw age male
ผลลัพธ์จากการรัน w6_sim.log
. * Outcome model with the exposure-mediator interaction (theta1 A + theta2 M + theta3 A M)
. regress sbp exercise wtchg exw age male

      Source |       SS           df       MS      Number of obs   =     2,000
-------------+----------------------------------   F(5, 1994)      =    358.74
       Model |  278452.465         5  55690.4931   Prob > F        =    0.0000
    Residual |  309547.372     1,994  155.239404   R-squared       =    0.4736
-------------+----------------------------------   Adj R-squared   =    0.4722
       Total |  587999.837     1,999  294.146992   Root MSE        =     12.46

------------------------------------------------------------------------------
         sbp | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
    exercise |  -.8351658   .2762007    -3.02   0.003    -1.376838   -.2934935
       wtchg |   .2898677   .1545066     1.88   0.061    -.0131437    .5928791
         exw |   .5457527   .0547717     9.96   0.000     .4383369    .6531686
         age |   .4668235   .0221736    21.05   0.000     .4233377    .5103092
        male |   3.880244   .5609905     6.92   0.000     2.780054    4.980433
       _cons |   101.6947   1.502064    67.70   0.000     98.74896    104.6405
------------------------------------------------------------------------------
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ ก่อนคำสั่งนี้ generate double exw = exercise*wtchg สร้างผลคูณของการออกกำลังกายกับการเปลี่ยนแปลงของน้ำหนัก แถว exw จึงคือ $\hat\theta_3$ ซึ่งเท่ากับ 0.55 mmHg ต่อกิโลกรัมต่อชั่วโมงต่อสัปดาห์ ส่วนแถว exercise และ wtchg ให้ $\hat\theta_1$ และ $\hat\theta_2$

ตั้งชื่อผลด้วยผลลัพธ์ที่อาจเกิดขึ้น

ผลลัพธ์ที่อาจเกิดขึ้น (potential outcome) คือค่าที่ผลลัพธ์จะมี หากกำหนดสิ่งสัมผัส และอาจรวมถึงตัวแปรสื่อกลาง ไว้ที่ระดับหนึ่ง [3, 4] ให้ $M^{a}$ แทนการเปลี่ยนแปลงของน้ำหนักที่บุคคลหนึ่งจะมี หากกำหนดการออกกำลังกายไว้ที่ $a$ และให้ $Y^{a,m}$ แทน SBP ที่บุคคลนั้นจะมี หากกำหนดการออกกำลังกายไว้ที่ $a$ และการเปลี่ยนแปลงของน้ำหนักไว้ที่ $m$ สำหรับบุคคลหนึ่งคนจะสังเกตเห็นค่าเหล่านี้ได้อย่างมากเพียงค่าเดียว นิยามด้านล่างจึงเปรียบเทียบค่าเฉลี่ย เขียนเป็น $E[\cdot]$

เมื่อซ้อนทั้งสองเข้าด้วยกันจะได้ $Y^{a,M^{a^*}}$ คือ SBP เมื่อการออกกำลังกายอยู่ที่ $a$ แต่การเปลี่ยนแปลงของน้ำหนักอยู่ที่ระดับที่จะเกิดขึ้นหากการออกกำลังกายอยู่ที่ $a^*$ เมื่อการออกกำลังกายอยู่ที่ $a$ การเปลี่ยนแปลงของน้ำหนักจะมีค่าตามธรรมชาติ $M^{a}$ ดังนั้น $Y^{a} = Y^{a,M^{a}}$ ผลตามธรรมชาติแต่ละตัวด้านล่างเปลี่ยนทีละอย่างเดียว

$$\mathrm{CDE}(m) = E\left[Y^{a,m} - Y^{a^*,m}\right]$$

ผลทางตรงแบบควบคุม (controlled direct effect) กำหนดการเปลี่ยนแปลงของน้ำหนักไว้ที่ค่า $m$ เดียวกันสำหรับทุกคน และเปลี่ยนเฉพาะการออกกำลังกาย มันตอบว่าการออกกำลังกายที่เพิ่มขึ้นจะทำอะไรได้ หากสามารถตรึงการเปลี่ยนแปลงของน้ำหนักไว้ที่ $m$ ด้วยการแทรกแซง

$$\mathrm{NDE} = E\left[Y^{a,M^{a^*}} - Y^{a^*,M^{a^*}}\right]$$

ผลทางตรงตามธรรมชาติ (natural direct effect) เปลี่ยนการออกกำลังกายจาก $a^*$ เป็น $a$ แต่คงการเปลี่ยนแปลงของน้ำหนักของแต่ละคนไว้ที่ระดับที่จะเกิดขึ้นหากไม่ได้ออกกำลังกายเพิ่ม จึงเปิดเฉพาะเส้นทางที่อ้อมน้ำหนักไป

$$\mathrm{NIE} = E\left[Y^{a,M^{a}} - Y^{a,M^{a^*}}\right]$$

ผลทางอ้อมตามธรรมชาติ (natural indirect effect) คงการออกกำลังกายไว้ที่ $a$ และเลื่อนการเปลี่ยนแปลงของน้ำหนักของแต่ละคนจากระดับภายใต้ $a^*$ ไปเป็นระดับภายใต้ $a$ จึงเปิดเฉพาะเส้นทางที่ผ่านน้ำหนัก

$$\mathrm{TE} = E\left[Y^{a} - Y^{a^*}\right] = \mathrm{NDE} + \mathrm{NIE}$$

ผลรวมทั้งหมด (total effect) เปรียบเทียบการออกกำลังกายสองระดับโดยให้น้ำหนักตอบสนองได้อย่างอิสระ ผลตามธรรมชาติทั้งสองบวกกันได้เท่ากับผลรวมทั้งหมด เพราะพจน์กลาง $Y^{a,M^{a^*}}$ ปรากฏในทั้งสองและหักล้างกัน

สัดส่วนของผลที่ผ่านตัวแปรสื่อกลาง (proportion mediated) คือ $\mathrm{NIE}/\mathrm{TE}$ ผลทางอ้อมในรูปสัดส่วนของผลรวมทั้งหมดบนมาตรวัดเดียวกัน หัวข้อ 'สัดส่วนของผลที่ผ่านตัวแปรสื่อกลาง ต้องอ่านด้วยความระมัดระวัง' แสดงว่าทำไมต้องระวัง ในแบบจำลองเชิงเส้นที่ไม่มีปฏิกิริยาสัมพันธ์บนมาตรวัด mmHg ผลทางตรงแบบควบคุมมีค่าเท่ากันทุกค่าของ $m$ และเท่ากับผลทางตรงตามธรรมชาติ เมื่อมีปฏิกิริยาสัมพันธ์ ทั้งสองมักต่างกัน

ปริมาณ $Y^{a,M^{a^*}}$ ผสมสองโลกเข้าด้วยกัน คือการออกกำลังกายตามโลกหนึ่งและการเปลี่ยนแปลงของน้ำหนักตามอีกโลกหนึ่ง จึงไม่เคยสังเกตเห็นในใครเลย นั่นคือสิ่งที่ทำให้ผลตามธรรมชาติบอกกลไกได้ และเป็นสิ่งเดียวกันที่ทำให้ระบุค่าได้ยาก (identify) คือคำนวณจากข้อมูลที่สังเกตได้ภายใต้ข้อสมมติที่ระบุไว้ (ดูหัวข้อ 'สิ่งที่ต้องมีจึงจะอ่านผลเหล่านี้เชิงเหตุผลได้')

ผลสี่แบบสำหรับการออกกำลังกาย 2.5 เทียบกับ 0 ชั่วโมงต่อสัปดาห์ ผลตามธรรมชาติเปลี่ยนทีละอย่างเดียว และ NDE บวก NIE เท่ากับ TE
ผลการออกกำลังกายการเปลี่ยนแปลงของน้ำหนักคำถามที่ผลนั้นตอบ
ผลทางตรงแบบควบคุม CDE($m$)$a^*$ เทียบกับ $a$ตรึงที่ $m$ สำหรับทุกคนการออกกำลังกายจะทำอะไรได้ หากตรึงการเปลี่ยนแปลงของน้ำหนักไว้ที่ $m$
ผลทางตรงตามธรรมชาติ NDE$a^*$ เทียบกับ $a$ที่ระดับของแต่ละคนภายใต้ $a^*$การออกกำลังกายทำอะไรผ่านเส้นทางอื่นที่ไม่ใช่น้ำหนัก
ผลทางอ้อมตามธรรมชาติ NIEคงไว้ที่ $a$เลื่อนจากระดับภายใต้ $a^*$ ไปยังระดับภายใต้ $a$การออกกำลังกายทำอะไรผ่านน้ำหนัก
ผลรวมทั้งหมด TE$a^*$ เทียบกับ $a$ตอบสนองได้อย่างอิสระการออกกำลังกายทำอะไรโดยรวม

สูตรในรูปปิดเมื่อการออกกำลังกายเปลี่ยนผลของน้ำหนัก

เมื่อแบบจำลองของตัวแปรสื่อกลางเป็นเชิงเส้น และแบบจำลองของผลลัพธ์เป็นเชิงเส้นที่คงพจน์ผลคูณไว้ ผลแต่ละตัวมีสูตรในรูปปิด (closed form) คือสูตรที่เขียนด้วยสัมประสิทธิ์ของแบบจำลอง [2, 5] แบบจำลองของตัวแปรสื่อกลางคือ

$$E[M \mid a, c] = \beta_0 + \beta_1 a + \beta_2' c$$

โดย $\beta_0$ คือจุดตัดแกน (intercept) $\beta_1$ คือความชันของการออกกำลังกาย และ $\beta_2$ คือสัมประสิทธิ์ของตัวแปรร่วม เมื่อใช้ร่วมกับแบบจำลองของผลลัพธ์ข้างต้น ผลสำหรับคอนทราสต์จาก $a^*$ ไป $a$ ที่ค่าตัวแปรร่วม $c$ เป็นดังนี้

$$\mathrm{CDE}(m) = (\theta_1 + \theta_3 m)(a - a^*)$$

ผลทางตรงแบบควบคุมขึ้นกับระดับ $m$ ที่ตรึงการเปลี่ยนแปลงของน้ำหนักไว้ เพราะความชันของการออกกำลังกายที่ระดับนั้นคือ $\theta_1 + \theta_3 m$

$$\mathrm{NDE} = \left[\theta_1 + \theta_3(\beta_0 + \beta_1 a^* + \beta_2' c)\right](a - a^*)$$

ผลทางตรงตามธรรมชาติคือผลทางตรงแบบควบคุมที่ประเมินที่ค่าเฉลี่ยของการเปลี่ยนแปลงน้ำหนักภายใต้ $a^*$ ซึ่งคือ $\beta_0 + \beta_1 a^* + \beta_2' c$

$$\mathrm{NIE} = (\theta_2 + \theta_3 a)\,\beta_1 (a - a^*)$$

ผลทางอ้อมตามธรรมชาติคูณการเลื่อนของค่าเฉลี่ยการเปลี่ยนแปลงน้ำหนัก $\beta_1 (a - a^*)$ ด้วยความชันของน้ำหนักที่ระดับการออกกำลังกาย $a$ ซึ่งคือ $\theta_2 + \theta_3 a$

เมื่อกำหนด $\theta_3 = 0$ สูตรทั้งหมดจะยุบเหลือวิธีผลคูณ ผลทางตรงตามธรรมชาติกลายเป็น $\theta_1 (a - a^*)$ และผลทางอ้อมตามธรรมชาติกลายเป็น $\theta_2 \beta_1 (a - a^*)$ โดย $\theta_2$ เท่ากับ $b$ เมื่อ $\theta_3 \ne 0$ ผลทางอ้อมใช้ความชันของน้ำหนักที่ $a$ และผลทางตรงใช้ค่าเฉลี่ยการเปลี่ยนแปลงน้ำหนักที่ $a^*$ เนื่องจากแบบจำลองทั้งสองเป็นเชิงเส้น การแทนค่าเฉลี่ยของตัวแปรร่วมจึงให้ผลเฉลี่ยทั้ง cohort

ตัวอย่างคำนวณด้วยมือ: สูตรในรูปปิดในประชากรจำลอง

ตัวอย่างคำนวณด้วยมือ ใช้ค่าที่ใช้สร้าง cohort จำลอง (ค่าจริงในข้อมูลจำลอง) สำหรับ $a^* = 0$ เทียบกับ $a = 2.5$ ชั่วโมงออกกำลังกายต่อสัปดาห์ ความชันของตัวแปรสื่อกลางคือ $\beta_1 = -1.2$ กิโลกรัมต่อชั่วโมงต่อสัปดาห์ สัมประสิทธิ์ของผลลัพธ์คือ $\theta_1 = -1$, $\theta_2 = 0.4$ และ $\theta_3 = 0.5$ ค่าเฉลี่ยการเปลี่ยนแปลงของน้ำหนักที่ $a^* = 0$ ตลอดสัดส่วนอายุและเพศของประชากรจำลองคือ 1.2 กิโลกรัม ซึ่งเป็นการเพิ่มเล็กน้อย

  1. ความชันของการออกกำลังกายที่ระดับน้ำหนักเมื่อไม่ออกกำลังกายเพิ่ม

    \[ \theta_1 + \theta_3 \times 1.2 = -1 + 0.6 = -0.4 \]

    หน่วยเป็น mmHg ต่อชั่วโมงต่อสัปดาห์ ที่การเปลี่ยนแปลงของน้ำหนักซึ่งคนจะมีเมื่อ $a^* = 0$

  2. ผลทางตรงตามธรรมชาติ

    \[ \mathrm{NDE} = -0.4 \times 2.5 = -1.00 \ \text{mmHg} \]

    ผ่านเส้นทางอื่นที่ไม่ใช่น้ำหนัก การออกกำลังกายที่เพิ่มขึ้นลด SBP ลง 1.00 mmHg

  3. ความชันของน้ำหนักที่ 2.5 ชั่วโมงต่อสัปดาห์

    \[ \theta_2 + \theta_3 \times 2.5 = 0.4 + 1.25 = 1.65 \]

    หน่วยเป็น mmHg ต่อกิโลกรัม ในผู้ที่ออกกำลังกาย 2.5 ชั่วโมงต่อสัปดาห์

  4. การเลื่อนของค่าเฉลี่ยการเปลี่ยนแปลงน้ำหนัก

    \[ \beta_1 (a - a^*) = -1.2 \times 2.5 = -3.0 \ \text{kg} \]

    การออกกำลังกายที่เพิ่มขึ้นลดค่าเฉลี่ยการเปลี่ยนแปลงน้ำหนักลง 3.0 กิโลกรัม

  5. ผลทางอ้อมตามธรรมชาติ

    \[ \mathrm{NIE} = 1.65 \times (-3.0) = -4.95 \ \text{mmHg} \]

    ผ่านน้ำหนัก การออกกำลังกายที่เพิ่มขึ้นลด SBP ลง 4.95 mmHg

  6. ผลรวมทั้งหมด

    \[ \mathrm{TE} = -1.00 + (-4.95) = -5.95 \ \text{mmHg} \]

    ผลตามธรรมชาติทั้งสองบวกกันได้เท่ากับผลรวมทั้งหมด

  7. สัดส่วนของผลที่ผ่านตัวแปรสื่อกลาง

    \[ \frac{\mathrm{NIE}}{\mathrm{TE}} = \frac{-4.95}{-5.95} = 0.83 \]

    เป็นสัดส่วนบนมาตรวัด mmHg ซึ่งต้องอ่านด้วยข้อควรระวังที่ให้ไว้ในหัวข้อต่อ ๆ ไป

  8. ผลทางตรงแบบควบคุมที่ 0 กิโลกรัม

    \[ \mathrm{CDE}(0) = (-1 + 0.5 \times 0) \times 2.5 = -2.50 \ \text{mmHg} \]

    เมื่อตรึงการเปลี่ยนแปลงของน้ำหนักไว้ที่ 0 กิโลกรัมสำหรับทุกคน การออกกำลังกายที่เพิ่มขึ้นจะลด SBP ลง 2.50 ไม่ใช่ 1.00 เพราะ $\theta_3 \ne 0$

ผลลัพธ์: ในประชากรจำลอง ผลทางตรงตามธรรมชาติคือ -1.00 mmHg ผลทางอ้อมตามธรรมชาติคือ -4.95 mmHg และผลรวมทั้งหมดคือ -5.95 mmHg เป้าหมายของวิธีผลคูณคือ -4.06 mmHg ซึ่งต่ำกว่าผลทางอ้อมจริง เพราะใช้ความชันของน้ำหนักเพียงค่าเดียวคือ $b$ = 1.35 ซึ่งน้อยกว่าความชันที่ 2.5 ชั่วโมง คือ 1.65

ตัวอย่างคำนวณด้วยมือ เลื่อน $\beta_1$ (การออกกำลังกายสู่การเปลี่ยนแปลงของน้ำหนัก) $\theta_2$ (การเปลี่ยนแปลงของน้ำหนักสู่ SBP เมื่อไม่ออกกำลังกาย) และ $\theta_3$ (ปฏิกิริยาสัมพันธ์ระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง) แผงจะคำนวณ NDE, NIE, TE และสัดส่วนของผลที่ผ่านตัวแปรสื่อกลางใหม่สำหรับ 2.5 เทียบกับ 0 ชั่วโมงต่อสัปดาห์ โดยค่าอื่น ๆ ของตัวอย่างคำนวณด้วยมือคงเดิม แผงยังแสดง $\beta_1 \times \theta_2 \times (a - a^*)$ ซึ่งเป็นผลทางอ้อมแบบ pure ที่คงการออกกำลังกายไว้ที่ $a^*$ และไม่ใช่สูตร a x b เพราะสูตรนั้นใช้ $b$ จากแบบจำลองที่ไม่มีปฏิกิริยาสัมพันธ์ เมื่อ $\theta_3 = 0$ ผลคูณนี้เท่ากับ NIE และค่าอื่นใดจะทำให้ทั้งสองห่างกัน แถบเลื่อนเริ่มต้นที่ค่าจริงในข้อมูลจำลองของตัวอย่างคำนวณด้วยมือ

cohort จำลอง: ค่าประมาณเทียบกับค่าจริงในข้อมูลจำลอง

สูตรในรูปปิดชุดเดียวกัน เมื่อใช้กับแบบจำลองที่ประมาณจากผู้ใหญ่จำลอง 2,000 คน ให้ค่าประมาณในตาราง แบบจำลองทั้งสองมีอายุและเพศ ซึ่งเข้าสู่สูตรที่ค่าเฉลี่ยของตัวอย่าง แต่ละช่วงเชื่อมั่นรวมความแปรปรวนที่ประมาณได้ของแบบจำลองทั้งสองผ่านวิธีเดลตา

ทุกช่วงเชื่อมั่นจากวิธีเดลตาในตารางครอบคลุมค่าจริงในข้อมูลจำลองของมัน ในตัวอย่างนี้ ผลทางอ้อมตามธรรมชาติอยู่ใกล้ค่าจริงในข้อมูลจำลอง คือ -4.94 mmHg เทียบกับ -4.95 ส่วนผลทางตรงตามธรรมชาติอยู่ไกลกว่า คือ -0.32 mmHg เทียบกับ -1.00 มันเป็นผลต่างเล็ก ๆ ของพจน์ที่ประมาณได้สองพจน์ซึ่งใหญ่กว่า ช่วงเชื่อมั่นจากวิธีเดลตาของมันคือ -1.87 ถึง 1.23 mmHg จึงกว้าง

วิธีผลคูณ เมื่อใช้กับข้อมูลชุดเดียวกัน ให้ -4.09 mmHg โดยช่วงเชื่อมั่นจากวิธีเดลตาคือ -4.81 ถึง -3.37 ช่วงนี้ครอบคลุมเป้าหมายของวิธีผลคูณเอง คือ -4.06 และไม่ครอบคลุมผลทางอ้อมตามธรรมชาติที่แท้จริงในข้อมูลจำลอง คือ -4.95 ตัวอย่างที่ใหญ่ขึ้นจะทำให้ช่วงแคบลงรอบเป้าหมายที่ผิดเท่านั้น

ส่วนที่แสดงโค้ดด้านล่างแสดงสูตรในรูปปิดเป็นโค้ด คำสั่ง nlcom ของ Stata ซึ่งย่อมาจากการรวมแบบไม่เป็นเชิงเส้นของค่าประมาณ (nonlinear combinations of estimates) ใช้วิธีเดลตาเมื่อซ้อนแบบจำลองสองแบบเข้าด้วยกันแล้ว ส่วนใน R ใช้อนุพันธ์เชิงตัวเลขของสูตรเดียวกัน คำสั่ง mediate ที่มีในตัว Stata คำสั่ง paramed ที่ผู้ใช้เขียนขึ้น และแพ็กเกจ mediation ของ R ซึ่งใช้วิธีจำลองของ Imai และคณะ [6] ให้ค่าประมาณเท่ากันหรือใกล้เคียงมาก

ผลลัพธ์ต่อเนื่อง: ค่าจริงในข้อมูลจำลอง ค่าประมาณ และช่วงเชื่อมั่นจากวิธีเดลตา

ข้อมูลจำลอง ผู้ใหญ่ 2,000 คน Stata และ R ให้ค่าเท่ากัน ผลทั้งหมดเป็นของการออกกำลังกาย 2.5 เทียบกับ 0 ชั่วโมงต่อสัปดาห์ แถววิธีผลคูณมีเป้าหมายในประชากรของตัวเอง ซึ่งไม่ใช่ผลทางอ้อมตามธรรมชาติ
ผลค่าจริงในข้อมูลจำลอง (mmHg)ค่าประมาณ (mmHg)ช่วงเชื่อมั่น 95% จากวิธีเดลตา (mmHg)
ผลทางตรงตามธรรมชาติ (NDE)-1.00-0.32-1.87 ถึง 1.23
ผลทางอ้อมตามธรรมชาติ (NIE)-4.95-4.94-5.69 ถึง -4.19
ผลรวมทั้งหมด (TE)-5.95-5.26-6.56 ถึง -3.96
สัดส่วนของผลที่ผ่านตัวแปรสื่อกลาง (ไม่มีหน่วย)0.830.940.66 ถึง 1.22
ผลทางตรงแบบควบคุม ตรึงการเปลี่ยนแปลงของน้ำหนักที่ 0 กิโลกรัม-2.50-2.09-3.44 ถึง -0.73
วิธีผลคูณ $\beta_1 \times b \times (a - a^*)$-4.06 (เป้าหมายของมันเอง)-4.09-4.81 ถึง -3.37

Stata: สูตรในรูปปิดและช่วงเชื่อมั่นจากวิธีเดลตาด้วย nlcom

โค้ด Stata w6_sim.do (บรรทัด 81-96 จาก 475)
* Stack both models (block-diagonal variance) so nlcom can apply the delta method
matrix coleq bm = med
matrix coleq by = out
matrix bb = bm, by
local names : colfullnames bb
matrix VV = (Vm, J(4, 6, 0) \ J(6, 4, 0), Vy)
matrix colnames VV = `names'
matrix rownames VV = `names'
ereturn post bb VV

* Closed forms (VanderWeele), covariates at their means; m0 = E[M | a* = 0, mean covariates]
local m0 "(_b[med:_cons] + _b[med:age]*(`agebar') + _b[med:male]*(`malebar'))"
local nde "((_b[out:exercise] + _b[out:exw]*`m0')*2.5)"
local nie "((_b[out:wtchg] + _b[out:exw]*2.5)*_b[med:exercise]*2.5)"
local te "(`nde' + `nie')"
nlcom (nde: `nde') (nie: `nie') (te: `te') (pm: `nie'/`te') (cde0: _b[out:exercise]*2.5) (pnie: _b[out:wtchg]*_b[med:exercise]*2.5) (tnde: (_b[out:exercise] + _b[out:exw]*(`m0' + _b[med:exercise]*2.5))*2.5)
ผลลัพธ์จากการรัน w6_sim.log
. * Stack both models (block-diagonal variance) so nlcom can apply the delta method
. matrix coleq bm = med

. matrix coleq by = out

. matrix bb = bm, by

. local names : colfullnames bb

. matrix VV = (Vm, J(4, 6, 0) \ J(6, 4, 0), Vy)

. matrix colnames VV = `names'

. matrix rownames VV = `names'

. ereturn post bb VV

.
. * Closed forms (VanderWeele), covariates at their means; m0 = E[M | a* = 0, mean covariates]
. local m0 "(_b[med:_cons] + _b[med:age]*(`agebar') + _b[med:male]*(`malebar'))"

. local nde "((_b[out:exercise] + _b[out:exw]*`m0')*2.5)"

. local nie "((_b[out:wtchg] + _b[out:exw]*2.5)*_b[med:exercise]*2.5)"

. local te "(`nde' + `nie')"

. nlcom (nde: `nde') (nie: `nie') (te: `te') (pm: `nie'/`te') (cde0: _b[out:exercise]*2.5) (pnie: _b[out:wtchg]*_b[med:e
> xercise]*2.5) (tnde: (_b[out:exercise] + _b[out:exw]*(`m0' + _b[med:exercise]*2.5))*2.5)

         nde: ((_b[out:exercise] + _b[out:exw]*(_b[med:_cons] + _b[med:age]*(55.313) + _b[med:male]*(.504)))*2.5)
         nie: ((_b[out:wtchg] + _b[out:exw]*2.5)*_b[med:exercise]*2.5)
          te: (((_b[out:exercise] + _b[out:exw]*(_b[med:_cons] + _b[med:age]*(55.313) + _b[med:male]*(.504)))*2.5) + ((_
> b[out:wtchg] + _b[out:exw]*2.5)*_b[med:exercise]*2.5))
          pm: ((_b[out:wtchg] + _b[out:exw]*2.5)*_b[med:exercise]*2.5)/(((_b[out:exercise] + _b[out:exw]*(_b[med:_cons]
> + _b[med:age]*(55.313) + _b[med:male]*(.504)))*2.5) + ((_b[out:wtchg] + _b[out:exw]*2.5)*_b[med:exercise]*2.5))
        cde0: _b[out:exercise]*2.5
        pnie: _b[out:wtchg]*_b[med:exercise]*2.5
        tnde: (_b[out:exercise] + _b[out:exw]*((_b[med:_cons] + _b[med:age]*(55.313) + _b[med:male]*(.504)) + _b[med:exe
> rcise]*2.5))*2.5

------------------------------------------------------------------------------
             | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
         nde |  -.3191431    .792894    -0.40   0.687    -1.873187    1.234901
         nie |  -4.939743   .3844027   -12.85   0.000    -5.693158   -4.186327
          te |  -5.258886   .6638817    -7.92   0.000     -6.56007   -3.957701
          pm |   .9393135   .1441129     6.52   0.000     .6568574     1.22177
        cde0 |  -2.087915   .6905018    -3.02   0.002    -3.441273   -.7345559
        pnie |  -.8655719   .4624469    -1.87   0.061    -1.771951    .0408073
        tnde |  -4.393314   .6362454    -6.91   0.000    -5.640332   -3.146296
------------------------------------------------------------------------------
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ บรรทัดแรก ๆ ซ้อนแบบจำลองของตัวแปรสื่อกลาง (สมการ med) และแบบจำลองของผลลัพธ์ (สมการ out) เป็นชุดค่าประมาณชุดเดียว โดยความแปรปรวนร่วมระหว่างสองแบบจำลองเป็นศูนย์ ตัวแปร local เขียนสูตรในรูปปิดโดยให้อายุและเพศอยู่ที่ค่าเฉลี่ยของตัวอย่าง และ nlcom พิมพ์แต่ละผลพร้อมช่วงเชื่อมั่นจากวิธีเดลตา ได้แก่ nde, nie, te, pm, cde0 (ผลทางตรงแบบควบคุมที่ 0 กิโลกรัม) pnie (ผลทางอ้อมแบบ pure) และ tnde (ผลทางตรงแบบ total) สองตัวหลังนิยามไว้ในหัวข้อสัดส่วนของผลที่ผ่านตัวแปรสื่อกลาง

R: สูตรในรูปปิดชุดเดียวกันด้วยวิธีเดลตาเชิงตัวเลข

โค้ด R w6_sim_r.R (บรรทัด 70-97 จาก 345)
# Closed forms (VanderWeele), covariates at their means; m0 = E[M | a* = 0, mean covariates]
effects <- function(t) {
  m0 <- t[["med_(Intercept)"]] + t[["med_age"]] * agebar + t[["med_male"]] * malebar
  b1 <- t[["med_exercise"]]
  nde <- (t[["out_exercise"]] + t[["out_exw"]] * m0) * 2.5
  nie <- (t[["out_wtchg"]] + t[["out_exw"]] * 2.5) * b1 * 2.5
  c(nde = nde, nie = nie, te = nde + nie, pm = nie / (nde + nie),
    cde0 = t[["out_exercise"]] * 2.5,
    pnie = t[["out_wtchg"]] * b1 * 2.5,
    tnde = (t[["out_exercise"]] + t[["out_exw"]] * (m0 + b1 * 2.5)) * 2.5)
}
# Delta method with a central-difference Jacobian
est <- effects(th)
J <- sapply(seq_along(th), function(j) {
  h <- 1e-6 * max(1, abs(th[j]))
  up <- th; dn <- th
  up[j] <- up[j] + h
  dn[j] <- dn[j] - h
  (effects(up) - effects(dn)) / (2 * h)
})
se <- sqrt(diag(J %*% V %*% t(J)))
for (k in c("nde", "nie", "te", "pm", "cde0")) {
  canon(k, est[[k]])
  canon(paste0(k, ".lb"), est[[k]] - z975 * se[[k]])
  canon(paste0(k, ".ub"), est[[k]] + z975 * se[[k]])
}
canon("pnie", est[["pnie"]])
canon("tnde", est[["tnde"]])
ผลลัพธ์จากการรัน w6_sim_r.log
> effects <- function(t) {
+     m0 <- t[["med_(Intercept)"]] + t[["med_age"]] * agebar +
+         t[["med_male"]] * malebar
+     b1 <- t[["med_exercise"]]
+     nde <- (t[["out_exercise"]] + t[["out_exw"]] * m0) * 2.5
+     nie <- (t[["out_wtchg"]] + t[["out_exw"]] * 2.5) * b1 * 2.5
+     c(nde = nde, nie = nie, te = nde + nie, pm = nie/(nde + nie),
+         cde0 = t[["out_exercise"]] * 2.5, pnie = t[["out_wtchg"]] *
+             b1 * 2.5, tnde = (t[["out_exercise"]] + t[["out_exw"]] *
+             (m0 + b1 * 2.5)) * 2.5)
+ }

> est <- effects(th)

> J <- sapply(seq_along(th), function(j) {
+     h <- 1e-06 * max(1, abs(th[j]))
+     up <- th
+     dn <- th
+     up[j] <- up[j] + h
+     dn[j] <- dn[j] - h
+     (effects(up) - effects(dn))/(2 * h)
+ })

> se <- sqrt(diag(J %*% V %*% t(J)))

> for (k in c("nde", "nie", "te", "pm", "cde0")) {
+     canon(k, est[[k]])
+     canon(paste0(k, ".lb"), est[[k]] - z975 * se[[k]])
+     canon(paste0(k, ".ub"), est[[k]] + z975 * se[[k]])
+ }
CANON w6.nde -0.3191
CANON w6.nde.lb -1.8732
CANON w6.nde.ub 1.2349
CANON w6.nie -4.9397
CANON w6.nie.lb -5.6932
CANON w6.nie.ub -4.1863
CANON w6.te -5.2589
CANON w6.te.lb -6.5601
CANON w6.te.ub -3.9577
CANON w6.pm 0.9393
CANON w6.pm.lb 0.6569
CANON w6.pm.ub 1.2218
CANON w6.cde0 -2.0879
CANON w6.cde0.lb -3.4413
CANON w6.cde0.ub -0.7346

> canon("pnie", est[["pnie"]])
CANON w6.pnie -0.8656

> canon("tnde", est[["tnde"]])
CANON w6.tnde -4.3933
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์ R ของสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ ก่อนบรรทัดเหล่านี้ สคริปต์ซ้อนสัมประสิทธิ์ของแบบจำลองที่ประมาณแล้วสองแบบไว้ใน th และความแปรปรวนของมันไว้ในเมทริกซ์ V โดยความแปรปรวนร่วมระหว่างสองแบบจำลองเป็นศูนย์ ฟังก์ชัน effects() เขียนสูตรในรูปปิด J เก็บอนุพันธ์เชิงตัวเลขของสูตรเหล่านั้น และค่าคลาดเคลื่อนมาตรฐานจากวิธีเดลตาคือรากที่สองของเส้นทแยงมุมของ J V J' บรรทัดที่ขึ้นต้นด้วย CANON พิมพ์โดยฟังก์ชันช่วยเล็ก ๆ ในสคริปต์ที่สะท้อนผลลัพธ์แต่ละค่าออกมา ให้อ่านตัวเลขท้ายบรรทัดและไม่ต้องสนใจคำนำหน้า ค่าเหล่านี้ตรงกับผลลัพธ์ของ Stata

Stata: คำสั่ง mediate ที่มีในตัว

โค้ด Stata w6_sim.do (บรรทัด 120-120 จาก 475)
capture noisily mediate (sbp age male) (wtchg age male) (exercise, continuous(0 2.5)), nie nde pnie tnde te
ผลลัพธ์จากการรัน w6_sim.log
. capture noisily mediate (sbp age male) (wtchg age male) (exercise, continuous(0 2.5)), nie nde pnie tnde te

Iteration 0:  EE criterion =  2.075e-26
Iteration 1:  EE criterion =  9.065e-28

Causal mediation analysis                                Number of obs = 2,000

Outcome model:     Linear
Mediator model:    Linear
Mediator variable: wtchg
Treatment type:    Continuous

Continuous treatment levels:
  0: exercise =   0 (control)
  1: exercise = 2.5

------------------------------------------------------------------------------------
                   |               Robust
               sbp | Coefficient  std. err.      z    P>|z|     [95% conf. interval]
-------------------+----------------------------------------------------------------
NIE                |
          exercise |
         (1 vs 0)  |  -4.939743   .3481939   -14.19   0.000     -5.62219   -4.257295
-------------------+----------------------------------------------------------------
NDE                |
          exercise |
         (1 vs 0)  |  -.3191431   .7607765    -0.42   0.675    -1.810238    1.171951
-------------------+----------------------------------------------------------------
PNIE               |
          exercise |
         (1 vs 0)  |  -.8655719    .481407    -1.80   0.072    -1.809112    .0779685
-------------------+----------------------------------------------------------------
TNDE               |
          exercise |
         (1 vs 0)  |  -4.393314   .5850942    -7.51   0.000    -5.540077    -3.24655
-------------------+----------------------------------------------------------------
TE                 |
          exercise |
         (1 vs 0)  |  -5.258886   .6896579    -7.63   0.000     -6.61059   -3.907181
------------------------------------------------------------------------------------
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ คำสั่งนี้ระบุแบบจำลองของผลลัพธ์ (sbp บน age และ male) แบบจำลองของตัวแปรสื่อกลาง (wtchg บน age และ male) และสิ่งสัมผัสพร้อมสองระดับของมัน คือ 0 และ 2.5 ชั่วโมง โดยค่าเริ่มต้นคำสั่งจะเพิ่มปฏิกิริยาสัมพันธ์ระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลางเข้าไปในแบบจำลองของผลลัพธ์ ค่าประมาณจุดตรงกับสูตรในรูปปิด ช่วงเชื่อมั่นของมันใช้ค่าคลาดเคลื่อนมาตรฐานแบบ robust ที่ระบุไว้ในหัวตาราง ซึ่งเป็นค่าเริ่มต้นของคำสั่ง จึงต่างเล็กน้อยจากช่วงเชื่อมั่นจากวิธีเดลตาในตาราง ซึ่งใช้ความแปรปรวนตามปกติของแต่ละแบบจำลองที่ประมาณ

Stata: คำสั่ง paramed ที่ผู้ใช้เขียนขึ้น

โค้ด Stata w6_sim.do (บรรทัด 138-138 จาก 475)
    capture noisily paramed sbp, avar(exercise) mvar(wtchg) cvars(age male) a0(0) a1(2.5) m(0) yreg(linear) mreg(linear)
ผลลัพธ์จากการรัน w6_sim.log
.     capture noisily paramed sbp, avar(exercise) mvar(wtchg) cvars(age male) a0(0) a1(2.5) m(0) yreg(linear) mreg(linea
> r)

      Source |       SS           df       MS      Number of obs   =     2,000
-------------+----------------------------------   F(5, 1994)      =    358.74
       Model |  278452.465         5  55690.4931   Prob > F        =    0.0000
    Residual |  309547.372     1,994  155.239404   R-squared       =    0.4736
-------------+----------------------------------   Adj R-squared   =    0.4722
       Total |  587999.837     1,999  294.146992   Root MSE        =     12.46

-----------------------------------------------------------------------------------
              sbp | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
------------------+----------------------------------------------------------------
         exercise |  -.8351658   .2762007    -3.02   0.003    -1.376838   -.2934936
            wtchg |   .2898677   .1545066     1.88   0.061    -.0131437    .5928791
_exercise_X_wtchg |   .5457527   .0547717     9.96   0.000     .4383369    .6531685
              age |   .4668235   .0221736    21.05   0.000     .4233377    .5103092
             male |   3.880244   .5609906     6.92   0.000     2.780054    4.980433
            _cons |   101.6947   1.502064    67.70   0.000     98.74896    104.6405
-----------------------------------------------------------------------------------

      Source |       SS           df       MS      Number of obs   =     2,000
-------------+----------------------------------   F(3, 1996)      =    412.53
       Model |  7937.34882         3  2645.78294   Prob > F        =    0.0000
    Residual |  12801.4031     1,996  6.41352861   R-squared       =    0.3827
-------------+----------------------------------   Adj R-squared   =    0.3818
       Total |  20738.7519     1,999  10.3745632   Root MSE        =    2.5325

------------------------------------------------------------------------------
       wtchg | Coefficient  Std. err.      t    P>|t|     [95% conf. interval]
-------------+----------------------------------------------------------------
    exercise |  -1.194437   .0435007   -27.46   0.000    -1.279749   -1.109126
         age |   .0236362   .0044603     5.30   0.000     .0148888    .0323836
        male |   .2156961   .1139233     1.89   0.058     -.007725    .4391173
       _cons |  -.1197085   .3035733    -0.39   0.693    -.7150622    .4756452
------------------------------------------------------------------------------

             |   Estimate     Std Err   P>|z|   [95% Conf   Interval]
-------------+-------------------------------------------------------
         cde | -2.0879146   .69050183   0.002  -3.4412982    -.734531
         nde | -.31914317   .79289403   0.687  -1.8732155   1.2349291
         nie | -4.9397425   .38440274   0.000  -5.6931719  -4.1863132
         mte | -5.2588857    .6638817   0.000  -6.5600938  -3.9576776

cde:controlled direct effect, nde:natural direct effect, nie:natural indirect effect, mte:marginal total effect
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ คำสั่ง paramed ประมาณแบบจำลองของผลลัพธ์ที่มีปฏิกิริยาสัมพันธ์และแบบจำลองของตัวแปรสื่อกลาง แล้วพิมพ์ผลทางตรงแบบควบคุมที่ m(0) ผลทางตรงและทางอ้อมตามธรรมชาติ และ marginal total effect ซึ่งเป็นชื่อที่คำสั่งนี้ใช้เรียกผลรวมทั้งหมด ค่าประมาณและช่วงเชื่อมั่นจากวิธีเดลตาตรงกับผลลัพธ์ของ nlcom

R: แพ็กเกจ mediation

โค้ด R w6_sim_r.R (บรรทัด 99-115 จาก 345)
# Cross-check with the mediation package (quasi-Bayesian simulation, 1000 draws)
set.seed(202664)
fy_int <- lm(sbp ~ exercise * wtchg + age + male, data = d)
med <- mediation::mediate(fm, fy_int, treat = "exercise", mediator = "wtchg",
                          control.value = 0, treat.value = 2.5, sims = 1000)
# d1 = indirect effect with exposure at a (NIE); z0 = direct effect with M at M(a*) (NDE)
canon("mediation.nie.r", med$d1)
canon("mediation.nie.lb.r", med$d1.ci[1])
canon("mediation.nie.ub.r", med$d1.ci[2])
canon("mediation.nde.r", med$z0)
canon("mediation.nde.lb.r", med$z0.ci[1])
canon("mediation.nde.ub.r", med$z0.ci[2])
canon("mediation.pnie.r", med$d0)
canon("mediation.tnde.r", med$z1)
canon("mediation.te.r", med$tau.coef)
canon("mediation.te.lb.r", med$tau.ci[1])
canon("mediation.te.ub.r", med$tau.ci[2])
ผลลัพธ์จากการรัน w6_sim_r.log
> set.seed(202664)

> fy_int <- lm(sbp ~ exercise * wtchg + age + male,
+     data = d)

> med <- mediation::mediate(fm, fy_int, treat = "exercise",
+     mediator = "wtchg", control.value = 0, treat.value = 2.5,
+     sims = 1000)

> canon("mediation.nie.r", med$d1)
CANON w6.mediation.nie.r -4.9542

> canon("mediation.nie.lb.r", med$d1.ci[1])
CANON w6.mediation.nie.lb.r -5.7222

> canon("mediation.nie.ub.r", med$d1.ci[2])
CANON w6.mediation.nie.ub.r -4.1960

> canon("mediation.nde.r", med$z0)
CANON w6.mediation.nde.r -0.3032

> canon("mediation.nde.lb.r", med$z0.ci[1])
CANON w6.mediation.nde.lb.r -1.8452

> canon("mediation.nde.ub.r", med$z0.ci[2])
CANON w6.mediation.nde.ub.r 1.3059

> canon("mediation.pnie.r", med$d0)
CANON w6.mediation.pnie.r -0.8804

> canon("mediation.tnde.r", med$z1)
CANON w6.mediation.tnde.r -4.3771

> canon("mediation.te.r", med$tau.coef)
CANON w6.mediation.te.r -5.2574

> canon("mediation.te.lb.r", med$tau.ci[1])
CANON w6.mediation.te.lb.r -6.5889

> canon("mediation.te.ub.r", med$tau.ci[2])
CANON w6.mediation.te.ub.r -3.9108
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์ R ของสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ แบบจำลองของผลลัพธ์ fy_int มีผลคูณของการออกกำลังกายกับการเปลี่ยนแปลงของน้ำหนัก และ mediation::mediate ประมาณผลด้วยการจำลอง คือสุ่มสัมประสิทธิ์ของแบบจำลองหลายครั้งจากการแจกแจงเชิงการสุ่มที่ประมาณได้ แล้วคำนวณผลใหม่ทุกครั้ง [6] ในผลลัพธ์ d1 คือผลทางอ้อมตามธรรมชาติ z0 คือผลทางตรงตามธรรมชาติ และ tau.coef คือผลรวมทั้งหมด บรรทัดที่ขึ้นต้นด้วย CANON พิมพ์โดยฟังก์ชันช่วยเล็ก ๆ ในสคริปต์ที่สะท้อนผลลัพธ์แต่ละค่าออกมา ให้อ่านตัวเลขท้ายบรรทัดและไม่ต้องสนใจคำนำหน้า ช่วงเชื่อมั่นที่มันพิมพ์มาจากการสุ่มในการจำลอง ไม่ใช่จากวิธีเดลตา และใกล้เคียงกับตารางมาก

ผลลัพธ์แบบใช่หรือไม่ใช่: คำถามเรื่องมาตรวัดกลับมาอีกครั้ง

cohort จำลองยังบันทึกความดันโลหิตสูงเมื่อครบหนึ่งปี ซึ่งเป็นผลลัพธ์แบบใช่หรือไม่ใช่ สำหรับ 2,000 คนเดิมที่มีการออกกำลังกายและการเปลี่ยนแปลงของน้ำหนักเดียวกัน ความดันโลหิตสูงพบบ่อย โดยความชุกคือ 0.312 ในตัวอย่าง และ 0.316 ในประชากรจำลอง แบบจำลองของผลลัพธ์ในส่วนนี้เป็นการถดถอยโลจิสติกที่มีพจน์ผลคูณระหว่างการออกกำลังกายกับน้ำหนัก ส่วนแบบจำลองของตัวแปรสื่อกลางยังเป็นเชิงเส้น

บนมาตรวัดผลต่างความเสี่ยง (risk-difference scale) ผลตามธรรมชาติแต่ละตัวคือผลต่างระหว่างความเสี่ยงเฉลี่ยสองค่า เมื่อแบบจำลองของผลลัพธ์เป็นโลจิสติกจะไม่มีสูตรในรูปปิดที่เรียบง่าย ผลจึงคำนวณด้วยmediational g-formula สำหรับแต่ละคน แบบจำลองของผลลัพธ์ที่ประมาณแล้วทำนายความเสี่ยงของความดันโลหิตสูง โดยกำหนดการออกกำลังกายไว้ที่ $a^*$ หรือ $a$ และให้การเปลี่ยนแปลงของน้ำหนักกระจายตามการแจกแจงที่ประมาณได้ภายใต้ $a^*$ หรือ $a$ จากนั้นเฉลี่ยความเสี่ยงเหล่านี้ข้ามทุกคน ผลทั้งสามตัวเปรียบเทียบความเสี่ยงเฉลี่ยเป็นคู่ ๆ ตรงตามนิยามข้างต้น

บนมาตรวัด odds ratio (odds-ratio scale) มีสูตรในรูปปิดสำหรับผลลัพธ์แบบโลจิสติกที่ใช้ตัวแปรสื่อกลางเชิงเส้น [2] สูตรเหล่านั้นอาศัยการประมาณเมื่อผลลัพธ์พบน้อย (rare-outcome approximation) คือถือว่า odds ratio เป็นเหมือนอัตราส่วนความเสี่ยง ซึ่งใกล้เคียงก็ต่อเมื่อผลลัพธ์พบไม่บ่อยในทุกระดับของสิ่งสัมผัส ตัวแปรสื่อกลาง และตัวแปรร่วม ความดันโลหิตสูงใน cohort นี้ไม่ได้พบน้อย

ความดันโลหิตสูง: ค่าจริงในข้อมูลจำลอง ค่าประมาณ และช่วงเชื่อมั่นจากวิธีเดลตา

ข้อมูลจำลอง ผู้ใหญ่ 2,000 คน ความชุกของความดันโลหิตสูง 0.312 ในตัวอย่าง ผลเป็นของการออกกำลังกาย 2.5 เทียบกับ 0 ชั่วโมงต่อสัปดาห์ ผลต่างความเสี่ยงเฉลี่ยทั้ง cohort ส่วน odds ratio อยู่ที่สัดส่วนอายุและเพศเฉลี่ย ในแถว odds ratio ค่าแรกคือสูตรเมื่อผลลัพธ์พบน้อยที่ประเมินด้วยสัมประสิทธิ์จริง ซึ่งเป็นปริมาณที่ค่าประมาณมุ่งไป ส่วนค่า exact ที่ตามมาคือ odds ratio ของผลตามธรรมชาติที่แท้จริง
ผลค่าจริงในข้อมูลจำลองค่าประมาณช่วงเชื่อมั่น 95% จากวิธีเดลตา
NDE ผลต่างความเสี่ยง-0.015-0.068-0.132 ถึง -0.004
NIE ผลต่างความเสี่ยง-0.123-0.099-0.130 ถึง -0.068
TE ผลต่างความเสี่ยง-0.138-0.167-0.217 ถึง -0.116
สัดส่วนของผลที่ผ่านตัวแปรสื่อกลาง บนมาตรวัดผลต่างความเสี่ยง0.890.590.31 ถึง 0.87
NDE odds ratio สูตรในรูปปิดเมื่อผลลัพธ์พบน้อย1.03 (เป้าหมายของสูตร) ค่า exact 0.930.760.53 ถึง 1.08
NIE odds ratio สูตรในรูปปิดเมื่อผลลัพธ์พบน้อย0.51 (เป้าหมายของสูตร) ค่า exact 0.530.580.49 ถึง 0.68

อ่านผลบนมาตรวัดทั้งสอง

บนมาตรวัดผลต่างความเสี่ยง ช่วงเชื่อมั่นจากวิธีเดลตาของผลทางตรงตามธรรมชาติ ผลทางอ้อมตามธรรมชาติ และผลรวมทั้งหมด ครอบคลุมค่าจริงในข้อมูลจำลองของแต่ละตัว ค่าประมาณของผลทางตรงตามธรรมชาติคือ -0.068 ซึ่งอยู่ไกลจาก -0.015 อีกครั้งเพราะส่วนที่เป็นผลทางตรงมีความแปรผันมากกว่า ช่วงเชื่อมั่นจากวิธีเดลตาของสัดส่วนของผลที่ผ่านตัวแปรสื่อกลาง คือ 0.31 ถึง 0.87 ไม่ครอบคลุมค่าจริงในข้อมูลจำลองที่ 0.89 ช่วงเชื่อมั่น 95% คาดว่าจะพลาดบ้างเป็นครั้งคราว และอัตราส่วนของผลต่างที่แปรผันสองตัวคือจุดที่การประมาณด้วยเส้นตรงของวิธีเดลตาอ่อนที่สุด

บนมาตรวัด odds ratio สูตรในรูปปิดเมื่อผลลัพธ์พบน้อยให้ 1.03 สำหรับผลทางตรงตามธรรมชาติ และ 0.51 สำหรับผลทางอ้อมตามธรรมชาติในประชากรจำลอง odds ratio ที่แท้จริงในประชากรนั้นที่สัดส่วนอายุและเพศเฉลี่ยคือ 0.93 และ 0.53 เมื่อผลลัพธ์พบบ่อยเช่นนี้ การประมาณยังทำให้ผลทางตรงไปอยู่คนละฝั่งของ 1

ค่าประมาณจากตัวอย่าง คือ 0.76 (ช่วงเชื่อมั่นจากวิธีเดลตา 0.53 ถึง 1.08) และ 0.58 (ช่วงเชื่อมั่นจากวิธีเดลตา 0.49 ถึง 0.68) ประมาณปริมาณที่เป็นค่าประมาณ ไม่ใช่ค่าที่แท้จริง แต่ละช่วงครอบคลุมเป้าหมายตามสูตรเมื่อผลลัพธ์พบน้อยของมัน คือ 1.03 และ 0.51 ที่ขนาดตัวอย่างนี้ช่วงเหล่านั้นยังครอบคลุมค่า exact ด้วย ข้อมูลเพียงอย่างเดียวจึงไม่แสดงว่าสูตรมุ่งไปที่ปริมาณที่ผิด

Stata: แบบจำลองโลจิสติกของผลลัพธ์ที่มีปฏิกิริยาสัมพันธ์

โค้ด Stata w6_sim.do (บรรทัด 171-172 จาก 475)
* Outcome model: logistic regression with the exposure-mediator interaction
logit htn exercise wtchg exw age male
ผลลัพธ์จากการรัน w6_sim.log
. * Outcome model: logistic regression with the exposure-mediator interaction
. logit htn exercise wtchg exw age male

Iteration 0:  Log likelihood = -1241.3831
Iteration 1:  Log likelihood = -1015.5316
Iteration 2:  Log likelihood = -1000.2137
Iteration 3:  Log likelihood = -999.57991
Iteration 4:  Log likelihood = -999.57787
Iteration 5:  Log likelihood = -999.57787

Logistic regression                                     Number of obs =  2,000
                                                        LR chi2(5)    = 483.61
                                                        Prob > chi2   = 0.0000
Log likelihood = -999.57787                             Pseudo R2     = 0.1948

------------------------------------------------------------------------------
         htn | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
    exercise |  -.1819008   .0538403    -3.38   0.001    -.2874259   -.0763757
       wtchg |   .1060281   .0314984     3.37   0.001     .0442925    .1677638
         exw |   .0314067   .0156946     2.00   0.045     .0006459    .0621675
         age |   .0514611   .0045331    11.35   0.000     .0425763    .0603459
        male |   .1396875   .1104594     1.26   0.206    -.0768089    .3561839
       _cons |  -3.431735   .3109377   -11.04   0.000    -4.041162   -2.822308
------------------------------------------------------------------------------
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ สัมประสิทธิ์คือการเปลี่ยนแปลงของ log odds ของความดันโลหิตสูง และแถว exw คือปฏิกิริยาสัมพันธ์ระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลางบนมาตรวัดนั้น เมื่อใช้ร่วมกับแบบจำลองของตัวแปรสื่อกลางเชิงเส้น สัมประสิทธิ์เหล่านี้ป้อนทั้งสูตรในรูปปิดของ odds ratio และ g-formula ของผลต่างความเสี่ยง

R: ผลต่างความเสี่ยงด้วย mediational g-formula

โค้ด R w6_sim_r.R (บรรทัด 177-196 จาก 345)
# Mediational g-formula on the risk-difference scale: average over people and 20 normal quantiles of M
zq <- qnorm((seq_len(20) - 0.5) / 20)
i <- rep(seq_len(nrow(db)), each = 20)
z <- rep(zq, times = nrow(db))
m0 <- cm[["(Intercept)"]] + cm[["age"]] * db$age[i] + cm[["male"]] * db$male[i] + sig * z
m1 <- m0 + cm[["exercise"]] * 2.5
xc <- g[["(Intercept)"]] + g[["age"]] * db$age[i] + g[["male"]] * db$male[i]
r00 <- mean(plogis(xc + g[["wtchg"]] * m0))
r10 <- mean(plogis(xc + g[["exercise"]] * 2.5 + g[["wtchg"]] * m0 + g[["exw"]] * 2.5 * m0))
r11 <- mean(plogis(xc + g[["exercise"]] * 2.5 + g[["wtchg"]] * m1 + g[["exw"]] * 2.5 * m1))
canon("bin.rd_nde", r10 - r00)
canon("bin.rd_nie", r11 - r10)
canon("bin.rd_te", r11 - r00)
canon("bin.rd_pm", (r11 - r10) / (r11 - r00))
# delta-method 95% CIs on the risk-difference scale (NDE, NIE, TE, proportion mediated)
for (k in 1:4) {
  e <- c("rd_nde", "rd_nie", "rd_te", "rd_pm")[k]
  canon(paste0("bin.", e, ".lb"), f0b[k] - z975 * seb[k])
  canon(paste0("bin.", e, ".ub"), f0b[k] + z975 * seb[k])
}
ผลลัพธ์จากการรัน w6_sim_r.log
> zq <- qnorm((seq_len(20) - 0.5)/20)

> i <- rep(seq_len(nrow(db)), each = 20)

> z <- rep(zq, times = nrow(db))

> m0 <- cm[["(Intercept)"]] + cm[["age"]] * db$age[i] +
+     cm[["male"]] * db$male[i] + sig * z

> m1 <- m0 + cm[["exercise"]] * 2.5

> xc <- g[["(Intercept)"]] + g[["age"]] * db$age[i] +
+     g[["male"]] * db$male[i]

> r00 <- mean(plogis(xc + g[["wtchg"]] * m0))

> r10 <- mean(plogis(xc + g[["exercise"]] * 2.5 + g[["wtchg"]] *
+     m0 + g[["exw"]] * 2.5 * m0))

> r11 <- mean(plogis(xc + g[["exercise"]] * 2.5 + g[["wtchg"]] *
+     m1 + g[["exw"]] * 2.5 * m1))

> canon("bin.rd_nde", r10 - r00)
CANON w6.bin.rd_nde -0.0679

> canon("bin.rd_nie", r11 - r10)
CANON w6.bin.rd_nie -0.0988

> canon("bin.rd_te", r11 - r00)
CANON w6.bin.rd_te -0.1667

> canon("bin.rd_pm", (r11 - r10)/(r11 - r00))
CANON w6.bin.rd_pm 0.5925

> for (k in 1:4) {
+     e <- c("rd_nde", "rd_nie", "rd_te", "rd_pm")[k]
+     canon(paste0("bin.", e, ".lb"), f0b[k] - z975 * seb[k])
+     canon(paste0("bin.", e, ".ub"), f0b[k] + z975 * seb[k])
+ }
CANON w6.bin.rd_nde.lb -0.1317
CANON w6.bin.rd_nde.ub -0.0042
CANON w6.bin.rd_nie.lb -0.1300
CANON w6.bin.rd_nie.ub -0.0676
CANON w6.bin.rd_te.lb -0.2170
CANON w6.bin.rd_te.ub -0.1164
CANON w6.bin.rd_pm.lb 0.3116
CANON w6.bin.rd_pm.ub 0.8735
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์ R ของสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ แต่ละคนถูกทำซ้ำหนึ่งครั้งต่อหนึ่งจุดบนกริดของควอนไทล์ของการแจกแจงปกติที่ประมาณได้ของการเปลี่ยนแปลงน้ำหนัก ค่าเฉลี่ย r00, r10 และ r11 คือความเสี่ยงที่ทำนายเฉลี่ยภายใต้ ($a^*$, $M^{a^*}$), ($a$, $M^{a^*}$) และ ($a$, $M^{a}$) และผลต่างของพวกมันคือผลทั้งสามตัว บรรทัดที่ขึ้นต้นด้วย CANON พิมพ์โดยฟังก์ชันช่วยเล็ก ๆ ในสคริปต์ที่สะท้อนผลลัพธ์แต่ละค่าออกมา ให้อ่านตัวเลขท้ายบรรทัดและไม่ต้องสนใจคำนำหน้า บรรทัดเหล่านี้พิมพ์ค่าประมาณและขอบเขตจากวิธีเดลตาที่สคริปต์คำนวณไว้ก่อนหน้าจากอนุพันธ์เชิงตัวเลขของการคำนวณเดียวกัน

สิ่งที่ต้องมีจึงจะอ่านผลเหล่านี้เชิงเหตุผลได้

นิยามข้างต้นเป็นเชิงเหตุผล ส่วนการถดถอยไม่ใช่ การก้าวจากอย่างหนึ่งไปอีกอย่างหนึ่งต้องมีข้อสมมติสี่ข้อ โดย $C$ คือตัวแปรร่วมที่วัดได้ [2, 5]

  1. ไม่มีตัวกวนที่ไม่ได้วัดระหว่างสิ่งสัมผัสกับผลลัพธ์ เมื่อกำหนด $C$
  2. ไม่มีตัวกวนที่ไม่ได้วัดระหว่างตัวแปรสื่อกลางกับผลลัพธ์ เมื่อกำหนด $A$ และ $C$
  3. ไม่มีตัวกวนที่ไม่ได้วัดระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง เมื่อกำหนด $C$
  4. ข้อสมมติข้ามโลก (cross-world assumption) เมื่อกำหนด $C$ ผลลัพธ์ที่อาจเกิดขึ้น $Y^{a,m}$ เป็นอิสระจากตัวแปรสื่อกลางที่อาจเกิดขึ้น $M^{a^*}$ ภายใต้อีกระดับของสิ่งสัมผัส เขียนเป็น $Y^{a,m} \perp M^{a^*} \mid C$

ผลทางตรงแบบควบคุมต้องการเพียงสองข้อแรก ผลตามธรรมชาติต้องการทั้งสี่ข้อ เพราะมี $Y^{a,M^{a^*}}$ ซึ่งเชื่อมการออกกำลังกายที่ $a$ เข้ากับการเปลี่ยนแปลงของน้ำหนักจากโลกที่การออกกำลังกายเป็น $a^*$

ข้อสมมติข้อที่สี่ไม่เป็นจริงทุกครั้งที่ตัวกวนระหว่างตัวแปรสื่อกลางกับผลลัพธ์ถูกสิ่งสัมผัสส่งผลกระทบ แม้จะวัดได้ก็ตาม สมมติว่าการออกกำลังกายทำให้คุณภาพอาหารดีขึ้น และอาหารส่งผลต่อทั้งน้ำหนักและความดัน การปรับด้วยอาหารจึงบล็อกผลส่วนหนึ่งของการออกกำลังกาย ส่วนการไม่ปรับก็ทิ้งให้น้ำหนักกับความดันถูกกวนอยู่ ผลตามธรรมชาติจึงระบุค่าไม่ได้ แต่ผลเชิงแทรกแซง (interventional effects) ที่เกี่ยวข้อง ซึ่งกำหนดตัวแปรสื่อกลางเป็นค่าที่สุ่มจากการแจกแจงของมันภายใต้แต่ละระดับของสิ่งสัมผัส ระบุค่าได้ [7]

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

ทำไมจึงตรวจข้อสมมติข้ามโลกไม่ได้

แม้ไม่มีตัวแปรเช่นนั้น ก็ยังตรวจข้อสมมติข้ามโลกจากข้อมูลไม่ได้ ไม่มีใครถูกสังเกตได้ว่าออกกำลังกายที่ $a$ และในเวลาเดียวกันก็มีการเปลี่ยนแปลงของน้ำหนักเท่ากับที่เขาจะมีที่ $a^*$ การทดลองใด ๆ ก็สร้างการจับคู่เช่นนั้นไม่ได้เช่นกัน การสุ่มการออกกำลังกายรับประกันข้อสมมติข้อแรกและข้อที่สาม แต่ไม่รับประกันข้อที่สองและข้อที่สี่

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

การวิเคราะห์ความไวสำหรับตัวกวนที่ไม่ได้วัดระหว่างตัวแปรสื่อกลางกับผลลัพธ์

การสุ่มสิ่งสัมผัสรับประกันข้อสมมติข้อแรกและข้อที่สาม แต่ปล่อยข้อที่สองและข้อที่สี่ไว้เปิด ผู้ที่น้ำหนักลดมากกว่าอาจต่างจากผู้อื่นในด้านอื่นที่ลดความดันได้เช่นกัน เช่นการนอนหรือการดื่มแอลกอฮอล์ การวิเคราะห์ความไว (sensitivity analysis) ถามว่าตัวกวนที่ไม่ได้วัดเช่นนั้น คือ $U$ ต้องแรงเพียงใดจึงจะเปลี่ยนข้อสรุปได้

มีสองวิธีที่ใช้กันทั่วไป สูตรอคติ (bias formulas) [5] ให้นักวิเคราะห์ระบุว่า $U$ ส่งผลต่อความดันโลหิตแรงเพียงใด และการแจกแจงของ $U$ ต่างกันอย่างไรระหว่างระดับการออกกำลังกายในผู้ที่มีการเปลี่ยนแปลงของน้ำหนักเท่ากัน แล้วสูตรจะคืนผลทางตรงและทางอ้อมตามธรรมชาติที่แก้สำหรับตัวกวนระดับนั้น วิธีของ Imai และคณะ [6] ใช้สหสัมพันธ์ระหว่างพจน์คลาดเคลื่อนของแบบจำลองของตัวแปรสื่อกลางและของผลลัพธ์ ซึ่งเป็นศูนย์เมื่อไม่มีตัวกวนเช่นนั้น และรายงานว่าสหสัมพันธ์นั้นต้องมากเพียงใดผลทางอ้อมจึงจะหายไป

การทำตามวิธีใดวิธีหนึ่งจนครบอยู่นอกขอบเขตของบทความนี้ ไม่มีวิธีใดแสดงว่าไม่มีตัวกวนเช่นนั้น แต่ละวิธีเปลี่ยนข้อสมมติที่ตรวจไม่ได้ให้เป็นข้อความที่ผู้อ่านตัดสินได้ และแต่ละวิธีควรวางแผนไว้ก่อนวิเคราะห์ข้อมูล

ขั้นตอนจากคำถามถึงรายงาน

ขั้นตอนด้านล่างเรียงนิยาม แบบจำลอง และข้อสมมติตามลำดับที่โปรโตคอลต้องการ

  1. วาด DAG วางสิ่งสัมผัส ตัวแปรสื่อกลาง และผลลัพธ์ เพิ่มตัวกวนของความสัมพันธ์ทั้งสามคู่ และทำเครื่องหมายตัวกวนระหว่างตัวแปรสื่อกลางกับผลลัพธ์ที่สิ่งสัมผัสส่งผลกระทบ
  2. ระบุ estimand คือปริมาณที่แน่ชัดที่ต้องการประมาณ ได้แก่ผล (ควบคุมที่ $m$ ที่ระบุ หรือตามธรรมชาติ) ระดับสิ่งสัมผัสสองระดับ $a^*$ และ $a$ มาตรวัด และประชากร
  3. ประมาณแบบจำลองที่มีปฏิกิริยาสัมพันธ์ คงพจน์ผลคูณระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลางไว้ในแบบจำลองของผลลัพธ์ เว้นแต่ได้ระบุเหตุผลที่จะตัดออกไว้ล่วงหน้า
  4. คำนวณผล ใช้สูตรในรูปปิดเมื่อแบบจำลองทั้งสองเป็นเชิงเส้น และใช้สูตร odds ratio เฉพาะเมื่อผลลัพธ์พบน้อย นอกนั้นใช้ mediational g-formula หรือการจำลอง
  5. ใส่ช่วงเชื่อมั่น ช่วงเชื่อมั่นจากวิธีเดลตาทำได้เร็ว ช่วงเชื่อมั่นจากบูตสแตรป (bootstrap) ซึ่งประมาณแบบจำลองใหม่จากสำเนาข้อมูลที่สุ่มซ้ำจำนวนมาก เป็นอีกทางเลือกที่ใช้บ่อย โดยเฉพาะกับอัตราส่วน เช่นสัดส่วนของผลที่ผ่านตัวแปรสื่อกลาง
  6. ทำการวิเคราะห์ความไว สำหรับตัวกวนที่ไม่ได้วัดระหว่างตัวแปรสื่อกลางกับผลลัพธ์
  7. รายงาน DAG, estimand, แบบจำลองทั้งสอง, ผลพร้อมช่วงเชื่อมั่น และข้อสมมติ ตามแนวทางการรายงาน AGReMA สำหรับการวิเคราะห์ตัวแปรสื่อกลาง [8]

ลำดับนี้สะท้อนการอนุมานเชิงเหตุผลโดยทั่วไป คือคำถามและ estimand มาก่อน และแบบจำลองรับใช้สิ่งเหล่านั้น

สัดส่วนของผลที่ผ่านตัวแปรสื่อกลาง ต้องอ่านด้วยความระมัดระวัง

สัดส่วนของผลที่ผ่านตัวแปรสื่อกลางคือ $\mathrm{NIE}/\mathrm{TE}$ บนมาตรวัดเดียว ในตัวอย่างคำนวณด้วยมือ ค่านี้คือ 0.83 จากการลดลงทั้งหมดของ SBP 5.95 mmHg มี 4.95 mmHg ที่ผ่านน้ำหนักในการแยกแบบผลตามธรรมชาติ มีคุณสมบัติสามข้อที่จำกัดว่าตัวเลขนี้อ่านได้ไกลเพียงใด

ประการแรก เมื่อมีปฏิกิริยาสัมพันธ์ระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง การแยกผลไม่ได้มีทางเดียว [3] ผลรวมทั้งหมดยังเท่ากับผลทางอ้อมแบบ pure (pure indirect effect, PNIE) ซึ่งคงการออกกำลังกายไว้ที่ $a^*$ ขณะที่น้ำหนักเลื่อน บวกผลทางตรงแบบ total (total direct effect, TNDE) ซึ่งคงการเปลี่ยนแปลงของน้ำหนักไว้ที่ระดับภายใต้ $a$ ตามภาษานี้ ผลทางตรงและทางอ้อมตามธรรมชาติที่ใช้มาจนถึงตอนนี้คือผลทางตรงแบบ pure และผลทางอ้อมแบบ total

$$\mathrm{TE} = \mathrm{PNIE} + \mathrm{TNDE} = -1.20 + (-4.75) = -5.95 \ \text{mmHg}$$

ในที่นี้ เมื่อ $a^* = 0$ จะได้ $\mathrm{PNIE} = \theta_2 \beta_1 (a - a^*)$ เท่ากับ $0.4 \times (-3.0) = -1.20$ mmHg ซึ่งใช้ความชันของน้ำหนักเมื่อไม่ออกกำลังกาย ผลทางตรงแบบ total ใช้ค่าเฉลี่ยการเปลี่ยนแปลงของน้ำหนักภายใต้ $a$ ซึ่งคือ $1.2 + (-1.2)(2.5) = -1.8$ กิโลกรัม ความชันของการออกกำลังกายของมันจึงเป็น $-1 + 0.5 \times (-1.8) = -1.9$ และ $\mathrm{TNDE} = -1.9 \times 2.5 = -4.75$ mmHg เมื่อวัดด้วยผลทางอ้อมแบบ pure สัดส่วนของผลที่ผ่านตัวแปรสื่อกลางคือ $-1.20/-5.95 = 0.20$ ไม่ใช่ 0.83 จากแบบจำลองเดียวกันและคนกลุ่มเดียวกัน

ประการที่สอง สัดส่วนของผลที่ผ่านตัวแปรสื่อกลางเป็นอัตราส่วน และอัตราส่วนไม่เสถียรเมื่อตัวหารเล็กหรือไม่แน่นอน ใน cohort จำลอง ค่าประมาณคือ 0.94 โดยช่วงเชื่อมั่นจากวิธีเดลตาคือ 0.66 ถึง 1.22 ซึ่งครอบคลุมค่าจริงในข้อมูลจำลองที่ 0.83 และเลยไปเกิน 1 สัดส่วนที่เกิน 1 จะหมายความว่าผลทางตรงชี้ไปอีกทิศ ช่วงนี้จึงครอบคลุมเรื่องราวที่ต่างกันมาก

ประการที่สาม สัดส่วนของผลที่ผ่านตัวแปรสื่อกลางไม่ได้บอกว่าจะเกิดอะไรขึ้นหากตัดตัวแปรสื่อกลางออก คำถามนั้นตรึงการเปลี่ยนแปลงของน้ำหนักด้วยการแทรกแซง และผลทางตรงแบบควบคุมคือสิ่งที่ตอบ เมื่อตรึงการเปลี่ยนแปลงของน้ำหนักไว้ที่ 0 กิโลกรัมสำหรับทุกคน การออกกำลังกายที่เพิ่มขึ้นจะลด SBP ลง 2.50 mmHg ในประชากรจำลอง เทียบกับผลรวมทั้งหมด 5.95 mmHg

สัดส่วนของผลที่ผ่านตัวแปรสื่อกลางควรรายงานอย่างดีที่สุดก็ต่อเมื่อรายงานคู่กับผลทางตรงตามธรรมชาติ ผลทางอ้อมตามธรรมชาติ และผลรวมทั้งหมดพร้อมช่วงเชื่อมั่น โดยระบุการแยกผลที่ใช้

ความเข้าใจผิดที่พบบ่อยหกข้อและวิธีแก้

  • "ผลคูณของความชันสองค่าคือผลทางอ้อม"

    เมื่อมีปฏิกิริยาสัมพันธ์ระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง ไม่มีความชันของตัวแปรสื่อกลางค่าเดียวให้คูณ ใน cohort จำลอง วิธีผลคูณให้ -4.09 mmHg และช่วงเชื่อมั่นจากวิธีเดลตาของมันไม่ครอบคลุมผลทางอ้อมตามธรรมชาติที่แท้จริงในข้อมูลจำลองที่ -4.95 mmHg

    วิธีแก้: ประมาณแบบจำลองของผลลัพธ์ที่มีพจน์ผลคูณ แล้วคำนวณผลทางอ้อมตามธรรมชาติจากสูตรในรูปปิด $(\theta_2 + \theta_3 a)\,\beta_1 (a - a^*)$

  • "สัดส่วนของผลที่ผ่านตัวแปรสื่อกลาง 0.83 หมายความว่า 83% ของประโยชน์เกิดผ่านการลดน้ำหนัก"

    สัดส่วนของผลที่ผ่านตัวแปรสื่อกลางเป็นอัตราส่วนของผลสองตัวบนมาตรวัดเดียว เมื่อมีปฏิกิริยาสัมพันธ์ ค่านี้ไม่ได้มีค่าเดียว แบบจำลองเดียวกันให้ 0.20 เมื่อใช้ผลทางอ้อมแบบ pure

    วิธีแก้: สัดส่วนของผลที่ผ่านตัวแปรสื่อกลางคือผลทางอ้อมตามธรรมชาติหารด้วยผลรวมทั้งหมดบนมาตรวัดเดียว มันไม่เสถียรเมื่อผลรวมทั้งหมดมีค่าน้อย ไม่ได้มีค่าเดียวเมื่อมีปฏิกิริยาสัมพันธ์ และไม่ได้บอกว่าการตัดตัวแปรสื่อกลางออกจะตัดประโยชน์ไป 83%

  • "สุ่มการออกกำลังกายแล้ว ผลทางอ้อมจึงเป็นเชิงเหตุผล"

    การสุ่มสิ่งสัมผัสทำให้ตัวกวนของสิ่งสัมผัสกับผลลัพธ์ และของสิ่งสัมผัสกับตัวแปรสื่อกลาง สมดุลกัน แต่ไม่ช่วยตัวกวนของการเปลี่ยนแปลงของน้ำหนักกับความดัน เช่นการนอนหรือการดื่มแอลกอฮอล์

    วิธีแก้: ปรับด้วยตัวกวนระหว่างตัวแปรสื่อกลางกับผลลัพธ์ที่วัดได้และสิ่งสัมผัสไม่ได้ส่งผลต่อ และเพิ่มการวิเคราะห์ความไวสำหรับตัวที่วัดไม่ได้

  • "ปรับด้วยตัวแปรทุกตัวที่วัดหลังการออกกำลังกายแล้ว ตัวกวนก็หมดไป"

    ตัวกวนระหว่างตัวแปรสื่อกลางกับผลลัพธ์ที่การออกกำลังกายส่งผลต่อเอง เช่นคุณภาพอาหาร จัดการด้วยการปรับไม่ได้ การปรับบล็อกผลส่วนหนึ่ง และการไม่ปรับทิ้งตัวกวนไว้ ผลตามธรรมชาติจึงระบุค่าไม่ได้ [7]

    วิธีแก้: ทำเครื่องหมายตัวแปรเช่นนั้นใน DAG เมื่อสิ่งสัมผัสส่งผลต่อตัวกวนระหว่างตัวแปรสื่อกลางกับผลลัพธ์ ผลตามธรรมชาติระบุค่าไม่ได้ ผลเชิงแทรกแซงหรือผลทางตรงแบบควบคุมระบุค่าได้ แต่ตอบคำถามต่างออกไป จึงต้องบอกการเปลี่ยนนั้นในรายงาน ประมาณด้วยวิธีที่สร้างมาสำหรับกรณีนี้ เช่น g-formula ที่สร้างแบบจำลองของตัวกวนด้วย ไม่ใช่ด้วยการใส่ตัวกวนเพิ่มในการถดถอยของผลลัพธ์ [5, 7]

  • "สูตร odds ratio ใช้ได้กับผลลัพธ์แบบใช่หรือไม่ใช่ทุกชนิด"

    สูตรเหล่านั้นอาศัยการประมาณเมื่อผลลัพธ์พบน้อย เมื่อความชุกของความดันโลหิตสูงในประชากรจำลองคือ 0.316 สูตรในรูปปิดเมื่อผลลัพธ์พบน้อยให้ odds ratio ของผลทางตรงตามธรรมชาติที่ 1.03 ขณะที่ค่า exact ที่สัดส่วนอายุและเพศเฉลี่ยคือ 0.93

    วิธีแก้: สำหรับผลลัพธ์ที่พบบ่อย ให้ใช้มาตรวัดผลต่างความเสี่ยงร่วมกับ mediational g-formula หรือคำนวณผล odds ratio แบบ exact ด้วยการจำลอง

  • "ผลรวมทั้งหมดไม่มีนัยสำคัญ จึงไม่มีอะไรให้ผ่านตัวแปรสื่อกลาง"

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

    วิธีแก้: ตัดสินใจล่วงหน้าว่าจะประมาณผลใด รายงานแต่ละผลพร้อมช่วงเชื่อมั่น และตัดสินการเป็นตัวแปรสื่อกลางจากขนาดและความแม่นยำของผลทางอ้อมตามธรรมชาติภายใต้ข้อสมมติที่ระบุไว้

สิ่งที่ควรทำในการวิเคราะห์ของคุณเอง

อภิธานศัพท์

mediator (ตัวแปรสื่อกลาง)
ตัวแปรบนเส้นทางเหตุและผลจากสิ่งสัมผัสไปสู่ผลลัพธ์ ซึ่งถูกสิ่งสัมผัสเปลี่ยน และเปลี่ยนผลลัพธ์ต่อไป
potential outcome (ผลลัพธ์ที่อาจเกิดขึ้น)
ค่าที่ผลลัพธ์จะมี หากกำหนดสิ่งสัมผัส และอาจรวมถึงตัวแปรสื่อกลาง ไว้ที่ระดับหนึ่ง สำหรับแต่ละคนสังเกตเห็นได้อย่างมากเพียงค่าเดียว
controlled direct effect (ผลทางตรงแบบควบคุม)
ผลของการเปลี่ยนสิ่งสัมผัส เมื่อตรึงตัวแปรสื่อกลางไว้ที่ค่าเดียวกันสำหรับทุกคน
natural direct effect (ผลทางตรงตามธรรมชาติ)
ผลของการเปลี่ยนสิ่งสัมผัส ขณะที่ตัวแปรสื่อกลางของแต่ละคนคงอยู่ที่ค่าที่จะเกิดขึ้นภายใต้ระดับสิ่งสัมผัสอ้างอิง
natural indirect effect (ผลทางอ้อมตามธรรมชาติ)
ผลของการเลื่อนตัวแปรสื่อกลางของแต่ละคนจากค่าภายใต้ระดับสิ่งสัมผัสอ้างอิงไปเป็นค่าภายใต้ระดับที่นำมาเปรียบเทียบ โดยคงสิ่งสัมผัสไว้ที่ระดับที่นำมาเปรียบเทียบ
total effect
ผลของการเปลี่ยนสิ่งสัมผัสโดยให้ตัวแปรสื่อกลางตอบสนองได้อย่างอิสระ ผลทางตรงและทางอ้อมตามธรรมชาติบวกกันได้เท่ากับผลนี้
exposure-mediator interaction
พจน์ผลคูณในแบบจำลองของผลลัพธ์ที่ทำให้ผลของตัวแปรสื่อกลางต่อผลลัพธ์ บนมาตรวัดของแบบจำลองนั้น เปลี่ยนไปตามระดับของสิ่งสัมผัส
proportion mediated (สัดส่วนของผลที่ผ่านตัวแปรสื่อกลาง)
ผลทางอ้อมตามธรรมชาติหารด้วยผลรวมทั้งหมดบนมาตรวัดเดียว ไม่เสถียรเมื่อผลรวมทั้งหมดมีค่าน้อย และไม่ได้มีค่าเดียวเมื่อมีปฏิกิริยาสัมพันธ์
cross-world assumption (ข้อสมมติข้ามโลก)
ข้อสมมติที่ตรวจไม่ได้ว่า เมื่อกำหนดตัวแปรร่วม ผลลัพธ์ที่อาจเกิดขึ้นภายใต้ระดับสิ่งสัมผัสหนึ่งเป็นอิสระจากตัวแปรสื่อกลางที่อาจเกิดขึ้นภายใต้อีกระดับหนึ่ง จำเป็นสำหรับผลตามธรรมชาติ
product method (วิธีผลคูณ a x b)
การประมาณผลทางอ้อมด้วยความชันจากสิ่งสัมผัสไปตัวแปรสื่อกลางคูณความชันจากตัวแปรสื่อกลางไปผลลัพธ์ของแบบจำลองที่ไม่มีปฏิกิริยาสัมพันธ์ หัวข้อวิธีผลคูณระบุว่าเมื่อใดผลคูณนี้เท่ากับผลทางอ้อมตามธรรมชาติ
delta method
วิธีหาค่าคลาดเคลื่อนมาตรฐานของฟังก์ชันของสัมประสิทธิ์ที่ประมาณได้ โดยถือว่าฟังก์ชันนั้นเกือบเป็นเส้นตรงในบริเวณใกล้ค่าประมาณ
mediational g-formula
การคำนวณผลตามธรรมชาติโดยทำนายผลลัพธ์ของแต่ละคนตลอดการแจกแจงของตัวแปรสื่อกลางที่ประมาณได้ภายใต้แต่ละระดับของสิ่งสัมผัส แล้วเฉลี่ยข้ามทุกคน
rare-outcome approximation
การถือว่า odds ratio เป็นเหมือนอัตราส่วนความเสี่ยง ซึ่งใกล้เคียงก็ต่อเมื่อผลลัพธ์พบไม่บ่อยในทุกระดับของสิ่งสัมผัส ตัวแปรสื่อกลาง และตัวแปรร่วม
pure and total effects
สองวิธีแยกผลรวมทั้งหมดเมื่อมีปฏิกิริยาสัมพันธ์ คือผลทางตรงแบบ pure กับผลทางอ้อมแบบ total หรือผลทางอ้อมแบบ pure กับผลทางตรงแบบ total
sensitivity analysis
การวิเคราะห์ว่าการละเมิดข้อสมมติ เช่นมีตัวกวนที่ไม่ได้วัด ต้องรุนแรงเพียงใดจึงจะเปลี่ยนข้อสรุป

เอกสารอ้างอิง

  1. Baron RM, Kenny DA. The moderator-mediator variable distinction in social psychological research: conceptual, strategic, and statistical considerations. J Pers Soc Psychol. 1986;51(6):1173-1182. doi:10.1037/0022-3514.51.6.1173 https://doi.org/10.1037/0022-3514.51.6.1173
  2. Valeri L, VanderWeele TJ. Mediation analysis allowing for exposure-mediator interactions and causal interpretation: theoretical assumptions and implementation with SAS and SPSS macros. Psychol Methods. 2013;18(2):137-150. doi:10.1037/a0031034 https://doi.org/10.1037/a0031034
  3. Robins JM, Greenland S. Identifiability and exchangeability for direct and indirect effects. Epidemiology. 1992;3(2):143-155. doi:10.1097/00001648-199203000-00013 https://doi.org/10.1097/00001648-199203000-00013
  4. Pearl J. Direct and indirect effects. In: Proceedings of the 17th Conference on Uncertainty in Artificial Intelligence (UAI 2001). Morgan Kaufmann; 2001. p. 411-420. https://arxiv.org/abs/1301.2300
  5. VanderWeele TJ. Explanation in causal inference: methods for mediation and interaction. Oxford University Press; 2015. https://hsph.harvard.edu/research/vanderweele-group/books/
  6. Imai K, Keele L, Tingley D. A general approach to causal mediation analysis. Psychol Methods. 2010;15(4):309-334. doi:10.1037/a0020761 https://doi.org/10.1037/a0020761
  7. VanderWeele TJ, Vansteelandt S, Robins JM. Effect decomposition in the presence of an exposure-induced mediator-outcome confounder. Epidemiology. 2014;25(2):300-306. doi:10.1097/EDE.0000000000000034 https://doi.org/10.1097/EDE.0000000000000034
  8. Lee H, Cashin AG, Lamb SE, Hopewell S, Vansteelandt S, VanderWeele TJ, et al. A guideline for reporting mediation analyses of randomized trials and observational studies: the AGReMA statement. JAMA. 2021;326(11):1045-1056. doi:10.1001/jama.2021.14075 https://doi.org/10.1001/jama.2021.14075

ประเด็นสำคัญ

  • ผลคูณ a x b เท่ากับ natural indirect effect ก็ต่อเมื่อแบบจำลองทั้งสองเป็นเชิงเส้นและไม่มีปฏิกิริยาสัมพันธ์ระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง และจะมีความหมายเชิงเหตุผลได้ก็ต่อเมื่อไม่มีตัวกวนที่ไม่ได้วัดระหว่างสิ่งสัมผัสกับผลลัพธ์ ระหว่างตัวแปรสื่อกลางกับผลลัพธ์ และระหว่างสิ่งสัมผัสกับตัวแปรสื่อกลาง รวมทั้งไม่มีตัวกวนระหว่างตัวแปรสื่อกลางกับผลลัพธ์ที่ถูกสิ่งสัมผัสส่งผลกระทบ
  • เมื่อมีปฏิกิริยาสัมพันธ์ ผลทางอ้อมต้องใช้ผลของตัวแปรสื่อกลางที่ระดับสิ่งสัมผัสซึ่งนำมาเปรียบเทียบ ในประชากรจำลองวิธีผลคูณจึงมีเป้าหมายที่ -4.06 mmHg ขณะที่ผลทางอ้อมตามธรรมชาติคือ -4.95 mmHg
  • นิยามผลก่อนเป็นการเปรียบเทียบผลลัพธ์ที่อาจเกิดขึ้น แล้วจึงคำนวณบนมาตรวัดที่ระบุจากแบบจำลองที่คงปฏิกิริยาสัมพันธ์ไว้
  • ผลตามธรรมชาติอาศัยข้อสมมติสี่ข้อ รวมถึงข้อสมมติข้ามโลกที่ข้อมูลใดก็ตรวจไม่ได้ และไม่เป็นจริงเมื่อสิ่งสัมผัสส่งผลต่อตัวกวนระหว่างตัวแปรสื่อกลางกับผลลัพธ์
  • สัดส่วนของผลที่ผ่านตัวแปรสื่อกลางต้องอ่านด้วยความระมัดระวัง ค่านี้ขึ้นกับวิธีแยกผลรวมทั้งหมด ไม่เสถียรเมื่อผลรวมทั้งหมดมีค่าน้อย และไม่ได้บอกว่าการตัดตัวแปรสื่อกลางออกจะให้ผลอย่างไร
0
ถึงนักอ่านชาวไทยและต่างชาติทำความเข้าใจบริบททางการแพทย์ของผมอ่านต่อ →ถึงนักอ่านชาวไทยและต่างชาติทำความเข้าใจเนื้อหาของผมที่นอกเหนือจากการแพทย์อ่านต่อ →

ความคิดเห็น

ยังไม่มีความคิดเห็น มาเป็นคนแรกกันเลย

เข้าสู่ระบบเพื่อแสดงความคิดเห็น

Causal Mediation: ทำไม a x b จึงใช้ไม่ได้อีกต่อไป — Uniqcret