IPTW แบบ stabilized หรือ unstabilized: สมดุลเท่ากันใน pseudo-population 200 คน หรือ 100 คน

Clinical Epidemiology ResearchMethodology and Research Design THUniqcret doctor knowledges TH
IPTW แบบ stabilized หรือ unstabilized: สมดุลเท่ากันใน pseudo-population 200 คน หรือ 100 คน
On this page

Read the English version

บทคัดย่อ

การถ่วงน้ำหนักด้วยส่วนกลับของความน่าจะเป็นในการได้รับการรักษา (inverse probability of treatment weighting, IPTW) ให้น้ำหนักผู้ป่วยแต่ละคนเท่ากับหนึ่งหารด้วยความน่าจะเป็นของการรักษาที่ได้รับ เมื่อกำหนดลักษณะที่วัดไว้ น้ำหนักแบบไม่ปรับเสถียร (unstabilised weight) สำหรับผลเฉลี่ยของการรักษาในประชากรทั้งหมด (average treatment effect, ATE) สร้างประชากรที่ถ่วงน้ำหนักแล้ว หรือประชากรเสมือน (pseudo-population) ที่มีขนาดประมาณสองเท่าของขนาดตัวอย่าง การทำ stabilization คูณน้ำหนักทุกตัวในกลุ่มการรักษาด้วยสัดส่วนผู้ป่วยของกลุ่มนั้น ผลรวมจึงมีค่าประมาณขนาดตัวอย่าง ในตัวอย่างคำนวณด้วยมือที่มีผู้ป่วย 100 คนซึ่งการรักษาขึ้นกับความรุนแรงของโรค น้ำหนักแบบไม่ปรับเสถียรสร้างประชากรเสมือน 200 คน และน้ำหนักแบบปรับเสถียรสร้าง 100 คน ไม่ว่าแบบใด 50% ของแต่ละกลุ่มมีความรุนแรงสูง เทียบกับ 57.1% ของกลุ่มที่ได้รับการรักษาและ 33.3% ของกลุ่มที่ไม่ได้รับก่อนถ่วงน้ำหนัก เพราะตัวคูณนั้นคงที่ภายในกลุ่ม สมดุลจึงเปลี่ยนไม่ได้ สำหรับการรักษาแบบสองค่า เมื่อความเสี่ยงของแต่ละกลุ่มเป็นค่าเฉลี่ยถ่วงน้ำหนักที่หารด้วยผลรวมน้ำหนัก (normalised weighted mean) และน้ำหนักไม่ถูกตัดปลายหรือเปลี่ยนแปลงด้วยวิธีอื่น ความเสี่ยงที่ถ่วงน้ำหนักแล้วและผลต่างของความเสี่ยงจะเท่ากันทุกประการ บทความนี้คำนวณด้วยมือ ตรวจซ้ำในข้อมูลจำลอง และสรุปสิ่งที่ควรรายงาน


ภาพสรุป ตัวอย่างคำนวณด้วยมือ

ตารางถ่วงน้ำหนักที่มีผู้ป่วย 200 คน

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

เพื่อนร่วมงานเสนอให้ใช้น้ำหนักแบบปรับเสถียร "เพื่อแก้จำนวน" ทีมอยากทราบว่าวิธีนั้นเปลี่ยนการปรับตัวกวนจริง หรือเปลี่ยนเพียงการนับ บทความนี้คำนวณคำตอบบนกระดาษ แล้วทำซ้ำในข้อมูลจำลองด้วย Stata และ R

ตัวอย่างคำนวณด้วยมือ: ผู้ป่วย 100 คน และความรุนแรงสองระดับ

ตัวอย่างคำนวณด้วยมือ ผู้ป่วย 100 คนแบ่งเป็นความรุนแรงของโรคสูง 50 คนและต่ำ 50 คน ซึ่งบันทึกก่อนการรักษา แพทย์ให้การรักษาผู้ป่วยความรุนแรงสูง 40 จาก 50 คน และผู้ป่วยความรุนแรงต่ำ 30 จาก 50 คน จึงมีผู้ได้รับการรักษา 70 คนและไม่ได้รับ 30 คน ความรุนแรงยังส่งผลต่อผลลัพธ์ด้วย จึงเป็นตัวกวนของการเปรียบเทียบดิบระหว่างสองกลุ่ม

ในที่นี้ $X$ คือความรุนแรง และคะแนนแนวโน้มคือสัดส่วนผู้ได้รับการรักษาในแต่ละระดับ คือ $e = 40/50 = 0.80$ สำหรับความรุนแรงสูง และ $e = 30/50 = 0.60$ สำหรับความรุนแรงต่ำ ก่อนถ่วงน้ำหนัก ผู้ได้รับการรักษา 70 คนมีความรุนแรงสูง 40 คน (57.1%) เทียบกับผู้ไม่ได้รับ 30 คนที่มีความรุนแรงสูง 10 คน (33.3%) กลุ่มที่ได้รับการรักษาป่วยหนักกว่า และนั่นคือความไม่สมดุลที่น้ำหนักต้องขจัด

ตัวอย่างคำนวณด้วยมือ: น้ำหนักแบบไม่ปรับเสถียร ประชากรเสมือน 200 คน

ตัวอย่างคำนวณด้วยมือ ต่อจากข้างต้น น้ำหนักแบบไม่ปรับเสถียร (unstabilised weight) คือหนึ่งหารด้วยความน่าจะเป็นของการรักษาที่ผู้ป่วยได้รับจริง ได้แก่ $w = 1/e$ ถ้าได้รับการรักษา และ $w = 1/(1 - e)$ ถ้าไม่ได้รับ ความน่าจะเป็นที่จะไม่ได้รับการรักษาคือ $1 - e = 0.20$ สำหรับความรุนแรงสูง และ $0.40$ สำหรับความรุนแรงต่ำ ขนาดของประชากรเสมือน (pseudo-population size) คือผลรวมของน้ำหนักทั้งหมด

  1. ความรุนแรงสูง ได้รับการรักษา: 40 คน

    \[ 40 \times \frac{1}{0.80} = 40 \times 1.25 = 50 \]

    ผู้ป่วยความรุนแรงสูงที่ได้รับการรักษา 40 คนเป็นตัวแทนของผู้ป่วยความรุนแรงสูงทั้ง 50 คน

  2. ความรุนแรงสูง ไม่ได้รับการรักษา: 10 คน

    \[ 10 \times \frac{1}{0.20} = 10 \times 5.00 = 50 \]

    ผู้ป่วยความรุนแรงสูงที่ไม่ได้รับการรักษามีเพียง 10 คน จึงนับคนละ 5.00

  3. ความรุนแรงต่ำ ได้รับการรักษา: 30 คน

    \[ \frac{30}{0.60} = 50 \]

    น้ำหนักคือ $1/0.60 = 1.667$ เมื่อปัดเศษ ส่วนการหารโดยตรงให้ 50 พอดี

  4. ความรุนแรงต่ำ ไม่ได้รับการรักษา: 20 คน

    \[ 20 \times \frac{1}{0.40} = 20 \times 2.50 = 50 \]

    ผู้ป่วยความรุนแรงต่ำที่ไม่ได้รับการรักษาแต่ละคนนับเป็น 2.50

  5. ผลรวมของแต่ละกลุ่มและขนาดของประชากรเสมือน

    \[ 100 + 100 = 200 \]

    แต่ละกลุ่มมีผู้ป่วยถ่วงน้ำหนัก 50 + 50 = 100 คน น้ำหนักของผู้ป่วย 100 คนจึงรวมเป็น 200

ผลลัพธ์: แต่ละกลุ่มกลายเป็นสำเนาของตัวอย่างทั้งหมด มีความรุนแรงสูง 50% และประชากรเสมือนรวมเป็น 200 ไม่มีผู้ป่วยคนใดถูกนับซ้ำ น้ำหนักแต่ละตัวคือจำนวนผู้ป่วยที่ผู้ป่วยคนนั้นเป็นตัวแทน

ตัวอย่างคำนวณด้วยมือ: น้ำหนักแบบปรับเสถียร ประชากรเสมือน 100 คน

ตัวอย่างคำนวณด้วยมือ ต่อจากข้างต้น สัดส่วนผู้ได้รับการรักษาในภาพรวม (marginal probability of treatment) คือสัดส่วนของผู้ป่วยทั้งหมดที่ได้รับการรักษาแต่ละแบบ ได้แก่ $P(A = 1) = 70/100 = 0.70$ และ $P(A = 0) = 0.30$ น้ำหนักแบบปรับเสถียร (stabilised weight) ใส่สัดส่วนนั้นไว้ที่ตัวตั้งแทน 1 [1, 2]:

$$sw_i = \frac{P(A = a_i)}{P(A = a_i \mid X_i)}$$

ในสูตรนี้ $a_i$ คือการรักษาที่ผู้ป่วยคนที่ $i$ ได้รับ และ $X_i$ คือความรุนแรงของผู้ป่วยคนนั้น ผู้ได้รับการรักษาจึงมีน้ำหนัก $0.70/e$ และผู้ไม่ได้รับมีน้ำหนัก $0.30/(1 - e)$

  1. ความรุนแรงสูง ได้รับการรักษา: 40 คน

    \[ 40 \times \frac{0.70}{0.80} = 40 \times 0.875 = 35 \]

    ผู้ป่วยความรุนแรงสูงที่ได้รับการรักษาแต่ละคนนับเป็น 0.875

  2. ความรุนแรงสูง ไม่ได้รับการรักษา: 10 คน

    \[ 10 \times \frac{0.30}{0.20} = 10 \times 1.500 = 15 \]

    ผู้ป่วยความรุนแรงสูงที่ไม่ได้รับการรักษาแต่ละคนนับเป็น 1.500

  3. ความรุนแรงต่ำ ได้รับการรักษา: 30 คน

    \[ 0.70 \times \frac{30}{0.60} = 0.70 \times 50 = 35 \]

    น้ำหนักคือ $0.70/0.60 = 1.167$ เมื่อปัดเศษ ส่วนผลรวมของกลุ่มย่อยนี้เท่ากับ 0.70 เท่าของผลรวมแบบไม่ปรับเสถียร

  4. ความรุนแรงต่ำ ไม่ได้รับการรักษา: 20 คน

    \[ 20 \times \frac{0.30}{0.40} = 20 \times 0.750 = 15 \]

    ผู้ป่วยความรุนแรงต่ำที่ไม่ได้รับการรักษาแต่ละคนนับเป็น 0.750

  5. ผลรวมของแต่ละกลุ่มและขนาดของประชากรเสมือน

    \[ 70 + 30 = 100 \]

    กลุ่มที่ได้รับการรักษามีผู้ป่วยถ่วงน้ำหนัก 35 + 35 = 70 คน และกลุ่มที่ไม่ได้รับมี 15 + 15 = 30 คน ซึ่งเท่ากับขนาดจริงของสองกลุ่ม

ผลลัพธ์: น้ำหนักแบบปรับเสถียรคงขนาดของแต่ละกลุ่มไว้ที่ขนาดจริง และคงประชากรเสมือนไว้ที่ 100 ทั้งสองกลุ่มยังมีความรุนแรงสูง 50% คือ 35 จาก 70 และ 15 จาก 30

ตัวอย่างคำนวณด้วยมือ ภายในกลุ่มเดียวกัน น้ำหนักแบบปรับเสถียรแต่ละตัวคือน้ำหนักแบบไม่ปรับเสถียรคูณค่าคงที่ค่าเดียว คือ 0.70 สำหรับกลุ่มที่ได้รับการรักษา และ 0.30 สำหรับกลุ่มที่ไม่ได้รับ
กลุ่มย่อยหรือกลุ่มการรักษาผู้ป่วย (คน)น้ำหนัก wผู้ป่วยถ่วงน้ำหนัก, wน้ำหนัก swผู้ป่วยถ่วงน้ำหนัก, sw
ความรุนแรงสูง ได้รับการรักษา401.25500.87535
ความรุนแรงสูง ไม่ได้รับการรักษา105.00501.50015
ความรุนแรงต่ำ ได้รับการรักษา301.667501.16735
ความรุนแรงต่ำ ไม่ได้รับการรักษา202.50500.75015
กลุ่มที่ได้รับการรักษา7010070
กลุ่มที่ไม่ได้รับการรักษา3010030
ผู้ป่วยทั้งหมด100200100
ตัวอย่างคำนวณด้วยมือ เลื่อนจำนวนผู้ได้รับการรักษาในแต่ละระดับความรุนแรง และสลับชนิดของน้ำหนัก เพราะคะแนนแต่ละค่าเท่ากับสัดส่วนผู้ได้รับการรักษาที่สังเกตได้ ผลรวมจึงคงอยู่ที่ 200 หรือ 100 และทั้งสองกลุ่มมีความรุนแรงสูง 50% ส่วนที่เปลี่ยนมีเพียงผลรวมของแต่ละกลุ่มแบบปรับเสถียร ซึ่งเท่ากับขนาดจริงของกลุ่ม แผงเริ่มต้นที่ผู้ได้รับการรักษา 40 จาก 50 และ 30 จาก 50

ทำไมการทำ stabilization จึงเปลี่ยนสมดุลไม่ได้

เปรียบเทียบน้ำหนักสองตัวภายในกลุ่มเดียวกัน ในกลุ่มที่ไม่ได้รับการรักษา ผู้ป่วยความรุนแรงสูงมีน้ำหนักมากกว่าผู้ป่วยความรุนแรงต่ำเป็นตัวคูณเท่ากันในการถ่วงน้ำหนักทั้งสองแบบ คือ $5/2.5 = 2$ และ $1.5/0.75 = 2$ ในกลุ่มที่ได้รับการรักษาก็เป็นเช่นเดียวกัน

เหตุผลอยู่ที่นิยาม คือ stabilization คูณน้ำหนักทุกตัวในกลุ่มการรักษาเดียวกันด้วยค่าคงที่ค่าเดียว ได้แก่ 0.70 สำหรับกลุ่มที่ได้รับการรักษา และ 0.30 สำหรับกลุ่มที่ไม่ได้รับ สัดส่วนที่คำนวณภายในกลุ่ม เช่นสัดส่วนความรุนแรงสูง มีน้ำหนักของกลุ่มนั้นทั้งที่ตัวตั้งและตัวหาร ค่าคงที่จึงหักล้างกัน สมดุลคือการเปรียบเทียบสัดส่วนเช่นนี้ระหว่างกลุ่ม จึงอยู่ที่เดิมตามที่น้ำหนักแบบไม่ปรับเสถียรทำไว้

การรักษาในที่นี้ตัดสินครั้งเดียว จึงเป็นการวิเคราะห์การรักษา ณ จุดเวลาเดียว (point-treatment analysis) ส่วนแบบจำลองโครงสร้างระดับประชากร (marginal structural model) ใช้กับการรักษาที่เปลี่ยนไปตามเวลา โดยมีน้ำหนักทุกจุดเวลาที่คูณสะสมกัน กล่องด้านล่างระบุว่า stabilization หมายถึงอะไรสำหรับน้ำหนักที่สูงผิดปกติ สำหรับการกำหนดเพดานให้น้ำหนัก (truncation) และสำหรับการตัดผู้ป่วยออก (trimming) ตอนว่าด้วยน้ำหนักที่สูงผิดปกติของชุดบทความนี้อธิบายทั้งสามอย่างโดยละเอียด

ผลเดียวกันจากกฎของความน่าจะเป็น

การคำนวณด้วยมือข้างต้นมาจากกฎของความน่าจะเป็นข้อเดียว สำหรับระดับความรุนแรง $X$ และการรักษา $a$ ความน่าจะเป็นร่วมแยกตัวประกอบได้ดังนี้:

$$P(X, A = a) = P(A = a \mid X)\,P(X)$$

ในสูตรนี้ $P(X)$ คือสัดส่วนของตัวอย่างทั้งหมดที่มีความรุนแรงระดับนั้น และ $P(A = a \mid X)$ คือความน่าจะเป็นของการรักษา $a$ ที่ความรุนแรงระดับนั้น จำนวนผู้ป่วยที่ความรุนแรง $X$ ในกลุ่ม $a$ เป็นสัดส่วนกับ $P(X, A = a)$ ซึ่งยังมีการพึ่งพาของการรักษาต่อความรุนแรงอยู่ น้ำหนักแบบไม่ปรับเสถียรหารความน่าจะเป็นนั้นออก:

$$\frac{P(X, A = a)}{P(A = a \mid X)} = P(X)$$

แต่ละกลุ่มจึงเป็นไปตาม $P(X)$ คือสัดส่วนความรุนแรงของตัวอย่างทั้งหมด การรักษาจึงไม่ขึ้นกับความรุนแรงอีกต่อไป น้ำหนักแบบปรับเสถียรหารด้วยความน่าจะเป็นเดียวกัน และคูณด้วย $P(A = a)$ ด้วย:

$$\frac{P(X, A = a)\,P(A = a)}{P(A = a \mid X)}$$

การหักล้างแบบเดียวกันเหลือ $P(A = a)\,P(X)$ คือสัดส่วนความรุนแรงเป็น $P(X)$ อีกครั้ง คูณด้วยค่าคงที่ที่กำหนดเพียงขนาดของกลุ่ม $a$ ในตัวอย่างคำนวณด้วยมือ ค่าคงที่นั้นเปลี่ยนสองกลุ่มขนาด 100 ให้เป็นกลุ่มขนาด 70 และ 30 ผลทั้งสองนี้เกี่ยวกับตัวแปรร่วมที่วัดไว้เท่านั้น และต้องมีแบบจำลองคะแนนแนวโน้มที่ถูกต้อง รวมทั้งโอกาสจริงที่ผู้ป่วยทุกคนจะได้รับการรักษาแต่ละแบบ การเปรียบเทียบที่ถ่วงน้ำหนักแล้วประมาณ ATE ได้ก็ต่อเมื่อตัวแปรร่วมเหล่านั้นครอบคลุมตัวกวนทุกตัว [3]

สิ่งที่เหมือนกันและสิ่งที่ต่างได้

โดยทั่วไป ผลรวมเป็นค่าคาดหมาย ไม่ใช่จำนวนที่แน่นอน น้ำหนัก ATE แบบไม่ปรับเสถียรรวมกันได้ประมาณสองเท่าของขนาดตัวอย่าง และน้ำหนักแบบปรับเสถียรได้ประมาณขนาดตัวอย่าง [3] ตัวอย่างคำนวณด้วยมือได้ 200 และ 100 พอดี เพราะคะแนนแต่ละค่าเท่ากับสัดส่วนผู้ได้รับการรักษาที่สังเกตได้ในระดับความรุนแรงนั้นเท่านั้น เมื่อมีตัวแปรร่วมต่อเนื่องหรือแบบจำลองคะแนนแนวโน้มที่เรียบกว่า ผลรวมมักอยู่ใกล้ค่าเหล่านั้น ถ้าห่างมากควรตรวจดู

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

สิ่งที่ต่างได้คือสิ่งใดก็ตามที่อ่านน้ำหนักเป็นจำนวนนับ ซอฟต์แวร์ที่ถือว่าน้ำหนักเป็นน้ำหนักความถี่ (frequency weight) คือจำนวนผู้ป่วยที่เหมือนกันทุกประการซึ่งแถวนั้นเป็นตัวแทน จะรายงานผู้ป่วย 200 คนสำหรับน้ำหนักแบบไม่ปรับเสถียร ซึ่งก็คือตารางของผู้ทบทวน ค่าคลาดเคลื่อนมาตรฐานที่สร้างจากจำนวนนับเหล่านั้นทำเหมือนสังเกตผู้ป่วย 200 คน จึงเล็กเกินจริง น้ำหนักแบบปรับเสถียรลดปัญหานี้ด้วยการคงขนาดตัวอย่าง [4]

ค่าคลาดเคลื่อนมาตรฐานแบบแซนด์วิช (robust standard error) อ่านจากการกระจายของข้อมูลที่ถ่วงน้ำหนักแล้ว ไม่ใช่จากจำนวนนับ จึงไม่ขึ้นกับมาตราส่วนของน้ำหนักในกรณีนี้ น้ำหนักแบบปรับเสถียรมักทำให้ช่วงแคบลงเฉพาะเมื่อแบบจำลองผลลัพธ์ที่ถ่วงน้ำหนักไม่เป็นแบบจำลองอิ่มตัว (saturated model) คือมีพารามิเตอร์น้อยกว่าจำนวนการรวมกันของระดับการรักษาและรูปแบบตัวแปรร่วมในแบบจำลองนั้นเอง [3] เส้นตรงที่พาดผ่านการรักษาหลายขนาดยาไม่อิ่มตัว ส่วนแบบจำลองที่มีเฉพาะการรักษา ดังในข้อมูลจำลองด้านล่าง เป็นแบบอิ่มตัวสำหรับการรักษาแบบสองค่า

ข้อมูลจำลอง: ผู้ป่วย 100 คนชุดเดิมพร้อมผลลัพธ์

ชุดข้อมูลจำลองพิมพ์ผู้ป่วย 100 คนชุดเดิม ด้วยจำนวนตามความรุนแรงและการรักษาเท่าเดิม และเพิ่มผลลัพธ์หนึ่งตัวคือการเสียชีวิต ตามที่สร้าง ความรุนแรงเป็นตัวกวนเพียงตัวเดียวในข้อมูลนี้ ภายในแต่ละระดับความรุนแรง ผู้ที่ได้รับการรักษามีความเสี่ยงเสียชีวิตเป็นครึ่งหนึ่ง คือ 0.250 เทียบกับ 0.500 ในผู้ป่วยความรุนแรงสูง และ 0.100 เทียบกับ 0.200 ในผู้ป่วยความรุนแรงต่ำ การเปรียบเทียบดิบผสมความต่างนั้นเข้ากับความรุนแรง คือ 0.186 ในผู้ที่ได้รับการรักษา เทียบกับ 0.300 ในผู้ที่ไม่ได้รับ ผลต่างความเสี่ยงเท่ากับ -0.114

การถดถอยโลจิสติกของการรักษาบนความรุนแรงประมาณคะแนนแนวโน้ม เมื่อมีตัวแปรร่วมสองค่าเพียงตัวเดียว คะแนนที่ได้คือสัดส่วนที่สังเกตได้ คือ 0.80 และ 0.60 น้ำหนักจึงเป็นน้ำหนักเดียวกับตัวอย่างคำนวณด้วยมือ สมดุลสรุปด้วยผลต่างค่าเฉลี่ยมาตรฐาน (standardised mean difference, SMD) คือผลต่างของค่าเฉลี่ยตัวแปรร่วมระหว่างกลุ่มหารด้วยส่วนเบี่ยงเบนมาตรฐานรวม ตอนว่าด้วยสมดุลของชุดบทความนี้อธิบายวิธีอ่านค่านี้

ข้อมูลจำลอง ผู้ป่วย 100 คน ความเสี่ยงคือความเสี่ยงเสียชีวิต และ SE คือค่าคลาดเคลื่อนมาตรฐานของผลต่างความเสี่ยง SE แบบอิงจำนวนนับอ่านน้ำหนักเป็นจำนวนผู้ป่วย และแสดงไว้เพื่อให้เห็นข้อผิดพลาดเท่านั้น
ปริมาณไม่ถ่วงน้ำหนักแบบไม่ปรับเสถียร wแบบปรับเสถียร sw
กลุ่มที่ได้รับการรักษา ผลรวมของน้ำหนัก (คน)7010070
กลุ่มที่ไม่ได้รับการรักษา ผลรวมของน้ำหนัก (คน)3010030
ผู้ป่วยทั้งหมด ผลรวมของน้ำหนัก100200100
สัดส่วนความรุนแรงสูง กลุ่มที่ได้รับการรักษา0.5710.5000.500
สัดส่วนความรุนแรงสูง กลุ่มที่ไม่ได้รับการรักษา0.3330.5000.500
SMD ของความรุนแรง0.490.000.00
ความเสี่ยงเสียชีวิต กลุ่มที่ได้รับการรักษา0.1860.1750.175
ความเสี่ยงเสียชีวิต กลุ่มที่ไม่ได้รับการรักษา0.3000.3500.350
ผลต่างความเสี่ยง-0.114-0.175-0.175
SE แบบอิงจำนวนนับของผลต่างความเสี่ยงไม่ได้คำนวณ0.0610.098
SE แบบแซนด์วิชของผลต่างความเสี่ยง (ถือว่าน้ำหนักเป็นค่าที่ทราบ)ไม่ได้คำนวณ0.1060.106

อ่านผลจากข้อมูลจำลอง

การถ่วงน้ำหนักทั้งสองแบบขจัดความไม่สมดุลของความรุนแรง โดย SMD ลดจาก 0.49 เป็น 0.00 ทั้งสองแบบให้ความเสี่ยงเสียชีวิตที่ถ่วงน้ำหนักแล้วเท่ากับ 0.175 ในกลุ่มที่ได้รับการรักษา เทียบกับ 0.350 ในกลุ่มที่ไม่ได้รับ ผลต่างความเสี่ยง -0.175 คือค่าเฉลี่ยของผลต่างภายในแต่ละระดับ คือ -0.250 และ -0.100 ถ่วงด้วยสัดส่วนความรุนแรงของตัวอย่างทั้งหมด และอัตราส่วนความเสี่ยงเท่ากับ 0.50 เช่นเดียวกับภายในแต่ละระดับ

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

ระหว่างการถ่วงน้ำหนักสองแบบ ค่าคลาดเคลื่อนมาตรฐานต่างกันเฉพาะเมื่ออ่านน้ำหนักเป็นจำนวนนับ คือ 0.061 กับน้ำหนักแบบไม่ปรับเสถียร และ 0.098 กับน้ำหนักแบบปรับเสถียร ค่าคลาดเคลื่อนมาตรฐานแบบแซนด์วิชเท่ากับ 0.106 ทั้งสองแบบ เพราะแบบจำลองที่มีเฉพาะการรักษาเป็นแบบอิ่มตัว คำสั่ง teffects ipw ของ Stata และ glm_weightit() จากแพ็กเกจ WeightIt ของ R คำนึงถึงการประมาณคะแนนแนวโน้มด้วย และให้ผลต่างความเสี่ยงเท่ากัน คือ -0.175 ค่าคลาดเคลื่อนมาตรฐานของทั้งสองคือ 0.101 โดยช่วงเชื่อมั่น 95% คือ -0.373 ถึง 0.023

ค่าคลาดเคลื่อนมาตรฐานแบบแซนด์วิชถือว่าน้ำหนักเป็นค่าที่ทราบ สำหรับ ATE จึงใช้ได้ แต่มักจะอนุรักษ์นิยม (conservative) หมายถึงช่วงของมันครอบคลุมค่าจริงมากกว่า 95% ของครั้ง [3] ค่าคลาดเคลื่อนมาตรฐานที่คำนึงถึงคะแนนที่ประมาณได้เล็กลงเล็กน้อยในที่นี้ ตามที่คาด คือ 0.101 เทียบกับ 0.106 ค่า 0.098 แบบอิงจำนวนนับอยู่ใกล้ 0.101 แต่ไม่คำนึงถึงน้ำหนักที่ไม่เท่ากันและคะแนนที่ประมาณได้ จึงไม่มีหลักประกันเช่นนั้น

Stata: แบบจำลองคะแนนแนวโน้มและน้ำหนักทั้งสองแบบ

โค้ด Stata a6_sim.do (บรรทัด 96-103 จาก 215)
logit treated high, nolog
predict double ps, pr
quietly summarize treated
scalar sc_pa = r(mean)
canon p_treated 4 scalar(sc_pa)
canon p_untreated 4 1 - scalar(sc_pa)
generate double w = cond(treated == 1, 1/ps, 1/(1 - ps))
generate double sw = cond(treated == 1, scalar(sc_pa)/ps, (1 - scalar(sc_pa))/(1 - ps))
ผลลัพธ์จากการรัน a6_sim.log
. logit treated high, nolog

Logistic regression                                     Number of obs =    100
                                                        LR chi2(1)    =   4.83
                                                        Prob > chi2   = 0.0279
Log likelihood = -58.670705                             Pseudo R2     = 0.0395

------------------------------------------------------------------------------
     treated | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
        high |   .9808289   .4564354     2.15   0.032     .0862319    1.875426
       _cons |   .4054651   .2886751     1.40   0.160    -.1603278     .971258
------------------------------------------------------------------------------

. predict double ps, pr

. quietly summarize treated

. scalar sc_pa = r(mean)

. canon p_treated 4 scalar(sc_pa)
CANON a6.p_treated 0.7000

. canon p_untreated 4 1 - scalar(sc_pa)
CANON a6.p_untreated 0.3000

. generate double w = cond(treated == 1, 1/ps, 1/(1 - ps))

. generate double sw = cond(treated == 1, scalar(sc_pa)/ps, (1 - scalar(sc_pa))/(1 - ps))
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ การปรับโลจิสติกให้คะแนนแนวโน้ม ps โดย sc_pa เก็บ $P(A = 1)$ และคำสั่ง generate สองบรรทัดสร้าง w และ sw บรรทัดที่ขึ้นต้นด้วย CANON ถูกพิมพ์โดยฟังก์ชันช่วยเล็ก ๆ ในสคริปต์ที่สะท้อนผลแต่ละรายการออกมา ให้อ่านตัวเลขที่ท้ายแต่ละบรรทัดและไม่ต้องสนใจคำนำหน้า

R: แบบจำลองคะแนนแนวโน้มและน้ำหนักทั้งสองแบบ

โค้ด R a6_sim_r.R (บรรทัด 82-90 จาก 194)
psm <- glm(treated ~ high, family = binomial, data = d)
print(summary(psm)$coefficients)
d$ps <- fitted(psm)
pa <- mean(d$treated)
canon("p_treated", pa)
canon("p_untreated", 1 - pa)
d$w <- ifelse(d$treated == 1, 1 / d$ps, 1 / (1 - d$ps))
d$sw <- ifelse(d$treated == 1, pa / d$ps, (1 - pa) / (1 - d$ps))
print(aggregate(cbind(ps, w, sw) ~ high + treated, data = d, FUN = mean))
ผลลัพธ์จากการรัน a6_sim_r.log
> psm <- glm(treated ~ high, family = binomial, data = d)

> print(summary(psm)$coefficients)
             Estimate Std. Error  z value   Pr(>|z|)
(Intercept) 0.4054651  0.2886751 1.404572 0.16014849
high        0.9808293  0.4564354 2.148890 0.03164316

> d$ps <- fitted(psm)

> pa <- mean(d$treated)

> canon("p_treated", pa)
CANON a6.p_treated 0.7000

> canon("p_untreated", 1 - pa)
CANON a6.p_untreated 0.3000

> d$w <- ifelse(d$treated == 1, 1/d$ps, 1/(1 - d$ps))

> d$sw <- ifelse(d$treated == 1, pa/d$ps, (1 - pa)/(1 -
+     d$ps))

> print(aggregate(cbind(ps, w, sw) ~ high + treated,
+     data = d, FUN = mean))
  high treated  ps        w       sw
1    0       0 0.6 2.500000 0.750000
2    1       0 0.8 5.000000 1.500000
3    0       1 0.6 1.666667 1.166667
4    1       1 0.8 1.250000 0.875000
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองฉบับ R ของชุดบทความนี้และผลลัพธ์ของสคริปต์ คำสั่ง glm() ปรับแบบจำลองคะแนนแนวโน้ม pa คือ $P(A = 1)$ บรรทัด ifelse() สร้าง w และ sw และตารางสุดท้ายแสดงน้ำหนักเหล่านั้นแยกตามกลุ่มย่อย บรรทัดที่ขึ้นต้นด้วย CANON ถูกพิมพ์โดยฟังก์ชันช่วยเล็ก ๆ ในสคริปต์ที่สะท้อนผลแต่ละรายการออกมา ให้อ่านตัวเลขที่ท้ายแต่ละบรรทัดและไม่ต้องสนใจคำนำหน้า

Stata: ผลรวมของน้ำหนักแต่ละแบบในแต่ละกลุ่ม

โค้ด Stata a6_sim.do (บรรทัด 124-125 จาก 215)
* the arm sums of each weight: the pseudo-population in each arm
tabstat w sw, by(treated) statistics(sum)
ผลลัพธ์จากการรัน a6_sim.log
. * the arm sums of each weight: the pseudo-population in each arm
. tabstat w sw, by(treated) statistics(sum)

Summary statistics: Sum
Group variable: treated

 treated |         w        sw
---------+--------------------
       0 |  99.99998        30
       1 |       100        70
---------+--------------------
   Total |       200       100
------------------------------
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ แถวที่มีป้ายกำกับ 0 คือกลุ่มที่ไม่ได้รับการรักษา และแถวที่มีป้ายกำกับ 1 คือกลุ่มที่ได้รับการรักษา w รวมได้ 100 ในแต่ละกลุ่มและ 200 ทั้งหมด ส่วน sw รวมได้ 30 และ 70 ตามกลุ่ม และ 100 ทั้งหมด ผลรวม w ของกลุ่มที่ไม่ได้รับการรักษาพิมพ์เป็น 99.99998 เพราะการปรับโลจิสติกของ Stata หยุดสั้นกว่าคะแนนที่แน่นอนคือ 0.80 เล็กน้อย ส่วน R พิมพ์ 100

R: ผลรวมของน้ำหนักแต่ละแบบในแต่ละกลุ่ม

โค้ด R a6_sim_r.R (บรรทัด 104-106 จาก 194)
# the arm sums of each weight: the pseudo-population in each arm
print(tapply(d$w, d$treated, sum))
print(tapply(d$sw, d$treated, sum))
ผลลัพธ์จากการรัน a6_sim_r.log
> print(tapply(d$w, d$treated, sum))
  0   1
100 100

> print(tapply(d$sw, d$treated, sum))
 0  1
30 70
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองฉบับ R ของชุดบทความนี้และผลลัพธ์ของสคริปต์ คอลัมน์ 0 และ 1 คือกลุ่มที่ไม่ได้รับและได้รับการรักษา w ให้ 100 ในแต่ละกลุ่ม ส่วน sw ให้ขนาดจริงของกลุ่ม

R: WeightIt เมื่อกำหนด stabilize = TRUE

โค้ด R a6_sim_r.R (บรรทัด 189-191 จาก 194)
Ws <- weightit(treated ~ high, data = d, method = "glm", estimand = "ATE", stabilize = TRUE)
print(tapply(Ws$weights, d$treated, sum))
print(all.equal(unname(Ws$weights), d$sw))
ผลลัพธ์จากการรัน a6_sim_r.log
> Ws <- weightit(treated ~ high, data = d, method = "glm",
+     estimand = "ATE", stabilize = TRUE)

> print(tapply(Ws$weights, d$treated, sum))
 0  1
30 70

> print(all.equal(unname(Ws$weights), d$sw))
[1] TRUE
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองฉบับ R ของชุดบทความนี้และผลลัพธ์ของสคริปต์ เมื่อกำหนด stabilize = TRUE ฟังก์ชัน weightit() ของแพ็กเกจ WeightIt คืนค่าน้ำหนักที่รวมได้ 30 และ 70 ตามกลุ่ม และ all.equal() ยืนยันว่าเท่ากับ sw ที่สร้างเอง

Stata: teffects ipw เป็นการตรวจซ้ำ

โค้ด Stata a6_sim.do (บรรทัด 196-196 จาก 215)
teffects ipw (died) (treated high, logit), ate
ผลลัพธ์จากการรัน a6_sim.log
. teffects ipw (died) (treated high, logit), ate

Iteration 0:  EE criterion =  2.649e-17
Iteration 1:  EE criterion =  1.126e-32

Treatment-effects estimation                    Number of obs     =        100
Estimator      : inverse-probability weights
Outcome model  : weighted mean
Treatment model: logit
------------------------------------------------------------------------------
             |               Robust
        died | Coefficient  std. err.      z    P>|z|     [95% conf. interval]
-------------+----------------------------------------------------------------
ATE          |
     treated |
   (1 vs 0)  |      -.175   .1011342    -1.73   0.084    -.3732194    .0232194
-------------+----------------------------------------------------------------
POmean       |
     treated |
          0  |        .35   .0920598     3.80   0.000     .1695662    .5304338
------------------------------------------------------------------------------
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองของชุดบทความนี้และผลลัพธ์ของสคริปต์ คำสั่งนี้ปรับแบบจำลองโลจิสติกของคะแนนแนวโน้มใหม่ และรายงาน ATE ที่ -0.175 พร้อมค่าคลาดเคลื่อนมาตรฐานแบบแซนด์วิชที่คำนึงถึงการประมาณคะแนนด้วย POmean คือค่าเฉลี่ยผลลัพธ์ที่อาจเกิดขึ้นที่ประมาณได้ ได้แก่ความเสี่ยงเสียชีวิตหากไม่มีใครได้รับการรักษา เท่ากับ 0.350 ซึ่งคือความเสี่ยงที่ถ่วงน้ำหนักแล้วในกลุ่มที่ไม่ได้รับการรักษา

R: glm_weightit() เป็นการตรวจซ้ำ

โค้ด R a6_sim_r.R (บรรทัด 176-178 จาก 194)
W <- weightit(treated ~ high, data = d, method = "glm", estimand = "ATE")
fw <- glm_weightit(died ~ treated, data = d, weightit = W)
print(cbind(estimate = coef(fw), se = sqrt(diag(vcov(fw)))))
ผลลัพธ์จากการรัน a6_sim_r.log
> W <- weightit(treated ~ high, data = d, method = "glm",
+     estimand = "ATE")

> fw <- glm_weightit(died ~ treated, data = d, weightit = W)

> print(cbind(estimate = coef(fw), se = sqrt(diag(vcov(fw)))))
            estimate         se
(Intercept)    0.350 0.09205976
treated       -0.175 0.10113419
ข้อมูลจำลอง ข้อความที่ตัดมาจากสคริปต์จำลองฉบับ R ของชุดบทความนี้และผลลัพธ์ของสคริปต์ weightit() ปรับแบบจำลองโลจิสติกของคะแนนแนวโน้มใหม่โดยไม่ทำ stabilization และ glm_weightit() ปรับแบบจำลองผลลัพธ์ที่ถ่วงน้ำหนักด้วยค่าคลาดเคลื่อนมาตรฐานที่คำนึงถึงการประมาณคะแนน แถว treated ให้ -0.175 และ 0.101 เหมือนที่ teffects ipw ให้ใน Stata

สิ่งที่ควรรายงาน

สามรายการช่วยให้ผู้อ่านตรวจการวิเคราะห์ที่ถ่วงน้ำหนักได้:

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

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

  • "น้ำหนักแบบปรับเสถียรปรับตัวกวนซ้ำเป็นครั้งที่สอง"

    น้ำหนักแบบปรับเสถียรใช้คะแนนแนวโน้มเดียวกับน้ำหนักแบบไม่ปรับเสถียร และไม่ได้เพิ่มข้อมูลเกี่ยวกับตัวกวน

    วิธีแก้: การทำ stabilization คือการคูณน้ำหนักทุกตัวในกลุ่มการรักษาเดียวกันด้วยสัดส่วนผู้ป่วยของกลุ่มนั้น จึงเปลี่ยนขนาดของ pseudo-population แต่คงความสมดุลที่น้ำหนักแบบไม่ปรับเสถียรทำได้ไว้เหมือนเดิม

  • "ผลรวมถ่วงน้ำหนัก 200 จากผู้ป่วย 100 คน แปลว่าข้อมูลถูกทำซ้ำ"

    น้ำหนัก ATE แบบไม่ปรับเสถียรทำให้แต่ละกลุ่มเป็นตัวแทนของตัวอย่างทั้งหมด ผลรวมของมันจึงเป็นประมาณสองเท่าของขนาดตัวอย่างโดยการออกแบบ

    วิธีแก้: รายงานผลรวมของน้ำหนักในแต่ละกลุ่มควบคู่กับขนาดจริงของกลุ่ม

  • "ผลรวมเป็นสองเท่าของขนาดตัวอย่าง หรือเท่ากับขนาดตัวอย่าง พอดีเสมอ"

    ในตัวอย่างคำนวณด้วยมือ ผลรวมพอดีเพราะคะแนนแต่ละค่าเท่ากับสัดส่วนผู้ได้รับการรักษาที่สังเกตได้ในรูปแบบตัวแปรร่วมนั้น เมื่อใช้แบบจำลองคะแนนแนวโน้มที่เรียบกว่า ผลรวมมักใกล้เคียงแต่ไม่เท่ากัน

    วิธีแก้: อ่านผลรวมเป็นค่าคาดหมาย และตรวจดูเมื่อห่างจากค่านั้นมาก

  • "เพื่อความปลอดภัยเพิ่มเติม ให้ใช้น้ำหนักทั้งสองแบบ"

    การคูณน้ำหนักสองแบบเข้าด้วยกันคือการหารด้วยความน่าจะเป็นของการรักษาที่ได้รับสองครั้ง สองกลุ่มจึงไม่มีสัดส่วนตัวแปรร่วมเหมือนตัวอย่างทั้งหมดอีกต่อไป

    วิธีแก้: ใช้น้ำหนักหนึ่งแบบต่อหนึ่งการวิเคราะห์ สำหรับการรักษา ณ จุดเวลาเดียว แบบใดก็ให้สมดุลเท่ากัน

  • "ค่าคลาดเคลื่อนมาตรฐานจากจำนวนนับถ่วงน้ำหนักใช้ได้กับน้ำหนักทั้งสองแบบ"

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

    วิธีแก้: ใช้ค่าคลาดเคลื่อนมาตรฐานแบบแซนด์วิช หรือค่าที่คำนึงถึงการประมาณคะแนนแนวโน้มด้วย คือ teffects ipw ใน Stata หรือ glm_weightit() ใน R

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

อภิธานศัพท์

inverse probability of treatment weighting (IPTW) (การถ่วงน้ำหนักด้วยส่วนกลับของความน่าจะเป็นในการได้รับการรักษา)
การให้น้ำหนักผู้ป่วยแต่ละคนเท่ากับหนึ่งหารด้วยความน่าจะเป็นของการรักษาที่ผู้ป่วยคนนั้นได้รับ
propensity score (คะแนนแนวโน้มการได้รับการรักษา)
ความน่าจะเป็นที่จะได้รับการรักษาเมื่อกำหนดตัวแปรร่วมพื้นฐานที่วัดไว้
pseudo-population (ประชากรเสมือน)
ประชากรที่ถ่วงน้ำหนักแล้ว ซึ่งผู้ป่วยแต่ละคนนับเท่ากับค่าน้ำหนักของตน
pseudo-population size (ขนาดของ pseudo-population)
ผลรวมของน้ำหนัก ได้ประมาณสองเท่าของขนาดตัวอย่างสำหรับน้ำหนัก ATE แบบไม่ปรับเสถียร และประมาณขนาดตัวอย่างสำหรับน้ำหนักแบบปรับเสถียร
unstabilised weight (น้ำหนักแบบไม่ปรับเสถียร)
หนึ่งหารด้วยความน่าจะเป็นของการรักษาที่ผู้ป่วยได้รับจริง
stabilised weight (น้ำหนักแบบปรับเสถียร)
น้ำหนักแบบไม่ปรับเสถียรคูณสัดส่วนผู้ได้รับการรักษาในภาพรวมของการรักษาที่ได้รับ
marginal probability of treatment (สัดส่วนผู้ได้รับการรักษาในภาพรวม)
สัดส่วนของผู้ป่วยทั้งหมดที่ได้รับการรักษาแบบใดแบบหนึ่ง
standardised mean difference (ผลต่างค่าเฉลี่ยมาตรฐาน)
ผลต่างของค่าเฉลี่ยตัวแปรร่วมระหว่างกลุ่ม หารด้วยส่วนเบี่ยงเบนมาตรฐานรวม
normalised weighted mean
ผลรวมของน้ำหนักคูณค่า หารด้วยผลรวมของน้ำหนัก
frequency weight
น้ำหนักที่อ่านเป็นจำนวนผู้ป่วยที่เหมือนกันทุกประการ จึงรายงานผลรวมของมันเป็นขนาดตัวอย่าง
robust (sandwich) standard error (ค่าคลาดเคลื่อนมาตรฐานแบบแซนด์วิช)
ค่าคลาดเคลื่อนมาตรฐานที่ยังใช้ได้เมื่อข้อสมมติเรื่องความแปรปรวนผิด ตราบใดที่แบบจำลองของค่าเฉลี่ยถูกต้อง เมื่อมีน้ำหนัก ค่านี้อ่านจากการกระจายของข้อมูลที่ถ่วงน้ำหนักแล้ว ไม่ใช่จากจำนวนนับที่ถ่วงน้ำหนัก
saturated model
แบบจำลองที่มีค่าเฉลี่ยแยกกันสำหรับทุกการรวมกันของตัวแปรที่มันมี เช่นหนึ่งค่าเฉลี่ยต่อหนึ่งกลุ่มสำหรับการรักษาแบบสองค่า
estimand (ปริมาณเป้าหมายของการประมาณ)
ปริมาณที่แน่ชัดซึ่งการวิเคราะห์ตั้งใจประมาณ เช่น ATE

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

  1. Robins JM, Hernán MA, Brumback B. Marginal structural models and causal inference in epidemiology. Epidemiology. 2000;11(5):550-560. doi:10.1097/00001648-200009000-00011 https://doi.org/10.1097/00001648-200009000-00011
  2. Cole SR, Hernán MA. Constructing inverse probability weights for marginal structural models. Am J Epidemiol. 2008;168(6):656-664. doi:10.1093/aje/kwn164 https://doi.org/10.1093/aje/kwn164
  3. Hernán MA, Robins JM. Causal inference: what if [Internet]. Boca Raton: Chapman & Hall/CRC; 2020. https://miguelhernan.org/whatifbook
  4. Xu S, Ross C, Raebel MA, Shetterly S, Blanchette C, Smith D. Use of stabilized inverse propensity scores as weights to directly estimate relative risk and its confidence intervals. Value Health. 2010;13(2):273-277. doi:10.1111/j.1524-4733.2009.00671.x https://doi.org/10.1111/j.1524-4733.2009.00671.x

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

  • น้ำหนัก ATE แบบไม่ปรับเสถียรสร้างประชากรเสมือนขนาดประมาณสองเท่าของขนาดตัวอย่าง และน้ำหนักแบบปรับเสถียรสร้างขนาดประมาณขนาดตัวอย่าง ในตัวอย่างคำนวณด้วยมือที่มีผู้ป่วย 100 คน ผลรวมคือ 200 และ 100 พอดี เพราะคะแนนแต่ละค่าเท่ากับสัดส่วนที่สังเกตได้ในแต่ละระดับความรุนแรง
  • stabilization คูณน้ำหนักทุกตัวในกลุ่มการรักษาเดียวกันด้วยสัดส่วนผู้ป่วยของกลุ่มนั้น จึงคงสมดุลที่น้ำหนักแบบไม่ปรับเสถียรทำไว้ คือความรุนแรงสูง 50% ในทั้งสองกลุ่ม
  • สำหรับการรักษาแบบสองค่า เมื่อค่าเฉลี่ยถ่วงน้ำหนักที่หารด้วยผลรวมน้ำหนักในแต่ละกลุ่ม และน้ำหนักไม่ถูกตัดปลายหรือเปลี่ยนแปลงด้วยวิธีอื่น การถ่วงน้ำหนักทั้งสองแบบให้ความเสี่ยงที่ถ่วงน้ำหนักแล้วและผลต่างของความเสี่ยงเท่ากัน
  • สิ่งที่ต่างได้คือสิ่งใดก็ตามที่อ่านน้ำหนักเป็นจำนวนนับ เช่นจำนวนผู้ป่วยที่ซอฟต์แวร์รายงานและค่าคลาดเคลื่อนมาตรฐานแบบอิงจำนวนนับ ส่วนค่าคลาดเคลื่อนมาตรฐานแบบแซนด์วิชของแบบจำลองถ่วงน้ำหนักที่มีเฉพาะการรักษาไม่เปลี่ยนตามมาตราส่วนของน้ำหนัก
  • รายงานชนิดของน้ำหนัก ผลรวมของน้ำหนักในแต่ละกลุ่มควบคู่กับขนาดจริงของกลุ่ม และตารางสมดุลหนึ่งตาราง

อ่านต่อในวิกิ: [[extreme-propensity-weights-stabilization-truncation-trimming-th]] [[iptw-guide-th]] [[propensity-weighting-balance-check-and-model-revision-th]]

0
ถึงนักอ่านชาวไทยและต่างชาติทำความเข้าใจบริบททางการแพทย์ของผมอ่านต่อ →ถึงนักอ่านชาวไทยและต่างชาติทำความเข้าใจเนื้อหาของผมที่นอกเหนือจากการแพทย์อ่านต่อ →

ความคิดเห็น

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

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