es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obteniendo Datos Resumidos para Datos Longitudinales en R.

Tengo un conjunto de datos longitudinales, que es un número de pacientes seguidos durante varios años en puntos de tiempo irregulares. No puedo publicarlo debido a problemas de confidencialidad.

Básicamente, cada fila representa un encuentro individual de un paciente, con fecha de admisión, fecha de alta, identificador de paciente y varias variables demográficas (por ejemplo, etnia) y otras variables.

por ejemplo:

Paciente Fecha de admisión Etnicidad
1 26-01-2007 Blanco
1 28-08-2008 Blanco
2 12-02-2001 Negro
2 01-12-2015 Negro
2 03-12-2018 Negro

He intentado usar varios paquetes como brolgar y tsibble, pero no puedo obtener estadísticas resumidas simples como el número de pacientes individuales, el número de encuentros por paciente, el tiempo desde la primera hasta la última visita por paciente en cada categoría étnica (esto probablemente merece otra pregunta, ya que probablemente sea mucho más difícil), por ejemplo,

En un conjunto de datos estándar, podrías usar dplyr para hacer algo como:

df %>%
  group_by(Etnicidad) %>%
  summarise(n = n())

para contar el número de pacientes por grupo.

Pero no estoy seguro de cómo hacerlo para este conjunto de datos a pesar de haber utilizado paquetes como brolgar/tsibble.

Agradecería cualquier consejo.

Muchas gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en R, datos de panel y análisis longitudinal, aquí está mi consejo para usted:

    Para obtener estadísticas resumidas simples como el número de pacientes individuales, el número de encuentros por paciente y el tiempo transcurrido desde la primera hasta la última asistencia por paciente en cada categoría étnica, puede probar lo siguiente:

    1. Convierta los datos en un formato de datos de panel/tidy utilizando paquetes como tidyr y dplyr.
    library(tidyr)
    library(dplyr)
    
    # Convertir los datos a formato de panel/tidy
    df_tidy <- df %>% pivot_longer(cols = -c(Patient, Ethnicity), names_to = "Tipo de Encuentro", values_to = "Fecha")
    
    # Calcular el número de encuentros por paciente
    encuentros <- df_tidy %>% group_by(Patient, Ethnicity) %>% summarise(n = n())
    
    # Calcular el tiempo transcurrido desde el primer hasta el último asistencia por paciente en cada categoría étnica
    tiempo <- df_tidy %>% group_by(Patient, Ethnicity) %>% summarise(Tiempo = diff(range(as.Date(Fecha, "%d-%m-%Y"))))
    
    # Calcular el número de pacientes individuales
    n_individuos <- df_tidy %>% select(Patient, Ethnicity) %>% distinct() %>% group_by(Ethnicity) %>% summarise(n = n())
    
    1. Utilice paquetes como plm y nlme para realizar análisis de datos de panel y longitudinales.
    library(plm)
    library(nlme)
    
    # Ejecutar un análisis de datos de panel
    modelo_panel <- plm(formula = Variable ~ Tiempo + Ethnicity, data = df_tidy, index = c("Patient", "Tipo de Encuentro"), model = "within")
    
    # Ejecutar un análisis longitudinal
    modelo_longitudinal <- lme(fixed = Variable ~ Tiempo + Ethnicity, data = df_tidy, random = ~ Tiempo | Patient)
    

    Espero que esto sea de ayuda. Avíseme si tiene alguna pregunta adicional.

Comments are closed.