Труднощі з використанням гістограм для виведення форми
Хоча гістограми часто зручні, а іноді й корисні, вони можуть вводити в оману. Їх зовнішній вигляд може досить сильно змінитись із змінами в місцях розташування кордонів.
Ця проблема давно відома *, хоча, можливо, не настільки широко, як це має бути - ви рідко зустрічаєте її в обговоренні на початковому рівні (хоча є винятки).
* наприклад, Пол Рубін [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.
Однак враження, які ми отримуємо від гістограм - правий косий, рівномірний, лівий косий та бімодальний - були абсолютно різними. Наше враження цілком регулювалося розташуванням першого джерела сміття відносно мінімального.
Тож не просто "експоненціальний" проти "не дуже-справжній", але "правий косий" проти "лівий косий" або "бімодальний" проти "рівномірний", просто рухаючись там, де починаються ваші бункери.
Редагувати: Якщо ви змінюєте ширину binwidth, ви можете отримати такі речі, як це відбувається:
10,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)
Ніфт, так?
Так, ці дані були навмисно створені для цього ... але урок зрозумілий - те, що ви думаєте, що ви бачите на гістограмі, може не мати особливо точного враження від даних.
Що ми можемо зробити?
Гістограми широко використовуються, часто зручні для отримання та іноді очікувані. Що ми можемо зробити, щоб уникнути або пом'якшити подібні проблеми?
Як зауважує Нік Кокс у коментарі до пов’язаного питання : Основне правило завжди повинно бути таким, що деталі, надіслані різницями в ширині відрізків та породженні відходів, можуть бути справжніми; деталі, крихкі до таких, ймовірно, будуть хибними або тривіальними .
Принаймні, завжди слід робити гістограми з кількома різними ширинами бін або джерелами біна, або бажано обома.
Крім того, перевірте оцінку щільності ядра на не надто широкій смузі пропускання.
Ще один підхід, що зменшує довільність гістограм, - це усереднені зміщені гістограми ,
(це один із останніх наборів даних), але якщо ви докладете цих зусиль, я думаю, ви також можете використовувати оцінку щільності ядра.
Якщо я роблю гістограму (використовую їх, незважаючи на те, що гостро знаю про проблему), я майже завжди вважаю за краще використовувати значно більше бункерів, ніж типові програмні настройки за замовчуванням, як правило, і дуже часто мені подобається робити декілька гістограм із різною шириною скриньки. (а іноді і походження). Якщо вони досить послідовні у враженні, ви, швидше за все, не матимете цієї проблеми, і якщо вони не узгоджуються, ви знаєте уважніше, можливо, спробуйте оцінити щільність ядра, емпіричний CDF, графік QQ або щось подібне подібний.
Хоча гістограми іноді можуть вводити в оману, осередки ще більше схильні до таких проблем; за допомогою коробки ви навіть не маєте можливості сказати "використовувати більше бункерів". Дивіться чотири дуже різні набори даних у цій публікації , всі з однаковими, симетричними коробками, навіть якщо один із наборів даних є досить перекошеним.
[1]: Рубін, Пол (2014) "Зловживання гістограмою!",
Публікація в блозі АБО у світі ОВ , 23 січня 2014
посилання ... (альтернативне посилання)