7_statisztika.pdf 20. oldalán levő Feladat 1 ################ # A normális eloszlás tesztje külön az angol és a portugál szövegekre. # logikai vektor csak az angol szövegekre: angol = trans$language == "English" # normális eloszlás tesztje shapiro.test(trans$length[angol]) p = 0.003546 # A normális eloszlás megléte a nullhipotézis, amit akkor tartunk meg, ha p > 0,05. # Ez itt nem teljesül, tehát az adatok nem normális eloszlásúak. # A portugál [!angol] halmazra már nem is muszáj futtatni a Shapiro-Wilk tesztet, mert nem normális eloszlású adatokra csak a Levene-teszt jön szóba. # A car csomag telepítése: install.packages(car) # Az R minden megnyitása után be kell töltenünk, ha használni akarjuk: # library(car) # A teszt képlete a boxplotokénak felel meg: függőváltozó~függetlenváltozó, mátrix. leveneTest(length~language, data=trans) # vagy röviden leveneTest(length~language, trans) # p = 0.0426, tehát a varianciahomogenitás hipotézisét elvetjük, a varianciák nem azonosak. # Mivel a minta nem normális eloszlású, t-próbát nem végezhetünk rajta, csak a nem parametrikus megfelelőjét, a Mann-Whitney próbát. Erről a 8. óra anyagában lesz szó. ################# Feladat 2 A. # Mivel a bikák és üszők születési súlyának varianciája normális eloszlású, mindhárom varianciahomogenitást tesztelő próbát lehet használni. # F-próba. var.test(bika,uszo) # p-value = 0.6301, a varianciák homogének # A Levene-próbát két külön vektorban tárolt adatokra nem lehet futtatni. Csak akkor futna le, ha egy közös dataframe-ben lennének, amikben az egyik oszlopban a kistehenek neme áll, a másikban a születéskor mért tömegük. # Ugyanez a szintaxis az F-próbára is működik, tehát általánosabb érvényű. # Ezt így lehet létrehozni: # A nem vektorban hétszer szerepel a bika, kilencszer az uszo kategória: nem = c(rep("bika",7),rep("uszo",9)) # Összekötjük a bika és az uszo vektorokat: tomeg = c(bika,uszo) # A két vektort adatmátrixban egyesítjük. A vektorok neve az oszlopok neve lesz: kistehen = data.frame(nem, tomeg) # Levene-próba az adatmátrixra leveneTest(tomeg~nem,kistehen) # p = 0.7669, vagyis a varianciák azonosak. # Bartlett-próba bartlett.test(tomeg~nem,kistehen) # p-value = 0.6565, a varianciák azonosak. ####################### B. # Először tesztelni kell, hogy az adatok normális eloszlásúak-e. Ha igen, F-próbával teszteljük a varianciák homogenitását. # Logikai vektor a növényekre noveny = ratings$Class == "plant" # Gyakorisági értékek eloszlásának tesztelése növényeknél: shapiro.test(ratings$Frequency[plant]) # Állatoknál: shapiro.test(ratings$Frequency[!plant]) # Ugyanígy a meanFamiliarity mérőszámra. # Mindkét mérőszám normális eloszlást mutat mindkét csoportban. # A varianciahomogenitást az F-próbával teszteljük. # A varianciák mindkét mérőszám esetében homogének, tehát alkalmazható a kétmintás t-próba, amelyik varianciahomogenitást feltételez. t.test(Frequency~Class,ratings, var.equal = T) ########## Ezt kapjuk: ########### Two Sample t-test data: Frequency by Class t = 3.1929, df = 79, p-value = 0.002023 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: 0.3239624 1.3965316 sample estimates: mean in group animal mean in group plant 5.132905 4.272658 Értelmezés: p < 0,05, a nullhipotézist elutasítjuk, a gyakoriságok szignifikánsan különböznek. A teszt kiadja az állatok és a növények gyakoriságértékének az átlagát, ebből látjuk, hogy az állatnevek gyakoribbak. Ez a pozitív t-értékből is látszik: az első csoport, ami mindig az abc-ben előbb levő címke, nagyobb átlagú, mint a második. ################## t.test(meanFamiliarity~Class,ratings, var.equal = T) Two Sample t-test data: meanFamiliarity by Class t = -4.0548, df = 79, p-value = 0.0001168 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -1.2742408 -0.4351257 sample estimates: mean in group animal mean in group plant 3.512174 4.366857 p < 0,05, tehát a két csoport szignifikánsan különbözik. Az átlagokból és a negatív t-értékből is látszik, hogy a növények ismertebbek. #################### C. # Először a normális eloszlás meglétét kell tesztelnünk. A növényeknél ez a feltétel egyik mérőszám esetén sem teljesül. Ilyenkor vagy a Mann-Whitney próbát alkalmazzuk, vagy megpróbáljuk transzformálni az értékeket. # Megnézzük, hogy unimodális-e az eloszlás: plot(density(ratings$meanWeightRating[noveny])) # Igen, és a normális eloszláshoz hasonló alakot mutat, csak a módusz kicsit a középtől balra esik. Ilyenkor segíthet, ha az érték logaritmusát vesszük. # A normalitás tesztje: shapiro.test(log(ratings$meanWeightRating[noveny])) shapiro.test(log(ratings$meanWeightRating[!noveny])) # Mindkét p-érték messze a 0,05-ös tartomány fölé esik. A t-próbát tehát az eredeti értékek logaritmusára végezzük el. # Az egyszerűség kedvéért most nem teszteljük a varianciák homogenitását: t.test(log(meanSizeRating)~Class,ratings,var.equal = F) # vagy t.test(log(meanSizeRating)~Class,ratings) # mivel a t.test() függvény alapértelmezett beállítása a varianciák homogenitásának hiánya. # Az állatok méretére és súlyára adott becslések szignifikánsan nagyobbak, mint a növények mérőszámai.