Testovi saglasnosti

\(\chi^2\) test

Hoćemo da testiramo da li neko obilježje \(X\) ima raspodjelu \(F_0\), protiv alternative da \(X\) nema tu raspodjelu.
Podijelimo skup svih vrijednosti koje \(X\) može da uzme na nekih \(r\) kategorija. Broj elemenata u \(k\)-toj kategoriji označimo sa \(M_k\). Neki elemenat uzorka će se naći u \(k\)-toj kategoriji sa vjerovatnoćom \(p_k\), pa možemo da primijetimo da slučajna veličina \(X\) ima binomnu \(B(N,p_k)\) raspodjelu, gdje je \(N\) obim uzorka. Njeno očekivanje je onda \(Np_k\). Ako izrachunamo \(p_k\) pri \(H_0\), odnosno pri pretpostavci da \(X\) ima raspodjelu \(F_0\), ima smisla da test statistiku formiramo na osnovu razlika \(M_k-Np_k\), odnosno razlika broja elemenata u k-toj kategoriji, \(M_k\), i njegovog očekivanja. Ispostavlja se da test statistika \[ \chi_0^2=\sum\limits_{k=1}^{r}\frac{(M_k-Np_k)^2}{Np_k} \] ima \(\chi^2_{r-1}\), pri \(H_0\).
Ako testiramo da \(X\) pripada nekoj klasi raspodjelu sa nepoznatim parametrima \(\theta_1,\dots,\theta_n\), onda te parametre ocijenimo nekom od poznatih metoda, a test statistika u tom slučaju ima \(\chi^2\) raspodjelu sa \(r-n-1\) stepenom slobode, gdje je \(n\) broj ocijenjenih parametara.
Napomena: Ako kategorije ne pokrivaju cijeli skup vrijednosti, dodamo jednu kategoriju.
U svakoj kategoriji treba da važi \(Np_k \geq 5\), u suprotnom spajamo kategorije.

Kako nam u korist nulte hipoteze ne odgovara da ove razlike budu velike, kritična oblast ovog testa je \[W=\{\chi_0^2>c \}\], gdje je \(c=F_{\chi^2_{r-n-1}}(1-\alpha)\).

Primjeri

  1. Baca se kockica za igru. Testirati hipotezu da je kockica homogena.
# Treba da testiramo da li kockica ima diskretnu ravnomjernu raspodjelu, odnosno da li je 
# vjerovatnoca da se dobije svaki od brojeva 1,2,3,4,5,6 jednaka 1/6.
# Prvo simuliramo bacanje kockice da dobijemo neki uzorak. Pravimo uzorak kockice koja jeste 
# homogena, na primjer.

uzorak <- sample(6, 60, replace = T)
uzorak
##  [1] 6 2 2 2 6 3 5 2 2 6 2 1 3 1 1 5 1 5 5 2 3 1 4 4 3 5 5 2 4 6 6 5 3 1 5
## [36] 3 2 2 3 3 6 4 1 3 3 2 4 2 2 2 6 1 6 3 6 4 4 3 3 3
M <- table(uzorak)
M
## uzorak
##  1  2  3  4  5  6 
##  8 14 14  7  8  9
r <- length(M) # broj kategorija
# Svakak od vjerovatnoca je 1/6, pa je npk:

np <- length(uzorak) * 1 / 6
np
## [1] 10
chi.0 <- sum((M - np) ^ 2 / np)
chi.0
## [1] 5
alpha <- 0.05
c1 <- qchisq(1 - alpha, r - 1)
c1
## [1] 11.0705
chi.0 > c1 # FALSE, pa prihvatamo H0, sto smo i ocekivali
## [1] FALSE
  1. Dat je uzorak
#  [0, 1]  |  (1, 2]  |  (2, 3]  |  (3, 4]
#    23    |    26    |    23    |    28

Sa pragom znacajnosti \(\alpha = 0.02\) testirati hipotezu da \(X\) ima \(\mathcal{U}[0, 4]\) raspodjelu. Naći p-vrijednost testa.

M <- c(23, 26, 23, 28)
r <- 4
np <- 1 / 4 * sum(M)
np
## [1] 25
chi.0 <- sum((M - np) ^ 2 / np)
chi.0
## [1] 0.72
alpha <- 0.02
c1 <- qchisq(1 - alpha, r - 1)
c1
## [1] 9.837409
chi.0 > c1
## [1] FALSE
# ne odbacujemo H0

p <- 1 - pchisq(chi.0, r - 1)
p < alpha
## [1] FALSE
  1. Testirati da li \(X\) ima \(\mathcal{G}(\frac{1}{2})\), za \(\alpha=0.05\).
#     1    |     2    |     3    |    4   |   5    |   6
#    45    |    30    |    15    |    6   |   2    |   2

Prvo, treba primijetiti da ovim nije obuhvaćen cijeli skup vrijednosti, pa dodajemo jednu kategoriju na kraju:

#     1    |     2    |     3    |    4   |   5    |   6  | >=7
#    45    |    30    |    15    |    6   |   2    |   2  |  0
M<-c(45,30,15,6,2,2,0)
N<-sum(M)

# Racunamo vjerovatnoce pk

pk <-c(dgeom(0:5, 0.5), 1 - pgeom(5, 0.5)) # podsjetite se geometrijske raspodjele!
N * pk
## [1] 50.0000 25.0000 12.5000  6.2500  3.1250  1.5625  1.5625
# Spajamo poslednje 3 kategorije, zbog uslova Npk>5

M <- c(45,30,15,6,4)
pk <- c(pk[1:4],sum(pk[5:7]))
pk
## [1] 0.5000 0.2500 0.1250 0.0625 0.0625
np <- N*pk
chi.0 <- sum((M - np) ^ 2 / np)
chi.0
## [1] 2.82
alpha <- 0.05
c1 <- qchisq(1-alpha,5-1)
c1
## [1] 9.487729
chi.0 > c1 # prihvatamo H0
## [1] FALSE
  1. Dati su podaci:
#  [0, 1]  |  (1, 2]  |  (2, 3]  |  (3, 4]
#    42    |    34    |    16    |    8

Sa pragom značajnosti 0.01 testirati da je \(X\) iz \(\mathcal{E}(\lambda)\).

# Kako je lambda nepoznato, moramo da ga ocijenimo, npr. mmv. Znamo, ranije da je 
# ta ocjena 1/mean(x). Kad je tabela ovako zadata srednju vrijednost racunamo kao:

M <- c(42,34,16,8)

N <- sum(M)
x.sr <- sum(c(0.5,1.5,2.5,3.5)*M)/N
lambda.hat <- 1/x.sr
lambda.hat
## [1] 0.7142857
# Dodajemo jos jednu kategoriju na kraju

pk <- pexp(1:4,lambda.hat)-pexp(0:3,lambda.hat)
pk
## [1] 0.51045834 0.24989062 0.12233187 0.05988655
pk <- c(pk,1-pexp(4,lambda.hat))
pk
## [1] 0.51045834 0.24989062 0.12233187 0.05988655 0.05743262
M <- c(M,0)
np <- N*pk
np
## [1] 51.045834 24.989062 12.233187  5.988655  5.743262
# Imamo jedan ocijenjeni parametar i 5 kategorija, pa je br stepeni slobode 5-1-1=3
alpha <- 0.05
c1 <- qchisq(1-alpha,3)
c1
## [1] 7.814728
chi.0 <- sum((M - np) ^ 2 / np)
chi.0 > c1
## [1] TRUE
# Odbacuje se nulta hipoteza