Моделирование простого кода процесса Руниф - R программирование - PullRequest
1 голос
/ 03 ноября 2019

Джон либо навещает свою подругу, которая живет в центре города, либо навещает свою мать, которая живет в центре города, но не обоих. Он ходит на автобусную остановку каждый вечер в произвольное время и садится на автобус в центре города или в центре города (с той же автобусной остановки), в зависимости от того, что наступит раньше. Каждый из двух видов автобусов прибывает на автобусную остановку каждые 30 минут с фиксированным регулярным расписанием: время прибытия для городских автобусов составляет a или (30 + a) минут после каждого часа, а для городских автобусов - b или (30+ б) минуты после каждого часа, где 1 ≤ a Я доказал, что он должен посещать свою мать ба раз в месяц (базовая вероятность).

Я хотел написать функцию f(a,b), которая могла бы имитировать этот опыт один раз. Затем я хотел повторить этот опыт большое количество раз, чтобы увидеть, приближается ли фактическое количество раз, когда он ходил к своей матери, к ба, когда мы повторяем этот опыт.

Для этого я определяю прибытие Джонавремя как:

mom <- function(a,b) {
  JAT <- runif(n=360, min=0, max=59)
  y = 0 # y would be the number of time he went to see his mother
  if(JAT > b) {
    y <- y
  } else {
    y <- y + 1
  }
  return(y)
}

Я действительно не знаю, как сделать это правильной функцией f(a,b), и мой код даже не работал на R (сообщение об ошибке). Может ли кто-нибудь помочь мне в том, как имитировать эксперимент, который Джон проводит каждый вечер? Заранее большое спасибо!

1 Ответ

1 голос
/ 03 ноября 2019

Существует 30-минутный цикл, который повторяется, и в этом цикле есть a и b.

Учитывая, что a < b, если t - время прибытиярешение о выборе автобуса можно сформулировать следующим образом:

  • t <= a: Городской автобус
  • a < t <= b: Городской автобус
  • t > b: Городской автобус

Следовательно, функция для вычисления количества времени, в течение которого берется одна из шин:

bus <- function(a,b) {
  arrivals <- runif(n=360, min=0, max=30)
  downtown <- sum( arrivals<=a | arrivals>b )
  uptown   <- sum( arrivals>a & arrivals<=b )
  return(downtown) # or uptown
}
...