Я реализую различные алгоритмы, чтобы оценить лучшее количество бинов для использования для гистограмм. Большинство из тех, что я реализую, описаны на странице «Гистограмма» в Википедии в разделе « Количество бинов и ширина » *.
Я застрял в проблеме с формулой Доана:
1 + log(n) + log(1 + kurtosis(data) * sqrt(n / 6.))
где n
размер данных.
Проблема в том, когда эксцесс отрицателен и n >> 1
потому что аргумент аргумента log
становится отрицательным.
* (эта страница изменилась с момента публикации, ссылка отредактирована так, чтобы указывать на страницу, которая была на момент публикации)
Ответы:
Этот ответ претерпел значительные изменения, поскольку я исследую страницу википедии. Я оставил ответы в значительной степени, как они были, но добавили к ним, так что в настоящее время это формирует прогресс понимания; последние части, где лучшая информация.
Краткий ответ: страница википедии - и формула ОП, которая, кажется, была одинаковой, - просто неверны, по крайней мере, по трем различным причинам. Я оставлю свое первоначальное обсуждение (в котором предполагалось, что ОП и Википедия правильно поняли), поскольку это объясняет некоторые проблемы. Лучшее обсуждение следует позже. Краткий совет: просто забудь Доана. Если вы должны использовать это, используйте то, что сейчас говорит Википедия (я исправил это).
Я считаю, что формула должна относиться к избыточному эксцессу; моя причина в том, что он изменяет формулу для нормальных данных, чтобы учесть ненормальные данные, так что вы ожидаете, что она будет воспроизводить неизмененную в нормальном состоянии. Это происходит, если вы используете избыточный эксцесс.
Это, однако, поднимает проблему, заключающуюся в том, что термин в журнале может быть отрицательным при больших выборках (действительно, можно быть при довольно малых ). Я бы посоветовал не использовать его с отрицательным избыточным эксцессом (в любом случае я бы никогда не использовал его сверх унимодальности; как только вещи станут мультимодальными, вы хотите применить идею избыточного эксцессиса к каждому режиму, а не сглаживать их!), Хотя и в легких случаях ( избыточный эксцесс (чуть меньше 0) и скромные размеры выборки не будут большой проблемой.н≤0 n
Я бы также предположил, что в любом случае он даст слишком мало контейнеров при больших размерах выборки, даже если он работает как задумано.
Вы можете найти эту статью (от обычного CVer Rob Hyndman ):
http://www.robjhyndman.com/papers/sturges.pdf
некоторый интерес. Если аргумент Стерджеса неверен, формула Доана имеет ту же проблему ... как Роб ясно отмечает в статье.
В этой статье (и в этом ответе ) он отдает дань правилу Фридмана-Диакониса. В документе он также указывает на подход, упомянутый Мэттом Вандом (он ссылается на рабочий документ, который, кажется, не находится в сети, но следующий документ доступен, если у вас есть доступ):
http://www.jstor.org/discover/10.2307/2684697
[Изменить: на самом деле ссылка на рабочий документ находится на странице citeseer ]
Этот подход включает в себя приблизительную оценку конкретных функционалов для получения приблизительно оптимальной (с точки зрения средней интегрированной квадратичной ошибки, MISE) ширины бина для оценки базовой плотности. Хотя они работают хорошо и дают намного больше контейнеров, чем Стерджес или Доан в целом, иногда я все еще предпочитаю использовать больше контейнеров, хотя обычно это очень хорошая первая попытка.
Честно говоря, я не знаю, почему подход Вэнда (или, по крайней мере, правило Фредмана Дьякониса) не везде применяется по умолчанию.
R, по крайней мере, предлагает расчет числа бинов по Фридману-Диаконису:
Видеть
?nclass.FD
Лично для меня это слишком мало мусорных ведер в первых двух случаях по крайней мере; Я бы удвоил оба из них, несмотря на то, что он может быть немного шумнее, чем оптимальный. Поскольку n становится большим, я думаю, что в большинстве случаев это очень хорошо.
Изменить 2:
Я решил исследовать проблему асимметрии и куртоза, на которую @PeterFlom справедливо выразил недоумение.
Я только что взглянул на документ Doane, связанный с (я читал его раньше…, но это было почти 30 лет назад) - в нем вообще не упоминается эксцесс, только асимметрия.
Doane в фактической формуле:Ke=log2(1+g1σg1)
где - количество добавленных бинов, - асимметрия 3-го момента. [Ну, на самом деле Doane, следуя довольно распространенному использованию времени, использует для подписи (!) Асимметрии 3-х моментов (происхождение этого особенно неоправданного злоупотребления нотацией довольно старое, и я не собираюсь продолжать это, за исключением того, чтобы сказать, что это, к счастью, теперь появляется гораздо реже).]g 1 √Ke g1 b1−−√
Теперь в нормальном состоянии, (хотя это приближение довольно плохое, пока n не превысит 100; Doane использует первую форму)σg1=6(n−2)(n+1)(n+3)−−−−−−−−√≈6n−−√
Тем не менее, кажется, что на этом пути кто-то пытался приспособить его к куртозу (в то время, когда я пишу эту Википедию, он , к примеру, с точки зрения куртоза , и я не думаю, что он это придумал) - но есть очевидная причина полагать, что формула просто неверна (обратите внимание, что используемая стандартная ошибка - это последнее приближение для асимметрии, которую я дал выше). Я думаю, что я видел такое использование эксцесса в нескольких местах, кроме Википедии, но помимо того, что он не был в статье Доана, его нет ни в статье Скотта, ни в статье Хиндмана, на которую я указываю, ни в статье Вэнда. Однако, похоже, что оно откуда-то пришло (то есть я уверен, что оно не оригинально для Википедии), потому что Doane не имеет приближения кσg1 , Похоже, с ним играли несколько раз, прежде чем он там оказался; Мне было бы интересно, если бы кто-нибудь выследил это.
Мне действительно кажется, что аргумент Доана должен с радостью распространиться на эксцесс, но нужно будет использовать правильную стандартную ошибку .
Однако, поскольку Доан полагается на аргументы Стерджеса и Стерджеса, похоже, ошибочны, возможно, все предприятие обречено. В любом случае я отредактировал страницу обсуждения гистограммы в Википедии, отметив ошибку.
---
Изменить 3: я исправил страницу википедии (но я позволил себе принять абсолютное значение асимметрии, в противном случае оригинальная формула Доана не может быть использована для левосторонних распределений в том виде, в котором она стояла - ясно, для числа бинов знак асимметрия несущественна). Строго говоря, я должен был представить формулу в ее первоначальной (неправильной) форме, а затем объяснить, почему это не имеет смысла, но я думаю, что это проблематично по нескольким причинам - не в последнюю очередь, что у людей будет искушение просто скопировать формулу и проигнорировать объяснение. Я полагаю, что это на самом деле охватывает первоначальные намерения Доана В любом случае это огромное улучшение по сравнению с глупостью, которая была в оригинале. (Пожалуйста, любой, кто может получить доступ к оригинальному документу, взгляните на него и какb1−−√ определите и проверьте мои изменения в википедии, чтобы убедиться, что это разумно - были как минимум три неправильные вещи: эксцесс, стандартная ошибка и неправильная база журналов, плюс небольшая ошибка самого Доана.)
источник
Мера эксцесса, определенная в терминах второго и четвертого моментов, никогда не бывает отрицательной ( см. ), А затем
log(1+...)>0
.Эта величина реализуется в команде
kurtosis()
из библиотеки Rmoments
. Кроме того, с помощью командыhist()
вы можете указать количество перерывов следующим образомФормула, используемая в команде
kurtosis()
, простаmean((data - mean(data))^4)/mean((data - mean(data))^2)^2
.Теперь, если вы хотите исследовать, что является «наилучшей» формулой, тогда вам понадобится критерий. Учтите, что это было обсуждено в статистической литературе.
источник
log(n,2)
вместоlog(n)
. НО, запись в Википедии, а также другие источники указывают, что так и должно бытьlog
.