# Générer une base simulée en français
set.seed(123)
hypertension_data <- data.frame(
Age = sample(18:80, 100, replace = TRUE), # Âge
Sexe = sample(c("Homme", "Femme"), 100, replace = TRUE), # Sexe
IMC = round(runif(100, 18, 40), 1), # Indice de masse corporelle
Pression_Systolique = round(rnorm(100, 130, 15)), # Tension systolique
Pression_Diastolique = round(rnorm(100, 85, 10)), # Tension diastolique
Fumeur = sample(c("Oui", "Non"), 100, replace = TRUE), # Fumeur
Diabète = sample(c("Oui", "Non"), 100, replace = TRUE), # Diabète
Activité_Physique = sample(c("Oui", "Non"), 100, replace = TRUE) # Activité physique
)
attach(hypertension_data)
# Aperçu des données
head(hypertension_data)
## Age Sexe IMC Pression_Systolique Pression_Diastolique Fumeur Diabète
## 1 48 Femme 39.2 95 82 Oui Oui
## 2 32 Femme 31.2 139 71 Oui Non
## 3 68 Homme 29.3 129 76 Oui Non
## 4 31 Femme 26.9 94 85 Non Oui
## 5 20 Femme 37.4 130 81 Oui Oui
## 6 59 Homme 26.0 129 71 Oui Oui
## Activité_Physique
## 1 Non
## 2 Oui
## 3 Oui
## 4 Non
## 5 Non
## 6 Non
# Ajouter une colonne pour indiquer si la pression artérielle est élevée
hypertension_data$PAE <- ifelse(hypertension_data$Pression_Systolique >= 140 | hypertension_data$Pression_Diastolique >= 90, "Oui", "Non")
# Ajouter une colonne pour l'état nutritionnel
hypertension_data$Etat_Nutritionnel <- cut(
hypertension_data$IMC,
breaks = c(-Inf, 18.5, 25, 30, 35, 40, Inf),
labels = c("Insuffisance pondérale", "Poids normal", "Surpoids",
"Obésité classe I", "Obésité classe II", "Obésité classe III"),
right = FALSE
)
library(dplyr)
##
## Attachement du package : 'dplyr'
## Les objets suivants sont masqués depuis 'package:stats':
##
## filter, lag
## Les objets suivants sont masqués depuis 'package:base':
##
## intersect, setdiff, setequal, union
# Conversion des variables caractères en facteurs
hypertension_data <- hypertension_data %>%
mutate_if(is.character, as.factor)
# Vérification des types de colonnes
glimpse(hypertension_data)
## Rows: 100
## Columns: 10
## $ Age <int> 48, 32, 68, 31, 20, 59, 67, 71, 60, 54, 69, 31, 7…
## $ Sexe <fct> Femme, Femme, Homme, Femme, Femme, Homme, Homme, …
## $ IMC <dbl> 39.2, 31.2, 29.3, 26.9, 37.4, 26.0, 24.3, 21.8, 2…
## $ Pression_Systolique <dbl> 95, 139, 129, 94, 130, 129, 106, 143, 119, 146, 1…
## $ Pression_Diastolique <dbl> 82, 71, 76, 85, 81, 71, 82, 76, 92, 94, 82, 67, 9…
## $ Fumeur <fct> Oui, Oui, Oui, Non, Oui, Oui, Oui, Non, Non, Oui,…
## $ Diabète <fct> Oui, Non, Non, Oui, Oui, Oui, Oui, Oui, Oui, Oui,…
## $ Activité_Physique <fct> Non, Oui, Oui, Non, Non, Non, Oui, Oui, Non, Non,…
## $ PAE <fct> Non, Non, Non, Non, Non, Non, Non, Oui, Oui, Oui,…
## $ Etat_Nutritionnel <fct> Obésité classe II, Obésité classe I, Surpoids, Su…
# Description des variables univariées
library(gtsummary)
theme_gtsummary_language("fr",decimal.mark = ",",big.mark = " ")
## Setting theme "language: fr"
(t1<-hypertension_data %>%
tbl_summary(
sort = all_categorical()~"frequency",
include = -c(IMC,Pression_Systolique,Pression_Diastolique),
statistic = list(all_categorical()~ "{n}({p}%)",
all_continuous() ~ "{mean} ({sd})"),
digits =list(all_categorical() ~ c(0,1),
all_continuous()~1),
)%>%
bold_labels())
| Caractéristique | N = 1001 |
|---|---|
| Age | 48,1 (17,2) |
| Sexe | |
| Femme | 55(55,0%) |
| Homme | 45(45,0%) |
| Fumeur | |
| Oui | 52(52,0%) |
| Non | 48(48,0%) |
| Diabète | |
| Oui | 55(55,0%) |
| Non | 45(45,0%) |
| Activité_Physique | |
| Non | 51(51,0%) |
| Oui | 49(49,0%) |
| PAE | |
| Oui | 56(56,0%) |
| Non | 44(44,0%) |
| Etat_Nutritionnel | |
| Poids normal | 32(32,0%) |
| Surpoids | 22(22,0%) |
| Obésité classe I | 22(22,0%) |
| Obésité classe II | 22(22,0%) |
| Insuffisance pondérale | 2(2,0%) |
| Obésité classe III | 0(0,0%) |
| 1 Moyenne (ET); n(%) | |
#Statistique Inférentielle
##Vérification des conditions d'utilisation des tests
### Test de normalité: Age ~ PAE
library(car)
## Le chargement a nécessité le package : carData
##
## Attachement du package : 'car'
## L'objet suivant est masqué depuis 'package:dplyr':
##
## recode
library(RcmdrMisc)
## Le chargement a nécessité le package : sandwich
normalityTest(Age ~ PAE, test="shapiro.test", data=hypertension_data)
##
## --------
## PAE = Non
##
## Shapiro-Wilk normality test
##
## data: Age
## W = 0.95091, p-value = 0.05946
##
## --------
## PAE = Oui
##
## Shapiro-Wilk normality test
##
## data: Age
## W = 0.94843, p-value = 0.0181
##
## --------
##
## p-values adjusted by the Holm method:
## unadjusted adjusted
## Non 0.059461 0.059461
## Oui 0.018097 0.036195
# calcul des tests statistiques
(t2<- hypertension_data %>%
tbl_summary(
sort = all_categorical()~"frequency",
include = -c(IMC,Pression_Systolique,Pression_Diastolique),
statistic = list(all_categorical()~ "{n}({p}%)",
all_continuous() ~ "{mean} ({sd})"),
digits =list(all_categorical() ~ c(0,1),
all_continuous()~1),
by=PAE) %>%
bold_labels()%>%
add_overall(last=T, col_label="**Effectif total** N = {N} ")%>%
add_p(
test = all_continuous() ~ "wilcox.test",
pvalue_fun = scales::label_pvalue(accuracy = .001)
)%>%
modify_header(
list(
label ~ "",
all_stat_cols(stat_0 = FALSE) ~ "_{level}_ (n={n}, {style_percent(p)}%)",
stat_0 ~ "Total (n={N})",
p.value ~ "**P-valeur**"
)
) %>%
modify_footnote(everything() ~ NA) %>%
modify_spanning_header(all_stat_cols() ~ "**Pression artérielle élevée**"))
## Warning: The `update` argument of `modify_header()` is deprecated as of gtsummary 2.0.0.
## ℹ Use `modify_header(...)` input instead. Dynamic dots allow for syntax like
## `modify_header(!!!list(...))`.
## ℹ The deprecated feature was likely used in the gtsummary package.
## Please report the issue at <https://github.com/ddsjoberg/gtsummary/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
|
Pression artérielle élevée
|
P-valeur | |||
|---|---|---|---|---|
| Non (n=44, 44%) | Oui (n=56, 56%) | Total (n=100) | ||
| Age | 46,2 (17,2) | 49,6 (17,3) | 48,1 (17,2) | 0.329 |
| Sexe | 0.124 | |||
| Femme | 28(63,6%) | 27(48,2%) | 55(55,0%) | |
| Homme | 16(36,4%) | 29(51,8%) | 45(45,0%) | |
| Fumeur | 0.208 | |||
| Oui | 26(59,1%) | 26(46,4%) | 52(52,0%) | |
| Non | 18(40,9%) | 30(53,6%) | 48(48,0%) | |
| Diabète | 0.373 | |||
| Oui | 22(50,0%) | 33(58,9%) | 55(55,0%) | |
| Non | 22(50,0%) | 23(41,1%) | 45(45,0%) | |
| Activité_Physique | 0.821 | |||
| Non | 23(52,3%) | 28(50,0%) | 51(51,0%) | |
| Oui | 21(47,7%) | 28(50,0%) | 49(49,0%) | |
| Etat_Nutritionnel | 0.340 | |||
| Poids normal | 12(27,3%) | 20(35,7%) | 32(32,0%) | |
| Surpoids | 7(15,9%) | 15(26,8%) | 22(22,0%) | |
| Obésité classe I | 11(25,0%) | 11(19,6%) | 22(22,0%) | |
| Obésité classe II | 13(29,5%) | 9(16,1%) | 22(22,0%) | |
| Insuffisance pondérale | 1(2,3%) | 1(1,8%) | 2(2,0%) | |
| Obésité classe III | 0(0,0%) | 0(0,0%) | 0(0,0%) | |
# Combinaison des tableaux
tbl_merge(
list(t1, t2),
tab_spanner = c("**Analyse descriptive**", "**Modèles bivariés**")
)
| Caractéristique |
Analyse descriptive
|
Modèles bivariés
|
|||
|---|---|---|---|---|---|
| N = 1001 | Non (n=44, 44%) | Oui (n=56, 56%) | Total (n=100) | P-valeur | |
| Age | 48,1 (17,2) | 46,2 (17,2) | 49,6 (17,3) | 48,1 (17,2) | 0.329 |
| Sexe | 0.124 | ||||
| Femme | 55(55,0%) | 28(63,6%) | 27(48,2%) | 55(55,0%) | |
| Homme | 45(45,0%) | 16(36,4%) | 29(51,8%) | 45(45,0%) | |
| Fumeur | 0.208 | ||||
| Oui | 52(52,0%) | 26(59,1%) | 26(46,4%) | 52(52,0%) | |
| Non | 48(48,0%) | 18(40,9%) | 30(53,6%) | 48(48,0%) | |
| Diabète | 0.373 | ||||
| Oui | 55(55,0%) | 22(50,0%) | 33(58,9%) | 55(55,0%) | |
| Non | 45(45,0%) | 22(50,0%) | 23(41,1%) | 45(45,0%) | |
| Activité_Physique | 0.821 | ||||
| Non | 51(51,0%) | 23(52,3%) | 28(50,0%) | 51(51,0%) | |
| Oui | 49(49,0%) | 21(47,7%) | 28(50,0%) | 49(49,0%) | |
| PAE | |||||
| Oui | 56(56,0%) | ||||
| Non | 44(44,0%) | ||||
| Etat_Nutritionnel | 0.340 | ||||
| Poids normal | 32(32,0%) | 12(27,3%) | 20(35,7%) | 32(32,0%) | |
| Surpoids | 22(22,0%) | 7(15,9%) | 15(26,8%) | 22(22,0%) | |
| Obésité classe I | 22(22,0%) | 11(25,0%) | 11(19,6%) | 22(22,0%) | |
| Obésité classe II | 22(22,0%) | 13(29,5%) | 9(16,1%) | 22(22,0%) | |
| Insuffisance pondérale | 2(2,0%) | 1(2,3%) | 1(1,8%) | 2(2,0%) | |
| Obésité classe III | 0(0,0%) | 0(0,0%) | 0(0,0%) | 0(0,0%) | |
| 1 Moyenne (ET); n(%) | |||||