0% ont trouvé ce document utile (0 vote)
4 vues8 pages

Analyse des données diabétiques R

Le document présente une analyse des données diabétologiques à l'aide de R, incluant l'installation de packages, l'importation et le nettoyage des données, ainsi que des analyses descriptives et bivariées. Il décrit également des régressions logistiques pour évaluer l'impact de diverses variables sur des conditions médicales spécifiques. Enfin, les résultats sont préparés pour une exportation vers un document Word.

Transféré par

Emmanuel NDOGOTO
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues8 pages

Analyse des données diabétiques R

Le document présente une analyse des données diabétologiques à l'aide de R, incluant l'installation de packages, l'importation et le nettoyage des données, ainsi que des analyses descriptives et bivariées. Il décrit également des régressions logistiques pour évaluer l'impact de diverses variables sur des conditions médicales spécifiques. Enfin, les résultats sont préparés pour une exportation vers un document Word.

Transféré par

Emmanuel NDOGOTO
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

# ============================================

# ANALYSE DES DONNÉES DIABÉTOLOGIQUES - [Link]


# R version 4.5.2 / RStudio 2025
# ============================================

# --------------------------
# 1. INSTALLATION DES PACKAGES
# --------------------------
packages <- c(
"readxl", # Lecture Excel
"dplyr", # Manipulation de données
"tidyr", # Nettoyage de données
"summarytools", # Statistiques descriptives
"gtsummary", # Tables descriptives et régression
"ggplot2", # Graphiques
"epiDisplay", # OR, IC, Khi2
"broom", # Nettoyage sorties modèles
"flextable", # Tables formatées
"officer", # Export Word
"reporttools", # Formatage statistiques
"stringr", # Manipulation texte
"forcats" # Manipulation facteurs
)

# Installation si nécessaire
installed_packages <- packages %in% rownames([Link]())
if (any(!installed_packages)) {
[Link](packages[!installed_packages])
}

# Chargement des packages


invisible(lapply(packages, library, [Link] = TRUE))

# --------------------------
# 2. IMPORTATION DES DONNÉES
# --------------------------
# Chemin du fichier (à adapter)
file_path <- "[Link]"

# Lecture du fichier
df <- read_excel(file_path, sheet = "Base de données")

# Aperçu structure
cat("Dimensions des données :", dim(df), "\n")
cat("\nStructure des données :\n")
str(df, [Link] = 1)

# --------------------------
# 3. NETTOYAGE ET PRÉPARATION
# --------------------------
# Conversion des colonnes "non"/"Oui" en logique
binary_columns <- c(
"40-64 ans", ">65 ans", "Enseignant", "Comptable", "Menagere",
"Commercant", "Avocat", "Aucune", "Couturière", "Secretaire de bureau",
"Infirmier", "Sentinelle", "Agent Etat", "Policier", "Ouvrier",
"Pasteur", "Cultivateur", "Menuisier", "Plombier", "Medecin",
"Militaire", "Marié", "Veuf", "Divorcé", "Universitaire",
"Sécondaire", "Primaire", "ATCDFamilaiunondeDS", "HTA", "Tabagisme",
"Alcoolisme", "Sédendatarité", "SPP", "Nycturie", "Palpitations",
"Asthéniephysique", "Paresthésie", "Baisseacuitévisuelle",
"Amaigrissement", "Précordialgie", "Anorexie", "Dyspnée",
"Veriges", "Trouble erectil", "Douleur épigastrique", "Dyspnée.1",
"Normal", "Surpoids", "Obésité", "TA Normal", "Normale Haute",
"HTA I", "HTA II", "HTA III", "Neuropathie", "AVC",
"Insuffisancecardiaque", "Aucune.1", "Pied diabétique",
"Amputation", "Trouble éréctil", "Paresthésie.1", "Rétinopathie",
"Coagulopathie", "Hypercoagulabilité", "Hypocagulabilité"
)

for (col in binary_columns) {


if (col %in% names(df)) {
df[[col]] <- ifelse(toupper(df[[col]]) == "OUI", 1,
ifelse(toupper(df[[col]]) == "NON", 0, NA))
df[[col]] <- [Link](df[[col]])
}
}

# Variables dépendantes
df$Hypercoagulabilité <- [Link](df$Hypercoagulabilité)
df$Coagulopathie <- [Link](df$Coagulopathie)
df$Hypocagulabilité <- [Link](df$Hypocagulabilité)

# Conversion des variables numériques


numeric_cols <- c("Age", "AnciennetéduDS", "Anciennetédel'HTA",
"IMC", "Tourdetaille", "Tourdehanche", "RapportTH",
"HbA1", "Cholestérol (mg/dl)", "HDL-C", "LDL - C",
"Triglycérides", "Acide urique", "APTT", "TP", "TT",
"Fibrinogene", "INR", "Plaquettes")

for (col in numeric_cols) {


if (col %in% names(df)) {
df[[col]] <- [Link](df[[col]])
}
}

# Variables catégorielles supplémentaires


categorical_cols <- c(
"Tranche d'âge", "Sexe", "Profession", "statut matrimonial",
"niveaud'instruction", "TA x", "Grade TA", "Complications",
"Traitement", "Traitement classification", "ADO", "Insuline",
"Insuline + ADO", "Aucun.2", "HbA1_nom", "Cholestérol (mg/dl)_nom",
"HDL-C_nom", "LDL - C_nom", "Triglycérides_nom", "Acide urique_nom",
"APTT_nom", "TP_nom", "TT_nom", "Fibrinogene_nom", "INR_nom",
"Plaquettes_nom"
)

for (col in categorical_cols) {


if (col %in% names(df)) {
df[[col]] <- [Link](df[[col]])
}
}

# Vérification des valeurs manquantes


cat("\nValeurs manquantes par colonne :\n")
missing_summary <- sapply(df, function(x) sum([Link](x)))
print(missing_summary[missing_summary > 0])

# --------------------------
# 4. ANALYSE DESCRIPTIVE
# --------------------------
cat("\n\n=====================\nANALYSE DESCRIPTIVE\n=====================\n")

# Table descriptive générale


descr_table <- dfSummary(df, style = "grid",
[Link] = FALSE,
headings = FALSE)
print(descr_table)

# Statistiques descriptives par variable dépendante


desc_by_hypercoag <- df %>%
select_if([Link]) %>%
tbl_summary(by = Hypercoagulabilité,
statistic = list(all_continuous() ~ "{mean} ({sd})"),
missing = "no") %>%
add_p() %>%
bold_labels()

desc_by_coagulopathie <- df %>%


select_if([Link]) %>%
tbl_summary(by = Coagulopathie,
statistic = list(all_continuous() ~ "{mean} ({sd})"),
missing = "no") %>%
add_p() %>%
bold_labels()

desc_by_hypocoag <- df %>%


select_if([Link]) %>%
tbl_summary(by = Hypocagulabilité,
statistic = list(all_continuous() ~ "{mean} ({sd})"),
missing = "no") %>%
add_p() %>%
bold_labels()

# --------------------------
# 5. ANALYSE BIVARIÉE
# --------------------------
cat("\n\n===================\nANALYSE BIVARIÉE\n===================\n")

# Fonction pour analyse bivariée


bivariate_analysis <- function(data, outcome_var, var_list) {
results <- list()

for (var in var_list) {


if (var %in% names(data)) {
# Test statistique selon le type de variable
if ([Link](data[[var]]) | [Link](data[[var]])) {
# Test du Khi2
tbl <- table(data[[outcome_var]], data[[var]])
if (all(dim(tbl) > 1)) {
chi_test <- [Link](tbl)
results[[var]] <- list(
table = tbl,
chi_squared = chi_test$statistic,
p_value = chi_test$[Link],
method = "Chi-square"
)
}
} else if ([Link](data[[var]])) {
# Test t ou ANOVA
if (length(unique([Link](data[[outcome_var]]))) == 2) {
# Test t
group1 <- data[[var]][data[[outcome_var]] == levels(data[[outcome_var]])
[1]]
group2 <- data[[var]][data[[outcome_var]] == levels(data[[outcome_var]])
[2]]
t_test <- [Link](group1, group2)
results[[var]] <- list(
mean_group1 = mean(group1, [Link] = TRUE),
mean_group2 = mean(group2, [Link] = TRUE),
t_statistic = t_test$statistic,
p_value = t_test$[Link],
method = "t-test"
)
}
}
}
}
return(results)
}

# Variables indépendantes à tester (exemples)


independent_vars <- c("Age", "Sexe", "HTA", "Tabagisme", "Alcoolisme",
"IMC", "TA x", "Grade TA", "Complications")

# Analyse bivariée pour chaque variable dépendante


bivar_hypercoag <- bivariate_analysis(df, "Hypercoagulabilité", independent_vars)
bivar_coagulopathie <- bivariate_analysis(df, "Coagulopathie", independent_vars)
bivar_hypocoag <- bivariate_analysis(df, "Hypocagulabilité", independent_vars)

# Affichage des résultats


print("Analyse bivariée - Hypercoagulabilité :")
print(bivar_hypercoag)

print("Analyse bivariée - Coagulopathie :")


print(bivar_coagulopathie)

print("Analyse bivariée - Hypocoagulabilité :")


print(bivar_hypocoag)

# --------------------------
# 6. RÉGRESSION LOGISTIQUE
# --------------------------
cat("\n\n=======================\nRÉGRESSION LOGISTIQUE\n=======================\
n")

# Fonction pour régression logistique


run_logistic_regression <- function(data, outcome, predictors) {
# Formule du modèle
formula_str <- paste(outcome, "~", paste(predictors, collapse = " + "))
formula_obj <- [Link](formula_str)

# Modèle complet
model <- glm(formula_obj, data = data, family = binomial(link = "logit"))

# Résumé détaillé
summary_model <- summary(model)
# OR et IC
or_ci <- exp(cbind(OR = coef(model), confint(model)))

# Khi2 du modèle
model_chi2 <- model$[Link] - model$deviance
model_df <- model$[Link] - model$[Link]
model_p <- 1 - pchisq(model_chi2, model_df)

# Tableau de résultats
results_table <- cbind(
OR = exp(coef(model)),
CI_lower = exp(confint(model)[,1]),
CI_upper = exp(confint(model)[,2]),
p_value = coef(summary_model)[,4]
)

return(list(
model = model,
summary = summary_model,
or_ci = or_ci,
results_table = results_table,
model_chi2 = model_chi2,
model_df = model_df,
model_p = model_p
))
}

# Prédicteurs pour la régression (exemples)


predictors <- c("Age", "Sexe", "HTA", "Tabagisme", "IMC")

# Régression pour Hypercoagulabilité


logit_hypercoag <- run_logistic_regression(df, "Hypercoagulabilité", predictors)
cat("\nRégression logistique - Hypercoagulabilité :\n")
print(logit_hypercoag$summary)
cat("\nOR et IC 95% :\n")
print(logit_hypercoag$or_ci)
cat(sprintf("\nKhi2 du modèle = %.2f, df = %d, p = %.4f\n",
logit_hypercoag$model_chi2, logit_hypercoag$model_df,
logit_hypercoag$model_p))

# Régression pour Coagulopathie


logit_coagulopathie <- run_logistic_regression(df, "Coagulopathie", predictors)
cat("\nRégression logistique - Coagulopathie :\n")
print(logit_coagulopathie$summary)
cat("\nOR et IC 95% :\n")
print(logit_coagulopathie$or_ci)
cat(sprintf("\nKhi2 du modèle = %.2f, df = %d, p = %.4f\n",
logit_coagulopathie$model_chi2, logit_coagulopathie$model_df,
logit_coagulopathie$model_p))

# Régression pour Hypocoagulabilité


logit_hypocoag <- run_logistic_regression(df, "Hypocagulabilité", predictors)
cat("\nRégression logistique - Hypocoagulabilité :\n")
print(logit_hypocoag$summary)
cat("\nOR et IC 95% :\n")
print(logit_hypocoag$or_ci)
cat(sprintf("\nKhi2 du modèle = %.2f, df = %d, p = %.4f\n",
logit_hypocoag$model_chi2, logit_hypocoag$model_df,
logit_hypocoag$model_p))

# --------------------------
# 7. EXPORTATION VERS WORD
# --------------------------
cat("\n\n===================\nEXPORTATION WORD\n===================\n")

# Création du document Word


doc <- read_docx()

# Titre principal
doc <- doc %>%
body_add_par("ANALYSE DES DONNÉES DIABÉTOLOGIQUES", style = "heading 1") %>%
body_add_par(paste("Date :", [Link]()), style = "Normal") %>%
body_add_par(" ", style = "Normal")

# 1. Description des données


doc <- doc %>%
body_add_par("1. DESCRIPTION DES DONNÉES", style = "heading 2") %>%
body_add_par(paste("Nombre d'observations :", nrow(df)), style = "Normal") %>%
body_add_par(paste("Nombre de variables :", ncol(df)), style = "Normal")

# Table descriptive
doc <- doc %>%
body_add_par("Table descriptive des variables numériques", style = "heading 3")

# Conversion des tables gtsummary en flextable


desc_hypercoag_ft <- as_flex_table(desc_by_hypercoag)
desc_coagulopathie_ft <- as_flex_table(desc_by_coagulopathie)
desc_hypocoag_ft <- as_flex_table(desc_by_hypocoag)

doc <- doc %>%


body_add_par("Par statut d'hypercoagulabilité", style = "heading 4") %>%
body_add_flextable(desc_hypercoag_ft) %>%
body_add_par(" ", style = "Normal") %>%
body_add_par("Par statut de coagulopathie", style = "heading 4") %>%
body_add_flextable(desc_coagulopathie_ft) %>%
body_add_par(" ", style = "Normal") %>%
body_add_par("Par statut d'hypocoagulabilité", style = "heading 4") %>%
body_add_flextable(desc_hypocoag_ft)

# 2. Analyse bivariée
doc <- doc %>%
body_add_par("2. ANALYSE BIVARIÉE", style = "heading 2")

# Fonction pour ajouter les résultats bivariés


add_bivariate_results <- function(doc, results, title) {
doc <- doc %>%
body_add_par(title, style = "heading 3")

for (var_name in names(results)) {


res <- results[[var_name]]
doc <- doc %>%
body_add_par(paste("Variable :", var_name), style = "Normal") %>%
body_add_par(paste("Méthode :", res$method), style = "Normal") %>%
body_add_par(paste("Statistique :", round(res[[3]], 3)), style = "Normal") %>
%
body_add_par(paste("p-value :", [Link](res$p_value, digits = 3)), style
= "Normal") %>%
body_add_par(" ", style = "Normal")
}
return(doc)
}

doc <- add_bivariate_results(doc, bivar_hypercoag, "Hypercoagulabilité")


doc <- body_add_par(doc, " ", style = "Normal")
doc <- add_bivariate_results(doc, bivar_coagulopathie, "Coagulopathie")
doc <- body_add_par(doc, " ", style = "Normal")
doc <- add_bivariate_results(doc, bivar_hypocoag, "Hypocoagulabilité")

# 3. Régression logistique
doc <- doc %>%
body_add_par("3. RÉGRESSION LOGISTIQUE", style = "heading 2")

# Fonction pour ajouter les résultats de régression


add_regression_results <- function(doc, results, title) {
doc <- doc %>%
body_add_par(title, style = "heading 3") %>%
body_add_par(paste("Khi2 du modèle :", round(results$model_chi2, 2)), style =
"Normal") %>%
body_add_par(paste("Degrés de liberté :", results$model_df), style = "Normal")
%>%
body_add_par(paste("p-value du modèle :", [Link](results$model_p, digits =
3)), style = "Normal") %>%
body_add_par(" ", style = "Normal")

# Tableau des OR et IC
tbl <- results$results_table
ft <- flextable([Link](
Variable = rownames(tbl),
OR = sprintf("%.2f", tbl[,1]),
IC_95 = sprintf("%.2f - %.2f", tbl[,2], tbl[,3]),
p_value = [Link](tbl[,4], digits = 3)
))

ft <- ft %>%
set_header_labels(Variable = "Variable",
OR = "OR",
IC_95 = "IC 95%",
p_value = "p-value") %>%
theme_box() %>%
autofit()

doc <- doc %>%


body_add_flextable(ft) %>%
body_add_par(" ", style = "Normal")

return(doc)
}

doc <- add_regression_results(doc, logit_hypercoag, "Hypercoagulabilité")


doc <- add_regression_results(doc, logit_coagulopathie, "Coagulopathie")
doc <- add_regression_results(doc, logit_hypocoag, "Hypocoagulabilité")

# Sauvegarde du document
output_file <- paste0("Analyse_Diabeto_", [Link](), ".docx")
print(doc, target = output_file)
cat("\nDocument Word sauvegardé :", output_file, "\n")
# --------------------------
# 8. SORTIES COMPLÉMENTAIRES
# --------------------------
# Sauvegarde des données nettoyées
[Link](df, paste0("Donnees_nettoyees_", [Link](), ".csv"), [Link] = FALSE)

# Sauvegarde des résultats en RData


[Link](paste0("Analyse_complete_", [Link](), ".RData"))

cat("\n\n=====================\nANALYSE TERMINÉE\n=====================\n")
cat("Fichiers générés :\n")
cat("1.", output_file, "(rapport Word)\n")
cat("2. Donnees_nettoyées_", [Link](), ".csv\n", sep = "")
cat("3. Analyse_complete_", [Link](), ".RData\n", sep = "")

Vous aimerez peut-être aussi