Выражаясь простым языком, гистограмма позволяет визуально оценить какую-то случайную величину: насколько она случайна, велик ли разброс и какой характер этого разброса. По форме гистограммы можно подобрать закон распределения случайной величины. Математическая статистика вообще классная штука — находит закономерности там, где их нет.
Собственно, ничего нового я не изобрел, пример гистограммы есть на оф. сайте гнуплота. Просто сейчас мы разберём как оно работает и как им пользоваться в личных целях.
Простая гистограмма
Данные, по которым будет построена гистограмма, должны располагаться в текстовом файле, по одному числу на строке. Пусть он будет называться distribution.txt, а скрипт, строящий график — histogram.plot.
Вот содержимое скрипта:
Теперь о том, что каждая строчка означает.
#!/usr/bin/gnuplot -persist — sha-bang, работает только в *nix; width=10 — в эту переменную записываем ширину столбца гистограммы; bin(x, s) = s*int(x/s) + width/2 — функция определяет в какой из столбиков попадет число; set boxwidth width — задаём ширину столбца для рисования, используя переменную width; plot 'distribution.txt' — тут вроде все понятно; u (bin($1,width)):(1.0) — по оси X откладываем результат функции bin() от первого столбца в файле, а по Y — просто единичку; s f — суммировать Y (smooth frequency); w boxes — рисовать столбики (для эксперимента попробуйте lines, linespoints, points, impulses); fs solid 0.5 — определяем стиль заливки столбиков (fillstyle) как сплошной (solid) с 50%-ной непрозрачностью; title 'гистограмма' — подпись в легенде;
Теперь либо запускаем сам скрипт:
либо скармливаем его гнуплоту
В любом случае получаем картинку:
Симпатично, но стоит слегка поправить. Делаю width=100 и добавляю ограничение на диапазон иксов set xrange [:6000]. Ещё можно включить сетку: set grid.
Собственно, здесь я ожидал увидеть ассимметричное распределение. Так и получилось.
Внимательные читатели заметили, что диапазон по оси Y сократился. Это происходит потому, что высота столбика показывает количество попаданий в диапазон, определяемый его шириной. Следовательно, чем уже столбик, тем меньше в него попадает.
Добавляем точки
Не знаю, как назвать эту модификацию. Просто покажу исходник и результат.
Каждая красная точка соответствует одному измерению. С ними хорошо заметны выбросы. Вот только в диапазоне 1000–2000 точек слишком много, от чего они сливаются в сплошную красную массу. Можно конечно растянуть полосу пошире, но мы пойдем другим путем.
За счёт прозрачности кружочков получается красивый эффект: чем больше кружочков накладывается, тем краснее. Не могу сказать какой толк от них на этом графике, но подобным образом можно строить гистограммы от двух переменных.
Заключение
Графики — это красивые картинки, которые зачастую оказываются информативнее голых чисел. Для того и были придуманы.
Получить гистограмму средствами гнуплота очень просто. Всё, что вам нужно сделать — это подготовить файл с числами для анализа и подрегулировать некоторые параметры. Никаких тайных знаний не нужно. Как видите, программирование — это совсем не страшно.
Ссылки
- Примеры гистограмм на сайте гнуплота.
- Книжка по статистике хороша тем, что написана понятным языком, а не "своими для своих".
Комментариев нет:
Отправить комментарий