การถดถอยเชิงเส้นอย่างรวดเร็วแข็งแกร่งต่อค่าผิดปกติ


50

ฉันกำลังจัดการกับข้อมูลเชิงเส้นที่มีค่าผิดปกติซึ่งบางส่วนอยู่ที่ 5 ส่วนเบี่ยงเบนมาตรฐานห่างจากเส้นการถดถอยโดยประมาณ ฉันกำลังมองหาเทคนิคการถดถอยเชิงเส้นที่ลดอิทธิพลของจุดเหล่านี้

จนถึงตอนนี้สิ่งที่ฉันทำคือการประมาณค่าเส้นถดถอยกับข้อมูลทั้งหมดแล้วทิ้งจุดข้อมูลที่มีค่ากำลังสองเหลือมาก (พูดยอด 10%) และทำซ้ำการถดถอยซ้ำโดยไม่มีจุดเหล่านั้น

ในวรรณคดีมีวิธีการที่เป็นไปได้มากมาย: สี่เหลี่ยมจัตุรัสที่ถูกตัดทอนน้อยที่สุดการถดถอยแบบควอไทล์เอ็ม - ตัวประมาณ ฯลฯ ฉันไม่รู้จริง ๆ ว่าวิธีใดที่ฉันควรลองดังนั้นฉันกำลังมองหาคำแนะนำ สิ่งสำคัญสำหรับฉันคือวิธีการที่เลือกควรเร็วเนื่องจากการคำนวณที่ถดถอยจะถูกคำนวณในแต่ละขั้นตอนของการปรับให้เหมาะสม ขอบคุณมาก!


2
วิธีการที่คุณไม่ได้พูดถึงคือการใช้ Student- tข้อผิดพลาดกับองศาของเสรีภาพที่ไม่รู้จัก อย่างไรก็ตามสิ่งนี้อาจไม่เร็วเท่าที่คุณต้องการ

@Procrastinator: (มันง่ายที่จะจินตนาการถึงการกำหนดค่าของค่าผิดปกติที่ไหน) สิ่งนี้จะไม่ทำงาน
user603

@ user603 นั่นเป็นจริงสำหรับวิธีการใด ๆ ไม่มี Panacea;) ฉันแค่ชี้ให้เห็นวิธีการอื่น +1 กับคำตอบของคุณ

3
@Procrastinator: ผมยอมรับว่าวิธีการทั้งหมดจะล้มเหลวสำหรับอัตราการปนเปื้อนบาง และ 'ความล้มเหลว' ในบริบทนี้สามารถกำหนดปริมาณและเชิงประจักษ์ได้ แต่แนวคิดก็คือยังคงชอบวิธีการเหล่านั้นที่จะล้มเหลวในอัตราที่สูงกว่าของการปนเปื้อน
user603

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

คำตอบ:


55

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

Cook, R. Dennis (1979) ข้อสังเกตที่มีอิทธิพลในการถดถอยเชิงเส้น วารสารสมาคมสถิติอเมริกัน ( สมาคมสถิติอเมริกัน) 74 (365): 169–174

MMMρ

  • 11+pp
  • หรือหากค่าผิดปกติไม่ได้อยู่นอกพื้นที่ออกแบบ (Ellis and Morgenthaler (1992))

Ml1robustbasequantregR

np+1Mρ

ในช่วง 20 ปีที่ผ่านมา (และ 10 ครั้งล่าสุดเป็นพิเศษ) ตัวอัลกอริธึมตรวจจับค่าผิดปกติที่รวดเร็วและเชื่อถือได้ขนาดใหญ่ได้รับการออกแบบมาเพื่อแก้ปัญหาเกี่ยวกับ combinatorial โดยประมาณ สิ่งเหล่านี้ถูกนำไปใช้อย่างกว้างขวางในแพ็คเกจทางสถิติที่ได้รับความนิยมสูงสุด (R, Matlab, SAS, STATA, ... )

O(2p)pn

pp<20

Rousseeuw, PJ และ van Zomeren BC (1990) เปิดโปงหลายตัวแปรค่าผิดปกติและจุด Leverage วารสารของสมาคมอเมริกันสถิติฉบับ 85, หมายเลข 411, pp. 633-639

Rousseeuw, PJ และ Van Driessen, K. (2006) คอมพิวเตอร์ LTS ถดถอยสำหรับชุดข้อมูลขนาดใหญ่ การเก็บข้อมูลการขุดและการค้นหาความรู้เล่มที่ 12 ฉบับที่ 1 หน้า 29 - 45

Hubert, M. , Rousseeuw, PJ และ Van Aelst, S. (2008) วิธีวิเคราะห์หลายตัวแปรที่มีความทนทานสูง สถิติวิทยาศาสตร์ปีที่ 5 23, หมายเลข 1, 92–119

Ellis SP และ Morgenthaler S. (1992) เลเวอเรจและรายละเอียดในการถดถอย L1 วารสารของสมาคมอเมริกันสถิติฉบับ 87, หมายเลข 417, pp. 143-148

หนังสืออ้างอิงล่าสุดเกี่ยวกับปัญหาของการระบุผิดคือ:

Maronna RA, Martin RD และ Yohai VJ (2006) สถิติที่แข็งแกร่ง: ทฤษฎีและวิธีการ ไวลีย์นิวยอร์ก

วิธีการเหล่านี้ (และอื่น ๆ อีกมากมายของวิธีการเหล่านี้) ถูกนำไปใช้งาน (รวมถึงอื่น ๆ ) ในแพ็คเกจrobustbase R


4
นี่เป็นคำตอบที่ยอดเยี่ยม!
Peter Flom - Reinstate Monica

p<10p

2
p<10M

1
"ข้อได้เปรียบที่ยิ่งใหญ่คืออัลกอริธึมส่วนใหญ่ขนานกันอย่างน่าอาย " ฉันชอบถ้อยคำ ;)
Mateen Ulhaq

1
@ Mateen มันเป็นเทอมแห่งศิลปะเลยล่ะ :)
JM ไม่ใช่นักสถิติ

19

สำหรับการถดถอยอย่างง่าย (Single x) มีบางสิ่งที่จะกล่าวสำหรับบรรทัด Theil-Sen ในแง่ของความทนทานต่อค่า y-outliers และคะแนนที่มีอิทธิพลรวมถึงประสิทธิภาพที่ดีโดยทั่วไป (ตามปกติ) เมื่อเทียบกับ LS สำหรับความชัน จุดแตกหักของความชันเกือบ 30%; ตราบใดที่การสกัดกั้น (มีความหลากหลายของการสกัดกั้นที่เป็นไปได้ที่ผู้คนเคยใช้) ไม่มีการแยกย่อยที่ต่ำกว่าขั้นตอนทั้งหมดจะจัดการกับการปนเปื้อนขนาดใหญ่ได้ค่อนข้างดี

ความเร็วของมันอาจฟังดูไม่ดีเลย - ค่ามัธยฐานของชันดูเหมือนจะเป็นแม้ว่าจะมีค่ามัธยฐาน - แต่ความทรงจำของฉันก็คือสามารถทำได้เร็วขึ้น ถ้าความเร็วเป็นปัญหาจริงๆ (ฉันเชื่อ)(n2)O(n2)O(n)O(nlogn)

แก้ไข: user603 ถามถึงข้อได้เปรียบของการถดถอยของ Theil ในการถดถอย L1 คำตอบคือสิ่งอื่นที่ฉันพูดถึง - จุดที่มีอิทธิพล:

Theil_vs_L1

เส้นสีแดงคือพอดี (จากฟังก์ชั่นในแพ็คเกจ) สีเขียวเป็นแบบที่มีความลาดเอียงของ Theil สิ่งที่ต้องทำคือพิมพ์ตัวอักษรเดียวในค่า x - เช่นพิมพ์ 533 แทน 53 - และสิ่งนี้สามารถเกิดขึ้นได้ ดังนั้นพอดีจึงไม่ทนทานกับการพิมพ์ผิดเดียวใน x-spaceL1rqquantregL1


มันแน่นอนสามารถคำนวณได้ในเวลาn คุณสามารถให้รายละเอียดเกี่ยวกับข้อได้เปรียบอะไรบ้าง (ในกรณี x เดี่ยว) ตัวประมาณ TS มีมากกว่าพูดการถดถอย? nlognl1
user603

1
@ user603 ดูการแก้ไข
Glen_b

(+1) ขอบคุณสำหรับการแก้ไข เป็นสิ่งสำคัญที่จะต้องระบุคุณลักษณะนี้
user603

1
และอะไรคือข้อดีของการประมาณ MM เช่น lmrob () จากแพคเกจ R strongbasebase หรือแม้กระทั่ง {ไม่จำเป็นต้องติดตั้งอะไรนอกจาก 'base R'} rlm (*, ... method = "MM") จากแพ็คเกจ MASS? สิ่งเหล่านี้มีจุดแบ่งเต็ม (~ 50%) และอาจมีประสิทธิภาพมากกว่าปกติ
Martin Mächler

1
@ MartinMächlerดูเหมือนว่าคุณจะโต้แย้งการอ้างสิทธิ์ที่ฉันไม่ได้ทำ หากคุณต้องการหาคำตอบที่มีการเปรียบเทียบตัวประมาณที่มีการแยกย่อยสูงอื่น ๆ โดยเฉพาะอย่างยิ่งคนที่เข้าใจง่ายสำหรับคนที่อยู่ในระดับ OP ฉันจะรออ่าน
Glen_b

12

คุณดูRANSAC (Wikipedia)หรือยัง

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


อือ แต่เพิ่มขั้นตอนใหม่ที่เรียบง่ายน้ำหนักอัตราผลตอบแทนประมาณการ (LTS) ที่เป็นอย่างเท่าเทียมกันที่แข็งแกร่งและเพื่อให้มีเสถียรภาพมากขึ้นและมีประสิทธิภาพทางสถิติ ทำไมไม่ทำ
user603

1

ฉันพบว่าลงโทษข้อผิดพลาดที่ดีที่สุด คุณยังสามารถใช้ตัวอย่างซ้ำและหนักตัวอย่างซึ่งไม่สอดคล้องกับวิธีแก้ปัญหา แนวคิดพื้นฐานคือการเพิ่มโมเดลของคุณด้วยข้อผิดพลาด: โดยที่คือเวกเตอร์ข้อผิดพลาดที่ไม่รู้จัก ตอนนี้คุณดำเนินการถดถอยใน \ น่าสนใจแน่นอนว่าคุณสามารถใช้ "fused lasso" สำหรับสิ่งนี้เมื่อคุณสามารถประเมินความแน่นอนของการวัดของคุณล่วงหน้าและกำหนดให้น้ำหนักเป็นและเพื่อแก้ปัญหาที่แตกต่างกันเล็กน้อย l1

y=Ax+e
e
yAxe22+λe1
W=diag(wi)
yAxe22+λWe1

ข้อมูลเพิ่มเติมสามารถดูได้ที่นี่: http://statweb.stanford.edu/~candes/papers/GrossErrorsSmallErrors.pdf


คุณเคยลองใช้ตัวอย่าง Glen_b (ถ้าคุณเพิ่มค่าที่สองถัดจากตำแหน่งที่เขาวางไว้) หรือฉันโพสต์
user603

@ user603 ไม่ฉันเพิ่งใช้มันในกรณีที่เป็นประโยชน์มากขึ้นสำหรับการสร้างแบบจำลอง 3 มิติจากภาพกล้อง มันช่วยได้มาก อย่างไรก็ตามบทเรียนที่เรียนรู้คือ: หากคุณมีความเป็นไปได้หลายทางในการกำจัดค่าผิดปกติของคุณให้ใช้มัน
mojovski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.