Hola,
Así, funciona...
#---------------------
# Cargar bibliotecas necesarias
library(deSolve)
library(optimx)
# Definir el modelo SIR estocástico
SIR_estocastico <- function(time, state, parameters) {
with(as.list(c(state, parameters)), {
# Ecuaciones diferenciales estocásticas (implementación usando Poisson)
dS <- -beta * S * I + rnorm(1, mean = 0, sd = sqrt(beta * S * I))
dI <- beta * S * I - gamma * I + rnorm(1, mean = 0, sd = sqrt(beta * S
* I + gamma * I))
dR <- gamma * I
list(c(dS, dI, dR))
})
}
# Simular datos
parametros <- c(beta = 0.3, gamma = 0.1)
estado <- c(S = 990, I = 10, R = 0)
tiempos <- seq(0, 100, by = 1)
salida <- ode(y = estado, times = tiempos, func = SIR_estocastico, parms
parametros)
# Crear datos observados para ajustar
data <- as.data.frame(salida) # Aquí suponemos que `data` contiene los
datos observados
# Función de verosimilitud
log_verosimilitud <- function(params, data, tiempos) {
# Simular el modelo con los nuevos parámetros
sim <- ode(y = estado, times = tiempos, func = SIR_estocastico, parms
params)
sim <- as.data.frame(sim)
# Calcular el error cuadrático medio entre datos simulados y observados
como ejemplo de función de verosimilitud
# Aquí asumimos que el objetivo es minimizar la diferencia cuadrática
entre simulación y datos observados
ll <- sum((data$I - sim$I)^2) # Puedes cambiar esta función según tu
criterio de verosimilitud
return(ll)
}
# Optimización
ajuste <- optimx(par = c(beta = 0.2, gamma = 0.1), fn = log_verosimilitud,
data = data, tiempos = tiempos, method = "Nelder-Mead")
print(ajuste)
#---------------------
Gracias,
Carlos Ortega
www.qualityexcellence.es
El vie, 1 nov 2024 a las 14:17, Jose Betancourt Bethencourt (<
betanster en gmail.com>) escribió:
> ---------- Forwarded message ---------
> De: Jose Betancourt Bethencourt <betanster en gmail.com>
> Date: sáb, 26 oct 2024 a las 16:14
> Subject: OPTIMIZACIÓN
> To: <r-help-es-request en r-project.org>
>
>
>
> Estimados
>
> Corri este código y funciona todo bien , menos la ultima parte de
> optimización apreciaria su ayuda
> José
>
>
> # Cargar bibliotecas necesarias
> library(deSolve)
> library(optimx)
>
> # Definir el modelo SIR estocástico
> SIR_estocastico <- function(time, state, parameters) {
> with(as.list(c(state, parameters)), {
> # Ecuaciones diferenciales estocásticas (implementación usando Poisson)
> dS <- -beta * S * I + rnorm(1, mean = 0, sd = sqrt(beta * S * I))
> dI <- beta * S * I - gamma * I + rnorm(1, mean = 0, sd = sqrt(beta *
S
> * I + gamma * I))
> dR <- gamma * I
> list(c(dS, dI, dR))
> })
> }
>
> # Simular datos
> parametros <- c(beta = 0.3, gamma = 0.1)
> estado <- c(S = 990, I = 10, R = 0)
> tiempos <- seq(0, 100, by = 1)
> salida <- ode(y = estado, times = tiempos, func = SIR_estocastico, parms
> parametros)
>
> # Función de verosimilitud (ejemplo)
> log_verosimilitud <- function(params, data, tiempos) {
> # Simular el modelo con los nuevos parámetros
> sim <- ode(y = estado, times = tiempos, func = SIR_estocastico, parms
> params)
> # Calcular la log-verosimilitud (implementar aquí, considerando la
> distribución de los datos)
> # ...
> }
>
> # Optimización
> ajuste <- optimx(par = c(beta = 0.2, gamma = 0.1), fn =
log_verosimilitud,
> data = data, tiempos = tiempos,
> method = "Nelder-Mead")
>
>
> ======================> --
> Dr. Jose A. Betancourt Bethencourt
> Universidad de Ciencias Medicas Carlos j. Finlay
>
>
> --
> Dr. Jose A. Betancourt Bethencourt
> Universidad de Ciencias Medicas Carlos j. Finlay
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
--
Saludos,
Carlos Ortega
www.qualityexcellence.es
[[alternative HTML version deleted]]