Outliers ควรได้รับการจัดการอย่างไรในการวิเคราะห์การถดถอยเชิงเส้น


73

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

สถานการณ์นี้นำไปสู่การถดถอยที่เหมาะสมซึ่งได้รับผลกระทบอย่างมากจากการมีค่าผิดปกติที่อาจเป็นข้อมูลที่ผิดพลาด รับดังต่อไปนี้:

  • มันเป็นอันตรายจากทั้งมุมมองทางวิทยาศาสตร์และศีลธรรมในการโยนข้อมูลโดยไม่มีเหตุผลอื่นนอกจาก "ทำให้ดูไม่ดี"

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

การทดสอบทางสถิติหรือกฎของหัวแม่มือสามารถใช้เป็นพื้นฐานสำหรับการยกเว้นค่าผิดปกติในการวิเคราะห์การถดถอยเชิงเส้น?

มีข้อควรพิจารณาเป็นพิเศษสำหรับการถดถอยหลายชั้นหรือไม่?


ที่เกี่ยวข้อง: ตกเป็นเหยื่อของสิ่งนี้: stats.stackexchange.com/questions/37865/ ...... | R howto: stats.stackexchange.com/questions/53227/…
Ciro Santilli 事件改造中心中心法轮功六四事件

คำตอบ:


33

แทนที่จะแยกค่าผิดปกติคุณสามารถใช้วิธีการถดถอยที่มีประสิทธิภาพ ใน R ตัวอย่างเช่นrlm()ฟังก์ชั่นจากแพ็คเกจ MASSสามารถใช้แทนlm()ฟังก์ชั่น วิธีการประมาณค่าสามารถปรับให้มีค่ามากไปหรือน้อยไปกว่าค่าผิดปกติ


หากใช้ฟังก์ชั่น rlm () ฉันจะเห็นค่าสัมประสิทธิ์และการทดสอบแบบที แต่ฉันจะหาค่า f-test, ค่า R-square ได้จากที่นี่? ฉันคิดว่าฉันไม่สามารถนำค่า f-test และ R Square เหล่านี้มาจากผลสรุปอย่างง่าย 'lm' หากฉันถูกต้อง
Eric

1
สำหรับการถดถอยที่มีประสิทธิภาพสมมติฐานที่อยู่เบื้องหลังการทดสอบ F ไม่เป็นที่พอใจอีกต่อไปและสามารถกำหนด R ^ 2 ได้หลายวิธีซึ่งไม่เทียบเท่ากัน ดูstats.idre.ucla.edu/stata/faq/…สำหรับการสนทนาเกี่ยวกับเรื่องนี้สำหรับ Stata
Rob Hyndman

ดูเพิ่มเติมstats.stackexchange.com/a/68367/159
Rob Hyndman

แต่ฉันพบคำสั่งที่เรียกว่า f.robftest จากแพ็คเกจ sfsmisc ซึ่งให้ผลการทดสอบ f ฉันสามารถใช้ผลลัพธ์นี้เพื่อกำหนดสถิติการทดสอบ f สำหรับ rlm ได้หรือไม่ นอกจากนี้ดูเหมือนว่าฉันจะได้ R Square ด้วยการใส่ค่าลงในสูตรทางคณิตศาสตร์ R Square เช่น 1 - sum (ส่วนที่เหลือ (rlm (y ~ x)) ^ 2) / sum ((y-mean (y)) ^ 2) . สำหรับค่า t-test เพื่อตรวจสอบความสำคัญของสัมประสิทธิ์ฉันได้รับค่า t-test จากข้อมูลสรุป (rlm (y ~ x)) ที่ฉันเปรียบเทียบกับค่า t จากค่าความเชื่อมั่น 95% หรือมากกว่านั้น ฉันสามารถใช้วิธีการเหล่านี้ได้ไหม
Eric

22

บางครั้งค่าผิดปกติเป็นข้อมูลที่ไม่ดีและควรได้รับการยกเว้นเช่นการพิมพ์ผิด บางครั้งพวกเขาคือ Wayne Gretzky หรือ Michael Jordan และควรได้รับการเก็บรักษาไว้

วิธีการตรวจหาค่ารวมถึง:

Univariate -> boxplot นอกช่วง 1.5 ควอไทล์เป็นสิ่งที่เกินขอบเขต

Bivariate -> scatterplot พร้อมวงรีความมั่นใจ นอกวงรีความเชื่อมั่น 95% เป็นค่าผิดปกติ

หลายตัวแปร -> ระยะทาง Mahalanobis D2

ทำเครื่องหมายข้อสังเกตเหล่านั้นเป็นค่าผิดปกติ

รันการถดถอยโลจิสติก (บน Y = IsOutlier) เพื่อดูว่ามีรูปแบบที่เป็นระบบหรือไม่

ลบคนที่คุณสามารถแสดงให้เห็นว่าพวกเขาไม่ได้เป็นตัวแทนของประชากรย่อยใด ๆ


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

1
เห็นด้วยกับสิ่งที่กล่าวมาที่นี่ส่วนใหญ่ แต่ฉันต้องการเพิ่มความระมัดระวังเพิ่มเติมว่า " นอกช่วง 1.5 เท่าระหว่างควอไทล์เป็นค่าผิดปกติ " เป็นแบบแผนไม่ใช่กฎกับรากฐานทางทฤษฎีใด ๆ ไม่ควรใช้เป็นเหตุผลในการยกเว้นจุดข้อมูล
mkt

20

ฉันคิดว่ามีบางอย่างที่ต้องบอกว่าไม่รวมค่าผิดปกติ บรรทัดการถดถอยควรสรุปข้อมูล เนื่องจากการใช้ประโยชน์คุณสามารถมีสถานการณ์ที่ 1% ของจุดข้อมูลของคุณมีผลต่อความชัน 50%

มันอันตรายจากมุมมองทางด้านศีลธรรมและวิทยาศาสตร์เท่านั้นหากคุณไม่บอกใครเลยว่าคุณแยกคนผิด ตราบใดที่คุณชี้ให้เห็นคุณสามารถพูดได้:

"เส้นถดถอยนี้เหมาะสมกับข้อมูลส่วนใหญ่ค่อนข้างดี 1% ของเวลาที่ค่าจะมาพร้อมที่ไม่เหมาะกับแนวโน้มนี้ แต่เดี๋ยวก่อนมันเป็นโลกที่บ้าไม่มีระบบที่สมบูรณ์แบบ"


1
"เฮ้มันเป็นโลกที่บ้าไม่มีระบบที่สมบูรณ์แบบ" +1 สำหรับเพื่อนของฉัน! :)
bartektartanus

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

10

sharpie,

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

ฉันคิดว่าวิธีที่ดีที่สุดในการเริ่มต้นคือการถามว่าผู้ผิดปกติมีเหตุผลหรือไม่โดยเฉพาะอย่างยิ่งเมื่อได้รับตัวแปรอื่น ๆ ที่คุณรวบรวมไว้ ตัวอย่างเช่นเป็นจริงหรือไม่ที่คุณมีผู้หญิง 600 ปอนด์ในการศึกษาของคุณซึ่งคัดเลือกมาจากคลีนิกการบาดเจ็บกีฬา หรือไม่แปลกที่บุคคลนั้นจะมีรายชื่อ 55 ปีหรือมีประสบการณ์การทำงานเมื่ออายุเพียง 60 ปี? และอื่น ๆ หวังว่าคุณจะมีพื้นฐานที่เหมาะสมสำหรับการทิ้งพวกเขาหรือรับคอมไพเลอร์ข้อมูลเพื่อตรวจสอบบันทึกของคุณอีกครั้ง

ฉันจะแนะนำวิธีการถดถอยที่มีประสิทธิภาพและการรายงานการสังเกตการณ์ที่ลดลงอย่างโปร่งใสตามที่ Rob และ Chris แนะนำตามลำดับ

หวังว่านี่จะช่วยได้เบรนเดน


6

ฉันได้เผยแพร่วิธีการระบุค่าผิดปกติในการถดถอยแบบไม่เชิงเส้นและยังสามารถใช้เมื่อปรับโมเดลเชิงเส้น

HJ Motulsky และ RE Brown การตรวจสอบค่าผิดปกติเมื่อข้อมูลที่เหมาะสมกับการถดถอยแบบไม่เชิงเส้น - วิธีการใหม่บนพื้นฐานของการถดถอยแบบไม่เชิงเส้นที่แข็งแกร่งและอัตราการค้นพบที่ผิดพลาด BMC ชีวสารสนเทศศาสตร์ 2006, 7: 123


5

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

คนแรกคือระยะทางของแม่ครัว คุณสามารถหาคำอธิบายที่ดีงามของมันที่วิกิพีเดีย: http://en.wikipedia.org/wiki/Cook%27s_distance

ระยะทางที่สูงกว่าของ Cook คือยิ่งมีอิทธิพลมากขึ้น (ส่งผลต่อสัมประสิทธิ์การถดถอย) การสังเกตคือ จุดตัดทั่วไปเพื่อพิจารณาลบการสังเกตคือระยะทางของ Cook = 4 / n (n คือขนาดตัวอย่าง)

ที่สองคือ DFFITS ซึ่งยังได้รับการคุ้มครองอย่างดีจากวิกิพีเดีย: http://en.wikipedia.org/wiki/DFFITS จุดตัดทั่วไปเพื่อพิจารณาการลบการสังเกตคือค่า DFFITS 2 ครั้ง sqrt (k / n) โดยที่ k คือจำนวนของตัวแปรและ n คือขนาดตัวอย่าง

มาตรการทั้งสองมักจะให้ผลลัพธ์ที่คล้ายกันซึ่งนำไปสู่การเลือกการสังเกตที่คล้ายคลึง


3

ขยะใน, ขยะออก ....

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

นี่คือสัญญาณรบกวนบางประเภทในข้อมูลอินพุตขยะที่ไม่เหมาะสมกับการแจกแจงแบบปกติ:

  • ตัวเลขที่หายไปหรือเพิ่มด้วยข้อมูลที่ป้อนด้วยมือ (ปิดด้วยปัจจัย 10 หรือมากกว่า)
  • หน่วยที่แปลงไม่ถูกต้องหรือไม่ถูกต้อง (กรัมเทียบกิโลกรัมกับปอนด์; เมตร, ฟุต, ไมล์, กิโลเมตร) อาจเกิดจากการรวมชุดข้อมูลหลายชุด (หมายเหตุ: Mars Orbiter คิดว่าจะหายไปในลักษณะนี้ดังนั้นแม้แต่นักวิทยาศาสตร์จรวดของนาซ่า ความผิดพลาด)
  • การใช้รหัสเช่น 0, -1, -99999 หรือ 99999 เพื่อหมายถึงบางสิ่งที่ไม่ใช่ตัวเลขเช่น "ไม่เกี่ยวข้อง" หรือ "คอลัมน์ไม่พร้อมใช้งาน" และทิ้งสิ่งนี้ลงในโมเดลเชิงเส้นพร้อมกับข้อมูลที่ถูกต้อง

การเขียนข้อมูลจำเพาะสำหรับ "ข้อมูลที่ถูกต้อง" สำหรับแต่ละคอลัมน์จะช่วยให้คุณติดแท็กข้อมูลที่ไม่ถูกต้องได้ ตัวอย่างเช่นความสูงของบุคคลในหน่วยเซนติเมตรควรอยู่ในช่วงที่ระบุว่า 100-300 ซม. หากคุณพบ 1.8 สำหรับความสูงที่พิมพ์ผิดและในขณะที่คุณสามารถสันนิษฐานได้ว่าเป็น 1.8m และปรับเปลี่ยนเป็น 180 - ฉันว่ามันมักจะปลอดภัยกว่าที่จะโยนออกมาและดีที่สุดในเอกสารมากที่สุดเท่าที่จะทำได้



0

การทดสอบทางสถิติที่จะใช้เป็นพื้นฐานสำหรับการยกเว้น: - ส่วนที่เหลือมาตรฐาน - สถิติการใช้ประโยชน์ - ระยะทางของ Cook ซึ่งเป็นการรวมกันของทั้งสองข้างต้น

จากประสบการณ์การยกเว้นควรถูก จำกัด ในกรณีของการป้อนข้อมูลที่ไม่ถูกต้อง การเปลี่ยนค่าผิดปกติในตัวแบบการถดถอยเชิงเส้นเป็นวิธีการประนีประนอมที่ดีมาก Rob นำเสนอแอพพลิเคชั่นนี้ใน R ตัวอย่างที่ดีอยู่ที่นี่: http://www.ats.ucla.edu/stat/r/dae/rreg.htm

หากจำเป็นต้องมีการยกเว้น 'หนึ่งกฎของหัวแม่มือ' เกี่ยวข้องกับสถิติ Dfbeta (วัดการเปลี่ยนแปลงในการประมาณการเมื่อลบค่าผิดปกติ) เช่นว่าถ้าค่าสัมบูรณ์ของสถิติ DfBeta เกิน 2 / sqrt (n) จะทำให้การลบ ค่าผิดปกติ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.