ฉันมีกรอบข้อมูลที่มีผู้เข้าร่วมการทดลอง 120 ราย และตัวควบคุม 147 รายการ ฉันต้องการให้ 100 สองกลุ่มตรงกับอายุ เพศ และ BMI
การใช้แพ็คเกจ MatchIt:
match.it <- matchit(group ~ age + sex + bmi , data, method="nearest", ratio=1)
summary(match.it)$nn #return sample sizes
Control Treated
All 147 120
Matched 120 120
Unmatched 27 0
Discarded 0 0
คุณจะเห็นว่าระบบจะส่งกลับขนาดตัวอย่างให้เท่ากับขนาดตัวอย่างดั้งเดิมที่เล็กที่สุดโดยอัตโนมัติ ฉันต้องการบังคับให้เก็บตัวควบคุม 100 ตัวและตัวอย่างที่บำบัด 100 ตัวเท่านั้น แต่ฉันไม่ต้องการระบุว่าตัวใด ฉันได้สำรวจเอกสารแล้ว แต่ไม่เห็นวิธีระบุขนาดตัวอย่างที่ตรงกัน (เฉพาะอัตราส่วนที่ควบคุมได้)
- มีวิธีการทำที่ฉันมองข้ามหรือไม่?
- ถ้าไม่ มีวิธีดำเนินการโดยใช้เมตริก 'ระยะทาง' ที่ส่งคืนโดย match.data() หรือไม่
- หาก MatchIt ไม่ใช่แพ็คเกจที่เหมาะสมสำหรับสิ่งนี้ คุณรู้จักแพ็คเกจที่ดีกว่านี้หรือไม่?
ขอบคุณ
อัปเดต: ฉันสามารถส่งคืนวิชาที่ตรงกันได้โดยใช้ summary(match.it)$match.matrix และใส่ไว้ใน data frame ใหม่ ฉันยังรวมระยะทางและคำนวณความแตกต่างระหว่างระยะทางสำหรับแต่ละคู่ด้วย หากจะใช้สิ่งนี้เพื่อเลือก 100 คู่ ควรเลือกคู่ที่มีระยะทางต่างกันน้อยที่สุด หรือระยะทางเฉลี่ยน้อยที่สุด หรืออย่างอื่น ฉันไม่คุ้นเคยกับคณิตศาสตร์มากพอที่จะรู้วิธีตีความระยะทาง
แก้ไข: แก้ไขข้อผิดพลาดในโค้ด
data
นอกจากนี้ มันควรจะเป็นsummary(match.it)
ไม่ใช่summary(match.it.1)
ใช่ไหม ความเป็นไปได้อย่างหนึ่งคือการแยกชื่อแถวที่ตรงกันจากmatch.it$match.matrix
ใช้ชื่อเหล่านั้นเพื่อสับเซ็ตเฟรมข้อมูลดั้งเดิม จากนั้นใช้บางอย่างเช่นdplyr::sample_n()
เพื่อรับแถวที่ตรงกันแบบสุ่มตัวอย่าง 100 แถว - person neilfws   schedule 27.02.2018matchit
แต่ฉันรู้ว่าแพ็คเกจMatching
มีอาร์กิวเมนต์ที่แน่นอน อย่างอื่นที่จะคิดเกี่ยวกับ. - person lmo   schedule 27.02.2018