Использование пакета boot в R
Первым делом необходимо загрузить пакет в рабочую среду
install.packages("boot", dep=TRUE)
library(boot)
Применение функции (параметры)
boot(data, statistic, R, sim = "ordinary", stype = c("i", "f", "w"),
strata = rep(1,n), L = NULL, m = 0, weights = NULL,
ran.gen = function(d, p) d, mle = NULL, simple = FALSE, ...,
parallel = c("no", "multicore", "snow"),
ncpus = getOption("boot.ncpus", 1L), cl = NULL)
Может показаться на первый раз что все очень сложно, но на самом деле это не так. Разберем как работать с функцией boot на самых простейших примерах в простейших датасетах и все вы обязательно поймете. Для начала давайте посмотрим, как работает сама эта функция.
boot() — это функция из пакета {boot} в R, которая используется для бутстрапа.
Она имеет три необходимых аргумента:
- data — имя фрейма данных, с которым работает функция.
- statistic — функция, которая возвращает нужную статистику при применении к данным.
- R — количество повторных выборок. Обычно рекомендуется устанавливать его на очень большое число (например, 10 000).
В статистике и анализе данных бутстрапом называют статистическую процедуру, основанную на выборке с замещением для определения точности (смещения) выборочных оценок дисперсии, среднего, стандартного отклонения, доверительных интервалов и других структурных характеристик совокупности.
Пример 1.
Пусть у нас имеется вектор данных, содержащий целые числа от 1 до 5. Нам необходимо с помощью функции boot «собрать» с помощью бутстрепа новый вектор из 20 значений.
xd = 1:5
xb1 <- boot(xd, function(u,i) (u[i]), R = 4)
x = as.vector(xb1$t)
x
length(x)
> xd = 1:5 > xb1 <- boot(xd, function(u,i) (u[i]), R = 4) > x = as.vector(xb1$t) > x [1] 2 4 5 1 1 4 5 2 4 3 5 2 1 4 5 3 1 4 2 1 > length(x) [1] 20 |
Поясним что у нас произошло. Первоначально у нас был вектор xd который состоит из пяти целых чисел: 1,2,3,4,5. То есть длина этого вектора равна пяти. А нам нужно создать вектор длинной в 20. Поэтому параметр R = 20/5, то есть число повторных выборок будет 4. В итоге мы получим методом бутстрепа вектор x заданной длины.
Пример 2.
При измерении уровня радиационного фона бытовым дозиметром были считаны шесть показаний: 7, 11, 9, 8,9, 10. Необходимо с помощью бутстрепа вычислить среднее значение и сравнить его со средним полученных при измерении радиационного фона.
r = c(7,11,9,8,9,10)
mean(r)
xb1 <- boot(r, function(u,i) mean(u[i]), R = 1000)
rb = as.vector(xb1$t)
mean(rb)
plot(xb1)
hist(xb1$t)
Мы наглядно убедились, что среднее значение измеренного радиационного фона составляет 9, а рассчитанное бутстрепом величина практически совпадает с ней, отличаясь незначительно (в моем случае получилось
8.998833, величина может в других случаях незначительно отличаться).
