R 编程(Monte Carlo 模拟)

R programming (Monte Carlo Simulation)

你好我想问一下如何使用Monte Carlo 模拟抽取 50 个虹膜数据实例(其中包含 150 个实例)? 任何的想法? 非常感谢

我们可以使用 sample_n 到 select 50 行替换。

# Set seed for reproducibility
set.seed(12800)

library(dplyr)
library(purrr)

iris_sub <- iris %>% sample_n(size = 50, replace = TRUE)

在这里,我展示了一种可以将此过程重复 1000 次的方法,使用 包中的 map_dfr。最终结果是一个包含 50000 行的数据框。创建一个名为 Time 的新列来记录采样数。

iris_sample <- map_dfr(1:1000, ~iris %>%
                         sample_n(size = 50, replace = TRUE) %>%
                         mutate(Time = .x))

这是在 base R 中执行此操作的一种方法。

您可以抽样 50 行并替换为

iris[sample(1:nrow(iris), size = 50, replace = TRUE), ]

要制作一个列表,例如,50 行的 1000 个样本的替换,您可以使用 lapply

iris_mc_samps <- lapply(1:1000, function(x) iris[sample(1:nrow(iris), size = 50, replace = TRUE), ])