######TESTIRANJE HIPOTEZA####### (Katarina Kucuk) #Testiranje statistickih hipoteza je vid statistickog zakljucivanja koji se primenjuje u sledecim situacijama: # - kada se unapred pretpostavlja postojanje odredjene veze medju izucavanim pojavama # - kada se pretpostavlja da posmatrano obelezje ima odredjenu raspodelu #Statisticka hipoteza je svaka pretpostavka koja se odnosi na raspodelu obelezja (ona moze biti tacna ili pogresna) #Odluka o prihvatanju ili odbacivanju statisticke hipoteze se donosi na osnovu uzorka #Statisticki test je postupak verifikovanja statisticke hipoteze na osnovu uzorka #Statisticki test koristi neku statistiku koja se zove test statistika #Istovremeno se posmatraju dve hipoteze koje su jedna drugoj suprotstavljene: #Nulta hipoteza - statistika koja se lakse verifikuje uzima se za polaznu/nultu hipotezu; oznacava se sa H0 #Alternativna hipoteza - druga hipoteza (ne mora da bude komplementarna nultoj); oznacava se sa H1 ili Ha #(uglavnom predstavlja ono sto zelimo da pokazemo kroz testiranje) #Hipoteza moze biti: # - prosta (u potpunosti odredjuje raspodelu obelezja) # - slozena #Kriticna oblast - skup C takav da se hipoteza H0 odbacuje ako realizovani uzorak (x1, x2, ... , xn) pripada skupu C #Prilikom zakljucivanja moguce je naciniti dve vrste gresaka: # 1. greske prve vrste (nastaje u situacijama kada je nulta hipoteza odbacena, a bila je tacna) # 2. greska druge vrste (nastaje kada se nulta hipoteza prihvati, a zapravo nije tacna) #Primer za gresku prve i druge vrste: # H0 - osoba N.N. nije kriva # H1 - osoba N.N. je kriva #U slucaju da se ustanovi da je osoba kriva, bice osudjena na smrtnu kaznu #Greska prve vrste: osoba N.N. je osudjena, a nevina je #Greska druge vrste: osoba N.N. je pustena na slobodu, a kriva je #Verovatnoca da se nacini greska prve vrste oznacava se sa alfa (jos se zove i prag znacajnosti testa, najcesce # se uzimaju vrednosti 0.05 ili 0.01): # alfa = P{(x1, x2, ... , xn) pripada C | H0} #Verovatnoca da se nacini greska druge vrste oznacava se sa beta: # beta = P{(x1, x2, ... , xn) ne pripada C | H1} #Moc testa: # gama = P{(x1, x2, ... , xn) pripada C | H1} = 1 - beta #p-vrednost: najmanji nivo znacajnosti za koji cemo na osnovu datog uzorka da prihvatimo H0, tj. ako je #p < alfa -> odbacujemo H0! (BITNO!) #Posto alternativnu hipotezu formiramo sa namerom da je prihvatimo, cilj je da se dobije mala p-vrednost kako bi #se opravdalo neko istrazivanje #Koji su koraci u testiranju: # 1. postavljamo pocetnu pretpostavku o parametru # 2. formiramo uzorak # 3. na onovu uzorka odlucujemo da li odbacujemo ili prihvatamo pretpostavku #U narednim testovima imamo test statistiku sa poznatom raspodelom na osnovu koje formiramo kriticnu oblast #Aproksimativni test - ako test statistika ima samo asimptotski neku poznatu raspodelu (u suprotnom kazemo da je #test tacan) #TESTOVI O PROPORCIJI #raspodela test statistike se dobija preko CGT #aproksimativni test #prvo pisemo pomocnu funkciju koja racuna p-vrednost testa u slucaju da test statistika ima standardnu normalnu #raspodelu p.normal <- function(ts, alternative) { if(alternative == "two.sided") p <- 2 * pnorm(-abs(ts)) #pnorm je ugradjena funkcija u R-u koja predstavlja funkciju raspodele normalne raspodele else if(alternative == "less") p <- pnorm(ts) else if(alternative == "greater") p <- 1 - pnorm(ts) return(p) #p-vrednost racunamo zavisno od toga kakva je nasa alternativna hipoteza, odnosno sta njome hocemo da pokazemo } #sami pisemo test proporcije (kasnije cemo videti da postoji i ugradjena funkcija u R-u) proportion_test <- function(x, n, p0, alfa, alternative) { ts <- sqrt(n) * (mean(x) - p0) / sqrt(p0 * (1 - p0)) #dobijanje test statistike (teorijski uvod) p <- p.normal(ts, alternative) if(p < alfa) print("Nulta hipoteza se odbacuje") else print("Nulta hipoteza se prihvata") #u teorijskom uvodu smo videli da se nulta hipoteza odbacuje ukoliko je #p-vrednost testa manja od praga znacajnosti testa, tj. vrednosti alfa print(p) } #primer koriscenja ove funkcije: x <- rbinom(100, size = 1, prob = 0.7) proportion_test(mean(x), 100, p0 = 0.6, 0.05, alternative = "greater") #u R-u postoji ugradjena funkcija prop.test() prop.test(sum(x), length(x), p = 0.6, alternative = "greater") #TESTOVI SREDNJE VREDNOSTI - 1 UZORAK #1. Ukoliko imamo uzorak iz normalne raspodele i disperzija je poznata - koristimo Z-test #raspodela sledi na osnovu osobina normalne raspodele, ovo je tacan test #da bismo mogli da koristimo ugradjenu funkciju koja predstavlja ovaj test, moramo da instaliramo i ucitamo #paket BSDA install.packages("BSDA") library(BSDA) #PRIMER 1: #Imamo uzorak iz normalne N(m, 10) raspodele gde je m nepoznati parametar. Hocemo da testiramo hipotezu #H0 : m = 2 protiv hipoteze H1 : m > 2 koristeci p-vrednost testa x <- c(5.6884562, 2.0308148, -0.2508697, -2.5062107, 5.1422191, 1.1849337, 3.6343267, 4.6528487, 1.5760364, 5.1431170, 1.8864374, 4.4475159, 3.5619849, 4.7377123, -1.2994996, 2.4134766, 0.2744983, 5.2431267, -0.1152874, 0.8769407, 2.1222095, 1.8561701, 3.0470218, 0.4738757, 2.1079643, 2.5249362, -2.2613439, 1.0116844, 2.1796532, 1.6629011, 0.6026096, 3.0568876, 0.1365397, -5.0585758, 2.3148987, 4.0924715, -0.9189906, 7.6984261, -1.9539183, 2.7631545, 5.5492733, -1.5838495, -2.3246922, 0.7752239, 1.3790237, -1.1731306, 4.8165865, 2.9824243, 6.0295380, 0.1998773, 9.0725547, -1.2977859, 1.9417684, -3.5287460, 2.5369642, -1.3349065, -1.7820453, 4.2251318, 2.9737008, 1.8158107) z.test(x, sigma.x = sqrt(10), mu = 2, alternative = "greater") #Objasnjenje argumenata funkcije z.test: # - prvi argument (x) : uzorak na osnovu kog trazimo p-vrednost testa # - drugi argument (sigma.x) : standardno odstupanje tog uzorka koje nam je dato u zadatku (iz ovoga vidimo da je #potrebno da nam disperzija bude poznata jer je sigma.x = sqrt(disperzija.x)) # - treci argument (mu) : cemu je jednako nase m u nultoj hipotezi # - cetvrti argument (alternative) : sta je nasa alternativna hipoteza (imamo tri moguce opcije : "two.sided", #"greater" i "less", npr. H0 : m = 5, onda su mogucnosti za H1 : m != 5, m > 5 i m < 5) #NAPOMENA: Vec je namesteno da je alfa = 0.05, ali ukoliko zelimo, mozemo to da promenimo navodeci nivo poverenja #kao poslednji argument #pokretanjem funkcije z.test za ovaj vektor x, dobili smo p-vrednost 0.7014 sto je vece od 0.05, pa prihvatamo H0 #Drugi nacin za resavanje ovog zadatke je da odredimo realizovanu vrednost nase test statistike #Za to nam je potrebna srednja vrednost uzorka, njegov obim i standardno odstupanje: srednja.vrednost = mean(x) n <- length(x) standardno.odstupanje <- sqrt(10) #ovo nam je dato u zadatku T <- (srednja.vrednost - 2) / standardno.odstupanje * sqrt(n) alfa <- 0.05 c <- qnorm(1 - alfa) #jer je statistika priblizno N(0, 1), a nasa alternativna hipoteza je H1 : m > 2 #(da smo npr. imali alternativnu hipotezu H1 : m != 2, onda bismo c racunali kao qnorm(1 - alfa/2) (vidi se kada se #nacrta grafik gustine), a pitali bismo se da li je abs(T) > c) T > c #Dobili smo vrednost FALSE sto znaci da nasa vrednost ne pripada kriticnoj oblasti, pa prihvatamo H0 #PRIMER 2: #Prodavac smatra da, ako je prosecna zarada 2$ po osobi, ostvaruje se dobar profit i da treba otvoriti prodavnicu. #Profit ima normalnu N(m, (1.7)^2) raspodelu. Prodavac je uzeo uzorak od 25 slucajno odabranih osoba i dobio prosecnu #vrednost profita 2.842$. #Ako je alfa = 0.05, da li se na osnovu dobijenog rezultata moze zakljuciti da treba otvoriti prodavnicu? #Primetimo da nam je logicno da bude H0 : m = 2, a da H1 bude m > 2 tj. da treba da otvori prodavnicu srednja.vrednost <- 2.842 standardno.odstupanje <- 1.7 n <- 25 alfa <- 0.05 c <- qnorm(1 - alfa) T <- (srednja.vrednost - 2) / standardno.odstupanje * sqrt(n) T > c #Dobili smo vrednost TRUE sto znaci da trgovac treba da otvori prodavnicu #PRIMER 3: #Ako bar 30% ispitanika koristi softver, smatra se da je kampanja uspesna. Ako je manje od 30%, treba uloziti u #kampanju. Na raspolaganju je 500 kompanija, a od njih 118 koristi softver. Da li treba ulagati u kampanju? n <- 500 srednja.vrednost <- 118/500 p <- 0.3 alfa <- 0.05 #Primetimo da imamo Bernulijevu raspodelu (kompanije ili koriste ili ne koriste softver, nema treceg izbora) #Biramo H0 : p = 0.3, H1 : p < 0.3 #posto je n mnogo veliko, mozemo da koristimo aproksimacije T <- (srednja.vrednost - p) / sqrt(srednja.vrednost * (1 - srednja.vrednost)) * sqrt(n) c <- qnorm(alfa) T < c #Dobili smo TRUE sto znaci da odbacujemo nultu hipotezu i trebalo bi da donesemo odluku da ulozimo u kampanju #2. Ukoliko imamo uzorak iz normalne raspodele ali disperzija nije poznata - koristimo T-test #koristimo statistiku koja ima Studentovu raspodelu sa n-1 stepenom slobode #ovo je tacan test #PRIMER 1: #Posmatracemo uzorak x koji smo ranije generisali. Ipak, ovog puta cemo pretpostaviti da nam disperzija nije poznata #Koristeci p-vrednost testa testiramo H0 : m = 2 protiv H1 : m != 2. #Postoji ugradjena funkcija t.test u R-u t.test(x, alternative = "two.sided", mu = 2) #Dobili smo da je p-vrednost 0.5524, pa zakljucujemo da mozemo da prihvatimo nultu hipotezu #PRIMER 2: #Za stare teniske loptice imamo da njihova raspodela pripada N(28, 0.25). Proizvedena je nova serija teniskih loptica. #Treba da ispitamo da li je smanjena disperzija. Na osnovu uzorka od n = 25 loptica imamo: n <- 25 alfa <- 0.05 S.tilda.kvadrat <- 0.1497 sigma.kvadrat <- 0.25 #U ovom slucaju cemo koristiti test statistiku koja ima hi-kvadrat raspodelu sa n-1 stepenom slobode #(T = (n - 1) * S.tilda.kvadrat / sigma.kvadrat) #Posto se pitamo da li je disperzija smanjena, hipoteze su H0 : sigma.kvadrat = 25 i H1 : sigma.kvadrat < 25 Tchisq <- (n - 1) * S.tilda.kvadrat / sigma.kvadrat c <- qchisq(alfa, n-1) #trazenje kvantila iz hi-kvadrat raspodele Tchisq < c #Dobili smo FALSE, pa prihvatamo H0 #PRIMER 3: #Zelimo da kupimo novi racunar. Prosecno utroseno vreme po programu sadasnjeg racunara je 45 sekundi. Sa nivoom #znacajnosti testa alfa = 0.05, na osnovu uzorka obima n = 30 programa i dobijenih podataka, doneti odluku da li #da se kupi novi racunar. n <- 30 srednja.vrednost <- 44.5 s.tilda <- 2 alfa <- 0.05 m <- 45 #Nultu hipotezu cemo definisati kao H0 : m = 45, a alternativnu kao H1 : m < 45 T <- (srednja.vrednost - m) / s.tilda * sqrt(n) c <- qt(alfa, 29) T < c #Dobili smo FALSE, tako da prihvatamo nultu hipotezu i necemo kupiti drugi racunar #UPARENI T-TEST #imamo dva uzorka koja su ZAVISNA #ovaj test ima smisla koristiti kada se testira na primer reagovanje na neki lek jer su tada izmereni parametri #pre i posle davanja leka - posto su isti ljudi u pitanju uzorci su ocigleno zavisni