#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. Кстати, хорошее объяснение.