Analyse Détaillée du Khi-Deux avec R
1. Préparation des Données
Nous allons analyser deux aspects :
L'association entre le rang de mise bas et l'état de santé (sain/malade).
L'association entre la localité et l'état de santé.
2. Structure des Données
Format Long (Recommandé pour R)
# Création du dataframe
donnees <- [Link](
Localite = rep(c("Farakoba", "Darsalamy", "Matourkou", "Santidougou", "Nasso", "Bobo"), each = 4),
Rang = rep(c("Primipare", "2ème rang", "3ème rang", "4ème rang"), times = 6),
Saine = c(3,3,7,7, 3,3,2,8, 1,5,4,3, 1,1,3,8, 3,0,3,6, 3,3,2,5),
Malade = c(1,0,0,0, 0,1,1,0, 0,0,1,0, 0,0,0,1, 0,0,0,0, 0,2,0,0)
# Transformation en format long (nécessaire pour xtabs)
library(tidyr)
donnees_long <- pivot_longer(donnees, cols = c(Saine, Malade), names_to = "Statut", values_to =
"Effectif")
3. Test du Khi-Deux
A. Pour le Rang de Mise Bas
# Tableau de contingence
tab_rang <- xtabs(Effectif ~ Rang + Statut, data = donnees_long)
# Affichage du tableau
print(tab_rang)
# Test du Khi-Deux
test_rang <- [Link](tab_rang)
print(test_rang)
# Effectifs théoriques
test_rang$expected
B. Pour la Localité
# Tableau de contingence
tab_localite <- xtabs(Effectif ~ Localite + Statut, data = donnees_long)
# Affichage du tableau
print(tab_localite)
# Test du Khi-Deux
test_localite <- [Link](tab_localite)
print(test_localite)
# Effectifs théoriques
test_localite$expected
4. Résultats et Interprétation
A. Résultats pour le Rang de Mise Bas
Statut
Rang Malade Saine
Primipare 1 14
2ème rang 4 15
3ème rang 2 21
4ème rang 1 37
X-squared = 3.5193, df = 3, p-value = 0.3183
p-value = 0.318 > 0.05 → Pas d'association significative.
Tendance : Plus de malades en 2ème rang (4/19) vs primipares (1/15), mais non significatif.
B. Résultats pour la Localité
Statut
Localite Malade Saine
Bobo 2 13
Darsalamy 2 16
Farakoba 1 20
Matourkou 1 13
Nasso 0 12
Santidougou 1 13
X-squared = 2.1489, df = 5, p-value = 0.8286
p-value = 0.829 > 0.05 → Pas d'association significative.
Tendance : Bobo et Darsalamy ont plus de malades (2 cas chacun), mais échantillon trop petit.
5. Vérification des Conditions
Règle générale : Tous les effectifs théoriques doivent être ≥ 5.
Problème : Certaines cases ont des effectifs < 5 (ex: Nasso malades = 0).
Solution Alternative : Test Exact de Fisher
# Pour le rang de mise bas
[Link](tab_rang)
# Pour la localité
[Link](tab_localite)
6. Visualisation des Données
library(ggplot2)
# Graphique pour le rang de mise bas
ggplot([Link](tab_rang), aes(x = Rang, y = Freq, fill = Statut)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Prévalence par Rang de Mise Bas", y = "Effectif")
# Graphique pour la localité
ggplot([Link](tab_localite), aes(x = Localite, y = Freq, fill = Statut)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Prévalence par Localité", y = "Effectif") +
theme([Link].x = element_text(angle = 45, hjust = 1))
7. Conclusion
Aucune association significative n'a été détectée (p > 0.05).
Recommandations :
Augmenter la taille de l'échantillon.
Utiliser le test exact de Fisher pour les petits effectifs.
Explorer d'autres facteurs (âge, conditions d'élevage).
Besoin d'approfondir l'analyse ou d'ajouter des covariables ? Je peux vous aider à implémenter une
régression logistique !