#r #simulation
#r #Симуляция
Вопрос:
Я пытаюсь создать симуляцию для побед команды НФЛ за сезон. Я создал код, который создаст вектор длиной 16 с «выигрышем» или «проигрышем» в качестве элементов на основе созданных мной критериев.
Я изо всех сил пытаюсь заставить R подсчитывать количество выигрышей в векторе и настраивать его для имитации теста несколько раз
Вот код, который я использовал для создания вектора
schedule <- c(0.707, 0.594, 0.455, 0.487, 0.505, 0.327, 0.643, 0.525, 0.513,0.545, 0.500, 0.293, 0.545, 0.487, 0.465, 0.500)
random <- runif(16)
trial <- ifelse(random < schedule, "win","loss")
Ответ №1:
Если вы хотите запустить это runs
количество раз (измените значение с 10 на любое необходимое вам) и просто отслеживать количество выигрышей, это один из способов:
set.seed(1)
schedule <- c(0.707, 0.594, 0.455, 0.487, 0.505, 0.327, 0.643, 0.525, 0.513,0.545, 0.500, 0.293, 0.545, 0.487, 0.465, 0.500)
runs = 10
results = rep(NA, runs)
for (trial_run in 1:runs) {
random <- runif(16)
#trial <- ifelse(random < schedule, "win","loss")
results[trial_run] <- sum(random < schedule)
}
results
#> [1] 8 7 7 9 8 9 5 11 6 11
Создано 2020-10-20 пакетом reprex (версия 0.3.0)
Ответ №2:
Я думаю, вы действительно близки к тому, что хотите. Может быть, вам стоит попробовать replicate
table
, как показано ниже
runs <- 5
trial <- replicate(runs,table(ifelse(runif(16) < schedule, "win","loss")),simplify = FALSE)
что дает результат, подобный
> trial
[[1]]
loss win
6 10
[[2]]
loss win
12 4
[[3]]
loss win
6 10
[[4]]
loss win
5 11
[[5]]
loss win
6 10