Análise Discriminante

Introdução

O conjunto de dados do vinho é uma coleção de informações que descrevem características químicas de amostras de vinho provenientes de três cultivares distintas. Essas informações são representadas por 13 concentrações químicas diferentes, cada uma delas sendo uma variável que pode influenciar nas propriedades e na qualidade do vinho. A Fonte dessas informações : https://rstudio-pubs-static.s3.amazonaws.com/35817_2552e05f1d4e4db8ba87b334101a43da.html

Objetivo

Classificação Precisa: Corretamente identificar e classificar observações em grupos predeterminados com base em variáveis explicativas.

Redução da Dimensionalidade: Diminuir a quantidade de variáveis originais para um número menor de variáveis discriminantes, mantendo a informação relevante.

Maximização da Variância Intergrupos: Encontrar combinações lineares que maximizem a variação entre os grupos.

Minimização da Variância Intragrupos: Reduzir a variação dentro de cada grupo, tornando as observações dentro do mesmo grupo mais semelhantes.

Identificação das Variáveis Mais Discriminantes: Identificar as variáveis mais relevantes que contribuem significativamente para a discriminação entre os grupos.

Pacotes e Banco de dados

pacman::p_load('MASS','WeDiBaDis', 'psych','car')
data(wine, package='rattle')
attach(wine)

Nomes das variáves e descrição

names(wine)
##  [1] "Type"            "Alcohol"         "Malic"           "Ash"            
##  [5] "Alcalinity"      "Magnesium"       "Phenols"         "Flavanoids"     
##  [9] "Nonflavanoids"   "Proanthocyanins" "Color"           "Hue"            
## [13] "Dilution"        "Proline"

1. Álcool (Alcohol): É a substância presente no vinho que confere o teor alcoólico, resultado da fermentação dos açúcares presentes nas uvas.

2. Malic: Refere-se ao ácido málico, um ácido orgânico presente nas uvas e que afeta o sabor e a acidez do vinho.

3. Ash (Cinzas): Representa a quantidade de cinzas deixadas após a incineração de uma amostra, indicando a quantidade de minerais presentes.

4. Alcalinidade (Alkalinity): A alcalinidade se refere à presença de substâncias alcalinas, indicando a capacidade de neutralizar a acidez.

5. Magnésio (Magnesium): Um mineral presente nas uvas e no solo, que pode afetar o crescimento da videira e a composição química do vinho.

6. Fenóis (Phenols): São compostos que contribuem para a cor, sabor e textura do vinho. Podem ser antioxidantes e afetar a sensação de adstringência.

7. Flavanóides (Flavonoids): São um tipo de fenol que afeta a cor e o sabor do vinho, e podem ter propriedades antioxidantes.

8. Não-flavanóides (Non-flavonoids): Outro grupo de compostos que inclui substâncias como ácidos fenólicos, taninos e outros, que também afetam as características do vinho.

9. Proantocianinas (Proanthocyanidins): São taninos encontrados nas uvas e no vinho, que contribuem para a adstringência e estrutura do vinho.

10. Cor (Color): Refere-se à tonalidade e intensidade da cor do vinho, influenciada pelos pigmentos presentes nas uvas.

11. Matiz (Hue): É uma característica da cor que descreve a tonalidade específica do vinho, como vermelho, roxo, âmbar, etc.

12. Diluição (Dilution): Indica a proporção de uma substância que foi misturada ou diluída com outra, influenciando a concentração final.

13. Prolina (Proline): É um aminoácido que pode estar presente nas uvas e influenciar o sabor e a qualidade do vinho.

Visualisação prévia dos dados :

head(wine)

Análise descritiva dos dados

A análise descritiva é uma técnica estatística que tem como objetivo apresentar uma descrição resumida dos dados. Essas medidas descritivas auxiliam na sumarização e compreensão da distribuição dos dados como média, mediana, moda, mínimo, máximo e entre outras.

summary(wine)
##  Type      Alcohol          Malic            Ash          Alcalinity   
##  1:59   Min.   :11.03   Min.   :0.740   Min.   :1.360   Min.   :10.60  
##  2:71   1st Qu.:12.36   1st Qu.:1.603   1st Qu.:2.210   1st Qu.:17.20  
##  3:48   Median :13.05   Median :1.865   Median :2.360   Median :19.50  
##         Mean   :13.00   Mean   :2.336   Mean   :2.367   Mean   :19.49  
##         3rd Qu.:13.68   3rd Qu.:3.083   3rd Qu.:2.558   3rd Qu.:21.50  
##         Max.   :14.83   Max.   :5.800   Max.   :3.230   Max.   :30.00  
##    Magnesium         Phenols        Flavanoids    Nonflavanoids   
##  Min.   : 70.00   Min.   :0.980   Min.   :0.340   Min.   :0.1300  
##  1st Qu.: 88.00   1st Qu.:1.742   1st Qu.:1.205   1st Qu.:0.2700  
##  Median : 98.00   Median :2.355   Median :2.135   Median :0.3400  
##  Mean   : 99.74   Mean   :2.295   Mean   :2.029   Mean   :0.3619  
##  3rd Qu.:107.00   3rd Qu.:2.800   3rd Qu.:2.875   3rd Qu.:0.4375  
##  Max.   :162.00   Max.   :3.880   Max.   :5.080   Max.   :0.6600  
##  Proanthocyanins     Color             Hue            Dilution    
##  Min.   :0.410   Min.   : 1.280   Min.   :0.4800   Min.   :1.270  
##  1st Qu.:1.250   1st Qu.: 3.220   1st Qu.:0.7825   1st Qu.:1.938  
##  Median :1.555   Median : 4.690   Median :0.9650   Median :2.780  
##  Mean   :1.591   Mean   : 5.058   Mean   :0.9574   Mean   :2.612  
##  3rd Qu.:1.950   3rd Qu.: 6.200   3rd Qu.:1.1200   3rd Qu.:3.170  
##  Max.   :3.580   Max.   :13.000   Max.   :1.7100   Max.   :4.000  
##     Proline      
##  Min.   : 278.0  
##  1st Qu.: 500.5  
##  Median : 673.5  
##  Mean   : 746.9  
##  3rd Qu.: 985.0  
##  Max.   :1680.0

Representação gráfica dos dados :

par(mfrow=c(2,3))
hist(wine$Alcohol , col = "blue", main = "Gráfico de Álcool ")
hist(wine$Malic , col = "lightgreen", main = "Gráfico do Ácido Orgânico ")
hist(wine$Ash , col = "orange" , main = "Gráfico de Minerais(cinzas)")
hist(wine$Alcalinity , col = "red", main = "Gráfico Alcalinidade ")
hist(wine$Magnesium , col = "green", main = "Gráfico de Magnésio")

Análise Discriminante

A análise discriminante é uma técnica que pode ser utilizada para classificar elementos de uma amostra ou população e ainda indicar os objetos com maior poder de discriminação dos grupos em que eles se encontram.

- Análise da correlação das variáveis

pairs.panels(wine[2:6],
             gap = 0,
             bg = c("red","green","purple")[wine$Type],
             pch = 21)

A correlação entre variáveis é uma medida estatística que quantifica a relação entre duas ou mais variáveis. Ela indica a direção e a intensidade da associação entre as variáveis, ajudando a entender se e como elas estão relacionadas.Podemos observar que as variáveis com a maior correlação foi (Ash e Alcalinity) . Já a menor correlação foi expressa por (Alcalinity e Magnesium).

Partição dos dados em training e testing

Para separar os vinhos por cultivar (G=3), usamos 13 variáveis (p=13) e podemos ter no máximo 2 funções discriminantes úteis.

set.seed(5) 
ind<-sample(2,nrow(wine),
            replace = TRUE,
            prob = c(0.7,0.3))
training <- wine[ind==1,]
testing<- wine[ind==2,]

As variaveis ficaram divididas , training = 120 observações e testing = 58 observações.

Logo podemos realizar uma análise discriminante linear usando a função “lda()” do pacote R MASS.

wine.lda <- lda(Type ~ ., training)
wine.lda
## Call:
## lda(Type ~ ., data = training)
## 
## Prior probabilities of groups:
##         1         2         3 
## 0.3416667 0.3666667 0.2916667 
## 
## Group means:
##    Alcohol    Malic      Ash Alcalinity Magnesium  Phenols Flavanoids
## 1 13.72220 1.973659 2.475366   17.23171 105.36585 2.807561   2.974146
## 2 12.21000 1.958182 2.224318   19.98864  90.97727 2.267045   2.044318
## 3 13.06457 3.363143 2.422000   21.24286  98.74286 1.645714   0.764000
##   Nonflavanoids Proanthocyanins    Color       Hue Dilution   Proline
## 1     0.2921951        1.889024 5.514390 1.0802439 3.133415 1133.7073
## 2     0.3665909        1.645000 2.980000 1.0040909 2.803636  489.3409
## 3     0.4642857        1.118857 7.192857 0.6891429 1.686571  629.0000
## 
## Coefficients of linear discriminants:
##                          LD1          LD2
## Alcohol         -0.595721534  0.855886482
## Malic            0.038715153  0.334961255
## Ash             -0.254900176  2.406922071
## Alcalinity       0.114044000 -0.108830640
## Magnesium       -0.015928704  0.006474268
## Phenols          0.621317704 -0.077448810
## Flavanoids      -1.920773694 -0.666807285
## Nonflavanoids   -1.463525412 -1.182659006
## Proanthocyanins  0.468809728 -0.379896901
## Color            0.305794334  0.263782978
## Hue             -0.933056762 -0.897432185
## Dilution        -1.114203303 -0.148741068
## Proline         -0.003165396  0.002734247
## 
## Proportion of trace:
##   LD1   LD2 
## 0.711 0.289

Contagem de observações de cada grupo:

wine.lda$counts 
##  1  2  3 
## 41 44 35

A Probabilidades prévias dos grupos fornece as probabilidades prévias estimadas para cada grupo (ou classe) que o modelo está tentando classificar. Neste caso, existem três grupos (classes) denotados como 1, 2 e 3. As probabilidades prévias indicam a proporção de cada grupo no conjunto de dados de treinamento.

- O Grupo 1 tem uma probabilidade prévia de aproximadamente 0,3417.

- O Grupo 2 tem uma probabilidade prévia de aproximadamente 0,3667.

- O Grupo 3 tem uma probabilidade prévia de aproximadamente 0,2917.

A maior média dentre as características listadas nos três grupos é a do atributo “Proline” no Grupo 1, que é aproximadamente 1133.7073.

Logo podemos identidicar a primeira função discriminante é uma combinação linear das variáveis:

−0,597∗Alcohol + 0,038∗MAlic +( -0.254*Ash) + 0.114∗Alcalinity + (-0.015∗2Magnesium)

Histograma empilhado dos valores de LDA

Uma forma eficaz de apresentar os resultados de uma análise discriminante linear (LDA) é por meio de um histograma empilhado dos valores da função discriminante para as amostras de grupos distintos.

wine.lda.values <- predict(wine.lda)
ldahist(data = wine.lda.values$x[,1], g=Type)

Função discriminante separa essas cultivares, fazendo um histograma empilhado dos valores da segunda função discriminante:

{r} ldahist(data = wine.lda.values$x[,2], g=Type)

Gráficos de dispersão das funções discriminantes

   plot(wine.lda.values$x[,1],wine.lda.values$x[,2]) # make a scatterplot
text(wine.lda.values$x[,1],wine.lda.values$x[,2],Type,cex=0.7,pos=4,col="red") # add labels

Gráfico de Biplot

library(devtools)
## Carregando pacotes exigidos: usethis
library(ggord)
ggord(wine.lda, training$Type, ylim = c(-10,10))

Matriz de confusão -(dados training)

p1<- predict(wine.lda, training)$class
tab<-table(Predicted = p1, Actual = training$Type)
tab
##          Actual
## Predicted  1  2  3
##         1 41  0  0
##         2  0 43  0
##         3  0  1 35

A matriz de confusão indica que o modelo teve um desempenho bastante bom na classificação das observações nas três classes (1, 2 e 3), com apenas um erro de classificação.

A diagonal principal são os acertos da predição, é importante para avaliar o desempenho global do modelo .

sum(diag(tab))/sum(tab)
## [1] 0.9916667

A taxa de acurácia do modelo de treino calculada com base na matriz de confusão foi de 99.17%, ou seja, a alta taxa de acurácia sugere que o modelo está fazendo previsões precisas.

Matriz de confusão - (dados testing)

p2<- predict(wine.lda, testing)$class
tab1<- table(Predicted = p2 , Actual = testing$Type)
tab1
##          Actual
## Predicted  1  2  3
##         1 18  2  0
##         2  0 25  0
##         3  0  0 13
sum(diag(tab1))/sum(tab1)
## [1] 0.9655172

A taxa de acurácia do modelo de teste calculada com base na matriz de confusão foi de 96.55%, ou seja, a acurácia sugere que o modelo está fazendo previsões precisas.