# ładujemy pakiet mlbench ze zbiorami danych
library(mlbench)
# wykorzystamy zbiór Glass
data(Glass)
# dla celów ilustracji testów parametrycznych nie przejmujemy się
# przypuszczalnym niespełnieniem założenia o normalności
# test t dla jednej średniej (przy okazji dostajemy też przedział ufności)
# hipoteza alternatywna: średnia atrybutu RI w populacji jest różna od 1.5
t.test(Glass$RI, mu=1.5)
# hipoteza alternatywna: średnia atrybutu RI w populacji jest większa od 1.5
t.test(Glass$RI, mu=1.5, alternative="greater")
# hipoteza alternatywna: średnia atrybutu RI w populacji jest mniejsza od 1.5
t.test(Glass$RI, mu=1.5, alternative="less")
# test t dla dwóch średnich (przy okazji dostajemy też przedział ufności)
# hipoteza alternatywna: średnia atrybutu RI jest różna
# dla podpopulacji, dla których atrybut Type ma wartość 1 i 2
t.test(Glass$RI[Glass$Type=="1"], Glass$RI[Glass$Type=="2"])
# to samo przy założeniu jednakowej wariancji
t.test(Glass$RI[Glass$Type=="1"], Glass$RI[Glass$Type=="2"], var.equal=T)
# wybierzmy podzbiór odpowiadający wartościom 1 i 2 atrybutu Type
Glass12 <- Glass[Glass$Type %in% c("1", "2"),]
# teraz możemy powtórzyć test w innym zapisie
t.test(RI~Type, Glass12)
# nieparametryczne odpowiedniki testu t
# test nieparametryczny Wilcoxona/Manna-Whitneya
wilcox.test(RI~Type, Glass12)
# test nieparametryczny Kruskala-Wallisa
kruskal.test(RI~Type, Glass12)
# ten ostatni nie wymaga ograniczenia do dwóch podpopulacji
kruskal.test(RI~Type, Glass)
# test t dla par
# hipoteza alternatywna: średnie atrybutów RI i Al w populacji są różne
t.test(Glass$RI, Glass$Al, paired=T)
# to samo zapisane z użyciem testu dla jednej średniej
t.test(Glass$RI-Glass$Al, mu=0)
# utwórzmy sztuczny "zaburzony" odpowiednik atrybutu RI
Glass$RI1 <- Glass$RI + rnorm(length(Glass$RI))
# hipoteza alternatywna: średnie atrybutów RI i RI1 są różne
t.test(Glass$RI, Glass$RI1, paired=T)
# utwórzmy dwa sztuczne atrybuty
Glass$Si1 <- Glass$Si + rnorm(length(Glass$Si)
Glass$Si2 <- exp(Glass$Si1)
# testowanie korelacji
cor.test(Glass$Si, Glass$Si1, method="pearson")
cor.test(Glass$Si, Glass$Si1, method="spearman")
cor.test(Glass$Si, Glass$Si2, method="pearson")
cor.test(Glass$Si, Glass$Si2, method="spearman")
# załadujmy dane HouseVotes84
data(HouseVotes84)
# test chi2
# testowanie zależności atrybutów V1 i Class
chisq.test(HouseVotes84$V1, HouseVotes84$Class)
# tablica kontyngencji dla V1 i Class
tab.V1.Class <- table(HouseVotes84$V1, HouseVotes84$Class)
# test można też zastosować do tablicy kontyngencji zamiast pierwotnych danych
chisq.test(tab.V1.Class)
# to samo z wykorzystaniem testu Fishera
fisher.test(tab.V1.Class)
# tablica kontyngencji dla V1 i V2
tab.V1.V2 <- table(HouseVotes84$V1, HouseVotes84$V2)
# testowanie zależności atrybutów V1 i V2
chisq.test(tab.V1.V2)
# to samo z wykorzystaniem testu Fishera
fisher.test(tab.V1.V2)
# przy okazji obejrzyjmy funkcję gęstości rozkładu chi-kwadrat
# dla różnej liczby stopni swobody
plot(seq(0, 20, 0.001), dchisq(seq(0, 20, 0.001), df=3), type="l")
plot(seq(0, 20, 0.001), dchisq(seq(0, 20, 0.001), df=4), type="l")
plot(seq(0, 20, 0.001), dchisq(seq(0, 20, 0.001), df=9), type="l")
plot(seq(0, 20, 0.001), dchisq(seq(0, 20, 0.001), df=15), type="l")