การจัดการกับ multicollinearity


13

ฉันได้เรียนรู้ว่าการใช้vif()วิธีการcarบรรจุภัณฑ์เราสามารถคำนวณระดับของความหลากหลายของอินพุตในโมเดลได้ จากวิกิพีเดียถ้าvifค่ามากกว่า5นั้นเราสามารถพิจารณาได้ว่าข้อมูลที่ได้รับความทุกข์ทรมานจากปัญหาพหุนิยม ตัวอย่างเช่นฉันได้พัฒนาตัวแบบการถดถอยเชิงเส้นโดยใช้lm()วิธีการและvif()ให้ดังต่อไปนี้ ในฐานะที่เราสามารถมองเห็นปัจจัยการผลิตub, lbและtbกำลังทุกข์ทรมานจากพหุ

 vif(lrmodel)
     tb        ub        lb          ma     ua        mb         sa     sb 
 7.929757 50.406318 30.826721  1.178124  1.891218  1.364020  2.113797  2.357946

เพื่อหลีกเลี่ยงปัญหาความสัมพันธ์แบบหลายจุดและเพื่อให้แบบจำลองของฉันแข็งแกร่งขึ้นฉันได้ดำเนินการระหว่างubและlbและตอนนี้ตาราง vif ของรูปแบบใหม่มีดังนี้:

   tb     ub:lb      ma       mb      sa        sb     ua
1.763331 1.407963 1.178124 1.327287 2.113797 1.860894 1.891218

มีค่าไม่แตกต่างกันมากR^2และไม่มีความแตกต่างในข้อผิดพลาดจากการทดสอบ CV แบบครั้งเดียวในทั้งสองกรณีข้างต้น

คำถามของฉันคือ:

  1. มันเป็นการดีหรือไม่ที่จะหลีกเลี่ยงปัญหาความสัมพันธ์ระหว่างกันโดยการโต้ตอบตามที่แสดงด้านบน?

  2. มีวิธีการที่ดีกว่าในการนำเสนอปัญหาความสัมพันธ์หลายค่าเมื่อเทียบกับผลลัพธ์ของวิธี vif ข้างต้น

กรุณาให้คำแนะนำของคุณ

ขอบคุณ


แบบจำลองการบันทึกข้อมูลการใช้งานของคุณอยู่ในสภาพถดถอย (การโต้ตอบเป็นข้อ จำกัด เช่นเดียวกับข้อตกลง) ในวิกิมีบทความที่สมบูรณ์มากขึ้นเกี่ยวกับปัญหา multicollinearity en.wikipedia.org/wiki/Multicollinearityนอกจากนี้ฉันขอแนะนำให้สำรวจแท็ก multicollinearity บนเว็บไซต์นี้ดูเหมือนว่าเป็นคำถามที่พบบ่อย
Dmitrij Celov

@Dmitrij Celov: ขอบคุณ ไม่แบบจำลองของฉันคือการถดถอยเชิงเส้นอย่างง่ายโดยไม่มีบันทึก ...
samarasa

คำตอบ:


11

ดูเหมือนว่าคุณจะรวมคำที่ใช้ในการโต้ตอบub:lbแต่ไม่ใช่ubและlbเป็นตัวทำนายแยกต่างหาก สิ่งนี้จะละเมิดสิ่งที่เรียกว่า "หลักการของความไร้ขอบเขต" ซึ่งระบุว่าคำสั่งที่สูงกว่าควรรวมเฉพาะตัวแปรที่มีอยู่ในคำสั่งที่ต่ำกว่า ( Wikipedia สำหรับการเริ่มต้น ) ได้อย่างมีประสิทธิภาพขณะนี้คุณกำลังรวมถึงการทำนายที่เป็นเพียงผลิตภัณฑ์องค์ประกอบที่ชาญฉลาดของและublb

VIFjเป็นเพียงโดยที่เป็นค่าเมื่อคุณเรียกใช้การถดถอยด้วยตัวแปรตัวทำนายดั้งเดิมของคุณเป็นเกณฑ์ที่ทำนายโดยตัวทำนายที่เหลืออยู่ทั้งหมด (เป็นองค์ประกอบในแนวทแยงของ -th ของ , ค่าผกผันของเมทริกซ์สหสัมพันธ์ของตัวทำนาย) VIF มูลค่า 50 จึงแสดงให้เห็นว่าคุณจะได้รับของ 0.98 เมื่อทำนายกับทำนายอื่น ๆ ที่แสดงให้เห็นว่าเกือบจะซ้ำซ้อนสมบูรณ์ (เหมือนกันสำหรับ,ของ 0.97)11Rj2Rj2R2jjRx1R2ubublbR2

ฉันจะเริ่มทำทุกความสัมพันธ์แบบคู่ระหว่างตัวทำนายและเรียกใช้การถดถอยข้างต้นเพื่อดูว่าตัวแปรใดทำนายubและlbเพื่อดูว่าคำอธิบายความซ้ำซ้อนนั้นอธิบายได้ง่ายหรือไม่ หากเป็นเช่นนั้นคุณสามารถลบตัวพยากรณ์ซ้ำซ้อนออกได้ คุณยังสามารถดูการถดถอยของสัน ( lm.ridge()จากแพ็คเกจMASSใน R)

การวินิจฉัยความสัมพันธ์ระหว่างกันขั้นสูงเพิ่มเติมใช้โครงสร้างค่าเฉพาะของโดยที่คือเมทริกซ์การออกแบบของการถดถอย (เช่นตัวทำนายทั้งหมดเป็นคอลัมน์ - เวกเตอร์) เงื่อนไขคือโดยที่และนั้นใหญ่ที่สุดและเล็กที่สุด ( ) ค่าลักษณะเฉพาะของ X ใน R คุณสามารถใช้โดยที่โมเดลมักใช้ตัวแปรมาตรฐานXtXXκλmaxλminλmaxλmin0XtXkappa(lm(<formula>))lm()

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

มีกฎบางอย่างของหัวแม่มือสำหรับค่าที่ไม่สำคัญของ (ฉันได้ยินน้อยกว่า 20) แต่โปรดทราบว่าไม่คงที่ภายใต้การแปลงข้อมูลที่เพิ่งเปลี่ยนหน่วยของตัวแปร - เช่นการกำหนดมาตรฐาน สิ่งนี้แตกต่างจาก VIF: จะให้ผลลัพธ์แบบเดียวกับ(ตราบเท่าที่ไม่มีคำศัพท์แบบคูณในโมเดล) แต่และจะแตกต่างกันอย่างแน่นอนκκvif(lm(y ~ x1 + x2))vif(lm(scale(y) ~ scale(x1) + scale(x2)))kappa(lm(y ~ x1 + x2))kappa(lm(scale(y) ~ scale(x1) + scale(x2)))


เกี่ยวกับบันทึกย่อแรก: สำหรับโมเดลหลายตัวแปรดูเหมือนว่าตกลงที่จะเว้นระยะการโต้ตอบเท่านั้นเนื่องจากหลังหมายถึงคุณ จำกัด coef สำหรับub lb( ) แต่สำหรับโมเดลการถดถอยเชิงเส้นทั่วไปมันเป็นตามที่คุณชี้ให้เห็น (+1) ^ _ ^ โดยวิธี lb - ขอบเขตล่าง, ub - ขอบเขตบน?! ถ้าเป็นเช่นนั้นสร้างความแตกต่างของสองมันอาจเป็นการเปลี่ยนแปลงที่ดีขึ้น u b - l balogub+aloglb=alogublbublb
Dmitrij Celov

@Dmitrij: ไม่, ub + lb + sb = 100.
samarasa

มีการแสดงกราฟิกที่ดีสำหรับ multicollinearity? กรุณาแนะนำฉันหากมีวิธีการใด ๆ ใน R สำหรับรัชกาลที่
samarasa

2
@kkp วิธีเดียวที่ฉันสามารถนึกได้ในตอนนี้คือ: pairs()สำหรับเมทริกซ์ scatterplot ที่แสดงการแจกแจงแบบคู่ทั้งหมดของตัวทำนาย แพคเกจscatterplot3dสามารถใช้ในการเห็นภาพกระจายของ 3 ตัวแปร ดูคำตอบนี้สำหรับการวาดวงรีที่มีอัตราส่วนของแกนเท่ากับในเคส bivariate คุณอาจตรวจสอบแพ็คเกจที่ให้บริการการวินิจฉัยพหุความสัมพันธ์แบบพหุคูณเพิ่มเติมซึ่งอาจเป็นกราฟิก κ2perturb
caracal

1

คุณควรพิจารณาค่า P ในระหว่างการพิจารณาตัวแปร

  1. ถ้า P-Value ต่ำมาก (p <0.05) ดังนั้นและ VIF นั้นสูง (> 5) คุณควรพิจารณาตัวแปรที่ไม่มีนัยสำคัญอื่น ๆ และสร้างโมเดลของคุณใหม่
  2. หากคุณมีค่า P และ VIF สูงทั้งสองตัวแปรนี้จะไม่มีนัยสำคัญ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.