generar_pacientes <- function(n) {
data.frame(
salud = sample(c("buena", "regular", "mala"), n, replace = TRUE),
satisfaccion = NA,
tipo_paciente = sample(c("ambulatorio", "hospitalizado"), n, replace = TRUE),
edad = sample(18:80, n, replace = TRUE),
genero = sample(c("masculino", "femenino"), n, replace = TRUE)
)
}
#Esta función genera un dataframe de pacientes con características como salud, satisfacción, tipo de paciente, edad y género.
generar_personal_medico <- function(n) {
data.frame(
capacitacion = sample(c("básico", "intermedio", "avanzado"), n, replace = TRUE),
satisfaccion_laboral = NA,
especialidad = sample(c("general", "especialista"), n, replace = TRUE),
anos_experiencia = sample(1:30, n, replace = TRUE),
salario = runif(n, 30000, 100000)
)
}
#Genera un dataframe de personal médico con características como nivel de capacitación, satisfacción laboral, especialidad, años de experiencia y salario.
generar_administradores <- function(n) {
data.frame(
eficiencia_gestion = sample(c("alta", "media", "baja"), n, replace = TRUE),
confianza_equipo = runif(n, 0, 1),
nivel_estudios = sample(c("licenciatura", "maestría", "doctorado"), n, replace = TRUE)
)
}
#Crea un dataframe de administradores con características como eficiencia en la gestión, confianza del equipo y nivel de estudios.
generar_inversores <- function(n) {
data.frame(
inversion = runif(n, 100000, 1000000),
ROI = runif(n, 0, 10),
confianza_proyecto = runif(n, 0, 1),
tipo_inversor = sample(c("individual", "corporativo"), n, replace = TRUE)
)
}
#Genera un dataframe de inversores con características como inversión, ROI (retorno de la inversión), confianza en el proyecto y tipo de inversor.
# Función para simular un paso de tiempo
simular_paso_tiempo <- function(pacientes, personal_medico, administradores, inversores, entorno) {
# Actualizar satisfacción de pacientes
pacientes$satisfaccion <- ifelse(pacientes$salud == "mala", "baja", ifelse(pacientes$salud == "regular", "media", "alta"))
# Actualizar satisfacción laboral del personal médico
personal_medico$satisfaccion_laboral <- ifelse(personal_medico$capacitacion == "avanzado", "alta", ifelse(personal_medico$capacitacion == "intermedio", "media", "baja"))
# Actualizar eficiencia en la gestión de los administradores
administradores$eficiencia_gestion <- ifelse(runif(nrow(administradores)) > 0.5, "alta", "media")
# Actualizar ROI de los inversores
inversores$ROI <- runif(nrow(inversores), 0, 10)
# Actualizar variables del entorno
entorno$tasa_inflacion <- entorno$tasa_inflacion + 0.01 # Incrementar tasa de inflación en cada paso
entorno$estado_hospital <- ifelse(runif(1) > 0.5, "asegurado", "no asegurado") # Cambiar estado del hospital aleatoriamente
return(list(pacientes = pacientes, personal_medico = personal_medico, administradores = administradores, inversores = inversores, entorno = entorno))
}
#Esta función simula un paso de tiempo en el modelo. Actualiza las características de los agentes y del entorno en función de ciertas reglas. Por ejemplo, actualiza la satisfacción de los pacientes según su salud, la satisfacción laboral del personal médico según su nivel de capacitación, etc.
# Definición de variables del entorno
entorno <- list(
tasa_inflacion = 0.05,
estado_hospital = "no asegurado",
incremento_pacientes = 0.606,
impuesto_ministerio = 0.1
)
# Parámetros del entorno
num_pacientes <- 100
num_personal_medico <- 30
num_administradores <- 5
num_inversores <- 10
#Se definen varios parámetros del entorno en un listado llamado entorno. Estos incluyen la tasa de inflación, el estado del hospital, el incremento de pacientes y el impuesto del ministerio.
pacientes <- generar_pacientes(num_pacientes)
personal_medico <- generar_personal_medico(num_personal_medico)
administradores <- generar_administradores(num_administradores)
inversores <- generar_inversores(num_inversores)
#Se generan los agentes iniciales llamando a las funciones generar_pacientes, generar_personal_medico, generar_administradores y generar_inversores con el número correspondiente de agentes.
num_steps <- 10
for (step in 1:num_steps) {
cat("Paso de tiempo:", step, "\n")
agentes_actualizados <- simular_paso_tiempo(pacientes, personal_medico, administradores, inversores, entorno)
# Actualizar agentes y entorno para el siguiente paso de tiempo
pacientes <- agentes_actualizados$pacientes
personal_medico <- agentes_actualizados$personal_medico
administradores <- agentes_actualizados$administradores
inversores <- agentes_actualizados$inversores
entorno <- agentes_actualizados$entorno
}
## Paso de tiempo: 1
## Paso de tiempo: 2
## Paso de tiempo: 3
## Paso de tiempo: 4
## Paso de tiempo: 5
## Paso de tiempo: 6
## Paso de tiempo: 7
## Paso de tiempo: 8
## Paso de tiempo: 9
## Paso de tiempo: 10
#Se ejecuta un bucle que simula múltiples pasos de tiempo. En cada paso, se llama a la función simular_paso_tiempo para actualizar el estado de los agentes y del entorno.
cat("Satisfacción de los pacientes:\n")
## Satisfacción de los pacientes:
print(table(pacientes$satisfaccion))
##
## alta baja media
## 42 26 32
cat("\nSatisfacción laboral del personal médico:\n")
##
## Satisfacción laboral del personal médico:
print(table(personal_medico$satisfaccion_laboral))
##
## alta baja media
## 14 7 9
cat("\nEficiencia en la gestión de los administradores:\n")
##
## Eficiencia en la gestión de los administradores:
print(table(administradores$eficiencia_gestion))
##
## alta media
## 1 4
cat("\nROI de los inversores:\n")
##
## ROI de los inversores:
print(summary(inversores$ROI))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.1657 2.6758 4.8411 4.4801 6.1443 8.6353
cat("\n")
#Se imprimen los resultados del modelo, como la satisfacción de los pacientes, la satisfacción laboral del personal médico, la eficiencia en la gestión de los administradores y el ROI de los inversores.