Testy w Pakiecie R
Większość testów w pakiecie R jest obiektem klasy htest. Ułatwia to analizowanie testów:- $statistic - pole oznacza wartość statystyki testowej.
- $p.value - wartość p-value
- $method - nazwawykonanego testu
- $data.name - zwraca danes
- $conf.init - przedział ufności dla testów weryfikujących wartość parametrów
Testy Normalności
-
Shapiro-Wilka (na rozkład normalny)
dane = c(96.19,98.07,103.53,99.81,101.60,103.44) test<-shapiro.test(dane) # czy rozkład jest normalny? test$statistic test$p.value test$method ifelse(test$p.value<0.05, "Odrzucam hipotezę zerową na poziomie istotności 0.05", "Nie ma podstaw by odrzucić hipotezę zerową na poziomie istotności 0.05")
-
Lillieforsa (na rozkład normalny, wykorzystujący statystykę Kologomorova-Smirnova)
#install.packages('nortest') library(nortest) dane = c(96.19,98.07,103.53,99.81,101.60,103.44) test<-lillie.test(dane) # czy rozkład jest normalny? test$statistic test$p.value test$method ifelse(test$p.value<0.05, "Odrzucam hipotezę zerową na poziomie istotności 0.05", "Nie ma podstaw by odrzucić hipotezę zerową na poziomie istotności 0.05")
Zad 1. (1 punkt)
Wylosuj punkty z rozkładu jednostajnego na odcinku [2,5] i sprawdź testami:
- Shapiro-Wilka
- Lillieforsa
Zad 2. (1 punkt)
Wylosuj punkty z rozkładu normalnego o parametrach 1, 1 i sprawdź testami:
- Shapiro-Wilka
- Lillieforsa
Testy Pochodzenia z dowolnego rozkładu
-
Chi kwadrat
chisq.test(x,y=NULL,correct=TRUE,p=rep(1/length(x),length(x)),rescale.p=FALSE, simulate.p.value=FALSE, B=2000)
Aby wykona test zgodności argument x musi być wektorem lub macierzą o jednym wierszu. Wektor x Wektor x będzie traktowany jako wektor liczebności obserwacji w poszczególnych przedziałach.- Argument correct określa, czy powinien zostać wykonana korekta Yatesa (stosujemy gdy liczebności w próbach są nieduże).
-
Jeżeli podany jest argument p to testowana jest hipoteza, że częstość generowania obserwacji wpadających w kolejne przedziały są proporcjonalne do częstości tutaj przedstawionej.
Gdy używamy testu do badania zgodności z zadanym rozkładem
dane = c(96.19,98.07,103.53,99.81,101.60,103.44) test<-shapiro.test(dane) # czy rozkład jest normalny? test$statistic test$p.value test$method ifelse(test$p.value<0.05, "Odrzucam hipotezę zerową na poziomie istotności 0.05", "Nie ma podstaw by odrzucić hipotezę zerową na poziomie istotności 0.05")
-
Kologomorova-Smirnova
- Pierwszym argumentem jest x, wartość obserwacji.
- Drugi argument to nazwa funkcji wyznaczającej dystrybuantę rozkładu, z którym chcemy badać zgodność.
dane = runif(100) test<-ks.test(dane,"punif") # czy rozkład jest normalny? test$statistic test$p.value test$method ifelse(test$p.value<0.05, "Odrzucam hipotezę zerową na poziomie istotności 0.05", "Nie ma podstaw by odrzucić hipotezę zerową na poziomie istotności 0.05") dane = runif(100) test<-ks.test(dane,"pnorm",1,1) # czy rozkład jest normalny? test$statistic test$p.value test$method ifelse(test$p.value<0.05, "Odrzucam hipotezę zerową na poziomie istotności 0.05", "Nie ma podstaw by odrzucić hipotezę zerową na poziomie istotności 0.05")
Zad 3. (1 punkt)
Wylosuj punkty z rozkładu jednostajnego na odcinku [0,1] i sprawdź testami:
- Chi kwadrat
- Kologomorova-Smirnova
Zad 4. (1 punkt)
Wylosuj punkty z rozkładu normalnego o parametrach 1, 1 i sprawdź testami:
- Chi kwadrat
- Kologomorova-Smirnova
Testy zgodności dla dwóch próbek
-
Kologomorova-Smirnova
Test Kologomorova-Smirnova weryfikuje hipotezę o równości rozkładów dwóch próbek x, y:
H_0: F = G
względem hipotezy alternatywnej:- H_1: F <> G (<>- różne) - domyślna alternatywa, odpowiada jej argument alternative="two.sided"
- H_1: F > G - domyślna alternatywa, odpowiada jej argument alternative="greater"
- H_1: F < G - domyślna alternatywa, odpowiada jej argument alternative="less"
x<-runif(100) y<-runif(100) test<-ks.test(x,y,alternative="two.sided") # czy rozkłady sa takie same? test$statistic test$p.value test$method ifelse(test$p.value<0.05, "Odrzucam hipotezę zerową na poziomie istotności 0.05", "Nie ma podstaw by odrzucić hipotezę zerową na poziomie istotności 0.05")
Zad 5. (1 punkt)
Wylosuj dwie próbki z rozkładów normalnych o różnych parametrach i zweryfikuj hipotezę o równości rokładów względem alternatywnych:
- H_1: F <> G
- H_1: F > G
- H_1: F < G
Testy hipotez o parametrze położenia
-
t-Studenta (zakłada rozkład normalny próbek) oraz Wilcoxona
Testy t-Studenta oraz Wilcoxona mogą być wykorzystane do testowania trzech różnych rodzajów hipotez:-
Do testowania, czy wartość średnia (parametr położenia) w jednej próbie jest równy zadanej wartości m.
W tym przypadku hipoteza zerowa jest postaci:
H_0: m_x = m,
gdzie m_x to nieznany parametr średniej rozkład próbki x, a m to zadana stała.
Aby użyć tej wersji testu należy jako pierwszy argument x podać wektor liczb oraz określić argument mu. -
Do testowania równości dwóch średnich (parametrów położenia) dla dwóch prób. W tym przypadku hipoteza zerowa jest postaci:
H_0: m_x - m_y = m,
gdzie m_x to nieznany parametr średniej rozkład próbki x, m_y to nieznany parametr średniej rozkład próbki y, a m najczęściej przyjmuje się zero.
Dla testu t.test() można dodatkowo określić argument var.equal. Wartość var.equal=TRUE oznacza, że zakładamy równość wariancji w obu próbkach. Natomiast var.equal=FALSE (wartość domyślna) mówi że nie jesteśmy tego pewni.
-
Do testowania wartości średnich (parametrów położenia) dla dwóch próbek sparowanych (np. dwa pomiary tego samego obiektu).
W tym przypadku hipoteza zerowa jest postaci:
H_0: m_{x-y} = m,
gdzie m_{x-y} to nieznany parametr średniej rozkładu różnicy pomiędzy sparowanymi elementami (x_1-y_1),...(x_n-y_n), a m najczęściej przyjmuje się zero.
Aby użyć testy sparowanego należy podać za argument x i y wektory liczb, a argument paired ustawić na TRUE.
- alternative="two.sided"
- alternative="greater"
- alternative="less"
#losujemy dwie próbki, są zależne, a druga jes większa średnio o 0.3 x<-rnorm(50) y<-x+0.3+rnorm(50,0,0.01) t.test(y,mu=0) t.test(x,y) t.test(x,y,paired=TRUE)
-
Do testowania, czy wartość średnia (parametr położenia) w jednej próbie jest równy zadanej wartości m.
W tym przypadku hipoteza zerowa jest postaci:
-
Anova (zakłada rozkład normalny próbek) oraz Kruskala-Wallisa
anowa(), kruskal.test() (testy dla wielu prób).
Testy hipotez o równości parametrów skali.
-
Test F
Test F jest testem dla dwóch prób do weryfikacji hipotezy o jednorodności wariancji.x<- rnorm(20,2,1) y<- rnorm(20,2,2) var.test(x,y)
Zad 6. (1 punkt)
Wyniki losowo wybranych 8 studentów to: 60, 62, 67, 69, 70, 72, 75, 78.
Przetestuj czy hipotezę że średnia z testu to 65 na poziomie ufności .05
Zad 7. (1 punkt)
A (hypothetical) experiment is conducted on the effect of alcohol on perceptual motor ability. Ten subjects are each tested twice, once after having two drinks and once after having two glasses of water. The two tests were on two different days to give the alcohol a chance to wear off. Half of the subjects were given alcohol first and half were given water first. The scores of the 10 subjects are shown below. The first number for each subject is their performance in the "water" condition. Higher scores reflect better performance. Test to see if alcohol had a significant effect. Report the t and p values.
water |
alcohol |
16 |
13 |
15 |
13 |
11 |
10 |
20 |
18 |
19 |
17 |
14 |
11 |
13 |
10 |
15 |
15 |
14 |
11 |
16 |
16 |
Zad 8. (1 punkt)
The scores on a (hypothetical) vocabulary test of a group of 20 year olds and a group of 60 year olds are shown below.
20 yr olds |
60 yr olds |
27 |
26 |
26 |
29 |
21 |
29 |
24 |
29 |
15 |
27 |
18 |
16 |
17 |
20 |
12 |
27 |
13 |
Anova jednoczynnikowa
W analizie jednoczynnikowej (nazywanej również jednokierunkową) badamy zależność pomiędzy cechą y a jedną zmienną jakościową.Pytamy, czy wartość średnia cech y rożni się istotnie w zależności od pewnej zmiennej jakościowej występującej na k poziomach. Interesująca nas hipoteza zerowa jest postaci:
H_0: m_1=m_2=...=m_k
gdzie m_i to średnia wartość cechy y dla poziomu/kategorii i zmiennej jakościowej.
mieszkania<-read.table("http://ww2.ii.uj.edu.pl/~spurek/PR_13_14/testy_statystyczne/daneMieszkania.csv",header=TRUE,sep=";") mieszkania summary(mieszkania)Przeanalizujmy ceny mieszkań w zależności od dzielnicy. Możemy to zrobić (przykładowo) za pomocą modelu liniowego lm oraz przeładowanej funkcji anova().
(a1 = anova(lm(cena~dzielnica,data=mieszkania)))Wynikiem działania powyższej funkcji jest obiekt typu anoba, który przechowuje dla zmiennych (w szczególności dla jednoczynnikowej tylko dla jednej zmiennej) oraz wektora residuów (czyli ocen zakłóceń losowych) parametry:
- $Df (pierwsza kolumna) znajduje się liczba stopni swobody. Dla zmiennych jakościowych jest ona równa k-1.
- $Sum Sq znajdują się sumy kwadratów wartości wyjaśnianych przez daną zmienną. Wartości wykorzystywane do testu F.
- ....
(a1 = anova(lm(cena~dzielnica,data=mieszkania))) a1[1,5]Jak już stwierdzimy, że średnie wartości dla różnych czynników różnią się, to najczyściej interesować nas też będzie, które średnie.
Aby to sprawdzić w kolejnym kroku wykonuje się test post chock. My wykonamy test post chock HSD Tukey'a (tym razem wykorzystamy funkcję aov() zamiast anov()).
summary(model <- aov(lm(cena~dzielnica,data=mieszkania))) summary(model)[[1]][["Pr(>F)"]] TukeyHSD(model) plot(TukeyHSD(model)) plot(cena~dzielnica,data=mieszkania)Jak widzimy ceny w dzielnicach Krzyki i Śródmieście są porównywalne i niższe niż w dzielnicy Biskupin.
Zad 9. (2 punkt)
Wykonaj jednoczynnikowa ANOVE dla pozostałych atrybutów.