Основы статистики
Визуализация данных
Визуализация данных позволяет наглядно представить, как распределены данные: равномерно, собраны на одной стороне или плотно сгруппированы вокруг середины. Чтобы увидеть, как две числовые переменные связаны друг с другом, можно построить точечный график. Для визуализации распределения одной величины используются гистограмма и другие виды графиков.
В этой главе вам предстоит визуализировать данные о галапагосских вьюрках.
Точечный график
Пример. Визуализируем распределение длины и толщины клювов вьюрков. Для этого сначала подключим необходимые библиотеки, прочитаем файл с данными finchData.csv, зададим вид вьюрков и год наблюдения в качестве категориальных переменных и создадим отдельные таблицы для двух видов вьюрков:
using CSV, DataFrames, CategoricalArrays, Plots, StatsPlots
data = CSV.read("finchData.csv", DataFrame)
data_Species = categorical(data.Species)
data_Year = categorical(data.Year)
scandens = data[data_Species .== "scandens", :]
fortis = data[data_Species .== "fortis", :]
Теперь посторим точечный график, показывающий, как связаны друг с другом две величины – длина клюва (переменная BeakLength) и толщина клюва (переменная BeakDepth). Для этого воспользуемся функцией scatter, содержащейся в библиотеке Plots.
scatter(data.BeakLength, data.BeakDepth)
xlabel!("Длина клюва, мм")
ylabel!("Толщина клюва, мм")
Гистограмма
Генеральной совокупностью называется совокупность всех объектов, относительно которых предполагается делать выводы при изучении некоторой задачи (например, все галапагосские вьюрки).
Выборкой называется часть объектов из генеральной совокупности, отобранных для изучения (например, те галапагосские вьюрки, которые были исследованы).
Гистограммы позволяют пронаблюдать распределение выборки. Функция histogram, содержащаяся в библиотеке Plots, если ей передать только выборку в качестве аргумента, автоматически подбирает количество столбцов и крайние значения гистограммы.
Построим гистограмму распределения длины клюва.
histogram(data.BeakLength)
xlabel!("Длина клюва, мм")
ylabel!("Количество наблюдений")
Как мы видим, эта гистограмма имеет два максимума, поэтому мы можем сказать, что распределение длины клюва является бимодальным. Данные, приведенные на графике, относятся к двум видам вьюрков. Не поэтому ли на графике наблюдаются два пика?
Таблицы scandens и fortis заданы нами выше и содержат данные для каждого отдельного вида вьюрков. Построим на одном полотне две гистограммы распределения длины клюва для каждого вида вьюрков в отдельности.
histogram(scandens.BeakLength, label = "Кактусовый земляной вьюрок")
histogram!(fortis.BeakLength, label = "Средний земляной вьюрок")
xlabel!("Длина клюва, мм")
ylabel!("Количество наблюдений")
Из гистограмм видно, что у двух видов вьюрков разная длина клюва.
✏️Задание 1
Проверьте, изменилась ли длина клюва кактусовых земляных вьюрков в период с 1975 по 2012 год. Для этого создайте две гистограммы для результатов измерений длины клюва кактусовых земляных вьюрков (scandens), одну для 1975 года, а другую для 2012 года.
Подсказка
Для того чтобы выбрать для построения гистограммы те данные, которые были получены только в 1975 году или только в 2012 году, в качестве первого индекса матрицы scandens.BeakLength нужно указать соответствующий год: scandens.BeakLength[scandens.Year .== 1975, :] или scandens.BeakLength[scandens.Year .== 2012, :].
Решение
histogram(scandens.BeakLength[scandens.Year .== 1975, :], label = "Кактусовый земляной вьюрок, 1975 год")
histogram!(scandens.BeakLength[scandens.Year .== 2012, :], label = "Кактусовый земляной вьюрок, 2012 год")
Похоже, что длина клюва кактусовых земляных вьюрков изменилась за эти годы.
Точечная гистограмма
Точечная гистограмма строится с помощью функции scatterhist, содержащейся в библиотеке Plots. Синтаксис этой функции полностью аналогичен функции histogram.
✏️Задание 2
С помощью функции scatterhist постройте точечные гистограммы распределения длины и толщины клюва кактусовых земляных вьюрков (scandens) и средних земляных вьюрков (fortis).
Решение
scatterhist(scandens.BeakLength, scandens.BeakDepth, label = "Кактусовый земляной вьюрок")
xlabel!("Длина клюва, мм")
ylabel!("Толщина клюва, мм")
scatterhist(fortis.BeakLength, fortis.BeakDepth, label = "Средний земляной вьюрок")
xlabel!("Длина клюва, мм")
ylabel!("Толщина клюва, мм")
Совмещение точечного графика и гистограммы
Построить на одном полотне точечный график, показывающий взаимосвязь двух величин, и гистограммы для этих величин можно с помощью функции cornerplot, содержащейся в библиотеке StatsPlots.
Пример. Построим на одном полотне точечный график вместе с гистограммами распределения длины и толщины клюва кактусовых земляных вьюрков (scandens).
cornerplot(Array(scandens[:, ["BeakLength", "BeakDepth"]]), compact=true)
xlabel!("Длина клюва, мм")
ylabel!("Толщина клюва, мм")
Прямая линия на графике показывает линейную корреляцию между двумя величинами.
✏️Задание 3
С помощью фуцнкции cornerplot постройте на одном полотне точечный график вместе с гистограммами распределения длины и толщины клюва средних земляных вьюрков (fortis).
Решение
cornerplot(Array(fortis[:, ["BeakLength", "BeakDepth"]]), compact=true)
xlabel!("Длина клюва, мм")
ylabel!("Толщина клюва, мм")