单变量部分

## [1] 4898   13
## 'data.frame':    4898 obs. of  13 variables:
##  $ X                   : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ fixed.acidity       : num  7 6.3 8.1 7.2 7.2 8.1 6.2 7 6.3 8.1 ...
##  $ volatile.acidity    : num  0.27 0.3 0.28 0.23 0.23 0.28 0.32 0.27 0.3 0.22 ...
##  $ citric.acid         : num  0.36 0.34 0.4 0.32 0.32 0.4 0.16 0.36 0.34 0.43 ...
##  $ residual.sugar      : num  20.7 1.6 6.9 8.5 8.5 6.9 7 20.7 1.6 1.5 ...
##  $ chlorides           : num  0.045 0.049 0.05 0.058 0.058 0.05 0.045 0.045 0.049 0.044 ...
##  $ free.sulfur.dioxide : num  45 14 30 47 47 30 30 45 14 28 ...
##  $ total.sulfur.dioxide: num  170 132 97 186 186 97 136 170 132 129 ...
##  $ density             : num  1.001 0.994 0.995 0.996 0.996 ...
##  $ pH                  : num  3 3.3 3.26 3.19 3.19 3.26 3.18 3 3.3 3.22 ...
##  $ sulphates           : num  0.45 0.49 0.44 0.4 0.4 0.44 0.47 0.45 0.49 0.45 ...
##  $ alcohol             : num  8.8 9.5 10.1 9.9 9.9 10.1 9.6 8.8 9.5 11 ...
##  $ quality             : int  6 6 6 6 6 6 6 6 6 6 ...
##        X        fixed.acidity    volatile.acidity  citric.acid    
##  Min.   :   1   Min.   : 3.800   Min.   :0.0800   Min.   :0.0000  
##  1st Qu.:1225   1st Qu.: 6.300   1st Qu.:0.2100   1st Qu.:0.2700  
##  Median :2450   Median : 6.800   Median :0.2600   Median :0.3200  
##  Mean   :2450   Mean   : 6.855   Mean   :0.2782   Mean   :0.3342  
##  3rd Qu.:3674   3rd Qu.: 7.300   3rd Qu.:0.3200   3rd Qu.:0.3900  
##  Max.   :4898   Max.   :14.200   Max.   :1.1000   Max.   :1.6600  
##  residual.sugar     chlorides       free.sulfur.dioxide
##  Min.   : 0.600   Min.   :0.00900   Min.   :  2.00     
##  1st Qu.: 1.700   1st Qu.:0.03600   1st Qu.: 23.00     
##  Median : 5.200   Median :0.04300   Median : 34.00     
##  Mean   : 6.391   Mean   :0.04577   Mean   : 35.31     
##  3rd Qu.: 9.900   3rd Qu.:0.05000   3rd Qu.: 46.00     
##  Max.   :65.800   Max.   :0.34600   Max.   :289.00     
##  total.sulfur.dioxide    density             pH          sulphates     
##  Min.   :  9.0        Min.   :0.9871   Min.   :2.720   Min.   :0.2200  
##  1st Qu.:108.0        1st Qu.:0.9917   1st Qu.:3.090   1st Qu.:0.4100  
##  Median :134.0        Median :0.9937   Median :3.180   Median :0.4700  
##  Mean   :138.4        Mean   :0.9940   Mean   :3.188   Mean   :0.4898  
##  3rd Qu.:167.0        3rd Qu.:0.9961   3rd Qu.:3.280   3rd Qu.:0.5500  
##  Max.   :440.0        Max.   :1.0390   Max.   :3.820   Max.   :1.0800  
##     alcohol         quality     
##  Min.   : 8.00   Min.   :3.000  
##  1st Qu.: 9.50   1st Qu.:5.000  
##  Median :10.40   Median :6.000  
##  Mean   :10.51   Mean   :5.878  
##  3rd Qu.:11.40   3rd Qu.:6.000  
##  Max.   :14.20   Max.   :9.000

该数据集包含约4900条白葡萄酒数据。

除序号外,包含8种化学成分的属性(2种二氧化硫的参数衡量同一种化学物质)、2种葡萄酒自身的物理属性(密度以及pH值),以及评分。

## 
##    3    4    5    6    7    8    9 
##   20  163 1457 2198  880  175    5

评分大多数的评分集中在6分附近。

不存在评分为满分(10分)或低于3分的数据。

我想要了解是哪种(或哪些)化学成分影响了葡萄酒的品质(评分),先来看一下其他8种不同化学成分的分布情况。

## [1] "固定酸值的描述性统计"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.800   6.300   6.800   6.855   7.300  14.200
## [1] "挥发酸值的描述性统计"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0800  0.2100  0.2600  0.2782  0.3200  1.1000
## [1] "柠檬酸值的描述性统计"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0000  0.2700  0.3200  0.3342  0.3900  1.6600

固定酸、挥发酸和柠檬酸中均存在部分较大值,因此进行了放大。

多数葡萄酒的固定酸值在5 - 8之间,中位数为6.8,平均值为6.855。

多数葡萄酒的挥发酸值在0.1 - 0.4之间,中位数为0.26,平均值为0.2782。

多数葡萄酒的柠檬酸值在0.2 - 0.5之间,中位数为0.32,平均值为0.3342。

注意到柠檬酸中,在0.4 - 0.5的区间内有一个小峰值特别显眼。

由于残糖是一个长尾数据,故对其进行了取对数处理。

转换后的残糖在2附近达到了第一个峰值,又在8-9左右达到了另一个峰值。

这种分布的出现是偶然还是有什么特定的原因呢?

先继续看一下其他化学成分的分布。

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00900 0.03600 0.04300 0.04577 0.05000 0.34600

氯化物也是长尾分布,对其进行取对数处理。

转化后的氯化物值基本可看作正态分布,基本分布在0.03 - 0.1之间。

除了酒精外,游离二氧化硫等其他三项成分也可看作正态分布。

其中,酒精度的分布比较离散,但大多数白葡萄酒的酒精度集中在9 - 13度之间。

想要进一步研究二氧化硫这个化学物质,通过游离和总量,可以计算出一个游离状态二氧化硫的占比。

引入一个新的变量,名为游离二氧化硫占比(free.sulfur.dioxide.percent),用于衡量葡萄酒中二氧化硫的水平,再来看看其分布情况。

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.720   3.090   3.180   3.188   3.280   3.820
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.9871  0.9917  0.9937  0.9940  0.9961  1.0390

大多数的葡萄酒pH值集中在3 - 3.5附近,是正态分布。

大多数的葡聚糖密度在0.992附近,也是正态分布。

##   X fixed.acidity volatile.acidity citric.acid residual.sugar chlorides
## 1 1           7.0             0.27        0.36           20.7     0.045
## 2 2           6.3             0.30        0.34            1.6     0.049
## 3 3           8.1             0.28        0.40            6.9     0.050
## 4 4           7.2             0.23        0.32            8.5     0.058
## 5 5           7.2             0.23        0.32            8.5     0.058
## 6 6           8.1             0.28        0.40            6.9     0.050
##   free.sulfur.dioxide total.sulfur.dioxide density   pH sulphates alcohol
## 1                  45                  170  1.0010 3.00      0.45     8.8
## 2                  14                  132  0.9940 3.30      0.49     9.5
## 3                  30                   97  0.9951 3.26      0.44    10.1
## 4                  47                  186  0.9956 3.19      0.40     9.9
## 5                  47                  186  0.9956 3.19      0.40     9.9
## 6                  30                   97  0.9951 3.26      0.44    10.1
##   quality free.sulfur.dioxide.percent
## 1       6                   0.2647059
## 2       6                   0.1060606
## 3       6                   0.3092784
## 4       6                   0.2526882
## 5       6                   0.2526882
## 6       6                   0.3092784

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.02362 0.19093 0.25368 0.25558 0.31579 0.71053

可以看到占比也服从正态分布,大多数占比为10%-40%之间。

中位数为0.2537,平均值为0.2556

单变量分析

数据集是怎样的结构?

该数据集包含了4,898条白葡萄酒的数据,包括8种化学成分的属性,以及2个物理属性。

这8种化学成分分别是:固定酸,挥发酸,柠檬酸,残糖,氯化物,二氧化硫,硫酸盐,酒精。

通过查看各个化学成分的分布,大多数的成分都是呈正态分布的。

其他的观察成果:

  • 评分是从3分到9分,中位数是6分,众数也是6分(占比约44%)

  • 残糖有两个峰值(2左右和9左右)

  • 柠檬酸也有一个小峰值

数据集的主要特征是什么?

对于本数据集,最重要的数据就是每个酒的评分。我尝试探索是那种(或哪些)化学成分会影响葡萄酒的评分,因此每种化学成分都有可能对于评分造成影响。

此外,为了研究二氧化硫,新增了一个变量,名为游离二氧化硫占比。用游离二氧化硫的含量去除以二氧化硫的总量得到此新变量,用于衡量葡萄酒中游离二氧化硫的水平。

双变量部分

##                             fixed.acidity volatile.acidity citric.acid
## fixed.acidity                        1.00            -0.02        0.29
## volatile.acidity                    -0.02             1.00       -0.15
## citric.acid                          0.29            -0.15        1.00
## residual.sugar                       0.09             0.06        0.09
## chlorides                            0.02             0.07        0.11
## sulphates                           -0.02            -0.04        0.06
## alcohol                             -0.12             0.07       -0.08
## free.sulfur.dioxide.percent         -0.14            -0.20        0.02
## quality                             -0.11            -0.19       -0.01
## pH                                  -0.43            -0.03       -0.16
## density                              0.27             0.03        0.15
##                             residual.sugar chlorides sulphates alcohol
## fixed.acidity                         0.09      0.02     -0.02   -0.12
## volatile.acidity                      0.06      0.07     -0.04    0.07
## citric.acid                           0.09      0.11      0.06   -0.08
## residual.sugar                        1.00      0.09     -0.03   -0.45
## chlorides                             0.09      1.00      0.02   -0.36
## sulphates                            -0.03      0.02      1.00   -0.02
## alcohol                              -0.45     -0.36     -0.02    1.00
## free.sulfur.dioxide.percent           0.05     -0.03     -0.02    0.06
## quality                              -0.10     -0.21      0.05    0.44
## pH                                   -0.19     -0.09      0.16    0.12
## density                               0.84      0.26      0.07   -0.78
##                             free.sulfur.dioxide.percent quality    pH
## fixed.acidity                                     -0.14   -0.11 -0.43
## volatile.acidity                                  -0.20   -0.19 -0.03
## citric.acid                                        0.02   -0.01 -0.16
## residual.sugar                                     0.05   -0.10 -0.19
## chlorides                                         -0.03   -0.21 -0.09
## sulphates                                         -0.02    0.05  0.16
## alcohol                                            0.06    0.44  0.12
## free.sulfur.dioxide.percent                        1.00    0.20  0.00
## quality                                            0.20    1.00  0.10
## pH                                                 0.00    0.10  1.00
## density                                           -0.07   -0.31 -0.09
##                             density
## fixed.acidity                  0.27
## volatile.acidity               0.03
## citric.acid                    0.15
## residual.sugar                 0.84
## chlorides                      0.26
## sulphates                      0.07
## alcohol                       -0.78
## free.sulfur.dioxide.percent   -0.07
## quality                       -0.31
## pH                            -0.09
## density                        1.00

从相关系数矩阵中可以看到,所有化学成分与评价之间的相关性均不是特别高。

酒精度,作酒类饮品重要的衡量指标,与评价的相关性是最高的。

其他还有些相对较弱的相关性,如游离二氧化硫含量(正相关)、氯化物(负相关)等。

先来看一下相关程度看起来最高的酒精度对评分的影响。

## 
## Call:
## lm(formula = quality ~ alcohol, data = wine)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5317 -0.5286  0.0012  0.4996  3.1579 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.582009   0.098008   26.34   <2e-16 ***
## alcohol     0.313469   0.009258   33.86   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7973 on 4896 degrees of freedom
## Multiple R-squared:  0.1897, Adjusted R-squared:  0.1896 
## F-statistic:  1146 on 1 and 4896 DF,  p-value: < 2.2e-16

从图中可以看到酒精度与评分之间的较强的线性关系。通常来说,酒精度越高,评分也就相对越高。

在箱型图中添加了一条红色的直线用于显示酒精度的均值(平均数),可以看到多数评价偏低的样本酒精度都低于这个值。

其次相关系数最高的就是氯化物了,来看一下其与评分的散点图。

## wine$quality: 3
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.02200 0.03625 0.04100 0.05430 0.05400 0.24400 
## -------------------------------------------------------- 
## wine$quality: 4
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0130  0.0380  0.0460  0.0501  0.0540  0.2900 
## -------------------------------------------------------- 
## wine$quality: 5
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.00900 0.04000 0.04700 0.05155 0.05300 0.34600 
## -------------------------------------------------------- 
## wine$quality: 6
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01500 0.03600 0.04300 0.04522 0.04900 0.25500 
## -------------------------------------------------------- 
## wine$quality: 7
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01200 0.03100 0.03700 0.03819 0.04400 0.13500 
## -------------------------------------------------------- 
## wine$quality: 8
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01400 0.03000 0.03600 0.03831 0.04400 0.12100 
## -------------------------------------------------------- 
## wine$quality: 9
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0180  0.0210  0.0310  0.0274  0.0320  0.0350

看起来大多数葡萄酒的氯化物分布在0.03 - 0.06之间。

氯化物的含量越高,酒的评分就有越低的趋势。

与评分相关性第三高的就是游离二氧化硫占比了,来作一张散点图观察一下。

## 
##  Pearson's product-moment correlation
## 
## data:  free.sulfur.dioxide.percent and quality
## t = 14.076, df = 4896, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.1701474 0.2239834
## sample estimates:
##       cor 
## 0.1972141

大多数葡萄酒的游离二氧化硫占比分布在10% - 40%之间,而评分在5-7分不等。

这体现了之前表格中缺乏的相关性。

接下来,来看一下几种酸。

## quality: 3
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.200   6.575   7.300   7.600   8.525  11.800 
## -------------------------------------------------------- 
## quality: 4
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.800   6.400   6.900   7.129   7.600  10.200 
## -------------------------------------------------------- 
## quality: 5
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.500   6.400   6.800   6.934   7.400  10.300 
## -------------------------------------------------------- 
## quality: 6
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.800   6.300   6.800   6.838   7.300  14.200 
## -------------------------------------------------------- 
## quality: 7
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   4.200   6.200   6.700   6.735   7.200   9.200 
## -------------------------------------------------------- 
## quality: 8
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.900   6.200   6.800   6.657   7.300   8.200 
## -------------------------------------------------------- 
## quality: 9
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    6.60    6.90    7.10    7.42    7.40    9.10

大多数葡萄酒的固定酸分布在6-8之间,从图中并不能看到这两个变量之间有什么规律。

同样的,也很难在挥发酸、柠檬酸与评分之间找到什么联系,与一开始的相关系数呼应。

有趣的是,柠檬酸在和固定酸与挥发酸之中存在相关性。

来作一张这三个变量之间的散点图。

从图中可以看出,随着柠檬酸的含量增多,那么固定酸的含量也就相对越多。

而挥发酸则是相反地,柠檬酸含量越多,挥发酸是含量越少。

从相关系数矩阵中我们也看到了,固定酸是影响pH值的。

固定酸的含量越高,pH值就越低,葡萄酒的口感就越酸。

残糖是发酵停止之后糖的剩余量,发酵时的糖主要转化为酒精,所以这两者之间应该存在较强的负相关性。

## 
## Call:
## lm(formula = residual.sugar ~ alcohol, data = wine)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -10.111  -3.646  -0.485   3.082  61.611 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 25.91953    0.55665   46.56   <2e-16 ***
## alcohol     -1.85730    0.05258  -35.32   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.528 on 4896 degrees of freedom
## Multiple R-squared:  0.2031, Adjusted R-squared:  0.2029 
## F-statistic:  1248 on 1 and 4896 DF,  p-value: < 2.2e-16

残糖与酒精度之间存在相对较强的负相关度。

也就是说,发酵程度越高,酒精度就越高,残糖就越少,这是符合预期的。

通过图中也能看到,很多样本的残糖含量集中在2.5以下。

我们之前就注意到,残糖含量在2和9附近有2个巅峰值,这或许是某些酿酒工艺不同或者生产条件不同而导致的。

那么这两种不同的分组会对评分产生什么影响呢?

我们将残糖含量在3以下的分为一组,3以上的分为一组,来观察一下。

我们看到,评分中段的酒是残糖含量超过3的多一些,而得分最高的9分却是少于3的占比多。

也许残糖含量和评分并没有太直接的关系。

双变量分析

变量之间的一些联系

首先根据相关性系数矩阵,我们发现所有化学成分的相关性系数与评分之间的关系都不高。

也就是说,不仅仅是一个成分影响了评分,而应该是多个成分共同的影响。

酒精度作为酒类饮品的重要指标,它的相关度无疑是最高的。

其次就是氯化物,当酒精中氯化物含量越高,那么评分就有越低的趋势。

二氧化硫的气味不好闻,我们使用游离二氧化硫的占比来观测这一成分。

随着游离在空气中的二氧化硫含量增加,评分似乎并未受太大影响,这是出乎意料的。

柠檬酸与固定酸、挥发酸之间存在一些联系,柠檬酸越多则固定酸也越多,挥发酸则越少。

其中固定酸直接影响了葡萄酒的pH值,固定酸越多则口感越酸。

残糖与酒精度呈负相关性,残糖含量越少,则说明发酵越充分,酒精度越高。

总体来说,酒精度越高,那么评分随之也会相对较高,这两者之间应该具有最强的相关性。

但酒精度不是唯一影响评分的存在,其他化学成分也或多或少影响评分。

多变量分析

首先观察了残糖、酒精与评分之间的关系。

有趣的是,观察组残糖含量在3以下(less than 3)的是酒精度越高,残糖含量越高(越接近3),评分越高。

另一组含量在3以上(above 3)则是酒精度越高,残糖含量越低(也是接近3),评分越高。

也许残糖含量在3附近时可以获得较好的口感,从而获得高评分。

固定酸、pH与评分之间并没有什么直观的联系。

酒精与总体二氧化硫含量之间存在较强的负相关,说明了度数月底的酒可能需要更多的二氧化硫去防止变质。

而二氧化硫的多少似乎并不影响评分。

同样可以看到,氯化物与酒精度之间也有较强的负相关,但不足以影响评分。

多变量分析

讨论多变量分析中发现的一些关系

最终还是发现,酒精度对于评分的影响是最高的。

其他化学成分或相互影响,或影响其他物理属性,但对于评分的影响远不及酒精度。

这些关系中是否存在有趣或惊人的发现

  • 酒精度与残糖之间存在较强的负相关性,残糖含量越少说明发酵越充分,酒精度就越高

  • 酒精度与氯化物之间存在较强的负相关性,但并不清楚为什么

  • 酒精与二氧化硫总含量之间存在较强的负相关,说明了度数月底的酒可能需要更多的二氧化硫去防止变质

  • 残糖含量越接近3,越容易获得高分

  • 固定酸与pH存在较强的负相关性,但并不会影响评分

最终展示与总结

图一

描述一

残糖分布是一个双峰分布,在3(g / dm^3)附近是一个分水岭。这大概是因为不同的酿造工艺所致。

图二

描述二

通过探索我们发现了,酒精度在很大程度上影响了评分。酒精度与评分的相关系数要远高于其他成分。从上图也可以看出,多数评分低的样本的酒精度连平均水平都达不到。

图三

描述三

虽然残糖与评分没有什么太大关系,但残糖与酒精度有很强的负相关。我们将残糖含量的多少以3(g / dm^3)进行分组,作出了残糖与酒精、评分之间的散点图。发现了残糖不论是高于还是低于3(g / dm^3),都会有不断接近3(g / dm^3)的趋势,而且越接近3(g / dm^3)时,越容易出现评分较高。或许在3(g / dm^3)左右的白葡萄酒拥有最佳的甜度。

反思

通过对白葡萄酒的数据集进行EDA,我了解了EDA的整体流程。很多情况不是光凭想象就能得出正确结论的,而是应该通过实际数据说话。

通过EDA,我知道了酒精度最能影响葡萄酒的评分。还有其他二氧化硫、氯化物、残糖等等成分也或多或少在影响评分,但效果不足够明显。其他还发现,这些成分之间还有着各种联系。如残糖因发酵程度的关系影响了酒精度、固定酸的多少决定了pH值等等。

分析过程中也遇到了瓶颈,比如看到变量之间不相关时不知该从何入手,或者不知道有些图如何通过代码呈现。最后还是通过上网查阅各种酿酒工艺的资料,以及查阅Stack Overflow或是CSDN等资料一点点着手的。

最后,了解相关行业知识对数据分析很重要。如果能有更多相关知识,那么分析起来应该会内容更丰富,甚至可以建立预测模型了。