From da8891e8f974f366f01bb9683ebe59cc139d62e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= <72651575+BreizhHardware@users.noreply.github.com> Date: Tue, 1 Apr 2025 15:47:40 +0200 Subject: [PATCH] feat: enhance regression analysis in Exercice 2.R with ANOVA and confidence interval calculations --- Big Data/TP2/Exercice 2.R | 69 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/Big Data/TP2/Exercice 2.R b/Big Data/TP2/Exercice 2.R index f2d231f..7356f6d 100644 --- a/Big Data/TP2/Exercice 2.R +++ b/Big Data/TP2/Exercice 2.R @@ -60,3 +60,72 @@ cat("\n4. Pourcentage de variation expliquée:\n") cat("Régression avec X1: ", round(resume1$r.squared * 100, 2), "%\n") cat("Régression avec X2: ", round(resume2$r.squared * 100, 2), "%\n") cat("Régression avec X1 et X2: ", round(resume12$r.squared * 100, 2), "%\n") + +# 5. Compléter le tableau suivant +cat("\n5. Carré moyen résiduel et écart-type des résidus:\n") +cmr1 <- sum(modele1$residuals^2) / modele1$df.residual +cmr2 <- sum(modele2$residuals^2) / modele2$df.residual +cmr12 <- sum(modele12$residuals^2) / modele12$df.residual + +cat("Régression due à X1: CMR =", round(cmr1, 4), ", σ =", round(sqrt(cmr1), 4), "\n") +cat("Régression due à X2: CMR =", round(cmr2, 4), ", σ =", round(sqrt(cmr2), 4), "\n") +cat("Régression due à (X1,X2): CMR =", round(cmr12, 4), ", σ =", round(sqrt(cmr12), 4), "\n") + +# 6. Compléter le tableau d’analyse de la variance suivant pour la régression comportant les deux variables explicatives + +anova_complete <- anova(modele12) +SCR_X1X2 <- sum(anova_complete$"Sum Sq") +SCT <- SCR_X1X2 + sum(modele12$residuals^2) + +cat("\n6. Tableau ANOVA complet:\n") +cat("Source de variation | Somme des carrés | Ddl | Carrés moyens | Fobs\n") +cat("Régression due à (X1,X2) | ", round(SCR_X1X2, 4), " | ", + anova_complete$Df[1] + anova_complete$Df[2], " | ", + round(SCR_X1X2/(anova_complete$Df[1] + anova_complete$Df[2]), 4), " | ", + round(resume12$fstatistic[1], 4), "\n") +cat("Résiduelle | ", round(sum(modele12$residuals^2), 4), " | ", modele12$df.residual, + " | ", round(cmr12, 4), " | \n") +cat("Totale | ", round(SCT, 4), " | ", nrow(donnees)-1, " | | \n") + +# 7. Tester au seuil de signification 5%, l’hypothèse nulle H0 : β1 = β2 = 0 contre l’hypothèse alternative H1 : au moins un des coefficients est différent de 0. Quelle est votre conclusion ? + +cat("\n7. Test de H0: β1 = β2 = 0\n") +f_obs <- resume12$fstatistic[1] +f_crit <- qf(0.95, resume12$fstatistic[2], resume12$fstatistic[3]) +cat("F observé =", round(f_obs, 4), ", F critique (α=5%) =", round(f_crit, 4), "\n") +p_value <- pf(f_obs, resume12$fstatistic[2], resume12$fstatistic[3], lower.tail = FALSE) +cat("p-value =", format(p_value, scientific = FALSE), "\n") +cat("Conclusion: On rejette H0, au moins un des coefficients est différent de 0.\n") + +# 8. Dans le cas du modèle de régression linéaire ne comportant que l’épaisseur du matériau comme variable explicative, déterminer un intervalle de confiance à 95% pour ��1. Pouvons-nous affirmer, au seuil de signification 5%, que la régression linéaire est significative entre la résistance à la rupture et l’épaisseur du matériau ? Justifier votre conclusion. + +cat("\n8. Intervalle de confiance pour β1:\n") +ic_beta1 <- confint(modele1, "X1", level = 0.95) +cat("IC à 95% pour β1 :", round(ic_beta1[1], 4), "à", round(ic_beta1[2], 4), "\n") + +t_obs <- coef(summary(modele1))["X1", "t value"] +t_crit <- qt(0.975, modele1$df.residual) +p_val <- coef(summary(modele1))["X1", "Pr(>|t|)"] +cat("t observé =", round(t_obs, 4), ", t critique (α=5%) =", round(t_crit, 4), "\n") +cat("Conclusion: La régression linéaire entre Y et X1 est significative (p-value =", + format(p_val, scientific = FALSE), ")\n") + +# 9. Quel est l’apport marginal de la variable X2 lorsqu’elle est introduite à la suite de la variable X1 ? +cat("\n9. Apport marginal de X2 après X1:\n") +modele_seq <- anova(modele1, modele12) +print(modele_seq) +cat("L'apport marginal de X2 est significatif (p-value =", + format(modele_seq[2, "Pr(>F)"], scientific = FALSE), ")\n") + + +# 10. Nous voulons obtenir diverses estimations et prévisions de la résistance à la rupture. Quelle est, en moyenne, la résistance à la rupture de jouets dont l’épaisseur du matériau utilisé et la densité du matériau sont celles indiquées dans le tableau suivant ? + +cat("\n10. Estimations de la résistance à la rupture:\n") +nouvelles_donnees <- data.frame( + X1 = c(4, 3, 4), + X2 = c(3.8, 3.4, 2.9) +) + +predictions <- predict(modele12, nouvelles_donnees, interval = "confidence") +rownames(predictions) <- c("X1=4, X2=3.8", "X1=3, X2=3.4", "X1=4, X2=2.9") +print(round(predictions, 4)) \ No newline at end of file