You are on page 1of 5

WielAnal4

2023-11-10

Analiza Dyskryminacyjna
Analiza funkcji dyskryminacyjnej stosowana jest do rozstrzygania, które zmienne pozwalają w najlepszy sposób wyróżniać (dyskryminować) dwie
lub więcej wyłaniających się grup. Podstawową ideą analizy dyskryminacyjnej jest rozstrzyganie, czy między grupami istnieje różnica ze względu
na średnią pewnej zmiennej, a następnie wykorzystywanie tej zmiennej do określenia przynależności do grupy przy możliwie minimalnych błędach
klasyfikacji.

library(tidyverse)
library(candisc)
library(MASS)
head(Pima.tr)

## npreg glu bp skin bmi ped age type


## 1 5 86 68 28 30.2 0.364 24 No
## 2 7 195 70 33 25.1 0.163 55 Yes
## 3 5 77 82 41 35.8 0.156 35 No
## 4 0 165 76 43 47.9 0.259 26 No
## 5 0 107 60 25 26.4 0.133 23 No
## 6 5 97 76 27 35.6 0.378 52 Yes

Standaryzacja zmiennych (tylko numerycznie)


Pima.tr <- Pima.tr %>%
mutate_if(is.numeric, scale) %>%
as.data.frame()

Model analizy dyscryminacyjnej


model <- lda(type~., Pima.tr)
model

## Call:
## lda(type ~ ., data = Pima.tr)
##
## Prior probabilities of groups:
## No Yes
## 0.66 0.34
##
## Group means:
## npreg glu bp skin bmi ped
## No -0.1940824 -0.3430657 -0.1493558 -0.1714733 -0.2015848 -0.1473844
## Yes 0.3767482 0.6659511 0.2899260 0.3328599 0.3913117 0.2860991
## age
## No -0.2619624
## Yes 0.5085152
##
## Coefficients of linear discriminants:
## LD1
## npreg 0.267616869
## glu 0.761015439
## bp -0.020807765
## skin -0.009751829
## bmi 0.303379229
## ped 0.384971260
## age 0.345040414

Prior probabilities of groups - prawdopodobieństwa występowania poszczególnych stanów zmiennej zależnej type . No występowało
w 66% przypadków, a Yes w 34%.

Group means - średnie grupowe (wyniki nie pokazują prawdziwych średnich ponieważ dokonaliśmy standaryzacji). Na ich podstawie możemy
stwierdzić, czy średnie ze względu na jakąś zmienną niezależną istotnie różnią się między podgrupami Yes i No . Im większa różnica, tym lepiej
dana zmienna niezależna dyskryminuje. w przypadku powyższych danych, najlepiej różnicuje zmienna glu .

Coefficients of linear discriminants - współczynniki wagowe w kombinacji liniowej. Na ich podstawie także można stwierdzić, który
czynnik najlepiej dyskryminuje (ponownie jest to glu ze współczynnikiem w wysokości 0.76).

Liczbę zmiennych dyskryminacyjnych wyznaczamy na podstawie wzoru:


min (m, k = 1)

gdzie m jest to liczba zmiennych niezależnych, natomiast k jest to liczba poziomów, jakie przyjmuje zmienna zależna.

W naszym przypadku m = 7, a k = 2 (No oraz Yes ). Czyli otrzymujemy jedną zmienną dyskryminującą na podstawie powyższego wzoru.

Predykcja
Predykcję przeprowadzimy na zbiorze testowym Pima.te . Na początek standaryzujemy zmienne.

Pima.te <- Pima.te %>%


mutate_if(is.numeric, scale) %>%
as.data.frame()

pred <- predict (model, newdata = Pima.te)


head(pred$class)

## [1] Yes No No No Yes Yes


## Levels: No Yes

Powyżej wszystkie predykcje.

x <- as.data.frame(cbind(pred$class, Pima.te$type, pred$class==Pima.te$type))


colnames(x)<- c("Predykcję","Obserwacje", "Czy są równe?" )
head(x)

## Predykcję Obserwacje Czy są równe?


## 1 2 2 1
## 2 1 1 1
## 3 1 1 1
## 4 1 2 0
## 5 2 2 1
## 6 2 2 1

sum(pred$class==Pima.te$type)/length(pred$class)*100

## [1] 79.21687

okolo 79% przypadków było zaklasyfikowanych poprawnie.

tabela <- table(pred = pred$class, obs = Pima.te$type)


tabela

## obs
## pred No Yes
## No 196 42
## Yes 27 67

Rysunek diagnostyczny
plot(model)
Na osi X mamy wartości zmiennej dyskryminacyjnej LD1 . Zauważamy, że dla mniejszych wartości częściej mamy No , a dla większych Yes (po
wartościach zmiennej dyskryminacyjnej możemy określić stan zmiennej zależnej).

Kanoniczna analiza dyskryminacyjna:


model2 <- lm(cbind(npreg,glu,bp,skin,bmi,ped,age)~type, data=Pima.tr)
clda <- candisc(model2, term = "type")
clda

##
## Canonical Discriminant Analysis for type:
##
## CanRsq Eigenvalue Difference Percent Cumulative
## 1 0.34346 0.52313 100 100
##
## Test of H0: The canonical correlations in the
## current row and all that follow are zero
##
## LR test stat approx F numDF denDF Pr(> F)
## 1 0.65654 14.349 7 192 5.919e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

CanRsq to kwadrat korelacji kanonicznej pomiędzy naszymi zmiennymi kanonicznymi, w tym przypadku jego wartość nie jest duża. Pierwiastek z
tego wyniku to korelacja kanoniczna.

Eigenvalue - wartość własna.

Difference Percent - porównanie modelu pustego z naszym (w tym wypadku dostajemy, że nasz model będzie lepszy od pustego o 100%).

Test of HO - 0.65654 wartość lambdy wilka dla całego modelu, ponieważ zawierał on jedną zmienną dyskryminacyjną. Jeżeli wartość
współczynnika jest bliska 1 to oznacza słabą moc dyskryminacyjną (odwrotnie dla wyniku bliskiego 0). W naszym przypadku mamy słabą moc
dyskryminacyjną.

Na podstawie p-value odrzucamy hipotezę, że kanoniczne korelacje są równe 0 (zatem zmienna dyskryminacyjna istotnie różnicuje przypadki).
Choć moc dyskryminacyjna nie jest duża, to zmienna dyskryminacyjna istotnie różnicuje przypadki.

summary(clda)
##
## Canonical Discriminant Analysis for type:
##
## CanRsq Eigenvalue Difference Percent Cumulative
## 1 0.34346 0.52313 100 100
##
## Class means:
##
## [1] -0.51652 1.00266
##
## std coefficients:
## [1] 0.2582457 0.6696407 -0.0204013 -0.0094919 0.2918393 0.3776758 0.3219235

Class means - oznaczają średnie grupowe.

std coefficients - standaryzowane współczynniki

clda$coeffs.raw

## Can1
## [1,] 0.267616869
## [2,] 0.761015439
## [3,] -0.020807765
## [4,] -0.009751829
## [5,] 0.303379229
## [6,] 0.384971260
## [7,] 0.345040414

Surowe współczynniki, bez standaryzacji. Zauważamy różnicę

clda$structure

## Can1
## [1,] 0.4625642
## [2,] 0.8176419
## [3,] 0.3559655
## [4,] 0.4086790
## [5,] 0.4804450
## [6,] 0.3512670
## [7,] 0.6243452

Ładunki czynnikowe, czyli jak skorelowane są pierwotne zmienne ze zmienną kanoniczną.

Dla zmiennej Age wartość korelacji nie jest taka sama jak wartość wagi. Dzieje się tak, ponieważ korelacje nie uwzględniają innych zmiennych,
natomiast wagi uwzględniają wszystkie.

Jeżeli mamy podać najbardziej lub najmniej ważną zmienną dyskryminacyjną to robimy to na podstawie wag. Dla nas najważniejsza będzie
zmienna glu .

Rysunek diagnostyczny:

plot(clda)
Ponownie możemy wnioskować, że No występuje dla mniejszych wartości zmiennej dyskryminującej.

Structure określa korelacje zmiennych niezależnych.


Loading [MathJax]/jax/output/HTML-CSS/jax.js

You might also like