El problema esta relacionado con el seguimiento del estado de salud de los pacientes a lo largo del tiempo, analizando cómo varía entre distintos estados. Queremos identificar patrones de transición en el estado de salud y factores asociados (presión arterial y nivel de glucosa) para entender la progresión o mejora de su enfermedad
Justificación del Uso de Cadenas de Markov
Un análisis con cadenas de Markov sería útil aquí, ya que este modelo permite estudiar cómo los pacientes cambian entre distintos estados de salud de una visita a otra. Los beneficios son:
Predicción de Estado Futuro: Nos permite predecir la probabilidad de que un paciente en un estado de salud dado (como “Salud estable”) se mueva a otro estado (como “Empeoramiento severo” o “Mejoría”) en su próxima visita.
Patrones de Transición: Identificamos patrones de cambio de estado, que pueden indicar ciclos de mejoría o empeoramiento, lo que puede ayudar a mejorar estrategias de intervención y manejo de la enfermedad.
Evaluación de Riesgos: Entender las probabilidades de empeoramiento puede ayudar en la planificación de recursos en las clínicas y en el desarrollo de tratamientos personalizados para mejorar la estabilidad en el estado de salud de los pacientes.
Cargando la Base
library(readxl)library(dplyr)
Adjuntando el paquete: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
library(tidyr)library(tibble)library(markovchain)
Package: markovchain
Version: 0.9.5
Date: 2023-09-24 09:20:02 UTC
BugReport: https://github.com/spedygiorgio/markovchain/issues
##ordenar los datos# Cargar la base de datosdata <-read_excel("C:\\Users\\merar\\Downloads\\Base_de_datos_simulada_pacientes_enfermedades_cronicas (1).xlsx")attach(data)# Paso 1: Ordenar los datos por paciente y fechadata <- data %>%arrange(Paciente, Fecha)
transiciones <- data %>%group_by(Paciente) %>%mutate(estado_anterior =lag(s)) %>%filter(!is.na(estado_anterior)) %>%# Eliminar primeras filas sin transiciónungroup() # Desagrupar después de calcular transiciones por pacientehead(transiciones$s)
#Crear la tabla de transiciones entre estadostabla_transiciones <- transiciones %>%count(estado_anterior, s, name ="conteo") %>%pivot_wider(names_from = s, values_from = conteo, values_fill =0) %>%column_to_rownames(var ="estado_anterior")tabla_transiciones
# Calcular la distribución estacionaria#install.packages("pracma")library(pracma) # Para resolver el sistema lineal
Warning: package 'pracma' was built under R version 4.4.2
A <-t(P) -diag(1, 4) # (P^T - I)A <-rbind(A, rep(1, 4)) # Agregar la condición de suma = 1b <-c(rep(0, 4), 1) # Vector del lado derechopi <-solve(t(A) %*% A, t(A) %*% b) # Resolver el sistema lineal usando mínimos cuadradoscat("Distribución estacionaria:\n")
The following object is masked from 'package:tibble':
as_data_frame
The following object is masked from 'package:tidyr':
crossing
The following objects are masked from 'package:dplyr':
as_data_frame, groups, union
The following objects are masked from 'package:stats':
decompose, spectrum
The following object is masked from 'package:base':
union
# Convertir la matriz de transición a un objeto de matriztransition_matrix <-as(cadena_markov, "matrix")# Crear el grafograph <-graph_from_adjacency_matrix(transition_matrix, mode ="directed", weighted =TRUE)# etiquetas y pesosE(graph)$width <-E(graph)$weight *5# Ajusta el grosor de las aristas basado en la probabilidadE(graph)$color <-ifelse(E(graph)$weight >0.25, "red", "gray") # Aristas más probables en rojoV(graph)$label <-as.character(1:length(V(graph))) # Nodos etiquetados como 1, 2, 3, ...# Graficar el grafoplot(graph, edge.label =round(E(graph)$weight, 2), layout = layout_in_circle,main ="Visualización de la Matriz de Transición de Estados de Salud")legend("topright", legend =c("1 - Empeoramiento leve", "2 - Emeporamiento severo", "3 - Mejoría", "4 - Salud estable"), title ="Leyenda", box.lty =0, cex =0.65)
Preguntas de Probabilidad
Pregunta 1: Probabilidad de que en 2 meses alguien pase de Empeoramiento leve a Mejoría