library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
df <- diamonds
coefficient_cor <- cor.test(df$carat,df$price)
coefficient_cor
##
## Pearson's product-moment correlation
##
## data: df$carat and df$price
## t = 551.41, df = 53938, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.9203098 0.9228530
## sample estimates:
## cor
## 0.9215913
Interprétation du coefficient de corrélation obtenu pour évaluer la relation entre la taille du diamant et son prix A mesure que la taille du diamond augmente, son prix augmente proportionnellement
regressionSimple <- lm(df$carat~df$price)
summary(regressionSimple)
##
## Call:
## lm(formula = df$carat ~ df$price)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.35765 -0.11329 -0.02442 0.10344 2.66973
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.673e-01 1.112e-03 330.2 <2e-16 ***
## df$price 1.095e-04 1.986e-07 551.4 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.184 on 53938 degrees of freedom
## Multiple R-squared: 0.8493, Adjusted R-squared: 0.8493
## F-statistic: 3.041e+05 on 1 and 53938 DF, p-value: < 2.2e-16
*Interprétation de la pente et du coefficient à l’origine - Equation de la regression: taille = 0.3673 + 0.0001095prix
B0=0.3673, c’est la taille du diamond lorque lorsque le prix est nul B1=0.0001095, Ce coefficient représente la variation de la taille pour chaque unité d’augmentation du Prix. Plus précisément, chaque fois que le Prix augmente d’1 unité la taille du diamond augmentente de 0.0001095 unités.
# Tracer les données
plot(df$price, df$carat, main="Données avec droite de régression", xlab="Taille", ylab="Prix", pch=19)
# Ajouter la droite de régression
abline(regressionSimple, col="blue", lwd=2)
2. Profils : Calculez les profils ligne, colonne et total pour ce tableau croisé. Interprétez les profils pour mieux comprendre la répartition des diamants en fonction de leur coupe et couleur.
tableau_effectif <- table(df$cut,df$color)
round(prop.table(tableau_effectif, margin = 1),3) # Profils ligne
##
## D E F G H I J
## Fair 0.101 0.139 0.194 0.195 0.188 0.109 0.074
## Good 0.135 0.190 0.185 0.178 0.143 0.106 0.063
## Very Good 0.125 0.199 0.179 0.190 0.151 0.100 0.056
## Premium 0.116 0.169 0.169 0.212 0.171 0.104 0.059
## Ideal 0.132 0.181 0.178 0.227 0.145 0.097 0.042
round(prop.table(tableau_effectif, margin = 2),3) # Profils colonne
##
## D E F G H I J
## Fair 0.024 0.023 0.033 0.028 0.036 0.032 0.042
## Good 0.098 0.095 0.095 0.077 0.085 0.096 0.109
## Very Good 0.223 0.245 0.227 0.204 0.220 0.222 0.241
## Premium 0.237 0.239 0.244 0.259 0.284 0.263 0.288
## Ideal 0.418 0.398 0.401 0.433 0.375 0.386 0.319
round(prop.table(tableau_effectif),3) # Profils total
##
## D E F G H I J
## Fair 0.003 0.004 0.006 0.006 0.006 0.003 0.002
## Good 0.012 0.017 0.017 0.016 0.013 0.010 0.006
## Very Good 0.028 0.044 0.040 0.043 0.034 0.022 0.013
## Premium 0.030 0.043 0.043 0.054 0.044 0.026 0.015
## Ideal 0.053 0.072 0.071 0.091 0.058 0.039 0.017
Test de normalité
# shapiro.test(df$price) Error in shapiro.test(df$price) : sample size must be between 3 and 5000
ks_result1 <- ks.test(df$carat, "pnorm", mean = mean(df$carat), sd = sd(df$carat))
## Warning in ks.test.default(df$carat, "pnorm", mean = mean(df$carat), sd =
## sd(df$carat)): ties should not be present for the one-sample Kolmogorov-Smirnov
## test
ks_result1
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: df$carat
## D = 0.12274, p-value < 2.2e-16
## alternative hypothesis: two-sided
ks_result2 <- ks.test(df$price, "pnorm", mean = mean(df$price), sd = sd(df$price))
## Warning in ks.test.default(df$price, "pnorm", mean = mean(df$price), sd =
## sd(df$price)): ties should not be present for the one-sample Kolmogorov-Smirnov
## test
ks_result2
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: df$price
## D = 0.18467, p-value < 2.2e-16
## alternative hypothesis: two-sided
Le test t de Student : Comparer le prix moyen des diamants de couleur D et E
df1 <- subset(df,df$color=="D" | df$color=="E")
t.test(df1$price~df1$color)
##
## Welch Two Sample t-test
##
## data: df1$price by df1$color
## t = 1.7599, df = 14531, p-value = 0.07844
## alternative hypothesis: true difference in means between group D and group E is not equal to 0
## 95 percent confidence interval:
## -10.60177 197.00501
## sample estimates:
## mean in group D mean in group E
## 3169.954 3076.752
3. Test de Corrélation de Pearson et de Kendall : Testez la corrélation entre le poids en carats (carat) et le prix (price) pour voir si elle est significative.
coefficient_cor_kendall <- cor.test(df$carat,df$price,method = "kendall")
coefficient_cor_kendall
##
## Kendall's rank correlation tau
##
## data: df$carat and df$price
## z = 288.02, p-value < 2.2e-16
## alternative hypothesis: true tau is not equal to 0
## sample estimates:
## tau
## 0.8341049
D’après le test corrélation de Kendall, le coefficient de corrélation est significativement différent de 0. Les taille du diamant varie poroportionnellement à son prix.
Comparez les moyennes de prix (price) des diamants selon leur qualité de coupe (cut) en utilisant un test ANOVA
table_cut = table(df$cut)
table_cut
##
## Fair Good Very Good Premium Ideal
## 1610 4906 12082 13791 21551
anova_tes=aov(df$price~df$cut)
summary(anova_tes)
## Df Sum Sq Mean Sq F value Pr(>F)
## df$cut 4 1.104e+10 2.760e+09 175.7 <2e-16 ***
## Residuals 53935 8.474e+11 1.571e+07
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Test du Khi-2 : Effectuez un test du khi-2 sur le tableau croisé entre la coupe (cut) et la couleur (color) pour voir s’il existe une association significative entre ces deux variables qualitatives.
#tableau_croise = table(df$cut,df$color)
khi_test= chisq.test(table(df$cut,df$color))
khi_test
##
## Pearson's Chi-squared test
##
## data: table(df$cut, df$color)
## X-squared = 310.32, df = 24, p-value < 2.2e-16
D’après Le test d’indépendance de khi2, on rejette H0. La forme du diamant est liée à sa couleur.