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


17

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


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

ขอบคุณสำหรับการชี้ให้เห็นว่า ฉันจะค้นหาเทคนิคเหล่านั้นและดูว่าพวกเขาทำงานได้ดีกับข้อมูลของฉัน!
Oliver

1
ตรวจสอบหน้านี้ในการถดถอยการลบวินิจฉัยใน R: stat.ethz.ch/R-manual/R-patched/library/stats/html/...
เบน Ogorek

.... และนี่เป็นคำตอบสำหรับภาพประกอบว่าทำไมพวกเขาถึงไม่สามารถพึ่งพาได้มากกว่าหนึ่งครั้ง
user603

ความคิดที่ดีข้างต้นเกี่ยวกับแนวคิดของการตั้งค่าสถานะผิดปกติ บางครั้งฉันได้เขียนบทความเกี่ยวกับแนวคิดของตัวกรองการสูญเสียข้อมูลในการทำเครื่องหมายผิดปกติ หวังว่านี่จะช่วยในการขยายความคิดที่นำเสนอข้างต้น เชื่อมโยงไปยังบทความ: datascience.com/blog/python-anomaly-detection
Pramit

คำตอบ:


25

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

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

ด้านล่างนี้ฉันให้ตัวอย่างเชิงตัวเลขอย่างง่าย ๆ ซึ่งกฎที่คุณเสนอแบ่งไว้แล้วฉันเสนอทางเลือกที่ปลอดภัยและเป็นที่ยอมรับมากขึ้น แต่ก่อนหน้านี้ฉันจะอธิบายก) สิ่งที่ผิดกับวิธีที่คุณเสนอและข) สิ่งที่ต้องการ ทางเลือกที่จะเป็น

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

โดยสรุปวิธีที่ง่ายที่สุดวิธีหนึ่งในการตรวจสอบค่าผิดปกติคือใช้แนวคิดทั่วไปที่คุณแนะนำ (ระยะทางจากตำแหน่งและมาตราส่วน) แต่แทนที่ตัวประมาณที่คุณใช้ (เว้นค่าเฉลี่ยหนึ่งค่า, SD) โดยค่าที่คาดเดาได้ - เช่นค่าประมาณ ออกแบบมาให้มีความอ่อนไหวต่อการถูกครอบงำโดยผู้ผิดกฎหมาย

ลองพิจารณาตัวอย่างนี้ซึ่งฉันเพิ่ม 3 ค่าผิดพลาดไปที่การสังเกตของแท้ 47 รายการซึ่งดึงมาจากค่าปกติ 0,1:

n    <- 50
set.seed(123)  # for reproducibility
x    <- round(rnorm(n,0,1), 1)
x[1] <- x[1]+1000
x[2] <- x[2]+10
x[3] <- x[3]+10

รหัสด้านล่างนี้คำนวณดัชนีการอ้างอิงโดยอ้างอิงจากค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐาน (เช่นวิธีที่คุณแนะนำ)

out_1 <- rep(NA,n)
for(i in 1:n){  out_1[i] <- abs( x[i]-mean(x[-i]) )/sd(x[-i])  }

และรหัสนี้สร้างพล็อตที่คุณเห็นด้านล่าง

plot(x, out_1, ylim=c(0,1), xlim=c(-3,20))
points(x[1:3], out_1[1:3], col="red", pch=16)

Image 1 แสดงค่าของดัชนีความห่างไกลของคุณเป็นฟังก์ชันของค่าของการสังเกต (ห่างไกลจากค่าผิดปกติอยู่นอกช่วงของพล็อตนี้ แต่อีกสองแสดงเป็นจุดสีแดง) ที่คุณสามารถดูยกเว้นมากที่สุดคนหนึ่งที่รุนแรงดัชนี outlyingness สร้างเป็นที่คุณแนะนำจะล้มเหลวที่จะเปิดเผยค่าผิดปกติ: แน่นอนที่สองและสาม (จ้า) ค่าผิดปกติในขณะนี้ยังมีค่า (ดัชนี outlyingness ของคุณ) มีขนาดเล็กกว่าทั้งหมดการสังเกตุที่แท้จริง! ... ภายใต้แนวทางที่คุณแนะนำใครจะรักษาค่าผิดปกติสองอย่างนี้ไว้ในชุดการสังเกตของแท้ทำให้คุณใช้การสังเกต 49 อย่างที่เหลือราวกับว่าพวกเขามาจากกระบวนการที่เป็นเนื้อเดียวกัน ประมาณการของค่าเฉลี่ยและ SD บนพื้นฐานเหล่านี้ 49 จุดข้อมูลที่ 0.45 และ 2.32 คำอธิบายที่ดีมากของทั้งสองเป็นส่วนหนึ่งของตัวอย่างของคุณ!

ภาพที่ 2

xผมX

O(xผม,X)=|xผม-med(X)|บ้า(X)

med(X)Xบ้า(X)

ใน R ดัชนีความห่างไกลอันดับสองนี้สามารถคำนวณได้เป็น:

out_2 <- abs( x-median(x) )/mad(x)

และพล็อต (เหมือนก่อน) โดยใช้:

plot(x, out_2, ylim=c(0,15), xlim=c(-3,20))
points(x[1:3], out_2[1:3], col="red", pch=16)

ภาพที่ 2

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

|xผม-med(X)|บ้า(X)>3.5

เป็นค่าผิดปกติ ในตัวอย่างข้างต้นการใช้กฎนี้จะนำคุณไปสู่การตั้งค่าสถานะการสังเกตอย่างถูกต้อง 1,2 และ 3 การปฏิเสธสิ่งเหล่านี้ค่าเฉลี่ยและค่า sd ของการสังเกตที่เหลืออยู่คือ 0.021 และ 0.93 โดยละเอียดซึ่งอธิบายส่วนของแท้ได้ดีกว่ามาก !


2
+1 แม้จะมีประโยคแรกซึ่งคุณขัดแย้งกันทันที (ข้อเสนอของ OP นั้นสมเหตุสมผลเมื่อมีการสันนิษฐานว่าเกินหนึ่งครั้งการคัดค้านของคุณเกี่ยวข้องกับปัญหาเกี่ยวกับกระบวนการนี้เมื่อมีการละเมิดสมมติฐาน)
whuber

1
ขอขอบคุณ. ในระหว่างนี้ฉันได้ลบความคิดเห็นก่อนหน้าของฉันโดยคาดว่ามันจะล้าสมัยหลังจากการแก้ไขของคุณ
whuber

3
ปรากฏการณ์ที่หลายค่าผิดปกติทำให้เดียวขอบเขตการตรวจสอบตาบอดใด ๆ ของพวกเขามักจะเรียกว่ากำบัง สิ่งนี้อาจช่วยให้ผู้คนค้นหาข้อมูลเพิ่มเติมที่เกี่ยวข้องกับปัญหา
Glen_b -Reinstate Monica

1
@ user603 ทำได้ดีมากสร้างสถานการณ์ตัวอย่าง แต่ฉันคิดว่าคุณกำลังขว้างลูกน้อยออกไปพร้อมกับอาบน้ำ การวินิจฉัยการลบการถดถอยนั้นไม่สมบูรณ์แบบ แต่สามารถนำไปใช้ได้อย่างกว้างขวางและได้ผ่านการทดสอบตามเวลา การตั้งค่ามัธยฐานนั้นดี แต่ฉันสงสัยว่าคุณจะขยายแนวทางของคุณไปยังแบบจำลองที่มีโอกาสเป็นไปได้ที่ซับซ้อนมากขึ้นอย่างไร
Ben Ogorek

2
+6, นี่คือคำตอบที่ดีมาก - อธิบายอย่างชัดเจน & ละเอียด, แสดงด้วยรหัส, ตัวเลข & สูตร ฉันปรับการจัดรูปแบบโค้ดเล็กน้อยเพื่อให้อ่านง่ายขึ้นเล็กน้อย หากคุณไม่ชอบให้ย้อนกลับด้วยคำขอโทษของฉัน
gung - Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.