mirror of
https://github.com/BreizhHardware/TD-R.git
synced 2026-01-18 16:47:34 +01:00
feat: add confidence interval calculations for mean and variance in statistical analysis
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
62
TP_estimateurs/Exercice3.R
Normal file
62
TP_estimateurs/Exercice3.R
Normal 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")
|
||||
Reference in New Issue
Block a user