Este é um dataset contendo 1599 observações e 13 variáveis para um conjunto de dados sobre vinhos tintos, especificamente sobre o vinho verde Português.
Vamos ver as primeiras 5 linhas do dataset:
| X | fixed.acidity | volatile.acidity | citric.acid | residual.sugar | chlorides | free.sulfur.dioxide | total.sulfur.dioxide | density | pH | sulphates | alcohol | quality |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 7.4 | 0.70 | 0.00 | 1.9 | 0.076 | 11 | 34 | 0.9978 | 3.51 | 0.56 | 9.4 | 5 |
| 2 | 7.8 | 0.88 | 0.00 | 2.6 | 0.098 | 25 | 67 | 0.9968 | 3.20 | 0.68 | 9.8 | 5 |
| 3 | 7.8 | 0.76 | 0.04 | 2.3 | 0.092 | 15 | 54 | 0.9970 | 3.26 | 0.65 | 9.8 | 5 |
| 4 | 11.2 | 0.28 | 0.56 | 1.9 | 0.075 | 17 | 60 | 0.9980 | 3.16 | 0.58 | 9.8 | 6 |
| 5 | 7.4 | 0.70 | 0.00 | 1.9 | 0.076 | 11 | 34 | 0.9978 | 3.51 | 0.56 | 9.4 | 5 |
Vamos ver as últimas 5 linhas do dataset:
| X | fixed.acidity | volatile.acidity | citric.acid | residual.sugar | chlorides | free.sulfur.dioxide | total.sulfur.dioxide | density | pH | sulphates | alcohol | quality | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1595 | 1595 | 6.2 | 0.600 | 0.08 | 2.0 | 0.090 | 32 | 44 | 0.99490 | 3.45 | 0.58 | 10.5 | 5 |
| 1596 | 1596 | 5.9 | 0.550 | 0.10 | 2.2 | 0.062 | 39 | 51 | 0.99512 | 3.52 | 0.76 | 11.2 | 6 |
| 1597 | 1597 | 6.3 | 0.510 | 0.13 | 2.3 | 0.076 | 29 | 40 | 0.99574 | 3.42 | 0.75 | 11.0 | 6 |
| 1598 | 1598 | 5.9 | 0.645 | 0.12 | 2.0 | 0.075 | 32 | 44 | 0.99547 | 3.57 | 0.71 | 10.2 | 5 |
| 1599 | 1599 | 6.0 | 0.310 | 0.47 | 3.6 | 0.067 | 18 | 42 | 0.99549 | 3.39 | 0.66 | 11.0 | 6 |
Agora visualizar a estrutura de dados do dataset:
## 'data.frame': 1599 obs. of 13 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ fixed.acidity : num 7.4 7.8 7.8 11.2 7.4 7.4 7.9 7.3 7.8 7.5 ...
## $ volatile.acidity : num 0.7 0.88 0.76 0.28 0.7 0.66 0.6 0.65 0.58 0.5 ...
## $ citric.acid : num 0 0 0.04 0.56 0 0 0.06 0 0.02 0.36 ...
## $ residual.sugar : num 1.9 2.6 2.3 1.9 1.9 1.8 1.6 1.2 2 6.1 ...
## $ chlorides : num 0.076 0.098 0.092 0.075 0.076 0.075 0.069 0.065 0.073 0.071 ...
## $ free.sulfur.dioxide : num 11 25 15 17 11 13 15 15 9 17 ...
## $ total.sulfur.dioxide: num 34 67 54 60 34 40 59 21 18 102 ...
## $ density : num 0.998 0.997 0.997 0.998 0.998 ...
## $ pH : num 3.51 3.2 3.26 3.16 3.51 3.51 3.3 3.39 3.36 3.35 ...
## $ sulphates : num 0.56 0.68 0.65 0.58 0.56 0.56 0.46 0.47 0.57 0.8 ...
## $ alcohol : num 9.4 9.8 9.8 9.8 9.4 9.4 9.4 10 9.5 10.5 ...
## $ quality : int 5 5 5 6 5 5 5 7 7 5 ...
Veja que a coluna ‘X’ nada mais é do que um índice. Não irei excluí-la mas ela não será utilizada para a análise. O dataset contém dados estruturados. O tipo de variável está de acordo com cada observação.
Vejamos os dados estatísticos para cada variável:
## X fixed.acidity volatile.acidity citric.acid
## Min. : 1.0 Min. : 4.60 Min. :0.1200 Min. :0.000
## 1st Qu.: 400.5 1st Qu.: 7.10 1st Qu.:0.3900 1st Qu.:0.090
## Median : 800.0 Median : 7.90 Median :0.5200 Median :0.260
## Mean : 800.0 Mean : 8.32 Mean :0.5278 Mean :0.271
## 3rd Qu.:1199.5 3rd Qu.: 9.20 3rd Qu.:0.6400 3rd Qu.:0.420
## Max. :1599.0 Max. :15.90 Max. :1.5800 Max. :1.000
## residual.sugar chlorides free.sulfur.dioxide
## Min. : 0.900 Min. :0.01200 Min. : 1.00
## 1st Qu.: 1.900 1st Qu.:0.07000 1st Qu.: 7.00
## Median : 2.200 Median :0.07900 Median :14.00
## Mean : 2.539 Mean :0.08747 Mean :15.87
## 3rd Qu.: 2.600 3rd Qu.:0.09000 3rd Qu.:21.00
## Max. :15.500 Max. :0.61100 Max. :72.00
## total.sulfur.dioxide density pH sulphates
## Min. : 6.00 Min. :0.9901 Min. :2.740 Min. :0.3300
## 1st Qu.: 22.00 1st Qu.:0.9956 1st Qu.:3.210 1st Qu.:0.5500
## Median : 38.00 Median :0.9968 Median :3.310 Median :0.6200
## Mean : 46.47 Mean :0.9967 Mean :3.311 Mean :0.6581
## 3rd Qu.: 62.00 3rd Qu.:0.9978 3rd Qu.:3.400 3rd Qu.:0.7300
## Max. :289.00 Max. :1.0037 Max. :4.010 Max. :2.0000
## alcohol quality
## Min. : 8.40 Min. :3.000
## 1st Qu.: 9.50 1st Qu.:5.000
## Median :10.20 Median :6.000
## Mean :10.42 Mean :5.636
## 3rd Qu.:11.10 3rd Qu.:6.000
## Max. :14.90 Max. :8.000
Será que o dataset contém valores faltantes? Vamos verificar com sum(is.na())
## [1] 0
Bom! Não contém valores faltantes para serem tratados.
A seguir irei investigar cada variável do dataset. Irei visualizar através do histograma e boxplot.
Histograma para a variável fixed.acidity
Dados estatísticos para a variável:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.60 7.10 7.90 8.32 9.20 15.90
A variável ‘fixed.acidity’ é a acidez presente nos vinhos, que pode ser decorrente da uva e da fermentação. Vinhos de clima frio tendem a ser mais ácidos e vinhos de clima quente apresentam menor acidez (gerando vinhos com maior teor de alcool). Bebeu um vinho e começou a salivar muito? É um sinal de vinho com alta acidez. Se a acidez estiver se destacando excessivamente irá incomodar o paladar.
Irei observar se vinhos com alto teor de acidez resultaram em vinhos com notas mais baixas.
A distribuição da variável está próxima de uma distribuição normal, sendo um pouco right skew (assimétrica a direita).
Agora a variável ‘volatile.acidity’:
Dados estatísticos:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.1200 0.3900 0.5200 0.5278 0.6400 1.5800
A variável ‘volatile.acidity’ é o que confere ao vinho, quando existente em altos níveis, o gosto de vinagre. Em altos níveis é perceptível no aroma: se o cheiro estiver forte, terá um cheiro parecido com vinagre e o gosto será ruim.
Será interessante observar se os vinhos com as notas mais baixas apresentam níveis altos desta variável e se as notas mais altas foram atribuídas à vinhos com menor presença desta.
A distribuição da variável é próxima de uma distribuição normal.
Agora vamos investigar a variável ‘citric.acid’:
Dados estatísticos:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.090 0.260 0.271 0.420 1.000
A variável ‘citric.acid’ é encontrada em quantidades pequenas.É este atributo que adiciona frescor e sabor ao vinho. Portanto, será interessante observar se os vinhos com as notas mais altas possuem valores pequenos desta variável e se o contrário também pode ser constatado.
A distribuição da variável é assimétrica a direita (right skew).
Para deixar a distribuição mais próxima da normal, vou usar a transformação logarítmica de base 10.
Agora a variável ‘residual.sugar’:
Dados estatísticos:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.900 1.900 2.200 2.539 2.600 15.500
A variável ‘residual.sugar’ é a quantidade restante de açúcar após a fermentação. Vinhos com menos de 1 grama por litro são raros de serem encontrados e vinhos com mais de 45 gramas por litro são considerados vinhos doces. Existem muitas pessoas no Brasil que preferem vinhos doces e creio que esta seja uma característica do país, cujo consumo de vinhos não é similar ao de outros países produtores, como países europeus. As notas foram atribuídas por expecialistas em vinhos, logo, creio que os vinhos com menores quantidades de ‘residual.sugar’, que são vinhos mais secos, sejam aqueles com as melhores notas.
Isso será investigado.
A distribuição da variável é assimétrica a direita. Vou utilizar o log10 para aproximar de uma distribuição normal.
Agora a variável ‘chlorides’:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.01200 0.07000 0.07900 0.08747 0.09000 0.61100
A variável ‘chlorides’ é a quantidade de sal presente no vinho. Como pode ser visto no histograma, está presente em menores quantidades. É possível acreditar que vinhos com alto valor de ‘chlorides’ não possuam um sabor aceitável e por isso contenham as menores notas de qualidade.
Isso será verificado.
A distribuição da variável é assimétrica a direita. Irei usar o log10.
Variável ‘free.sulfur.dioxide’:
Dados estatísticos:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 7.00 14.00 15.87 21.00 72.00
Trata-se do dióxido de enxofre (SO2) presente nos vinhos. Este elemento é usado para a elaboração de vinhos desde o século XVIII. SO2 livre são os sais liberados em soluções aquosas como o vinho. É usado para o controle das bactérias presentes no vinho. Também protege o vinho da ação do oxigênio. Se usado em doses elevadas pode ocasionar diversos problemas ao vinho, como afetar a intensidade da cor, promover o surgimento de aromas desagradáveis e até mesmo oferecer riscos à saúde. Devido a isto, a sua presença deve ser informada obrigatoriamente nos rótulos dos vinhos. Junto com o íon bissulfito (HSO3) é formado o SO2 combinado. A proporção de livre e combinado forma o SO2 total, que será visto na sequência.
A distribuição da variável é assimétrica a direita (right skew). Vamos utilizar a transformação logarítmica para aproximar a distribuição de uma normal.
Agora a variável ‘total.sulfur.dioxide’
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 6.00 22.00 38.00 46.47 62.00 289.00
Esta variável, quando em baixas concentrações, é imperceptível no vinho. Mas em concentrações acima de 50 ppm, tornam-se evidentes e afetam o cheiro e o sabor do vinho. Vinhos com concentração superior à 50 ppm podem ter suas notas afetadas.
Irei verificar.
A distribuição da variável é assimétrica a direita.
Agora a variável ‘density’:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.9901 0.9956 0.9968 0.9967 0.9978 1.0037
O atributo ‘density’ é a densidade da água. Depende da quantidade de álcool e de açúcar no vinho. É correlacionada com essas duas variáveis. Suponho que um equilibrio estre essas duas variáveis possa proporcionar vinhos considerados de melhor qualidade.
Os dados para a variável density seguem uma distribuição normal.
Vamos ver agora a variável ‘pH’:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.740 3.210 3.310 3.311 3.400 4.010
Este atributo determina se um vinho é muito ácido. Há uma escala de 0 até 14, em que vinhos com pH 0 são muito ácidos e vinhos com pH 14 não possuem acidez. A maioria dos vinhos tem o pH entre 3-4.
As maiores notas de qualidade são condizentes com essa escala de pH? Irei verificar.
Os dados para a variável pH seguem uma distribuição normal.
Agora a variável ‘sulphates’:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.3300 0.5500 0.6200 0.6581 0.7300 2.0000
Sulfatos são adiconados ao vinho e contribuem para os níveis de SO2, atuando como controle da oxidação e das bactérias.
Os dados para a variável são próximos de uma distribuição normal, sendo levemente assimétricos à direita.
Agora a variável que é mais perceptível pelo público em geral, o álcool:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 8.40 9.50 10.20 10.42 11.10 14.90
Esta é a variável mais conhecida (e talvez a única percebida por muitos) para os vinhos. É o percentual de álcool presente no vinho. Vamos observar se vinhos com maior teor álcoolico são aqueles que possuem as melhores notas. Acredito que tanto percentuais baixos quanto altos afetem a qualidade do vinho.
Os dados para a variável seguem uma distribuição próxima da normal, levemente assimétrica à direita.
Agora a variável principal, ‘quality’:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.000 5.000 6.000 5.636 6.000 8.000
Vamos calcular a quantidade de observações para cada nota, usando ggplot2::cut_width()
| cut_width(quality, 1) | n |
|---|---|
| [2.5,3.5] | 10 |
| (3.5,4.5] | 53 |
| (4.5,5.5] | 681 |
| (5.5,6.5] | 638 |
| (6.5,7.5] | 199 |
| (7.5,8.5] | 18 |
É um atributo externo. Foi criado a partir de avaliações sensoriais. Apresenta um score de 0 à 10. Para o dataset em questão a nota mínima é 3 e a máxima é 8.
Os dados para a variável seguem uma distribuição normal.
É possível observar que a maioria dos vinhos presentes no dataset são vinhos de qualidade média, com predominância das notas 5 e 6. Os vinhos com a pontuação mais baixa e com a mais alta ocorrem em menor quantidade. Isso afeta a minha intenção inicial de buscar as características predominantes que proporcionem a maior nota de qualidade, já que neste dataset há predominãncia de vinhos que contém uma qualidade média.
Seria interessante observar mais dados sobre vinhos com a nota máxima para terem as suas características comparadas com os demais vinhos.
A variável ‘quality’ é do tipo ‘int’. Vou criar uma variável categórica a partir desta em uma nova coluna.
E fazer um count para a quantidade de observações em cada categoria criada:
| qualidade | n |
|---|---|
| baixa | 63 |
| média | 1319 |
| alta | 217 |
Os dados estão organizados em um dataframe contendo 1.599 observações e 12 variáveis (há 13 sendo uma coluna chamada de X, que não tem utilização), para um conjunto de dados sobre vinho tinto. As variáveis foram obtidas a partir de testes físico-químicos.
Os dados estão bem organizados, são dados tabulares, não apresentam valores faltantes. Estão arrumados: cada valor está em sua própria célula; cada variável está em sua própria coluna; e cada observação está em sua própria linha.
O principal atributo é uma pontuação de qualidade, uma nota de 0 a 10. É um atributo externo, criado a partir de avaliações sensoriais de especialistas em vinhos.
Os demais atributos são características de cada vinho. Estes motivam a pergunta sobre quais atributos contribuem mais para as maiores notas de qualidade.
Sim. Foi criada uma variável categórica a partir da variável numérica ‘quality’.
Sim. Alguns atributos possuem distribuições assimétricas à direita. Foi utilizada a transformação logarítmica para ajustar a distribuiçao destes atributos.
Vamos verificar cada variável como se relaciona com a variável de qualidade.
Vou plotar as variáveis que contribuem positivamente para a qualidade.
No início comentei que vinhos com alto teor de acidez (fixed.acidity) prejudicam a qualidade dos vinhos. Aqui é possível notar uma relação positiva. À medida que a acidez aumenta, a qualidade atribuída também aumentou. Tanto a acidez muito baixa quanto a acidez muito alta, proporcionam as notas mais baixas. A variável citric.acid é aquela que proporciona frescor e sabor para o vinho. Veja que há uma relação positivia com o atributo de qualidade.
“sulphates” são adicionados ao vinho, para controle da oxidação e bactérias. Valores menores contribuem para notas mais baixas. Há uma relação positiva com o atributo de qualidade. O atributo alchohol contém uma relação positiva. Baixo teor de álcool contribue com notas mais baixas. Mas um alto valor também irá afetar a nota de qualidade do vinho.
Agora as variáveis cujos níveis altos contribuem negativamente para a qualidade:
O boxplot para a variável ‘volatile.acidity’ constata que os vinhos com as notas mais baixas apresentaram níveis altos desta variável e as notas mais altas foram atribuídas aos vinhos com menor presença desta. Há uma relação negativa.
A visualização para ‘residual.sugar’ demonstra que os vinhos com menores quantidades desta, que são vinhos mais secos, receberam as melhores notas.
Veja que vinhos com valores mais altos de ‘chlorides’ (é a quantidade de sal no vinho) receberam as menores notas. O atributo “free.sulfur.dioxide” também apresenta uma relação negativa com o atributo de qualidade.
Como comentado no início, é possível constatar que vinhos com teores mais altos de acidez resultam em notas de qualidade mais baixas. Há uma relação negativa com o atributo de qualidade, assim como para o atributo “density”.
Para estas amostras de pH, comprovou-se que a maioria dos vinhos presentes no dataset têm o pH entre 3 e 4. A maioria dos vinhos fabricados têm o pH entes esses níveis.
Os gráficos acima foram para avaliar a relação entre as variáveis e o atributo de qualidade. Vamos verificar como todas as variáveis relacionam-se entre si.
Neste gráfico é demonstrado o seguinte: - A distribuição de cada variável na diagonal; - Na parte inferior:um scatterplot para duas variáveis; - Na parte superior: o valor da correlação mais o nível de significância, representado na forma de estrelas (). Cada nível de significância é associado a um símbolo: p-values(0, 0.001, 0.01, 0.05, 0.1, 1) - símbolos(, , *, “.”, " “)
Maiores correlações positivas: ‘alcohol’ e ‘quality ’density’ e ‘fixed.acidity’ ‘free.sulfur.dioxide’ e ‘total.sulfur’dioxide’ (essa era esperada já que uma compõem a outra) ‘citric.acid’ e ‘fixed.acidity’
Maiores correlações negativas: ‘citric.acid’ e ‘volatile.acidity’ ‘pH’ e ‘fixed.acidity’ ‘pH’ e ‘citric.acid’ ‘alcohol’ e ‘density’
Vamos visualizar as positivas e negativas:
Agora vejamos as maiores correlações negativas:
O atributo álcool é aquele que apresentou a maior correlação positiva com o atributo de qualidade. O que já era esperado pois é um atributo que se destaca, mesmo para aqueles que não são especialistas em vinhos. O segundo atributo com a maior correlação foram os sulfatos.
O atributo ‘fixed.acidity’ me pareceu ser o que mais relaciona-se com as outras variáveis.
Relacionamento negativo foi entre ‘pH’ e ‘fixed.acidity’ Positivo foram dois: ‘density’ e ‘fixed.acidity’ ‘citric.acid’ e ‘fixed.acidity’
Os atributos ‘sulphates’ e ‘alcohol’ foram os que contribuiram positivamente para as melhores notas.
Veja como é possível constatar, através dos pontos azuis quadrados, que níveis mais altos de álcool e sulfatos geraram os vinhos com a qualidade alta.
Valores de sulphates abaixo de 1.0 (g/dm³) e alcohol acima de 10 (% by volume) obtiveram as notas mais altas de qualidade. Há uma maior concentração em níves de alcohol em torno de 12 (em % do volume)
Como visto no começo, o dataset contém uma grande quantidade de vinhos com a qualidade média, algo que fica bem visível através do gráfico, mostrando várias combinações entre álcool e sulfatos que resultam em vinhos de qualidade média.
Como o atributo ‘alcohol’ é o que contém a maior correlação com o atributo ‘quality’, vou analisá-lo com as outras variáveis que, individualmente, foram correlacionadas positivamente com o atributo de qualidade.
Começando com fixed.acidity:
Concentrações maiores de ambos geram melhores notas de qualidade. Mas é interessante observar que alguns vinhos cujo teor de álcool é maior e a acidez é baixa, também geraram notas altas. Lembremos: - uvas de climas frios geram vinhos com mais acidez; - uvas de climas quentes geram vinhos com menos acidez e mais álcool. A partir disso, podemos supor que os vinhos com maior teor de álcool e menor acidez, são provenientes de regiões mais quentes. E os vinhos com a acidez mais alta são pronientes de uvas cultivadas em clima mais frio. O que é condizente com o local onde a amostra foi colhida: variantes do vinho verde português (Portugal).
Agora para citric.acid:
O atributo ‘citric.acid’ é o que gera frescor e sabor ao vinho. Quantidades entre 0.25 e 0.50 (g/dm³), combinadas com o álcool, foram as que geraram as melhores notas. Estas duas combinações aparentam ser as que geram as maiores notas para os vinhos.
O atributo ‘volatile.acidity’ é o que apresentou maior correlação negativa com o atributo de qualidade. Vamos ver como este atributo afeta a variável ‘alcohol’ e a qualidade.
O vinho estava com gosto de vinagre? Se sim, lembre-se do atributo ‘volatile.acidity’. É este que confere ao vinho esse gosto, quando existente em altos níveis. Veja a constatação de que as notas mais baixas foram decorrentes de vinhos com os valores mais altos deste atributo. E as maiores notas de qualidade foram de valores mais baixos deste atributo, conjugadas com maior teor de álcool, que resultaram em vinhos com melhores avaliações.
A correlação entre os atributos ‘density’ e ‘alcohol’ foi negativa. Vamos ver como a combinação destes dois afeta a qualidade.
Veja a correlação negativa. A ‘density’ parece ser um atributo que prejudica o efeito do álcool sobre o vinho.
Agora vejamos a variável fixed.acidity, que tem uma correlação positiva com a variável qualidade, juntamente com a variável density (de correlação negativa).
Novamente demonstrando que níveis menores da variável density proporcionam as melhores notas de qualidade.
A combinação destas duas também aparenta gerar as maiores notas para os vinhos.
Estas duas apresentam as melhores notas quando os seus valores são menores.
Como dito, a maioria dos vinhos possuem o pH entre 3 e 4. Níveis altos para o atributo “volatile.acidity”, acima 0.8 (g/dm³) geraram os vinhos com as notas mais baixas de qualidade. Estes atributos acima contribuem muito para as menores notas.
Estas duas afetam diretamente as notas de qualidades. São as que mais contribuem negativamente para a nota final.
Alcohol e citric.acid contribuem positivamente. Mas se for alcohol e density, a qualidade mais alta é afetada. O atributo volatile.acidity é um que deve ser observado com atenção. Este tem a capacidade de conceder ao vinho o gosto de vinagre, sendo assim altamente perceptível, mesmo por não especialistas. Como esperado no início, alcohol é o atributo que se destaca diretamente com o atributo externo de qualidade.
Achei interessante a combinação entre fixed.acidity e citric.acid. Contribuíram positivamente para vinhos com mais notas altas.
Um modelo de regressão linear pode ser utilizado para modelar o relacionamento entre a magnitude de uma variável e outra variável, por exemplo, quando a variável X aumenta, Y também aumenta. Ou vice-versa. A correlação, demonstrada em vários gráficos acima, é um jeito de medir como duas variáveis estão relacionadas, medindo a força de uma associação entre duas variáveis. Já a regressão é capaz de quantificar a natureza do relacionamento entre essas variáveis, quantificando a força da associação.
Para este caso a variável de resposta ou variável dependente ou variável alvo, será o atributo de qualidade, o “quality”.
A variável independente, que é a variável usada para prever a resposta, será a variável “alcohol”.
Uma regressão linear simples tenta encontrar a “melhor” linha para prever a resposta “quality” como uma função da variável preditora “alcohol”.
Usando um modelo de regressão linear simples temos o seguinte resultado:
##
## Call:
## lm(formula = quality ~ alcohol, data = redwine)
##
## Coefficients:
## (Intercept) alcohol
## 1.8750 0.3608
Vamos chamar a função summary() para calcular as métricas do modelo de regressão:
##
## Call:
## lm(formula = quality ~ alcohol, data = redwine)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.8442 -0.4112 -0.1690 0.5166 2.5888
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.87497 0.17471 10.73 <2e-16 ***
## alcohol 0.36084 0.01668 21.64 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7104 on 1597 degrees of freedom
## Multiple R-squared: 0.2267, Adjusted R-squared: 0.2263
## F-statistic: 468.3 on 1 and 1597 DF, p-value: < 2.2e-16
O intercepto é o valor previsto quando X = 0. Neste caso, é o valor previsto para a variável Y (quality) quando X (alcohol) é igual a 0. O coeficiente de regressão (0.3608) pode ser interpretado como o acréscimo na variável “quality” para cada acréscimo em % de volume da variável “alcohol”.
A métrica “Residual standard error” ou simplesmente RSE (erro-padrão residual) é a métrica de desempenho do modelo. Esta métrica pode ser usada para comparação entre modelos. Neste caso, o resultado de 0.7104 é o erro do modelo na nota final de qualidade.
O coeficiente de determinação ou R-quadrado ou R2, mede a proporção de variação nos dados que é contabilizada no modelo. Neste caso, para a variável “alcohol”, o resultado de 0.2267 demonstra que esta variável explica cerca de 22% do resultado final (nota de qualidade).
Mas não temos no dataset apenas uma variável preditora. Temos 11 no total.
Isso é uma aplicação para a regressão linear múltipla. Com esta, deixamos de ter uma linha e passamos a ter um modelo linear.
O objetivo será prever a variável alvo “quality” a partir das outras variáveis (independentes).
No entanto, ir adicionando todas as variáveis não irá significar que o modelo ficará melhor.
A adição de variáveis sempre reduz o RSE e aumenta o R2, podendo assim levar à escolha de modelos que não são bons.
Existem algumas técnicas para a seleção das variáveis a serem utilizadas. Sem entrar em detalhes de todas, optei por utilizar uma chamada de regressão passo a passo, chamada de stepAIC.
AIC significa Akaike´s Information Criteria. É uma métrica que penaliza a adição de termos a um modelo.
Em R, ela pode ser encontrada dentro do pacote MASS.
Esta técnica irá incluir e excluir sucessivamente os preditores com o objetivo de encontrar um modelo que diminua o AIC.
Desta forma:
## Start: AIC=-1375.49
## quality ~ fixed.acidity + citric.acid + sulphates + alcohol +
## volatile.acidity + residual.sugar + chlorides + free.sulfur.dioxide +
## total.sulfur.dioxide + density + pH
##
## Df Sum of Sq RSS AIC
## - density 1 0.287 666.70 -1376.8
## - fixed.acidity 1 0.389 666.80 -1376.5
## - residual.sugar 1 0.498 666.91 -1376.3
## - citric.acid 1 0.646 667.06 -1375.9
## <none> 666.41 -1375.5
## - free.sulfur.dioxide 1 1.694 668.10 -1373.4
## - pH 1 1.957 668.37 -1372.8
## - chlorides 1 8.391 674.80 -1357.5
## - total.sulfur.dioxide 1 8.427 674.84 -1357.4
## - sulphates 1 26.971 693.38 -1314.0
## - volatile.acidity 1 33.620 700.03 -1298.8
## - alcohol 1 45.672 712.08 -1271.5
##
## Step: AIC=-1376.8
## quality ~ fixed.acidity + citric.acid + sulphates + alcohol +
## volatile.acidity + residual.sugar + chlorides + free.sulfur.dioxide +
## total.sulfur.dioxide + pH
##
## Df Sum of Sq RSS AIC
## - fixed.acidity 1 0.108 666.81 -1378.5
## - residual.sugar 1 0.231 666.93 -1378.2
## - citric.acid 1 0.654 667.35 -1377.2
## <none> 666.70 -1376.8
## + density 1 0.287 666.41 -1375.5
## - free.sulfur.dioxide 1 1.829 668.53 -1374.4
## - pH 1 4.325 671.02 -1368.5
## - total.sulfur.dioxide 1 8.728 675.43 -1358.0
## - chlorides 1 8.761 675.46 -1357.9
## - sulphates 1 27.287 693.98 -1314.7
## - volatile.acidity 1 35.000 701.70 -1297.0
## - alcohol 1 119.669 786.37 -1114.8
##
## Step: AIC=-1378.54
## quality ~ citric.acid + sulphates + alcohol + volatile.acidity +
## residual.sugar + chlorides + free.sulfur.dioxide + total.sulfur.dioxide +
## pH
##
## Df Sum of Sq RSS AIC
## - residual.sugar 1 0.257 667.06 -1379.9
## - citric.acid 1 0.565 667.37 -1379.2
## <none> 666.81 -1378.5
## + fixed.acidity 1 0.108 666.70 -1376.8
## + density 1 0.005 666.80 -1376.5
## - free.sulfur.dioxide 1 1.901 668.71 -1376.0
## - pH 1 7.065 673.87 -1363.7
## - chlorides 1 9.940 676.75 -1356.9
## - total.sulfur.dioxide 1 10.031 676.84 -1356.7
## - sulphates 1 27.673 694.48 -1315.5
## - volatile.acidity 1 36.234 703.04 -1295.9
## - alcohol 1 120.633 787.44 -1114.7
##
## Step: AIC=-1379.93
## quality ~ citric.acid + sulphates + alcohol + volatile.acidity +
## chlorides + free.sulfur.dioxide + total.sulfur.dioxide +
## pH
##
## Df Sum of Sq RSS AIC
## - citric.acid 1 0.475 667.54 -1380.8
## <none> 667.06 -1379.9
## + residual.sugar 1 0.257 666.81 -1378.5
## + fixed.acidity 1 0.133 666.93 -1378.2
## + density 1 0.028 667.03 -1378.0
## - free.sulfur.dioxide 1 2.064 669.13 -1377.0
## - pH 1 7.138 674.20 -1364.9
## - total.sulfur.dioxide 1 9.828 676.89 -1358.5
## - chlorides 1 9.832 676.89 -1358.5
## - sulphates 1 27.446 694.51 -1317.5
## - volatile.acidity 1 35.977 703.04 -1297.9
## - alcohol 1 122.667 789.73 -1112.0
##
## Step: AIC=-1380.79
## quality ~ sulphates + alcohol + volatile.acidity + chlorides +
## free.sulfur.dioxide + total.sulfur.dioxide + pH
##
## Df Sum of Sq RSS AIC
## <none> 667.54 -1380.8
## + citric.acid 1 0.475 667.06 -1379.9
## + residual.sugar 1 0.167 667.37 -1379.2
## + density 1 0.031 667.51 -1378.9
## + fixed.acidity 1 0.007 667.53 -1378.8
## - free.sulfur.dioxide 1 2.394 669.93 -1377.1
## - pH 1 7.073 674.61 -1365.9
## - total.sulfur.dioxide 1 10.787 678.32 -1357.2
## - chlorides 1 10.809 678.35 -1357.1
## - sulphates 1 27.060 694.60 -1319.2
## - volatile.acidity 1 42.318 709.85 -1284.5
## - alcohol 1 124.483 792.02 -1109.4
##
## Call:
## lm(formula = quality ~ sulphates + alcohol + volatile.acidity +
## chlorides + free.sulfur.dioxide + total.sulfur.dioxide +
## pH, data = redwine, na.action = na.omit)
##
## Coefficients:
## (Intercept) sulphates alcohol
## 4.430099 0.882665 0.289303
## volatile.acidity chlorides free.sulfur.dioxide
## -1.012753 -2.017814 0.005077
## total.sulfur.dioxide pH
## -0.003482 -0.482661
A técnica incluiu e excluiu automaticamente algumas variáveis independentes e encontrou as variáveis que juntas diminuem o AIC. Foram elas: sulphates + alcohol + volatile.acidity + chlorides + free.sulfur.dioxide + total.sulfur.dioxide + pH.
Agora vejamos as métricas para este modelo:
##
## Call:
## lm(formula = quality ~ sulphates + alcohol + volatile.acidity +
## chlorides + free.sulfur.dioxide + total.sulfur.dioxide +
## pH, data = redwine, na.action = na.omit)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.68918 -0.36757 -0.04653 0.46081 2.02954
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.4300987 0.4029168 10.995 < 2e-16 ***
## sulphates 0.8826651 0.1099084 8.031 1.86e-15 ***
## alcohol 0.2893028 0.0167958 17.225 < 2e-16 ***
## volatile.acidity -1.0127527 0.1008429 -10.043 < 2e-16 ***
## chlorides -2.0178138 0.3975417 -5.076 4.31e-07 ***
## free.sulfur.dioxide 0.0050774 0.0021255 2.389 0.017 *
## total.sulfur.dioxide -0.0034822 0.0006868 -5.070 4.43e-07 ***
## pH -0.4826614 0.1175581 -4.106 4.23e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6477 on 1591 degrees of freedom
## Multiple R-squared: 0.3595, Adjusted R-squared: 0.3567
## F-statistic: 127.6 on 7 and 1591 DF, p-value: < 2.2e-16
Comparando com o modelo de regressão simples, o RSE foi menor e juntas, estas variáveis apresentaram um R2 de 0.3595, que significa que cerca de 35% do resultado final (nota de qualidade) é explicado por essas variáveis.
Como dito no início, o dataset não contém muitas observações para vinhos com qualidade baixa e alta, tendo uma concentração de vinhos com a qualidade média. Acredito que isto pode ter impactado no modelo gerado, pela ausência de mais observações.
Mostra a relação entre os dois atributos e a qualidade. Níveis mais altos de ambos obtiveram vinhos com notas mais altas de qualidade.
Os dois atributos que combinados resultaram em mais vinhos com qualidade alta. ### Terceiro Gráfico
Combinações de ‘sulphates’ e ‘alcohol’ que geram vinhos com notas mais altas. Com base no modelo de regressão múltipla, estas duas variáveis são as que mais impactam no resultado final (nota de qualidade)
Inicialmente gostaria que o dataset contivesse mais dados dos vinhos com notas baixas e altas. O dataset tem grande concentração de vinhos que receberam notas médias de qualidade. Um modelo gerado provavelmente seria afetado pela pouca quantidade de observações para os vinhos de notas baixas e altas. Apesar disso foi possível observar que o atributo ‘alcohol’ é o mais positivamente relacionado com a qualidade. Vinhos com baixo teor de álcool são os que receberam as menores notas. Pelo modelo de regressão múltipla, as variáveis “alcohol” e “sulphates”, são as que mais contribuem para aumentar as notas de qualidade dos vinhos. Dois atributos que devem ser observados com atenção são ‘volatile.acidity’ e ‘chlorides’. Pelo modelo de regressão, estes são os que mais contribuem negativamente para a nota final de qualidade. A percepção de ‘volatile.acidity’ é fácil: quando existente em valores altos, concede o sabor de vinagre ao vinho. Logo, vinhos com valores mais altos deste atributo receberam as menores notas. E ‘chlorides’ é a quantidade de sal presente no vinho. Quantidades altas desta afetam o sabor do vinho, prejudicando as notas finais de qualidade.