そのため、一様分布から20個のランダムサンプルの平均を計算するたびに、一様分布から1000回サンプリングしようとしています。
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 = runif(n_samples, unif_sample_size))
# 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] = summarize(uniformSampleMeans = mean(unif_sample_size))
}
ティブルの生成に成功しましたが、値は「NaN」です。さらに、forループに到達すると、エラーが発生します。
Error in summarise_(.data, .dots = compat_as_lazy_dots(...)) : argument ".data" is missing, with no default
どんな洞察も大歓迎です!
これをdplyr
質問としてタグ付けした場合は、次を使用できますsummarise_all
。
library(dplyr)
n_obs = 20
n_samples = 1000
samples <- data.frame(matrix(runif(n_obs * n_samples), nrow = 20))
summarise_all(samples, mean)
他の人が指摘しているように、これはベースRでも可能です。
OPコメントごとに更新
はい、forループを使用することは可能ですが、お勧めできません。これが1つのアプローチです:
unif_sample_size = 20
n_samples = 1000
total_draws <- unif_sample_size * n_samples
uniformSampleMeans <-
tibble(draw_from_uniform = runif(n_samples * unif_sample_size))
sample_means <- vector(length = n_samples)
i <- 1
for (ix in seq(1, total_draws, by = unif_sample_size)) {
start <- ix
end <- ix + unif_sample_size - 1
sample_means[i] <- mean(uniformSampleMeans$draw_from_uniform[start:end])
i <- i + 1
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加