Я использую некоторые алгоритмы, которые используют приблизительное байесовское вычисление (например, см. Toni et al., 2009), и они требуют многократного решения системы уравнений Лотки-Вольтерра со случайно созданным набором входных параметров. Я использую lsoda
функцию из try(..., silent = TRUE)
пакета .
Иногда эта функция вызывает ошибку, и я надеялся проигнорировать это с помощью options(show.error.messages = FALSE)
функции, хотя это, похоже, не работает (см. Пример ниже). Настройка тоже не работает. require(deSolve) # Differential equations defining the system LV <- function(Time, State, Pars){ with(as.list(c(State, Pars)), { dx <- a*x - x*y dy <- b*x*y - y return(list(c(dx, dy))) } ) } # Parameters pars <- c(a = 1.0, b = 1.0) # Initial conditions init <- c(x = 1.0, y = 0.5) # Time steps times <- seq(0, 15, length.out = 100) problem_seeds <- c(7, 241, 361, 365, 468, 473, 649, 704, 724, 745, 838) for (i in problem_seeds){ set.seed(i) # Sample from pi(theta), prior for parameter vector (a, b) theta_star <- runif(2, -10, 10) names(theta_star) <- c("a", "b") # Simulate a dataset using these parameters (at the specified times) try(out <- lsoda(func = LV, y = init, parms = theta_star, times = times), silent = TRUE) dfs <- as.data.frame(out) }
Как отключить печать сообщения об ошибке из deSolve :: lsoda?
deSolve
r,error-handling,ode,differential-equations,