ความยากลำบากในการใช้ฮิสโตแกรมเพื่ออนุมานรูปร่าง
แม้ว่าฮิสโทแกรมมักจะมีประโยชน์และบางครั้งก็มีประโยชน์ แต่ก็อาจทำให้เข้าใจผิดได้ รูปลักษณ์ของพวกเขาสามารถเปลี่ยนแปลงได้ค่อนข้างมากเมื่อมีการเปลี่ยนแปลงตำแหน่งของขอบเขตถังขยะ
ปัญหานี้เป็นที่ทราบกันมานานแล้วถึงแม้ว่าอาจจะไม่ครอบคลุมเท่าที่ควร - คุณไม่ค่อยเห็นว่ามีการพูดถึงในการสนทนาระดับประถม (แม้ว่าจะมีข้อยกเว้น)
ตัวอย่างเช่น Paul Rubin [1] พูดแบบนี้: " เป็นที่ทราบกันดีว่าการเปลี่ยนจุดสิ้นสุดในฮิสโตแกรมสามารถเปลี่ยนรูปลักษณ์ของมันได้อย่างมีนัยสำคัญ " .
ฉันคิดว่ามันเป็นปัญหาที่ควรพูดคุยกันอย่างกว้างขวางยิ่งขึ้นเมื่อแนะนำฮิสโตแกรม ฉันจะยกตัวอย่างและการอภิปราย
เหตุใดคุณจึงควรระมัดระวังการใช้ฮิสโตแกรมเดี่ยวของชุดข้อมูล
ดูฮิสโตแกรมทั้งสี่เหล่านี้:
นั่นคือฮิสโตแกรมที่ดูแตกต่างกันสี่แบบ
หากคุณวางข้อมูลต่อไปนี้ใน (ฉันใช้ R ที่นี่):
Annie <- c(3.15,5.46,3.28,4.2,1.98,2.28,3.12,4.1,3.42,3.91,2.06,5.53,
5.19,2.39,1.88,3.43,5.51,2.54,3.64,4.33,4.85,5.56,1.89,4.84,5.74,3.22,
5.52,1.84,4.31,2.01,4.01,5.31,2.56,5.11,2.58,4.43,4.96,1.9,5.6,1.92)
Brian <- c(2.9, 5.21, 3.03, 3.95, 1.73, 2.03, 2.87, 3.85, 3.17, 3.66,
1.81, 5.28, 4.94, 2.14, 1.63, 3.18, 5.26, 2.29, 3.39, 4.08, 4.6,
5.31, 1.64, 4.59, 5.49, 2.97, 5.27, 1.59, 4.06, 1.76, 3.76, 5.06,
2.31, 4.86, 2.33, 4.18, 4.71, 1.65, 5.35, 1.67)
Chris <- c(2.65, 4.96, 2.78, 3.7, 1.48, 1.78, 2.62, 3.6, 2.92, 3.41, 1.56,
5.03, 4.69, 1.89, 1.38, 2.93, 5.01, 2.04, 3.14, 3.83, 4.35, 5.06,
1.39, 4.34, 5.24, 2.72, 5.02, 1.34, 3.81, 1.51, 3.51, 4.81, 2.06,
4.61, 2.08, 3.93, 4.46, 1.4, 5.1, 1.42)
Zoe <- c(2.4, 4.71, 2.53, 3.45, 1.23, 1.53, 2.37, 3.35, 2.67, 3.16,
1.31, 4.78, 4.44, 1.64, 1.13, 2.68, 4.76, 1.79, 2.89, 3.58, 4.1,
4.81, 1.14, 4.09, 4.99, 2.47, 4.77, 1.09, 3.56, 1.26, 3.26, 4.56,
1.81, 4.36, 1.83, 3.68, 4.21, 1.15, 4.85, 1.17)
จากนั้นคุณสามารถสร้างพวกเขาเอง:
opar<-par()
par(mfrow=c(2,2))
hist(Annie,breaks=1:6,main="Annie",xlab="V1",col="lightblue")
hist(Brian,breaks=1:6,main="Brian",xlab="V2",col="lightblue")
hist(Chris,breaks=1:6,main="Chris",xlab="V3",col="lightblue")
hist(Zoe,breaks=1:6,main="Zoe",xlab="V4",col="lightblue")
par(opar)
ตอนนี้ดูแผนภูมิเส้นนี้:
x<-c(Annie,Brian,Chris,Zoe)
g<-rep(c('A','B','C','Z'),each=40)
stripchart(x~g,pch='|')
abline(v=(5:23)/4,col=8,lty=3)
abline(v=(2:5),col=6,lty=3)
(ถ้ามันยังไม่ชัดเจนเห็นสิ่งที่เกิดขึ้นเมื่อคุณลบข้อมูลของแอนนี่จากแต่ละชุด: head(matrix(x-Annie,nrow=40))
)
ข้อมูลถูกเลื่อนไปทางซ้ายทุกครั้งเพียง 0.25
แต่ความประทับใจที่เราได้รับจากฮิสโทแกรม - ความเบ้ด้านขวาชุดเบ้ซ้ายและบิโมดัลนั้นแตกต่างกันอย่างสิ้นเชิง ความประทับใจของเราได้ทั้งหมดภายใต้สถานที่ตั้งของถังแรกกำเนิดเทียบกับขั้นต่ำ
ดังนั้นไม่ใช่แค่ 'เอ็กซ์โปเนนเชียล' และ 'ไม่เอ็กซ์โปเนนเชียล' แต่ 'ขวาเบ้' 'กับ' เบ้ซ้าย 'หรือ' bimodal 'vs' เครื่องแบบ 'เพียงแค่ย้ายตำแหน่งที่ถังขยะของคุณเริ่มต้น
แก้ไข: หากคุณเปลี่ยนความกว้างของช่องรับสัญญาณคุณจะได้รับสิ่งนี้เกิดขึ้น:
นั่นเป็นเหมือนกัน 34 ข้อสังเกตในทั้งสองกรณีเพียงจุดพักที่แตกต่างกันเป็นหนึ่งเดียวกับ binwidthและอื่น ๆ ที่มี binwidth 0.80.810.8
x <- c(1.03, 1.24, 1.47, 1.52, 1.92, 1.93, 1.94, 1.95, 1.96, 1.97, 1.98,
1.99, 2.72, 2.75, 2.78, 2.81, 2.84, 2.87, 2.9, 2.93, 2.96, 2.99, 3.6,
3.64, 3.66, 3.72, 3.77, 3.88, 3.91, 4.14, 4.54, 4.77, 4.81, 5.62)
hist(x,breaks=seq(0.3,6.7,by=0.8),xlim=c(0,6.7),col="green3",freq=FALSE)
hist(x,breaks=0:8,col="aquamarine",freq=FALSE)
ดีใช่มั้ย
ใช่ข้อมูลเหล่านั้นถูกสร้างขึ้นโดยเจตนาเพื่อที่จะทำเช่นนั้น ... แต่บทเรียนนั้นชัดเจน - สิ่งที่คุณคิดว่าคุณเห็นในฮิสโตแกรมอาจไม่ใช่การแสดงผลที่แม่นยำของข้อมูล
พวกเราทำอะไรได้บ้าง?
ฮิสโทแกรมมีการใช้กันอย่างแพร่หลายสะดวกในการขอรับและคาดหวังในบางครั้ง เราจะทำอย่างไรเพื่อหลีกเลี่ยงหรือบรรเทาปัญหาดังกล่าว
ดังที่Nick Cox ชี้ให้เห็นในการแสดงความคิดเห็นกับคำถามที่เกี่ยวข้อง : กฎง่ายๆควรเป็นรายละเอียดที่แข็งแกร่งต่อความแปรปรวนของความกว้างของถังขยะและที่มาของถังขยะมีแนวโน้มที่จะเป็นของแท้ รายละเอียดที่เปราะบางดังกล่าวมีแนวโน้มที่จะปลอมหรือจิ๊บจ๊อย
อย่างน้อยที่สุดคุณควรทำฮิสโตแกรมที่ความกว้างหรือความกว้างของ bin-origins ที่ต่างกัน
หรือตรวจสอบการประมาณความหนาแน่นของเคอร์เนลที่แบนด์วิดท์ที่ไม่กว้างเกินไป
วิธีการหนึ่งที่อื่น ๆ ที่ช่วยลดความเด็ดขาดของ histograms จะเฉลี่ยขยับ histograms ,
(เป็นหนึ่งในชุดข้อมูลล่าสุด) แต่ถ้าคุณใช้ความพยายามนั้นฉันคิดว่าคุณอาจใช้การประมาณความหนาแน่นของเคอร์เนลด้วย
หากฉันกำลังทำฮิสโตแกรม (ฉันใช้พวกเขาทั้งๆที่ตระหนักถึงปัญหาอย่างรุนแรง) ฉันมักจะชอบใช้ถังขยะมากกว่าค่าเริ่มต้นของโปรแกรมโดยทั่วไปมักจะให้และบ่อยครั้งที่ฉันชอบที่จะทำฮิสโตแกรมหลาย ๆ (และบางครั้งเป็นต้นกำเนิด) หากพวกเขาสอดคล้องกันอย่างสมเหตุสมผลในการแสดงผลคุณไม่น่าจะมีปัญหานี้และหากพวกเขาไม่สอดคล้องกันคุณรู้ว่าดูอย่างระมัดระวังมากขึ้นอาจลองประเมินความหนาแน่นของเคอร์เนล, CDF เชิงประจักษ์พล็อต QQ หรืออะไรบางอย่าง คล้ายคลึงกัน
ในขณะที่ฮิสโทแกรมอาจทำให้เข้าใจผิดบางครั้งบ็อกซ์พล็อตมีแนวโน้มที่จะเกิดปัญหาดังกล่าว ด้วยกล่องสี่เหลี่ยมคุณไม่มีแม้แต่ความสามารถในการพูดว่า "ใช้ถังขยะมากขึ้น" ดูชุดข้อมูลสี่ชุดที่แตกต่างกันมากในโพสต์นี้ทุกชุดมีบ็อกซ์บ็อกซ์แบบสมมาตรเหมือนกันแม้ว่าชุดข้อมูลชุดใดชุดหนึ่งจะค่อนข้างเอียง
[1]: Rubin, Paul (2014) "Histogram Abuse!",
โพสต์บล็อก, หรือในโลก OB ,
ลิงก์ 23 มกราคม 2014 ... (ลิงก์สำรอง)