Выборка с заменой для начальной загрузки [R]

#r #statistics #mean #variance

Вопрос:

Я относительно новичок в R, поэтому я просто пытаюсь понять, чего мне не хватает. У меня есть несколько вопросов о том, как правильно это сделать.

Мое пространство выборки равно {2,4,9,12}. Мне нужно убедиться, что среднее значение этой выборки равно 6,75, что и произойдет, если я введу

 s <- c(2,4,9,12)
mean(s)
 

Мне также нужно рассчитать дисперсию s, но когда я вычисляю дисперсию
var(s) = 20.91667 . Книга, которую я читаю, «Статистический вывод», Casella amp; Berger, показывает, что дисперсия составляет 3,94. Теперь я знаю, что, поскольку я загружаюсь, существует другой метод, где вместо того, чтобы выборочная дисперсия делилась на (n-1), она делится на ((n^n)-1), и ее нужно суммировать от i = 1 до (n^n). Для более легкого понимания скриншот этой формулы будет размещен здесь:

Формула начальной загрузки дисперсии

Вопрос 1

Есть ли функция, реализованная в R, которая находит среднее значение начальной загрузки и дисперсию, которые могут помочь мне проверить этот ответ? Если да, то можно ли привести пример того, как это сделать?

Вопрос 2

Из-за моего собственного любопытства. Допустим, я хотел загрузить этот образец пространства (не уверен, что это имеет слишком большой смысл). Как мне найти среднее значение начальной загрузки и дисперсию выборки С заменой и циклом для 10 000 выборок?

Потерпите меня в этом, потому что, как я уже упоминал, я новичок в R и этой концепции начальной загрузки. Пожалуйста, поправьте меня, если мой мыслительный процесс не совсем верен. Так, например, когда я ввожу sample(c(2,4,9,12), replace = T, 10000) данные , это дает мне 10 000 элементов, но я хочу 10 000 векторов длиной 4. Другими словами, когда я ввожу sample(c(2,4,9,12), replace = T, 1) , он дает только одно значение, но я бы хотел, чтобы это был вектор из 4 с любым порядком этих четырех значений С заменой. Теперь, как только будут созданы все 10 000 векторов (при условии, что это не один и тот же вектор), я хочу иметь возможность найти среднее значение начальной загрузки и дисперсию каждого вектора. Как только у меня появятся эти средства и отклонения, я хочу иметь возможность создать график распределения, чтобы визуально наблюдать CLT.

Я осознаю, что мое концептуальное понимание начальной загрузки может быть ошибочным, поэтому, пожалуйста, я настоятельно призываю вас дать мне указания, чтобы укрепить мое понимание.

Заранее благодарю вас.

Ответ №1:

Во-первых, во-первых: дисперсия среднего значения выборки и дисперсия выборки-это две разные величины. Когда вы это делаете var(s) и получаете 20.91 , вы вычисляете дисперсию выборки, а не среднее значение выборки. Итак, теперь перейдем к вашим вопросам:

Я уверен, что есть функции для запуска начальной загрузки, но мой совет — сделать это с нуля. Это всего около 10 строк кода. Что — то вроде этого может сработать:

 s <- c(2,4,9,12)

N <- 10**5
sample_means <- numeric(N)

for (i in 1:N) {
    resample <- sample(s, replace = TRUE)
    sample_means[i] <- mean(resample)
}

mean(sample_means)
#> [1] 6.752375
var(sample_means)
#> [1] 3.941898
 

Создано 2021-08-18 пакетом reprex (v2.0.1)

Вы также могли бы использовать purrr для более элегантного решения (по крайней мере, на мой взгляд):

 library(purrr)

s <- c(2,4,9,12)

N <- 10**5
sample_means <- rerun(
    .n = N,
    sample(s, replace = TRUE)
) %>%
    map_dbl(mean)

sample_means %>%
    mean()
#> [1] 6.75615

sample_means %>%
    var()
#> [1] 3.965604
 

Создано 2021-08-18 пакетом reprex (v2.0.1)

Затем, если вы хотите использовать приведенный выше код для построения гистограммы средних значений, вы просто сделаете

 hist(sample_means)
 

Комментарии:

1. Вы могли бы заменить for -цикл на apply(replicate(10000, sample(c(2,4,9,12), replace = TRUE, 4)), 2, mean) .

2. Да, спасибо @MartinGal! Я думал, что цикл for был немного более выразительным в том, что касается базовых решений R, но есть масса способов сделать это 🙂

3. Кстати, хорошее объяснение.