feat: add chi-squared test analysis and visualization for candy color distribution in R script

This commit is contained in:
2025-03-17 11:28:21 +01:00
parent da90ba8994
commit 93694cfb22
2 changed files with 67 additions and 5 deletions

View File

@@ -102,11 +102,6 @@ cat("\nRésultat avec la fonction intégrée chisq.test():\n")
chitest <- chisq.test(observed_counts, p = expected_probs, rescale.p = TRUE)
print(chitest)
# Note sur la fiabilité du test avec petit échantillon
cat("\nNote sur la fiabilité: Avec seulement 12 observations, le test du chi-deux\n")
cat("peut manquer de puissance. Vérifiez que chaque classe contient au moins\n")
cat("5 observations attendues pour une meilleure fiabilité.\n")
# Afficher les effectifs par classe
cat("\nEffectifs par classe:\n")
for(i in seq_along(observed_counts)) {

67
TP6/Exercice1.R Normal file
View File

@@ -0,0 +1,67 @@
# Données observées
observed <- c(B = 84, J = 79, R = 75, O = 40, V = 36, D = 47)
total <- sum(observed)
# Proportions attendues selon le responsable de communication
expected_props <- c(B = 0.3, J = 0.2, R = 0.2, O = 0.1, V = 0.1, D = 0.1)
# Calcul des effectifs attendus
expected <- total * expected_props
# Test du chi-deux
chi_squared <- sum((observed - expected)^2 / expected)
degrees_freedom <- length(observed) - 1
p_value <- pchisq(chi_squared, df = degrees_freedom, lower.tail = FALSE)
# Valeur critique pour alpha = 0.05
alpha <- 0.05
critical_value <- qchisq(1 - alpha, df = degrees_freedom)
# Affichage des résultats
cat("Analyse de la distribution des couleurs des bonbons Yopy\n")
cat("--------------------------------------------------\n")
cat(sprintf("Nombre total de bonbons: %d\n\n", total))
# Tableau des effectifs observés et attendus
colors <- c("Brun", "Jaune", "Rouge", "Orange", "Vert", "Doré")
cat("Couleur Observé Attendu Ecart (%) \n")
cat("--------------------------------\n")
for (i in seq_along(observed)) {
ecart <- sqrt(((observed[i] - expected[i])^2 / expected[i]) * 100)
cat(sprintf("%-8s %4d %5.1f %6.3f\n",
colors[i], observed[i], expected[i], ecart))
}
# Résultats du test
cat("\nTest du chi-deux\n")
cat("--------------\n")
cat("H0: La distribution suit les proportions annoncées.\n")
cat("H1: La distribution ne suit pas les proportions annoncées.\n\n")
cat(sprintf("Chi-deux calculé: %.3f\n", chi_squared))
cat(sprintf("Degrés de liberté: %d\n", degrees_freedom))
cat(sprintf("Valeur critique (α = %.2f): %.3f\n", alpha, critical_value))
cat(sprintf("p-value: %.6f\n\n", p_value))
# Conclusion
cat("Conclusion:\n")
if (chi_squared > critical_value) {
cat(sprintf("Comme χ² = %.3f > %.3f et p-value = %.6f < %.2f, nous rejetons H0.\n",
chi_squared, critical_value, p_value, alpha))
cat("On peut affirmer, avec un risque de 5%, que le responsable de la communication a tort.\n")
} else {
cat(sprintf("Comme χ² = %.3f < %.3f et p-value = %.6f > %.2f, nous ne pouvons pas rejeter H0.\n",
chi_squared, critical_value, p_value, alpha))
cat("On ne peut pas affirmer que le responsable de la communication a tort.\n")
}
# Vérification avec la fonction intégrée
cat("\nRésultat avec la fonction intégrée chisq.test():\n")
print(chisq.test(observed, p = expected_props))
# Graphique comparatif
barplot_data <- rbind(observed, expected)
colnames(barplot_data) <- colors
barplot(barplot_data, beside = TRUE, col = c("lightblue", "lightgreen"),
main = "Distribution des couleurs des bonbons Yopy",
ylab = "Nombre de bonbons", ylim = c(0, max(barplot_data) * 1.2))
legend("topright", legend = c("Observé", "Attendu"), fill = c("lightblue", "lightgreen"))