# Script d'analyse des données de consultation harmonisées # Ce script examine en détail la structure et le contenu du fichier consultation_harmonized.json # pour comprendre les patterns et caractéristiques des données # Chargement des bibliothèques nécessaires library(jsonlite) # Pour la lecture du fichier JSON library(dplyr) # Pour la manipulation des données library(tidyr) # Pour le nettoyage des données library(lubridate) # Pour l'analyse des dates library(ggplot2) # Pour la visualisation library(stringr) # Pour la manipulation des chaînes de caractères # Fonction principale d'analyse analyze_consultation_data <- function(file_path) { # Lecture du fichier JSON print("Chargement des données...") data <- fromJSON(file_path)$data # 1. Analyse de la structure générale print("\n=== Structure générale des données ===") print("Nombre total d'enregistrements :") print(nrow(data)) print("\nColonnes présentes :") print(names(data)) # 2. Analyse par pays print("\n=== Distribution par pays ===") country_dist <- table(data$source) print(country_dist) # 3. Analyse temporelle # Correction pour l'analyse temporelle print("\n=== Analyse temporelle ===") data$consultation_date <- as.Date(data$consultation_date, format = "%d-%m-%Y") # Changé de %d/%m/%Y à %d-%m-%Y print("Période couverte :") print(paste("Du", min(data$consultation_date, na.rm = TRUE), "au", max(data$consultation_date, na.rm = TRUE))) # 4. Analyse des diagnostics print("\n=== Distribution des diagnostics ===") diag_dist <- table(data$diagnosis_result) print(diag_dist) # 5. Analyse des données manquantes print("\n=== Analyse des données manquantes ===") missing_data <- sapply(data, function(x) sum(is.na(x))) print("Nombre de valeurs manquantes par colonne :") print(missing_data) # 6. Analyse démographique print("\n=== Analyse démographique ===") print("Distribution des âges :") age_summary <- summary(data$patient_age) print(age_summary) print("\nDistribution par sexe :") sex_dist <- table(data$patient_sex) print(sex_dist) # 7. Analyse géographique print("\n=== Analyse géographique ===") print("Nombre de centres de santé uniques :") print(length(unique(data$id_center))) print("\nNombre de lieux de résidence uniques :") print(length(unique(data$residence_place))) print("\nNombre de lieux d'infection uniques :") print(length(unique(data$infection_place))) # 8. Création de visualisations # Cas par mois monthly_cases <- data %>% mutate(month = floor_date(consultation_date, "month")) %>% count(month, source) # Sauvegarde du graphique des cas mensuels print("\nCréation du graphique des cas mensuels...") ggplot(monthly_cases, aes(x = month, y = n, color = source)) + geom_line() + labs(title = "Évolution mensuelle des cas", x = "Date", y = "Nombre de cas") + theme_minimal() ggsave("monthly_cases.png") # 9. Analyse des patterns spécifiques print("\n=== Patterns spécifiques ===") # Nouvelles attaques vs récurrences print("Distribution nouvelles attaques vs récurrences :") attack_dist <- table(data$new_attack) print(attack_dist) # Diagnostic actif vs passif print("\nDistribution diagnostic actif vs passif :") active_diag_dist <- table(data$active_diagnosis) print(active_diag_dist) # 10. Génération de statistiques résumées par pays print("\n=== Statistiques par pays ===") country_stats <- data %>% group_by(source) %>% summarise( n_cases = n(), avg_age = mean(patient_age, na.rm = TRUE), pct_male = mean(patient_sex == "Male", na.rm = TRUE) * 100, pct_new_attack = mean(new_attack == TRUE, na.rm = TRUE) * 100, n_centers = n_distinct(id_center), n_residence_places = n_distinct(residence_place), earliest_date = min(consultation_date), latest_date = max(consultation_date) ) print(country_stats) # 11. Sauvegarde des résultats print("\n=== Sauvegarde des résultats ===") # Création d'un résumé structuré summary_data <- list( general = list( total_records = nrow(data), date_range = c(min(data$consultation_date), max(data$consultation_date)), countries = as.list(country_dist) ), diagnostics = as.list(diag_dist), demographics = list( age_summary = as.list(age_summary), sex_distribution = as.list(sex_dist) ), geography = list( unique_centers = length(unique(data$id_center)), unique_residences = length(unique(data$residence_place)), unique_infections = length(unique(data$infection_place)) ), country_statistics = country_stats ) # Sauvegarde au format JSON pour référence future writeLines(toJSON(summary_data, pretty = TRUE), "analysis_summary.json") return(summary_data) } # Exécution de l'analyse results <- analyze_consultation_data("data/consultation_harmonized.json")