Το dataset αφορά φυσικοχημικά χαρακτηριστικά κόκκινου κρασιού για την αξιολόγηση της ποιότητάς του. Περιλαμβάνει 11 εισαγωγικές μεταβλητές(ανεξάρτητες) και 1 εξαρτημένη μεταβλητή (ποιότητα).Το dataset είναι διαθέσιμο από το UCI Machine Learning Repository.
Το dataset για την ποιότητα κόκκινου κρασιού σχετίζεται άμεσα με την επιχειρηματική αναλυτική, καθώς προσφέρει πολύτιμα δεδομένα για τη λήψη στρατηγικών αποφάσεων. Μέσω της ανάλυσης φυσικοχημικών χαρακτηριστικών, οι οινοπαραγωγοί μπορούν να βελτιστοποιήσουν τις διαδικασίες παραγωγής, οι ποιοτικοί ελεγκτές να αξιολογούν αντικειμενικά την ποιότητα, οι τυποποιητές να διασφαλίζουν ομοιομορφία, και οι ομάδες marketing να καθορίζουν στρατηγικές τοποθέτησης και τιμολόγησης. Η εφαρμογή περιγραφικής, προβλεπτικής και προδιαγραφικής αναλυτικής μετατρέπει τα δεδομένα σε εργαλείο ανταγωνιστικού πλεονεκτήματος.
Ερωτήματα:
## [1] "fixed.acidity" "volatile.acidity" "citric.acid"
## [4] "residual.sugar" "chlorides" "free.sulfur.dioxide"
## [7] "total.sulfur.dioxide" "density" "pH"
## [10] "sulphates" "alcohol" "quality"
| Μεταβλητή | Τύπος |
|---|---|
| fixed acidity | Αριθμητικό |
| volatile acidity | Αριθμητικό |
| citric acidity | Αριθμητικό |
| residual sugar | Αριθμητικό |
| chlorides | Αριθμητικό |
| free sulfur dioxide | Αριθμητικό |
| total sulfur dioxide | Αριθμητικό |
| density | Αριθμητικό |
| pH | Αριθμητικό |
| sulphates | Αριθμητικό |
| alcohol | Αριθμητικό |
| quality | Αριθμητικό |
## fixed.acidity volatile.acidity citric.acid residual.sugar
## Min. : 4.60 Min. :0.1200 Min. :0.000 Min. : 0.900
## 1st Qu.: 7.10 1st Qu.:0.3900 1st Qu.:0.090 1st Qu.: 1.900
## Median : 7.90 Median :0.5200 Median :0.260 Median : 2.200
## Mean : 8.32 Mean :0.5278 Mean :0.271 Mean : 2.539
## 3rd Qu.: 9.20 3rd Qu.:0.6400 3rd Qu.:0.420 3rd Qu.: 2.600
## Max. :15.90 Max. :1.5800 Max. :1.000 Max. :15.500
## chlorides free.sulfur.dioxide total.sulfur.dioxide density
## Min. :0.01200 Min. : 1.00 Min. : 6.00 Min. :0.9901
## 1st Qu.:0.07000 1st Qu.: 7.00 1st Qu.: 22.00 1st Qu.:0.9956
## Median :0.07900 Median :14.00 Median : 38.00 Median :0.9968
## Mean :0.08747 Mean :15.87 Mean : 46.47 Mean :0.9967
## 3rd Qu.:0.09000 3rd Qu.:21.00 3rd Qu.: 62.00 3rd Qu.:0.9978
## Max. :0.61100 Max. :72.00 Max. :289.00 Max. :1.0037
## pH sulphates alcohol quality
## Min. :2.740 Min. :0.3300 Min. : 8.40 Min. :3.000
## 1st Qu.:3.210 1st Qu.:0.5500 1st Qu.: 9.50 1st Qu.:5.000
## Median :3.310 Median :0.6200 Median :10.20 Median :6.000
## Mean :3.311 Mean :0.6581 Mean :10.42 Mean :5.636
## 3rd Qu.:3.400 3rd Qu.:0.7300 3rd Qu.:11.10 3rd Qu.:6.000
## Max. :4.010 Max. :2.0000 Max. :14.90 Max. :8.000
ggplot(wine, aes(x = alcohol, y = quality)) +
geom_point(alpha = 0.5) +
labs(title = "Αλκοόλ vs Ποιότητα", x = "Αλκοόλ", y = "Ποιότητα")Σχόλιο: Δεν παρατηρείται σαφής συσχέτιση μεταξύ αλκοόλ και ποιότητας.Η ποιότητα του κρασιού (quality) φαίνεται να μην επηρεάζεται άμεσα από την ποσότητα αλκοόλ (alcohol).
ggplot(wine, aes(x = factor(quality), y = density)) +
geom_boxplot() +
labs(title = "Πυκνότητα ανά Ποιότητα", x = "Ποιότητα", y = "Πυκνότητα")Σχόλιο: Οι διάμεσοι τιμών πυκνότητας κινούνται με σχετική σταθερότητα σε όλες τις κατηγορίες ποιότητας, ενώ υπαρχει μια φθίνουσα πορεία.
ggplot(wine, aes(x = quality)) +
geom_histogram(bins = 10, fill = "lightgreen", color = "black", stat = "count") +
labs(title = "Κατανομή Ποιότητας Κρασιού", x = "Ποιότητα", y = "Συχνότητα")## Warning in geom_histogram(bins = 10, fill = "lightgreen", color = "black", :
## Ignoring unknown parameters: `binwidth`, `bins`, and `pad`
Σχόλιο: Η ποιότητα των κρασιών είναι στη πλειοψηφία μεταξύ 5 και 6.
wine$alcohol_level <- cut(wine$alcohol, breaks = c(0, 9, 12, 15, 20), labels = c("Low", "Medium", "High", "Very High"))
ggplot(wine, aes(x = factor(quality), fill = alcohol_level)) +
geom_bar(stat = "count", position = "stack") +
labs(title = "Συχνότητα Αλκοόλ ανά Ποιότητα Κρασιού", x = "Ποιότητα", y = "Πλήθος Αλκοόλ")Σχόλιο: Η μεγαλύτερη συγκέντρωση αλκοόλ είναι όταν η ποιότητα είναι μεταξύ 5 και 6.
Ο παρακάτω πίνακας παρουσιάζει τους συντελεστές συσχέτισης Pearson μεταξύ των διάφορων μεταβλητών. Οι τιμές που πλησιάζουν το 1 ή το -1 υποδεικνύουν ισχυρή θετική ή αρνητική συσχέτιση, αντίστοιχα. Για τα επόμενα μοντέλα, επιλέγουμε τις μεταβλητές με την υψηλότερη συσχέτιση με την ποιότητα, ταξινομημένες με φθίνουσα σειρά.
# Επιλογή μόνο των αριθμητικών μεταβλητών
wine_numeric <- wine %>%
select_if(is.numeric)
# Υπολογισμός της συσχέτισης Pearson
cor_matrix <- cor(wine_numeric)
# Εμφάνιση του πίνακα συσχετίσεων
knitr::kable(round(cor_matrix, 2), caption = "Πίνακας Συσχετίσεων Μεταβλητών")| fixed.acidity | volatile.acidity | citric.acid | residual.sugar | chlorides | free.sulfur.dioxide | total.sulfur.dioxide | density | pH | sulphates | alcohol | quality | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| fixed.acidity | 1.00 | -0.26 | 0.67 | 0.11 | 0.09 | -0.15 | -0.11 | 0.67 | -0.68 | 0.18 | -0.06 | 0.12 |
| volatile.acidity | -0.26 | 1.00 | -0.55 | 0.00 | 0.06 | -0.01 | 0.08 | 0.02 | 0.23 | -0.26 | -0.20 | -0.39 |
| citric.acid | 0.67 | -0.55 | 1.00 | 0.14 | 0.20 | -0.06 | 0.04 | 0.36 | -0.54 | 0.31 | 0.11 | 0.23 |
| residual.sugar | 0.11 | 0.00 | 0.14 | 1.00 | 0.06 | 0.19 | 0.20 | 0.36 | -0.09 | 0.01 | 0.04 | 0.01 |
| chlorides | 0.09 | 0.06 | 0.20 | 0.06 | 1.00 | 0.01 | 0.05 | 0.20 | -0.27 | 0.37 | -0.22 | -0.13 |
| free.sulfur.dioxide | -0.15 | -0.01 | -0.06 | 0.19 | 0.01 | 1.00 | 0.67 | -0.02 | 0.07 | 0.05 | -0.07 | -0.05 |
| total.sulfur.dioxide | -0.11 | 0.08 | 0.04 | 0.20 | 0.05 | 0.67 | 1.00 | 0.07 | -0.07 | 0.04 | -0.21 | -0.19 |
| density | 0.67 | 0.02 | 0.36 | 0.36 | 0.20 | -0.02 | 0.07 | 1.00 | -0.34 | 0.15 | -0.50 | -0.17 |
| pH | -0.68 | 0.23 | -0.54 | -0.09 | -0.27 | 0.07 | -0.07 | -0.34 | 1.00 | -0.20 | 0.21 | -0.06 |
| sulphates | 0.18 | -0.26 | 0.31 | 0.01 | 0.37 | 0.05 | 0.04 | 0.15 | -0.20 | 1.00 | 0.09 | 0.25 |
| alcohol | -0.06 | -0.20 | 0.11 | 0.04 | -0.22 | -0.07 | -0.21 | -0.50 | 0.21 | 0.09 | 1.00 | 0.48 |
| quality | 0.12 | -0.39 | 0.23 | 0.01 | -0.13 | -0.05 | -0.19 | -0.17 | -0.06 | 0.25 | 0.48 | 1.00 |
# Δημιουργία του μοντέλου γραμμικής παλινδρόμησης: ποιότητα ~ πυκνότητα
model1 <- lm(quality ~ density, data = wine)
# Περίληψη του μοντέλου
summary(model1)##
## Call:
## lm(formula = quality ~ density, data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.7885 -0.6216 0.1554 0.4271 2.5177
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 80.24 10.51 7.636 3.83e-14 ***
## density -74.85 10.54 -7.100 1.87e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7954 on 1597 degrees of freedom
## Multiple R-squared: 0.0306, Adjusted R-squared: 0.02999
## F-statistic: 50.41 on 1 and 1597 DF, p-value: 1.875e-12
# Δημιουργία του scatter plot με την γραμμική παλινδρόμηση
ggplot(wine, aes(x = density, y = quality)) +
geom_point(alpha = 0.5) + # Scatter plot
geom_abline(intercept = coef(model1)[1], slope = coef(model1)[2], color = "red", linewidth = 1.2) + # Γραμμή της γραμμικής παλινδρόμησης
labs(title = "Γραμμική Παλινδρόμηση: Ποιότητα ~ Πυκνότητα",
x = "Πυκνότητα", y = "Ποιότητα")Σχόλιο: Η πυκνότητα έχει σημαντική αρνητική επίδραση στην ποιότητα συγκριτικά με άλλες μεταβλητές.Το R² είναι μόλις 3%, πράγμα που σημαίνει ότι εξηγεί πολύ μικρό ποσοστό της συνολικής διακύμανσης στην ποιότητα. Άρα, παρόλο που υπάρχει συσχέτιση, η πυκνότητα από μόνη της δεν αποτελεί ισχυρό προβλεπτικό παράγοντα για την ποιότητα.
# Δημιουργία του μοντέλου γραμμικής παλινδρόμησης: ποιότητα ~ πυκνότητα + πτητική οξύτητα
model2 <- lm(quality ~ density + volatile.acidity, data = wine)
# Περίληψη του μοντέλου
summary(model2)##
## Call:
## lm(formula = quality ~ density + volatile.acidity, data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.67724 -0.54639 -0.02654 0.47391 2.67102
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 77.5250 9.6674 8.019 2.04e-15 ***
## density -71.1996 9.7000 -7.340 3.38e-13 ***
## volatile.acidity -1.7449 0.1022 -17.067 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7316 on 1596 degrees of freedom
## Multiple R-squared: 0.1802, Adjusted R-squared: 0.1792
## F-statistic: 175.4 on 2 and 1596 DF, p-value: < 2.2e-16
Σχόλιο: Με την προσθήκη της πτητικής οξύτητας το R² αυξάνεται αξιοσημείωτα και το SSE μειώνεται σημαντικά.
# Δημιουργία του μοντέλου γραμμικής παλινδρόμησης: ποιότητα ~ πυκνότητα + θειικά άλατα + πτητική οξύτητα
model3 <- lm(quality ~ density + sulphates + volatile.acidity, data = wine)
# Περίληψη του μοντέλου
summary(model3)##
## Call:
## lm(formula = quality ~ density + sulphates + volatile.acidity,
## data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.82248 -0.49972 -0.03947 0.47535 2.64670
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 89.4933 9.5788 9.343 < 2e-16 ***
## density -83.9355 9.6248 -8.721 < 2e-16 ***
## sulphates 0.9188 0.1110 8.279 2.6e-16 ***
## volatile.acidity -1.5149 0.1039 -14.577 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7166 on 1595 degrees of freedom
## Multiple R-squared: 0.214, Adjusted R-squared: 0.2125
## F-statistic: 144.7 on 3 and 1595 DF, p-value: < 2.2e-16
Σχόλιο: Η προσθήκη θειικών αλάτων και των λοιπών μεταβλητών, όπως θα φανεί παρακάτω, δεν βελτιώνουν σημαντικά το R², και βελτιώνουν ελάχιστα το SSE.
# Δημιουργία του μοντέλου γραμμικής παλινδρόμησης: ποιότητα ~ πυκνότητα + θειικά άλατα + πτητική οξύτητα + κιτρικό οξύ
model4 <- lm(quality ~ density + sulphates + volatile.acidity + citric.acid, data = wine)
# Περίληψη του μοντέλου
summary(model4)##
## Call:
## lm(formula = quality ~ density + sulphates + volatile.acidity +
## citric.acid, data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.82732 -0.49275 -0.04621 0.50780 2.49794
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 104.0671 10.5795 9.837 < 2e-16 ***
## density -98.7506 10.6534 -9.269 < 2e-16 ***
## sulphates 0.8629 0.1120 7.702 2.33e-14 ***
## volatile.acidity -1.2847 0.1261 -10.187 < 2e-16 ***
## citric.acid 0.4003 0.1250 3.203 0.00139 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7146 on 1594 degrees of freedom
## Multiple R-squared: 0.219, Adjusted R-squared: 0.2171
## F-statistic: 111.8 on 4 and 1594 DF, p-value: < 2.2e-16
# Δημιουργία του μοντέλου γραμμικής παλινδρόμησης: ποιότητα ~ πυκνότητα + θειικά άλατα + κιτρικό οξύ + πτητική οξύτητα + ολικό διοξείδιο του θείου
model5 <- lm(quality ~ density + sulphates + citric.acid + volatile.acidity + total.sulfur.dioxide, data = wine)
# Περίληψη του μοντέλου
summary(model5)##
## Call:
## lm(formula = quality ~ density + sulphates + citric.acid + volatile.acidity +
## total.sulfur.dioxide, data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.83167 -0.45612 -0.06538 0.48656 2.44573
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.021e+02 1.041e+01 9.801 < 2e-16 ***
## density -9.664e+01 1.049e+01 -9.216 < 2e-16 ***
## sulphates 8.991e-01 1.103e-01 8.149 7.35e-16 ***
## citric.acid 4.562e-01 1.232e-01 3.703 0.00022 ***
## volatile.acidity -1.187e+00 1.248e-01 -9.512 < 2e-16 ***
## total.sulfur.dioxide -3.950e-03 5.394e-04 -7.323 3.84e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7031 on 1593 degrees of freedom
## Multiple R-squared: 0.2444, Adjusted R-squared: 0.2421
## F-statistic: 103.1 on 5 and 1593 DF, p-value: < 2.2e-16
# Δημιουργία του μοντέλου γραμμικής παλινδρόμησης: ποιότητα ~ πυκνότητα + θειικά άλατα + κιτρικό οξύ + πτητική οξύτητα + ολικό διοξείδιο του θείου
model6 <- lm(quality ~ density + sulphates + citric.acid + volatile.acidity + total.sulfur.dioxide, data = wine)
# Περίληψη του μοντέλου
summary(model6)##
## Call:
## lm(formula = quality ~ density + sulphates + citric.acid + volatile.acidity +
## total.sulfur.dioxide, data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.83167 -0.45612 -0.06538 0.48656 2.44573
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.021e+02 1.041e+01 9.801 < 2e-16 ***
## density -9.664e+01 1.049e+01 -9.216 < 2e-16 ***
## sulphates 8.991e-01 1.103e-01 8.149 7.35e-16 ***
## citric.acid 4.562e-01 1.232e-01 3.703 0.00022 ***
## volatile.acidity -1.187e+00 1.248e-01 -9.512 < 2e-16 ***
## total.sulfur.dioxide -3.950e-03 5.394e-04 -7.323 3.84e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7031 on 1593 degrees of freedom
## Multiple R-squared: 0.2444, Adjusted R-squared: 0.2421
## F-statistic: 103.1 on 5 and 1593 DF, p-value: < 2.2e-16
# Δημιουργία του μοντέλου γραμμικής παλινδρόμησης: ποιότητα ~ πυκνότητα + θειικά άλατα + κιτρικό οξύ + πτητική οξύτητα + ολικό διοξείδιο του θείου + σταθερή οξύτητα
model7 <- lm(quality ~ density + sulphates + citric.acid + volatile.acidity + total.sulfur.dioxide + fixed.acidity, data = wine)
# Περίληψη του μοντέλου
summary(model7)##
## Call:
## lm(formula = quality ~ density + sulphates + citric.acid + volatile.acidity +
## total.sulfur.dioxide + fixed.acidity, data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.9256 -0.4463 -0.0639 0.4783 2.3672
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.556e+02 1.300e+01 11.974 < 2e-16 ***
## density -1.513e+02 1.315e+01 -11.503 < 2e-16 ***
## sulphates 9.491e-01 1.091e-01 8.700 < 2e-16 ***
## citric.acid -1.042e-01 1.473e-01 -0.707 0.48
## volatile.acidity -1.215e+00 1.232e-01 -9.868 < 2e-16 ***
## total.sulfur.dioxide -2.890e-03 5.549e-04 -5.208 2.16e-07 ***
## fixed.acidity 1.198e-01 1.781e-02 6.727 2.41e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6935 on 1592 degrees of freedom
## Multiple R-squared: 0.2653, Adjusted R-squared: 0.2626
## F-statistic: 95.83 on 6 and 1592 DF, p-value: < 2.2e-16
##
## Call:
## lm(formula = quality ~ ., data = wine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.67501 -0.36801 -0.04164 0.45799 1.96857
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.844e+01 2.121e+01 0.869 0.3847
## fixed.acidity 2.153e-02 2.596e-02 0.829 0.4069
## volatile.acidity -1.084e+00 1.210e-01 -8.958 < 2e-16 ***
## citric.acid -1.994e-01 1.473e-01 -1.354 0.1759
## residual.sugar 1.166e-02 1.510e-02 0.772 0.4401
## chlorides -1.958e+00 4.202e-01 -4.659 3.44e-06 ***
## free.sulfur.dioxide 4.408e-03 2.186e-03 2.017 0.0439 *
## total.sulfur.dioxide -3.289e-03 7.398e-04 -4.446 9.37e-06 ***
## density -1.391e+01 2.166e+01 -0.642 0.5209
## pH -4.508e-01 1.919e-01 -2.349 0.0190 *
## sulphates 9.279e-01 1.143e-01 8.115 9.67e-16 ***
## alcohol 2.733e-01 3.064e-02 8.920 < 2e-16 ***
## alcohol_levelMedium -2.489e-01 1.132e-01 -2.198 0.0281 *
## alcohol_levelHigh -1.684e-01 1.469e-01 -1.146 0.2519
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6471 on 1585 degrees of freedom
## Multiple R-squared: 0.3632, Adjusted R-squared: 0.358
## F-statistic: 69.55 on 13 and 1585 DF, p-value: < 2.2e-16
| Μεταβλητές | R_squared | SSE |
|---|---|---|
| density | 0.031 | 1010.28 |
| density, volatile acidity | 0.180 | 854.36 |
| density, volatile acidity, sulphates | 0.214 | 819.16 |
| density, volatile acidity, sulphates, citric.acid | 0.219 | 813.92 |
| density, volatile acidity, sulphates, citric.acid, total sulfur dioxide | 0.244 | 787.41 |
| density, volatile acidity, sulphates, citric.acid, total sulfur dioxide, density | 0.244 | 787.41 |
| density, volatile acidity, sulphates, citric.acid, total sulfur dioxide, density, fixed acidity | 0.265 | 765.65 |
| All features | 0.363 | 663.63 |
-Το πυκνότητα και η πτητική οξύτητα είναι οι πιο σημαντικές μεταβλητές, με βάση τη σημαντική αύξηση του R² όταν προστίθονται.
-Η προσθήκη επιπλέον μεταβλητών βελτιώνει το μοντέλο, όμως η βελτίωση γίνεται φθίνουσα, δηλαδή κάθε νέα μεταβλητή συνεισφέρει όλο και λιγότερο.
-Το πλήρες μοντέλο έχει το χαμηλότερο SSE αλλά και το υψηλότερο R² (0.363). Όμως το όφελος από τις επιπλέον μεταβλητές είναι μικρό σε σχέση με την πολυπλοκότητα που προσθέτουν.