การเพิ่มน้ำหนักให้กับการถดถอยโลจิสติกสำหรับข้อมูลที่ไม่สมดุล


21

ฉันต้องการสร้างแบบจำลองการถดถอยโลจิสติกด้วยข้อมูลที่ไม่สมดุล (9: 1) ฉันต้องการลองใช้ตัวเลือกตุ้มน้ำหนักในglmฟังก์ชันใน R แต่ฉันไม่แน่ใจ 100% ว่ามันทำอะไร

c(0,0,0,0,0,0,0,0,0,1)ช่วยบอกตัวแปรเอาท์พุทของฉันคือ ตอนนี้ฉันต้องการเพิ่มน้ำหนัก "1" 10 เท่า weights=c(1,1,1,1,1,1,1,1,1,1,1,10)ดังนั้นผมจึงให้น้ำหนักการโต้แย้ง

เมื่อฉันทำเช่นนั้นมันจะได้รับการพิจารณาในการคำนวณความเป็นไปได้สูงสุด ฉันถูกไหม? การจำแนกประเภทของ "1" นั้นแย่กว่านั้นเพียง 10 เท่าจากนั้นการจัดประเภทผิดพลาดเป็น "0"

คำตอบ:


11

ชิงคุณไม่จำเป็นต้องทำให้ชุดข้อมูลของคุณสมดุลในแง่ของ 1 และ 0 สิ่งที่คุณต้องการคือจำนวนที่เพียงพอ 1 สำหรับความเป็นไปได้สูงสุดที่จะมาบรรจบกัน เมื่อดูการกระจายของ 1 (100,000) ในชุดข้อมูลของคุณคุณไม่ควรมีปัญหาใด ๆ คุณสามารถทำการทดลองง่ายๆได้ที่นี่

  1. ตัวอย่าง 10% ของ 1 และ 10% ของ 0 และใช้น้ำหนัก 10 ทั้งคู่
  2. ตัวอย่าง 100% ของ 1 และ 10% ของ 0 และใช้น้ำหนัก 10 สำหรับ 0

ในทั้งสองกรณีคุณจะได้รับการประมาณการที่เหมือนกัน แนวคิดเรื่องการถ่วงน้ำหนักเกี่ยวข้องกับการสุ่มตัวอย่างอีกครั้ง หากคุณกำลังใช้ชุดข้อมูลทั้งหมดคุณไม่ควรชั่งน้ำหนัก ถ้าฉันเป็นคุณฉันจะใช้ 10% ถ้า 1 และ 10% ของ 0

glmในการวิจัยคุณจะใช้ นี่คือตัวอย่างรหัส:

glm(y ~ x1 + x2, weights = wt, data =data, family = binomial("logit"))

ในชุดข้อมูลของคุณควรมีตัวแปรwtสำหรับน้ำหนัก

หากคุณใช้ 10% ของทั้ง 0 และ 1 wtตัวแปรของคุณจะมีค่าเท่ากับ 10

หากคุณใช้ 10% ของ 0 และ 100% ของ 1: wtตัวแปรจะมีค่า 10 สำหรับการสังเกตด้วย y = 0 และ 1 สำหรับการสังเกตด้วย y = 1


12

การให้น้ำหนักเป็นขั้นตอนที่ชั่งน้ำหนักข้อมูลเพื่อชดเชยความแตกต่างในกลุ่มตัวอย่างและประชากร (พ.ศ. 2544) ตัวอย่างเช่นในเหตุการณ์ที่หายาก (เช่นการฉ้อโกงในความเสี่ยงด้านเครดิตการเสียชีวิตในวรรณคดีการแพทย์) เรามักจะสุ่มตัวอย่างทั้งหมดของ 1 (เหตุการณ์ที่หายาก) และเศษส่วนของ 0 (ไม่ใช่เหตุการณ์) ในกรณีเช่นนี้เราต้องชั่งน้ำหนักข้อสังเกตตามนั้น

ตัวอย่าง: ให้เราพูดว่าในการทำธุรกรรม 500,000 รายการมีธุรกรรมการทุจริต 50 รายการ ในกรณีนี้คุณจะ

  1. ตัวอย่างธุรกรรมการทุจริต 50 รายการ (100% ของการหลอกลวง)
  2. 10% ของธุรกรรมที่ดี (10% ของ 500,000 คือธุรกรรมที่ดี 50,000 รายการ)

ในกรณีนี้คุณจะกำหนดน้ำหนัก 1 สำหรับธุรกรรมการทุจริตและน้ำหนัก 10 สำหรับธุรกรรมที่ดี สิ่งนี้เรียกว่าวิธีการหาค่าน้ำหนักสูงสุด สิ่งที่สำคัญอย่างหนึ่งก็คือน้ำหนักนั้นสัมพันธ์กับสัดส่วนการสุ่มตัวอย่าง

อ้างอิง: การถดถอยโลจิสติกในข้อมูลเหตุการณ์ที่หายาก (King 2001)


สวัสดี subra !!! ขอบคุณมากสำหรับแนวทางของกษัตริย์ !! ไม่เคยได้ยินมัน! ในกรณีของฉันฉันมี 1 ล้านธุรกรรม! (900.000 คือ "0" และ 100.000 คือ "1") ดังนั้นฉันควรตัวอย่าง 10% ของ "0" ของฉัน? จากนั้นฉันมีชุดข้อมูลที่สมดุลเกือบ ถ้าอย่างนั้นฉันต้องน้ำหนัก "0" มากกว่า "1" สิบเท่าใช่มั้ย และฟังก์ชั่นใน R glm () ในแพ็คเกจ MASS นั้นถูกต้องไหม? หากฉันถ่วงน้ำหนักการสังเกตของฉันฉันจะคำนวณโอกาสสูงสุดที่ถ่วงน้ำหนักหรือไม่ ขอขอบคุณ! ขอบคุณคำตอบและความช่วยเหลือของคุณจริงๆ
ชิง

ฉันคิดมากเกี่ยวกับปัญหานี้ ถ้าฉันพูดว่า: ตอนนี้ใช้ข้อมูลของฉันทั้งหมดเพื่อสร้างแบบจำลอง logit (ด้วยข้อมูลที่ไม่สมดุล 9: 1) และจากนั้นฉันชั่งน้ำหนัก "1" สิบครั้งแม้ในความเป็นจริงฉันไม่มีข้อมูลมากขึ้นและไม่ใช่ 10% ของข้อมูลของฉัน มันเหมือนฉันทำตัวเหมือนมี ..... ดังนั้นตอนนี้เมื่อ R คำนวณแบบจำลองมันคิดว่าฉันใช้ 10% ของ "1" ของฉันเท่านั้นและพิจารณาในการคำนวณความน่าจะเป็น มันสมเหตุสมผลหรือไม่?
ชิง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.