feat: add confidence interval calculations for mean and variance in statistical analysis

This commit is contained in:
2025-03-07 10:44:08 +01:00
parent aa3c8516dc
commit 0742ad39e6
3 changed files with 121 additions and 3 deletions

View File

@@ -1,3 +1,5 @@
# https://github.com/BreizhHardware/TD-R/tree/main/TP_estimateurs
# Création du vecteur de données
poids <- c(0.64, 0.65, 0.73, 0.60, 0.65, 0.77, 0.82, 0.64, 0.66, 0.72,
0.87, 0.84, 0.66, 0.76, 0.63, 0.52, 0.66, 0.45, 0.74, 0.79)
@@ -8,6 +10,10 @@ par(mfrow=c(1,2))
# 1. Représenter graphiquement les données pour un le modèle gaussien semble-t-il pertinent ?
# Calcul du nombre de classes pour l'histogramme
n <- length(poids)
k <- sqrt(n)
# Création de l'histogramme avec courbe de densité
hist(poids,
probability = TRUE,
@@ -15,7 +21,9 @@ hist(poids,
xlab = "Poids (g)",
ylab = "Densité",
col = "lightblue",
breaks = "FD")
breaks = k)
lines(density(poids), col="green", lwd=2)
# Ajout de la courbe de densité normale
curve(dnorm(x, mean=mean(poids), sd=sd(poids)),
@@ -40,7 +48,7 @@ summary(poids)
#  du modèle gaussien en foncƟon de ces données. Superposer la courbe obtenue et conclure.
# Calcul des estimateurs
moyenne <- mean(poids)
moyenne <- 1/n * sum(poids)
variance <- var(poids)
ecart_type <- sqrt(variance)
@@ -68,4 +76,48 @@ curve(dnorm(x, mean = moyenne, sd = ecart_type),
legend("topright",
legend = c("Densité normale estimée"),
col = "red",
lwd = 2)
lwd = 2)
# Données les intervalles de confiance à 95% et 90% pour la moyenne et la variance
# Calcul des intervalles de confiance à 95%
alpha <- 0.05
z <- qnorm(1 - alpha / 2)
# Intervalle de confiance pour la moyenne
borne_inf_moyenne <- moyenne - z * ecart_type / sqrt(n)
borne_sup_moyenne <- moyenne + z * ecart_type / sqrt(n)
# Intervalle de confiance pour la variance
borne_inf_variance <- (n - 1) * variance / qchisq(1 - alpha / 2, df = n - 1)
borne_sup_variance <- (n - 1) * variance / qchisq(alpha / 2, df = n - 1)
# Affichage des intervalles de confiance
cat("\nIntervalle de confiance à 95% pour la moyenne (μ): [",
round(borne_inf_moyenne, 4), ",",
round(borne_sup_moyenne, 4), "] g\n")
cat("Intervalle de confiance à 95% pour la variance (σ²): [",
round(borne_inf_variance, 6), ",",
round(borne_sup_variance, 6), "] g²\n")
# Calcul des intervalles de confiance à 90%
alpha <- 0.10
z <- qnorm(1 - alpha / 2)
# Intervalle de confiance pour la moyenne
borne_inf_moyenne <- moyenne - z * ecart_type / sqrt(n)
borne_sup_moyenne <- moyenne + z * ecart_type / sqrt(n)
# Intervalle de confiance pour la variance
borne_inf_variance <- (n - 1) * variance / qchisq(1 - alpha / 2, df = n - 1)
borne_sup_variance <- (n - 1) * variance / qchisq(alpha / 2, df = n - 1)
# Affichage des intervalles de confiance
cat("\nIntervalle de confiance à 90% pour la moyenne (μ): [",
round(borne_inf_moyenne, 4), ",",
round(borne_sup_moyenne, 4), "] g\n")
cat("Intervalle de confiance à 90% pour la variance (σ²): [",
round(borne_inf_variance, 6), ",",
round(borne_sup_variance, 6), "] g²\n")

View File

@@ -1,3 +1,5 @@
# https://github.com/BreizhHardware/TD-R/tree/main/TP_estimateurs
# Création du tableau de contingence
donnees <- matrix(
c(33, 93, 55, 20, 16, 9,
@@ -6,6 +8,8 @@ donnees <- matrix(
nrow = 3, byrow = TRUE
)
n <- length(donnees)
# Ajout des noms de lignes et colonnes
rownames(donnees) <- c("Moins de 30 ans", "Entre 30 et 60 ans", "Plus de 60 ans")
colnames(donnees) <- c("0", "1", "2", "3", "4", "5")

View File

@@ -0,0 +1,62 @@
# https://github.com/BreizhHardware/TD-R/tree/main/TP_estimateurs
# 1. Quelle est la loi de F et montrer qu'elle peut être approchée par une loi normale dont on donnera les paramètres
# Paramètres
n <- 50 # taille de l'échantillon
p <- 0.13 # proportion de gauchers
# Loi exacte : Binomiale(n,p)
# F ~ B(50, 0.13)
cat("Loi de F : F ~ B(50, 0.13)\n")
# Paramètres de l'approximation normale
mu <- n * p # moyenne
sigma <- sqrt(n * p * (1-p)) # écart-type
cat("Paramètres de l'approximation normale :\n")
cat("μ =", round(mu, 2), "\n")
cat("σ =", round(sigma, 2), "\n")
# Visualisation de la comparaison
x <- 0:15
plot(x, dbinom(x, n, p),
type = "h",
lwd = 2,
col = "blue",
main = "Comparaison Binomiale vs Normal",
xlab = "Nombre de gauchers",
ylab = "Densité de probabilité")
# Superposition de la courbe normale
curve(dnorm(x, mean = mu, sd = sigma),
add = TRUE,
col = "red",
lwd = 2)
legend("topright",
legend = c("Binomiale", "Normale"),
col = c("blue", "red"),
lwd = 2)
# 2. Calculer la probabilité d'observer plus de 5 gauchers dans l'échanƟllon de façon exacte puis
# approchée.
# Paramètres
n <- 50
p <- 0.13
mu <- n * p
sigma <- sqrt(n * p * (1-p))
# Calcul exact avec la loi binomiale
# P(F > 5) = 1 - P(F ≤ 5)
proba_exacte <- 1 - pbinom(5, n, p)
# Calcul approché avec la loi normale
# Avec correction de continuité : P(F > 5) = P(F ≥ 6) = P(F > 5.5)
proba_approx <- 1 - pnorm(5.5, mu, sigma)
# Affichage des résultats
cat("Probabilité exacte P(F > 5):", round(proba_exacte, 4), "\n")
cat("Probabilité approchée P(F > 5):", round(proba_approx, 4), "\n")