1. Importowanie pakietów
# Importowanie niezbędnych pakietów
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.2     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggpubr)
library(rstatix)
## 
## Dołączanie pakietu: 'rstatix'
## 
## Następujący obiekt został zakryty z 'package:stats':
## 
##     filter
library(ISLR)  # Pakiet zawierający zbiór danych ISLR
library(emmeans)
  1. Wczytywanie danych: Wczytujemy dane z pakietu ISLR przy użyciu funkcji data(). W tym przypadku korzystamy z danych o nazwie “Default”.
# Wczytanie danych z pakietu ISLR
data("Default")
  1. Tworzenie histogramu: Tworzymy histogram zmiennej “balance” przy użyciu funkcji ggplot i geom_histogram.
# Tworzenie histogramu zmiennej balance
ggplot(Default, aes(x = balance)) +
  geom_histogram(bins = 10) +
  labs(title = "Histogram of Balance", x = "Balance", y = "Frequency") +
  theme_classic()

Wykres histogramu dla zmiennej “balance” pokazuje rozkład sald klientów w zbiorze danych “Default”. Na podstawie wykresu można zauważyć, że większość klientów ma saldo w okolicy niższych wartości, a rozkład jest nieco skośny w prawo.

  1. Tworzenie wykresu pudełkowego: Tworzymy wykres pudełkowy zmiennych “balance” i “default” przy użyciu funkcji ggboxplot.
# Tworzenie wykresu pudełkowego zmiennych balance i default
ggboxplot(Default, y = "balance", x = "default", color = "default") +
  labs(title = "Boxplot of Balance by Default", x = "Default", y = "Balance") +
  theme_classic()

Wykres pudełkowy przedstawia porównanie salda (“balance”) między klientami, którzy zalegają z płatnościami (“default”) a tymi, którzy nie zalegają. Na podstawie wykresu można zauważyć, że mediana salda dla klientów zalegających jest nieco niższa niż dla klientów niemających zaległości, a także, że występują wartości odstające (outliers) w obu grupach.

  1. Przeprowadzenie testu t-parysowego: Przeprowadzamy test t-parysowy między grupami “default” przy użyciu funkcji pairwise_t_test. Używamy metody korekty wartości p Bonferroniego.
# Przeprowadzenie testu t-parysowego między grupami default
pairwise_t_test(Default, balance ~ default, p.adjust.method = "bonferroni")
## # A tibble: 1 × 9
##   .y.     group1 group2    n1    n2         p p.signif     p.adj p.adj.signif
## * <chr>   <chr>  <chr>  <int> <int>     <dbl> <chr>        <dbl> <chr>       
## 1 balance No     Yes     9667   333 2.77e-286 ****     2.77e-286 ****

Test t-parysowy między grupami “default” pozwala porównać średnie wartości salda (“balance”) między klientami zalegającymi i niemających zaległości. Wyniki testu wskazują, czy istnieje istotna statystycznie różnica między tymi grupami. Na podstawie wyników testu można stwierdzić, czy średnie wartości salda różnią się znacząco między grupami.

  1. Tworzenie modelu regresji logistycznej: Tworzymy model regresji logistycznej, który ma na celu przewidywanie zalegania z płatnościami (“default”) na podstawie wartości salda (“balance”) i dochodu (“income”) klienta. Wyświetla podsumowanie modelu, które zawiera informacje o współczynnikach regresji i ich istotności.
# Tworzenie modelu regresji logistycznej
model <- glm(default ~ balance + income, data = Default, family = "binomial")
summary(model)
## 
## Call:
## glm(formula = default ~ balance + income, family = "binomial", 
##     data = Default)
## 
## Deviance Residuals: 
##     Min       1Q   Median       3Q      Max  
## -2.4725  -0.1444  -0.0574  -0.0211   3.7245  
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept) -1.154e+01  4.348e-01 -26.545  < 2e-16 ***
## balance      5.647e-03  2.274e-04  24.836  < 2e-16 ***
## income       2.081e-05  4.985e-06   4.174 2.99e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 2920.6  on 9999  degrees of freedom
## Residual deviance: 1579.0  on 9997  degrees of freedom
## AIC: 1585
## 
## Number of Fisher Scoring iterations: 8

Model regresji logistycznej jest tworzony w celu przewidywania zalegania z płatnościami (“default”) na podstawie wartości salda (“balance”) i dochodu (“income”). Współczynniki estymowane dla zmiennych “balance” i “income” wskazują na ich wpływ na prawdopodobieństwo wystąpienia zaległości. Dla przykładu, współczynnik estymowany dla zmiennej “balance” wynosi 0.0056, co oznacza, że z każdym jednostkowym wzrostem salda, wzrasta logarytmarytmetyczne prawdopodobieństwo zaległości o 0.0056 jednostki. Liczba iteracji dla modelu regresji logistycznej wskazuje, ile razy algorytm iteracyjny został wykonany w celu osiągnięcia optymalnego dopasowania modelu do danych. W tym przypadku, liczba iteracji wynosi 8, co sugeruje, że algorytm wykonał 8 iteracji w procesie dopasowania modelu.

7.Tworzenie macierzy kontyngencji: Tworzymy macierz kontyngencji, która przedstawia liczbę obserwacji dla różnych kombinacji zmiennych “default” i “student”.

# Tworzenie macierzy kontyngencji
table(Default$default, Default$student)
##      
##         No  Yes
##   No  6850 2817
##   Yes  206  127
  1. Przeprowadzenie testu chi-kwadrat: Przeprowadzamy test chi-kwadrat, który ma na celu sprawdzenie, czy zmienne “default” i “student” są niezależne od siebie. Testuje hipotezę zerową, że brak zależności między tymi dwiema zmiennymi.
# Przeprowadzenie testu chi-kwadrat między zmiennymi default i student
chisq.test(Default$default, Default$student)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  Default$default and Default$student
## X-squared = 12.117, df = 1, p-value = 0.0004997

Test chi-kwadrat między zmiennymi “default” i “student” ma na celu sprawdzenie, czy istnieje zależność między tymi zmiennymi. Wynik testu wskazuje, czy zmienne są niezależne od siebie. Wyniki testu chi-kwadrat Pearsona z korektą ciągłości Yatesa dla danych “Default\(default" (zmiennej zalegania z płatnościami) i "Default\)student” (zmiennej studenta) są następujące: -X-squared = 12: Statystyka testu chi-kwadrat (X-kwadrat) wynosi 12. Im większa wartość statystyki X-kwadrat, tym większa jest różnica między obserwowanymi a oczekiwanymi wartościami w macierzy kontyngencji.

-df = 1: Stopnie swobody (degrees of freedom) wynoszą 1. Stopnie swobody określają liczbę niezależnych elementów danych, które można dowolnie manipulować w kontekście testu statystycznego.

-p-value = 0.0005: Wartość p (p-value) wynosi 0.0005. Jest to wartość pomiędzy 0 a 1, która określa istotność statystyczną testu. Im mniejsza wartość p, tym silniejsze dowody mamy na odrzucenie hipotezy zerowej.

Na podstawie tych wyników można stwierdzić, że istnieje istotna statystycznie zależność między zmiennymi “Default\(default" i "Default\)student”. Wartość p-value wynosząca 0.0005 oznacza, że istnieje bardzo mała szansa, że zależność między tymi zmiennymi występuje tylko przez przypadek.

  1. Tworzenie wykresu regresji logistycznej: Tworzymy wykres regresji logistycznej, który przedstawia zależność między zmiennymi “balance” (osi x) i “default” (osi y). Punkty na wykresie to obserwacje danych, a krzywa reprezentuje dopasowaną krzywą regresji logistycznej. Wykres ten pomaga zobrazować relację między saldem a zaleganiem z płatnościami.
# Tworzenie wykresu regresji logistycznej
ggplot(Default, aes(x = balance, y = default)) +
  geom_point() +
  geom_smooth(method = "glm", method.args = list(family = "binomial"), se = FALSE) +
  labs(title = "Logistic Regression", x = "Balance", y = "Default") +
  theme_classic()
## `geom_smooth()` using formula = 'y ~ x'
## Warning: glm.fit: algorytm nie zbiegł się
## Warning: Computation failed in `stat_smooth()`
## Caused by error:
## ! wartości 'y' muszą być z przedziału 0 <= y <= 1

Wykres regresji logistycznej przedstawia zależność między zmiennymi “balance” a “default” w formie krzywej regresji. Na podstawie wykresu można ocenić kierunek i kształt tej zależności.

  1. Analiza Anova
# Analiza wariancji (ANOVA)
model_anova <- lm(balance ~ default, data = Default)
results_anova <- anova(model_anova)
print(results_anova)
## Analysis of Variance Table
## 
## Response: balance
##             Df     Sum Sq   Mean Sq F value    Pr(>F)    
## default      1  286792390 286792390  1396.8 < 2.2e-16 ***
## Residuals 9998 2052775499    205319                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Analiza wariancji (ANOVA) została przeprowadzona dla zmiennej “balance” w zależności od zmiennej “default”. Tabela przedstawia wyniki tej analizy.

-“Response: balance”: Wskazuje, że zmienną objaśnianą w analizie wariancji jest “balance”.

-“Df” (Stopnie swobody): W analizie uwzględniono 2 stopnie swobody. Pierwszy stopień swobody odnosi się do efektu grupy “default”, a drugi stopień swobody odnosi się do reszt.

-“Sum Sq” (Suma kwadratów): Suma kwadratów dla efektu grupy “default” wynosi 286,792,390, a suma kwadratów dla reszt wynosi 2,052,775,499.

-“Mean Sq” (Średnia kwadratów): Średnia kwadratów dla efektu grupy “default” wynosi 286,792,390, a średnia kwadratów dla reszt wynosi 205,319.

-“F value” (Wartość F): Wartość F wynosi 1,397.

-“Pr(>F)” (P-wartość): P-wartość wynosi mniej niż 0,0000000000000002, co oznacza, że istnieje istotna statystycznie różnica między grupami “default” w kontekście zmiennej “balance”.

Ogólnie rzecz biorąc, wyniki analizy wariancji wskazują na istotny efekt grupy “default” na zmienną “balance”.