mirror of
https://github.com/BreizhHardware/TD-R.git
synced 2026-01-18 16:47:34 +01:00
feat: add chi-squared test analysis for hospital admissions data in new R script
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
# https://github.com/BreizhHardware/TD-R/tree/main/TP6
|
||||
|
||||
# Données observées
|
||||
observed <- c(B = 84, J = 79, R = 75, O = 49, V = 36, D = 47)
|
||||
total <- sum(observed)
|
||||
|
||||
75
TP6/Exercice2.R
Normal file
75
TP6/Exercice2.R
Normal file
@@ -0,0 +1,75 @@
|
||||
# https://github.com/BreizhHardware/TD-R/tree/main/TP6
|
||||
|
||||
# Données du problème
|
||||
mois <- 1:12
|
||||
admissions <- c(18, 16, 8, 10, 6, 4, 4, 9, 11, 10, 12, 12)
|
||||
n_total <- sum(admissions)
|
||||
|
||||
# Test d'ajustement du chi-deux
|
||||
# H0: Distribution uniforme (entrées réparties au hasard)
|
||||
# H1: Distribution non uniforme (certains mois plus propices)
|
||||
|
||||
# Valeurs attendues sous H0 (distribution uniforme)
|
||||
attendues <- rep(n_total / 12, 12) # 10 admissions par mois
|
||||
|
||||
# Niveau de risque
|
||||
alpha <- 0.01
|
||||
|
||||
# Calcul du chi-deux
|
||||
chi_2 <- sum((admissions - attendues)^2 / attendues)
|
||||
|
||||
# Degrés de liberté
|
||||
df <- 12 - 1
|
||||
|
||||
# Valeur critique
|
||||
val_critique <- qchisq(1 - alpha, df)
|
||||
|
||||
# p-value
|
||||
p_value <- pchisq(chi_2, df, lower.tail = FALSE)
|
||||
|
||||
# Affichage des résultats
|
||||
cat("Analyse de la répartition des entrées à l'hôpital par mois\n")
|
||||
cat("--------------------------------------------------------\n")
|
||||
cat(sprintf("Nombre total d'admissions: %d\n", n_total))
|
||||
cat(sprintf("Statistique du chi-deux calculée: %.4f\n", chi_2))
|
||||
cat(sprintf("Degrés de liberté: %d\n", df))
|
||||
cat(sprintf("Valeur critique (α = %.2f): %.4f\n", alpha, val_critique))
|
||||
cat(sprintf("p-value: %.4f\n", p_value))
|
||||
|
||||
# Conclusion
|
||||
cat("\nConclusion:\n")
|
||||
if (chi_2 > val_critique) {
|
||||
cat(sprintf("Comme χ² = %.4f > %.4f et p-value = %.4f < %.2f, nous rejetons H0.\n",
|
||||
chi_2, val_critique, p_value, alpha))
|
||||
cat("On peut affirmer, avec un risque de 1%, que les entrées ne se font pas au hasard dans l'année.\n")
|
||||
} else {
|
||||
cat(sprintf("Comme χ² = %.4f < %.4f et p-value = %.4f > %.2f, nous ne pouvons pas rejeter H0.\n",
|
||||
chi_2, val_critique, p_value, alpha))
|
||||
cat("On ne peut pas affirmer, avec un risque de 1%, que certains mois sont plus propices à la maladie.\n")
|
||||
}
|
||||
|
||||
# Vérification avec la fonction intégrée
|
||||
chi_test <- chisq.test(admissions, p = rep(1/12, 12))
|
||||
cat("\nRésultat avec la fonction intégrée chisq.test():\n")
|
||||
print(chi_test)
|
||||
|
||||
# Représentation graphique
|
||||
barplot(admissions, names.arg = mois,
|
||||
col = "lightblue",
|
||||
main = "Répartition des entrées à l'hôpital par mois",
|
||||
xlab = "Mois",
|
||||
ylab = "Nombre d'entrées")
|
||||
|
||||
# Ajouter une ligne horizontale pour la valeur attendue
|
||||
abline(h = n_total / 12, col = "red", lwd = 2)
|
||||
legend("topright", legend = "Valeur attendue (distribution uniforme)",
|
||||
col = "red", lwd = 2)
|
||||
|
||||
# Afficher les contributions au chi-deux par mois
|
||||
cat("\nComparaison des effectifs observés et attendus par mois:\n")
|
||||
cat("Mois | Observés | Attendus | Ecart (%)\n")
|
||||
cat("---------------------------------\n")
|
||||
for(i in 1:12) {
|
||||
ecart <- sqrt(((admissions[i] - attendues[i])^2 / attendues[i]) * 100)
|
||||
cat(sprintf("%4d | %8d | %8.1f | %8.4f\n", i, admissions[i], attendues[i], ecart))
|
||||
}
|
||||
Reference in New Issue
Block a user