[R-es] Fwd: OPTIMIZACIÓN

Carlos Ortega co| @end|ng |rom qu@||tyexce||ence@e@
Dom Nov 3 12:22:43 CET 2024


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 using gmail.com>) escribió:

> ---------- Forwarded message ---------
> De: Jose Betancourt Bethencourt <betanster using gmail.com>
> Date: sáb, 26 oct 2024 a las 16:14
> Subject: OPTIMIZACIÓN
> To: <r-help-es-request using 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 using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>


-- 
Saludos,
Carlos Ortega
www.qualityexcellence.es

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es