From 6d46cd4892f9e45e1a24d8ca5a762711e6e17113 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= Date: Tue, 11 Mar 2025 16:53:43 +0100 Subject: [PATCH] feat: add histogram and confidence interval visualizations for weights and perform chi-squared test --- TP_estimateurs/Exercice1.R | 73 ++++++++++++++++++++++++++++++++++++-- TP_estimateurs/Exo bonus.R | 18 ++++------ 2 files changed, 77 insertions(+), 14 deletions(-) diff --git a/TP_estimateurs/Exercice1.R b/TP_estimateurs/Exercice1.R index 88aa2dc..0269d88 100644 --- a/TP_estimateurs/Exercice1.R +++ b/TP_estimateurs/Exercice1.R @@ -15,7 +15,7 @@ n <- length(poids) k <- sqrt(n) # Création de l'histogramme avec courbe de densité -hist(poids, +histoooo <- hist(poids, probability = TRUE, main = "Histogramme des poids des cocons", xlab = "Poids (g)", @@ -74,7 +74,7 @@ curve(dnorm(x, mean = moyenne, sd = ecart_type), # Ajout d'une légende legend("topright", - legend = c("Densité normale estimée"), + legend = "Densité normale estimée", col = "red", lwd = 2) @@ -101,6 +101,40 @@ cat("Intervalle de confiance à 95% pour la variance (σ²): [", round(borne_inf_variance, 6), ",", round(borne_sup_variance, 6), "] g²\n") +# Affichage de l'histogramme des poids avec la courbe de densité estimée et les intervalles de confiance + +scale_factor = max(histoooo$counts) / max(dnorm(seq(min(poids), max(poids), length.out=1), mean=mean(poids), sd=sd(poids))) + +hist(poids, + main = "Histogramme des poids des cocons", + xlab = "Poids (g)", + ylab = "Densité", + col = "lightblue", + ylim = c(0, max(histoooo$counts) * scale_factor), + breaks = k) + +# Colorer l'intervalle de confiance +x_vals <- seq(borne_inf_moyenne, borne_sup_moyenne, length.out = 100) +y_vals <- dnorm(x_vals, mean = moyenne, sd = ecart_type) +polygon(c(borne_inf_moyenne, x_vals, borne_sup_moyenne), + c(0, y_vals, 0), + col = rgb(0, 0, 1, 0.2), + border = NA) + +lines(density(poids), col="green", lwd=2) + +# Ajout de la courbe de densité normale +curve(scale_factor * dnorm(x, mean=mean(poids), sd=sd(poids)), + add=TRUE, + col="red", + lwd=2) + +# Ajout des intervalles de confiance pour la moyenne +abline(v = c(borne_inf_moyenne, borne_sup_moyenne), + col = "blue", + lty = 2) + + # Calcul des intervalles de confiance à 90% alpha <- 0.10 z <- qnorm(1 - alpha / 2) @@ -121,3 +155,38 @@ cat("\nIntervalle de confiance à 90% pour la moyenne (μ): [", cat("Intervalle de confiance à 90% pour la variance (σ²): [", round(borne_inf_variance, 6), ",", round(borne_sup_variance, 6), "] g²\n") + +# Ajout des intervalles de confiance pour la moyenne +abline(v = c(borne_inf_moyenne, borne_sup_moyenne), + col = "purple", + lty = 2) + +# Colorer l'intervalle de confiance +x_vals <- seq(borne_inf_moyenne, borne_sup_moyenne, length.out = 100) +y_vals <- dnorm(x_vals, mean = moyenne, sd = ecart_type) +polygon(c(borne_inf_moyenne, x_vals, borne_sup_moyenne), + c(0, y_vals, 0), + col = rgb(1, 0, 1, 0.2), + border = NA) + +# Ajout d'une légende +legend("topright", + legend = c("Densité estimée", "Densité normale estimée", "Intervalle de confiance à 95%", "Intervalle de confiance à 90%"), + col = c("green", "red", "blue", "purple"), + lty = c(1, 1, 2, 2), + lwd = c(2, 2, 1, 1)) + +# Crée un histogramme des poids et récupère les classes +hist_obj <- hist(poids, plot = FALSE, breaks = k) +observed_counts <- hist_obj$counts +breaks <- hist_obj$breaks +mids <- hist_obj$mids + +# Calcul des probabilités attendues +total_count <- sum(observed_counts) +expected_probs <- diff(pnorm(breaks, mean = moyenne, sd = ecart_type)) +expected_counts <- total_count * expected_probs + +# Perform chi-squared test +chitest <- chisq.test(observed_counts, p = expected_probs, rescale.p = TRUE) +print(chitest) \ No newline at end of file diff --git a/TP_estimateurs/Exo bonus.R b/TP_estimateurs/Exo bonus.R index 126826c..3fc638d 100644 --- a/TP_estimateurs/Exo bonus.R +++ b/TP_estimateurs/Exo bonus.R @@ -92,16 +92,10 @@ if ((proba1 < s1 || proba1 > i1) || cat("Le dé n'est pas truqué\n") } -# Visualisation graphique -curve(dnorm(x, mean = moyenne, sd = ecart_type), - from = 0, - to = 7, - main = "Distribution des valeurs du dé", - xlab = "Valeur du dé", - ylab = "Densité") +# Correction -# Zone de probabilité avec transparence -x_values <- seq(0, 6, length.out = 100) -polygon(c(x_values, 1), - c(dnorm(x_values, moyenne, ecart_type), 0), - col = rgb(1, 0, 0, 0.5)) \ No newline at end of file +x <- (88-100) ^ 2 + (109-100) ^ 2 + (107-100) ^ 2 + (94-100) ^ 2 + (105-100) ^ 2 + (97-100) ^ 2 +xprim <- x / 100 + +xsq <- chisq.test(c(88, 109, 107, 94, 105, 97), p = c(1/6, 1/6, 1/6, 1/6, 1/6, 1/6)) +print(xsq) \ No newline at end of file