Это продолжение предыдущего вопроса. Мой вопрос не был полностью сформулирован и поэтому не получил полного ответа в моем последнем посте. Простите меня, я новичок в использовании переполнения стека.
Мой профессор назначил набор задач, и мы должны использовать dplyr и другие пакеты tidyverse. Я прекрасно понимаю, что большинство (если не все) задач, которые я пытаюсь выполнить, возможны в базе r, но это не согласуется с моими инструкциями.
Сначала нас просят сгенерировать таблицу из 1000 случайных выборок из равномерного распределения:
2a. Create a new tibble called uniformDf containing a variable called unifSamples that contains 10000 random samples from a uniform distribution. You should use the runif() function to create the uniform samples. {r 2a}
uniformDf <- tibble(unifSamples = runif(1000))
Это хорошо.
Затем нас просят выполнить цикл по этой таблице 1000 раз, каждый раз выбирая 20 случайных выборок, вычисляя среднее значение и сохраняя его в таблице:
2c. Now let's loop through 1000 times, sampling 20 values from a uniform distribution and computing the mean of the sample, saving this mean to a variable called sampMean within a tibble called uniformSampleMeans. {r 2c}
unif_sample_size = 20 # sample size
n_samples = 1000 # number of samples
# set up q data frame to contain the results
uniformSampleMeans <- tibble(sampMean=rep(NA,n_samples))
# loop through all samples. for each one, take a new random sample,
# compute the mean, and store it in the data frame
for (i in 1:n_samples){
uniformSampleMeans$sampMean[i] <- uniformDf %>%
sample_n(unif_sample_size) %>%
summarize(sampMean = mean(sampMean))
}
Все это работает, ну, я думаю, пока не посмотрю на свой uniformSampleMeans
тибет. Это выглядит так:
1 0.471271611726843
2 0.471271611726843
3 0.471271611726843
4 0.471271611726843
5 0.471271611726843
6 0.471271611726843
7 0.471271611726843
...
1000 0.471271611726843
Все значения идентичны! Кто-нибудь знает, почему мой результат такой? Я был бы менее обеспокоен, если бы они варьировались на значения +/- 0,000x, поскольку это происходит от распределения, которое находится в диапазоне от 0 до 1, но все значения идентичны даже до 15-го десятичного знака! Любая помощь высоко ценится!
sampMean = mean(sampMean)
. Вы не показали, где вы создаете объектsampMean
, но он выглядит как фиксированное значение, созданное вне цикла for. Вероятно, это должно бытьsampMean = mean(unifSamples)
. - person Marius   schedule 20.02.2020