Başlangıç

Bu R markdown, R ile Ki-Kare testi yapımı üzerine hazırlanmıştır. Yapmak istediğim, hem ki-kare testinin adımlarını R üzerinden göstermektir.

Her zamanki gibi tidyverse kütüphanesini çağırıyorum.

library(tidyverse)

Ki-Kare testi nedir?

  • Ki-Kare testi belli bir dağılıma uygun olup olmamayı araştırmak için kullanılır.
  • Bir veya birden fazla kategorilerde gözlenen değerler ile beklenen frekanslar arasındaki uyuma dayalı bir testtir.

\[X^2_{c-1} = \sum_{j = 1}^{c}\dfrac{(o_j-e_j)^2}{e_j}\]

\[c: sınıf\ sayısı\] \[o_j: j.\ sınıf\ içerisindeki\ örnek\ birim\ sayısı\] \[n: örnek\ hacmi\] \[e_j: j.\ sınıf\ için\ beklenen\ frekans\] \[p_j: H_0\ hipotezi\ (yokluk\ hipotezi)\ doğru\ iken,\ rastgele\ seçilen\ herhangi \ bir \ birimi\ j. \ sınıfta\ bulunma\ olasılığı\]

\[e_j = n \times p_j\]

Örnek

Anket çalışması yapan 200 kişilik bir ekipte, her bir anketörün yaptığı anket sayısı aşağıda verilmiştir. Dağılımın Poisson dağılımına uygun olup olmadığını ki-kare testi ile araştırınız.

anket sayısı anketör sayısı
0 44
1 64
2 48
3 23
4 12
5 5
6 2
7 1
8 1

Yukarıdaki veriyle bir tibble oluşturalım.

anket <- tribble(
  ~anket_sayisi, ~anketor,
              0,       44,
              1,       64,
              2,       48,
              3,       23,
              4,       12,
              5,       5,
              6,       2, 
              7,       1,
              8,       1
)

anket
## # A tibble: 9 x 2
##   anket_sayisi anketor
##          <dbl>   <dbl>
## 1            0      44
## 2            1      64
## 3            2      48
## 4            3      23
## 5            4      12
## 6            5       5
## 7            6       2
## 8            7       1
## 9            8       1

Öncelikle Hipotezimi oluşturalım:

\[H_0: Dağılım\ poison\ dağılımına\ uygundur. \] \[H_A: Dağılım\ poison\ dağılımına\ uygun\ değildir. \]

Beklenen değerleri bulmak için öncelikle, Poisson dağılımının parametresi olan \(\lambda\) yani ortalamayı bulmamız gerekli. Bunun için;

lambda <- sum((anket$anket_sayisi * anket$anketor)) / 200

lambda
## [1] 1.645

Poisson Dağılımı fonksiyonu:

\[ P(X = x) = \dfrac{\lambda^x*e^{-x}}{x!}\] Yukarıdaki fonksiyonda x değerlerini yani anket_sayisi değerlerini yerine koyalım ve ardından 200 ile çarparak beklenen değerleri bulalım.

anket$beklenen_deger <- sapply(anket$anket_sayisi, function(x) dpois(x,lambda = lambda) * 200)

anket
## # A tibble: 9 x 3
##   anket_sayisi anketor beklenen_deger
##          <dbl>   <dbl>          <dbl>
## 1            0      44    38.60251256
## 2            1      64    63.50113316
## 3            2      48    52.22968202
## 4            3      23    28.63927564
## 5            4      12    11.77790211
## 6            5       5     3.87492979
## 7            6       2     1.06237659
## 8            7       1     0.24965850
## 9            8       1     0.05133603

Not: Ki-kare testi yapılıyorsa gözlenen/beklenen frekans sayısı 5’ten küçükse bunları sınıflandırıyoruz.

next_row <- filter(anket, beklenen_deger <= 5) %>%
    colSums()

anket <- anket %>%
  filter(beklenen_deger > 5) %>%
  rbind(next_row)

anket
## # A tibble: 6 x 3
##   anket_sayisi anketor beklenen_deger
## *        <dbl>   <dbl>          <dbl>
## 1            0      44      38.602513
## 2            1      64      63.501133
## 3            2      48      52.229682
## 4            3      23      28.639276
## 5            4      12      11.777902
## 6           26       9       5.238301

Bulduğumuz değerleri Ki-Kare fonksiyonunda yerine koyalım,

anket <- anket %>%
        mutate(chisq = ((anketor - beklenen_deger) ^ 2) / beklenen_deger)

anket
## # A tibble: 6 x 4
##   anket_sayisi anketor beklenen_deger       chisq
##          <dbl>   <dbl>          <dbl>       <dbl>
## 1            0      44      38.602513 0.754688458
## 2            1      64      63.501133 0.003919113
## 3            2      48      52.229682 0.342529560
## 4            3      23      28.639276 1.110413202
## 5            4      12      11.777902 0.004188138
## 6           26       9       5.238301 2.701330134

Ki-Kare değerlerini topladığmızda kritik değeri buluyoruz

sum(anket$chisq)
## [1] 4.917069

\(X_{0,05;5}^2 = 11,07\)

Ki-Kare tablosuna baktığımızda tablo değerinin kritik değerden büyük olduğu için \((11,07(ChiSquare-table) > 4.917)\), \(H_0\) hipotezini red edemiyoruz.