6.8.2. Pearsonov hi-kvadrat test normalnosti
Pearsonov hi-kvadrat test odnosi se na kvalitativni set podataka i testira da li postoji statistički značajno odstupanje distribucije realizovanih podataka od distribucije očekivanih podataka (normalnog rasporeda u ovom slučaju). Primjena hi-kvadrat testa u praksi daleko je šira od primjene testiranja normalnosti. Test statistika računa se po sljedećoj formuli:
gdje predstavlja broj realizovanih vrijednosti analiziranog obilježja u -toj klasi, broj očekivanih vrijednosti analiziranog obilježja u -toj klasi, dok predstavlja ukupan broj klasa u koje su grupisanje vrijednosti obilježja. Nulta hipoteza testa jeste da vrijednost test statistike prati hi-kvadrat raspored sa, u narednom primjeru, stepeni slobode, tako da ukoliko je izračunata p vrijednost manja od nivoa značajnosti, u tom slučaju možemo odbaciti nultu hipotezu.
Na osnovu test statistike i generalnog opisa testa, dolazi se do zaključka da numeričko obilježje treba prvo transformisati, pa tek onda implementirati test. Konkretno za primjenu testiranja normalnosti neophodno je odrediti broj klasa, realizovani i očekivani broj opservacija unutar klasa pod pretpostavkom da očekivane vrijednosti prate normalan raspored. Naredni primjer prikazuje jedan od načina određivanja ova dva parametra i primjenu Pearsonovog testa normalnosti.
Primjer 54: Za podatke iz Primjera 53, testirati pretpostavku da vrijednosti analiziranih obilježja prate normalni raspored primjenom Pearson hi-kvadrat testa za nivo značajnosti od 5%.
> alpha <- 0.05
> #korisnicka funkcija
> p.n.test <- function(x) {
+ #ukupan broj opservacija
+ n <- length(x)
+ #predlozeni broj klasa
+ n.classes <- ceiling(2 * (n^(2 / 5)))
+ #realizovan broj opservacija po klasama
+ num <- floor(1 + n.classes * pnorm(x, mean(x), sd(x)))
+ count <- tabulate(num, n.classes)
+ #ocekivani broj opservacija po klasama
+ prob <- rep(1 / n.classes, n.classes)
+ xpec <- n * prob
+ #test statistika
+ P <- sum(((count - xpec)^2) / xpec)
+ p.val <- pchisq(P, n.classes - 2 - 1, lower.tail = FALSE)
+ res <- data.frame(test.stat = P, p.val = p.val)
+ return(res)
+ }
> p.pd <- p.n.test(x = pd$PD)
> p.pd
test.stat p.val
1 48 1.427672e-06
> p.pd$p.val < alpha
[1] TRUE
> p.lgdr <- p.n.test(x = lgd$LGDR)
> p.lgdr
test.stat p.val
1 18.6 0.6698811
> p.lgdr$p.val < alpha
[1] FALSE
> p.lgde <- p.n.test(x = lgd$LGDE)
> p.lgde
test.stat p.val
1 17 0.763362
> p.lgde$p.val < alpha
[1] FALSE
> #r funkcija - paket nortest
> #ukoliko paket nije instaliran pokrenuti prethodno:
> #install.packages("nortest")
> library(nortest)
> pearson.test(pd$PD)
Pearson chi-square normality test
data: pd$PD
P = 48, p-value = 1.428e-06
> pearson.test(lgd$LGDR)
Pearson chi-square normality test
data: lgd$LGDR
P = 18.6, p-value = 0.6699
> pearson.test(lgd$LGDE)
Pearson chi-square normality test
data: lgd$LGDE
P = 17, p-value = 0.7634
Last updated
Was this helpful?