Przedmiotem analizy jest określenie wpływu poszczególnych zmiennych związanych z kredytobiorcą na “jakość” zaciąganych kredytów. Wśród zmiennych znajdują się zmienne jakościowe (w skali nominalnej i porządkowej) oraz zmienne ilościowe. Jakość kredytu określana jest poprzez zmienną nominalną - kodowaną jako jakość “dobry”, “zły”. Podstawą oceny zależności między zmiennymi kategorycznymi są tabele kontyngencji (tabele krzyżowe). Przedstawiają one wielowymiarowy rozkład częstości zmiennych. Do oceny zależności wykorzystano współczynnik V . Cramera (φ c). Opiera się na statystyce chi-kwadrat Pearsona. φ c jest miarą symetryczną: nie ma znaczenia, która zmienna zostanie umieszczona w kolumnach, a która w wierszach. Również kolejność wierszy/kolumn nie ma znaczenia, więc φ c może być używane z nominalnymi typami danych lub wyższymi.Współczynnik V Craméra waha się od 0 (odpowiada sytuacji braku powiązania między zmiennymi) do 1 (pełne powiązanie). Ze względu na to, że wartości chi-kwadrat mają tendencję do wzrostu wraz z liczbą komórek, im większa różnica między r (wierszami) i c (kolumnami), tym bardziej prawdopodobne jest, że φ c będzie dążyć do 1 bez silnych dowodów znaczącej zależności. Wczytanie danych do analizy:
load("C:/Users/Dell/Documents/dysk_wymienny/zajęcia/data_mining/credit.RData")Stworzenie prostej tabli krzyżowej z wykorzystaniem funkcji table()
table(credit$konto_czekowe, credit$jakosc)##
## dobry zly
## < 0 139 135
## >200 49 14
## 0-200 164 105
## brak 348 46
Do zaprezentowania częstości zmiennych w postaci tabelarycznej i w postaci graficznej zostanie wykorzystany pakiet sjPlot. Poniżej przedstawiono rozkłady częstości “dobrych” i “złych” kredytów w zależności od salda konta czekowego
library(sjPlot)
library(ggplot2)
tab_xtab(var.row = credit$konto_czekowe, var.col = credit$jakosc, show.row.prc = T, show.summary = T)| konto_czekowe | jakosc | Total | |
|---|---|---|---|
| dobry | zly | ||
| < 0 |
139 50.7 % |
135 49.3 % |
274 100 % |
200 |
49 77.8 % |
14 22.2 % |
63 100 % |
| 0-200 |
164 61 % |
105 39 % |
269 100 % |
| brak |
348 88.3 % |
46 11.7 % |
394 100 % |
| Total |
700 70 % |
300 30 % |
1000 100 % |
χ2=123.721 · df=3 · Cramer’s V=0.352 · p=0.000 |
plot_xtab(credit$konto_czekowe, credit$jakosc, margin = "row", bar.pos = "stack",
coord.flip = TRUE, show.legend =TRUE, show.n = TRUE,
show.summary = TRUE)Jak wspomniano we wstępie wyniki obliczeń przeprowadzanych w oparciu o statystykę chi-kwadrat zależą od różnicy w liczbie wierszy i kolumn w tablicy kontyngencji. W związku z tym należy dążyć do tego, aby tablica miała formę zbliżoną do kwadratowej (równa liczba wierszy i kolumn). Ze względu na to, że zmienna jakość kredytu ma dwa poziomy należy zmniejszyć liczbę poziomów zmiennej saldo konta czekowego. Dalego zmodyfikowano dotychczasową skalę dla tej zmiennej wprowadzając 3 poziomy: brak konta, saldo ujemne (<0), saldo dodatnie (>0) - obejmujący stan konta od 0 do 200 i pow. 200. Wyniki dla zmodyfikowanej skali zmiennej saldo konta czekowego przedstawiono poniżej.
credit$konto_czekowe_mod <- ifelse(credit$konto_czekowe == "brak", "brak",
ifelse(credit$konto_czekowe == "< 0", "ujemne", "dodatnie"))
tab_xtab(var.row = credit$konto_czekowe_mod, var.col = credit$jakosc, show.row.prc = T, show.summary = T)| konto_czekowe_mod | jakosc | Total | |
|---|---|---|---|
| dobry | zly | ||
| brak |
348 88.3 % |
46 11.7 % |
394 100 % |
| dodatnie |
213 64.2 % |
119 35.8 % |
332 100 % |
| ujemne |
139 50.7 % |
135 49.3 % |
274 100 % |
| Total |
700 70 % |
300 30 % |
1000 100 % |
χ2=116.851 · df=2 · Cramer’s V=0.342 · p=0.000 |
plot_xtab(credit$konto_czekowe_mod, credit$jakosc, margin = "row",bar.pos = "stack",
coord.flip = TRUE, show.legend =TRUE, show.n = FALSE,
show.summary = TRUE) +
theme_minimal() +
theme(legend.position="top")Wpływ historii kredytowej na jakość kredytów przedstawia poniższa tabela i rysunek
table(credit$historia, credit$jakosc)##
## dobry zly
## brak 15 25
## istniejace_spł 361 169
## krytyczne 243 50
## opoznienia 60 28
## wszystkie_spł 21 28
tab_xtab(var.row = credit$historia, var.col = credit$jakosc, show.row.prc = T, show.summary = T)| historia | jakosc | Total | |
|---|---|---|---|
| dobry | zly | ||
| brak |
15 37.5 % |
25 62.5 % |
40 100 % |
| istniejace_spł |
361 68.1 % |
169 31.9 % |
530 100 % |
| krytyczne |
243 82.9 % |
50 17.1 % |
293 100 % |
| opoznienia |
60 68.2 % |
28 31.8 % |
88 100 % |
| wszystkie_spł |
21 42.9 % |
28 57.1 % |
49 100 % |
| Total |
700 70 % |
300 30 % |
1000 100 % |
χ2=61.691 · df=4 · Cramer’s V=0.248 · p=0.000 |
plot_xtab(credit$historia, credit$jakosc, margin = "row", bar.pos = "stack",
coord.flip = TRUE, show.legend =TRUE, show.n = TRUE,
show.summary = TRUE)Ze względu na to, że zmienna historia kredytowa posiada 5 poziomów należy dokonać jej modyfikacji, po to, aby tabela kontyngencji była bardziej zbliżona do kwadratowej. Przyjęto 2 poziomy dla nowej zmiennej historia kredytowa:
Zależność jakości kredytów od zmodyfikowanej zmiennej historia kredytowa przedstawia tabela i wykres.
credit$historia_mod <- ifelse(credit$historia == "istniejace_spł" |
credit$historia == "wszystkie_spł", "korzystna", "niekorzystna")
tab_xtab(var.row = credit$historia_mod, var.col = credit$jakosc, show.row.prc = T, show.summary = T)| historia_mod | jakosc | Total | |
|---|---|---|---|
| dobry | zly | ||
| korzystna |
382 66 % |
197 34 % |
579 100 % |
| niekorzystna |
318 75.5 % |
103 24.5 % |
421 100 % |
| Total |
700 70 % |
300 30 % |
1000 100 % |
χ2=10.155 · df=1 · φ=0.103 · p=0.001 |
plot_xtab(credit$historia_mod, credit$jakosc, margin = "row",bar.pos = "stack",
coord.flip = TRUE, show.legend =TRUE, show.n = FALSE,
show.summary = TRUE) +
theme_minimal() +
theme(legend.position="top")Zmienna czas oznaczająca długość zaciągniętego kredytu jest zmienną wyrażoną w skali ilorazowej. Jednym ze sposobów określenia zależności między zmienną ilościową a jakościową jest “osłabienie” skali polegające na przekształceniu zmiennej wyrażonej w skali ilorazowej na zmienną jakościową wyrażoną w skali porządkowej. Z tego względu przekształcono zmienną czas na trzystopniową zmienną jakościową: długość kredytu do 1 roku (kredyty krótkookresowe), kredyt 1-2 letni (kredyty średniookresowe), kredyty pow 2 lat (długookresowe).
Wpływ historii kredytowej na jakość kredytów przedstawia poniższa tabela i rysunek
a<-c(1:12)
b<-c(13:24)
credit$czas_mod<- ifelse(credit$czas %in% a, "<1 rok",
ifelse(credit$czas %in% b, "1-2 lata", "pow. 2 lat"))
table(credit$czas_mod)##
## <1 rok 1-2 lata pow. 2 lat
## 359 411 230
tab_xtab(var.row = credit$czas_mod, var.col = credit$jakosc, show.row.prc = T, show.summary = T)| czas_mod | jakosc | Total | |
|---|---|---|---|
| dobry | zly | ||
| <1 rok |
283 78.8 % |
76 21.2 % |
359 100 % |
| 1-2 lata |
289 70.3 % |
122 29.7 % |
411 100 % |
| pow. 2 lat |
128 55.7 % |
102 44.3 % |
230 100 % |
| Total |
700 70 % |
300 30 % |
1000 100 % |
χ2=35.895 · df=2 · Cramer’s V=0.189 · p=0.000 |
plot_xtab(credit$czas_mod, credit$jakosc, margin = "row",bar.pos = "stack",
coord.flip = TRUE, show.legend =TRUE, show.n = FALSE,
show.summary = TRUE) +
theme_minimal() +
theme(legend.position="top")Ze względu na to, że zmienna płeć ma 2 poziomy nie ma konieczności dokonywania modyfikacji.
table(credit$plec, credit$jakosc)##
## dobry zly
## K 201 109
## M 499 191
tab_xtab(var.row = credit$plec, var.col = credit$jakosc, show.row.prc = T, show.summary = T)| plec | jakosc | Total | |
|---|---|---|---|
| dobry | zly | ||
| K |
201 64.8 % |
109 35.2 % |
310 100 % |
| M |
499 72.3 % |
191 27.7 % |
690 100 % |
| Total |
700 70 % |
300 30 % |
1000 100 % |
χ2=5.349 · df=1 · φ=0.075 · p=0.021 |
plot_xtab(credit$plec, credit$jakosc, margin = "row", bar.pos = "stack",
coord.flip = TRUE, show.legend =TRUE, show.n = TRUE,
show.summary = TRUE) +
theme_minimal() +
theme(legend.position="top")Do samodzielnego obliczenia - określić zależność miedzy wybranymi zmiennymi a jakością kredytu. </div