CLT255: Viides luentokerta

Yksinkertaista testausta

Luetaan ensin kaksi lukusarjaa muuttujiin A ja B:

> A <- scan()
1: 79.98 80.04 80.02 80.04 80.03 80.03 80.04 79.97
9:      80.05 80.03 80.02 80.00 80.02
14:
Read 13 items
> B <- scan()
1: 80.02 79.94 79.98 79.97 79.97 80.03 79.95 79.97
9: 
Read 8 items
Piirretään näistä laatikkodiagrammi (boxplot) tai laatikko- ja viiksidiagrammi (box and whiskers plot), jossa kummankin arvojoukon jakautumaa on havainnollistettu.
> boxplot(A, B)
Arvot jakautuvat pystysuunnassa. Mediaani on laatikon keskellä, eli puolet arvoista osuu mediaanin yläpuolelle ja puolet alapuolelle. Laatikon alareuna on ensimmäisen kvartiilin kohdalla (jonka alapuolelle jää neljännes havaituista arvoista) ja yläreuna on kolmannen kvartiilin kohdalla (jonka yläpuolelle jää neljännes havaituista arvoista). "Viikset" osoittavat (yleensä) pienintä ja suurinta arvoa, joka muuttujalle tulee. R:ssä kuitenkin viiksien pituutta rajoitetaan oletuksena siten, että se ei ulotu kuin enintään 1,5-kertaa niin kauas kuin matka mediaanista ensimmäiseen (tai kolmanteen) kvartiiliin on. Tämä auttaa tunnistamaan mahdollisia epätavallisia arvoja (outlier), jotka piirretään pieninä ympyröinä diagrammiin.

Rinnakkain asetetuista diagrammeista on helppo arvioida karkeasti, ovatko muuttujien jakautumat (edes) suunnilleen samanlaisia. Diagrammi on sikäli hyvä, että sen laatimisessa ei tarvita olettamuksia muuttujan arvojen jakautumasta, esim. normaalisuudesta. Muuttujan asteikon pitää toki olla järjestysasteikko, eli eri arvoista pitää tietää, mikä on suurempi ja pienempi.

Muuttujien A ja B arvoissa näyttää olevan eroa siten, että A:n arvot ovat enimmäkseen isompia kuin B:n.


> plot(ecdf(A))
> plot(ecdf(A), verticals=TRUE)
> plot(ecdf(A), do.points=FALSE, verticals=TRUE)
> plot(ecdf(B), do.points=FALSE, verticals=TRUE, add=TRUE)

Jos oletamme, että muuttujien A ja B arvot jakautuvat normaalijakautuman mukaisesti, voimme suorittaa t-testin arvioidaksemme keskiarvojen erilaisuutta. Testi kertoo, että jos muuttujien keskiarvot olisivat samanlaisia, niin kuinka harvinaista olisi, että ne otoksissa sattuisivat olemaan näin kaukana toisistaan. Perusmuodossaan testi sallii sen, että A:n hajonta olisi pienempi kuin B:n, kunhan molemmat ovat itsessään normaalisti jakautuneita.

> t.test(A, B)

        Welch Two Sample t-test

data:  A and B 
t = 3.2499, df = 12.027, p-value = 0.00694
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 0.01385526 0.07018320 
sample estimates:
mean of x mean of y 
 80.02077  79.97875 

Kun todennäköisyys p on noinkin pieni eli alle prosentin, niin voisimme pitää epätavallisena, että ero johtuu vain sattumasta. Joskus voimme olettaa, että muuttujien hajontojen pitäisi olla samat tai ainakin, että ei ole mitään syytä, miksi ne olisivat erilaiset. Hajontojen (tai varianssin eli hajonnan neliön) erilaisuutta voimme tarkistaa samantapaisesti. Eri otoksissa hajonta tietysti vaihtelee, mutta suuret poikkeamat ovat harvinaisia. Voimme toki tarkistaa F-testillä, ovatko A:n ja B:n hajonnat (varianssit) niin paljon poikkeavia, että se olisi harvinaista:

> var.test(A, B)

        F test to compare two variances

data:  A and B 
F = 0.5837, num df = 12, denom df = 7, p-value = 0.3938
alternative hypothesis: true ratio of variances is not equal to 1 
95 percent confidence interval:
 0.1251097 2.1052687 
sample estimates:
ratio of variances 
         0.5837405 
Todennäköisyys, että samalla hajonnalla varustetut muuttujat tuottaisivat tällaisissa otoksissa tuon kokoisia eroja otoksista lasketuissa hajonnoissa on tässä 0,3938. Emme sis voi hylätä oletusta, että hajonnat olisivat samat.

Niimpä laskemme kokeen vuoksi vielä t-testin pitäen kiinni oletuksesta, että muuttujien varianssit ovat keskenään samat.

> t.test(A, B, var.equal=TRUE)

        Two Sample t-test

data:  A and B 
t = 3.4722, df = 19, p-value = 0.002551
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 0.01669058 0.06734788 
sample estimates:
mean of x mean of y 
 80.02077  79.97875 
Tällä oletuksella t-testi antaa vähän selkeämmin tuloksen, että keskiarvot ovat erilaisia, vain neljäsosaprosentissa tapauksista saataisiin otokseen näin iso keskiarvojen ero.

T-testillä on se ongelma, että se edellyttää muuttujilta normaalijakautumaa. Varsinkin kieleen liittyvissä tilastoissa tämä on usein huono olettamus.



Esimerkki sanojen pituuksien kanssa

Tämän sivun liitteenä on näytteitä suomen- ja ruotsinkielisistä teksteistä. Ne ovat Gutenbergin vapaita teoksia sisältävässä arkistossa olevista Ahon ja Almqvistin teoksen alusta otettuja pätkiä, joka on muotoiltu havaintomatriiseiksi. Käynnistämällä R ja asettamalla sen oletushakemisto siihen hakemistoon, johon on ladannut nuo näytteet, niitä voi käsitellä. Huomaa lukukomennossa parametri header=TRUE joka on tarpeen, kun aineistossa ei luonnostaan ole havaintoja erottelevaa tunnusnumeroa (ja siis muuttujien nimiä on yhtä monta kuin muuttujiakin).

> alm100 = read.table("alm-100-lenwd.txt", header=TRUE)
> alm100
   LEN              WORD
1    4              carl
2    5             jonas
3    4              love
4    8          almqvist
5    3               det
6    3               går
7    2                an
8    6            första
9    8          kapitlet
... jne.
> aho100 <- read.table("aho-100-lenwd.txt", header=TRUE)

Tavan mukaan otamme yleiskatsauksen, josta näemme, että kaikki on suunnilleen kohdallaan ja minkälaiset nimet muuttujilla on:

> summary(alm100)
      LEN              WORD   
 Min.   : 1.000   och    : 5  
 1st Qu.: 3.000   till   : 4  
 Median : 5.000   i      : 3  
 Mean   : 5.737   inte   : 3  
 3rd Qu.: 8.000   av     : 2  
 Max.   :17.000   ett    : 2  
                  (Other):80
> summary(aho100)
      LEN                 WORD   
 Min.   : 1.000   ja        : 6  
 1st Qu.: 4.000   oli       : 3  
 Median : 6.000   helsinkiin: 2  
 Mean   : 6.343   kellot    : 2  
 3rd Qu.: 8.000   laivain   : 2  
 Max.   :15.000   niinkuin  : 2  
                  (Other)   :82  

Havainnollisen kuvan saaa laatikkodiagrammilla ruotsin- ja suomenkielisten saneiden pituuksia kuvaavista muuttujista:

> boxplot(alm100$LEN, aho100$LEN)

Emme hetkeäkään usko siihen, että saneiden pituudet jakautuisivat normaalijakautuman mukaisesti, mutta teemme kuitenkin ruotsin- jasuomenkielisten näytteiden saneiden keskipituuksille t-testin:

> t.test(alm100$LEN, aho100$LEN)

        Welch Two Sample t-test

data:  alm100$LEN and aho100$LEN 
t = -1.359, df = 193.281, p-value = 0.1757
alternative hypothesis: true difference in means is not equal to 0 
95 percent confidence interval:
 -1.4856240  0.2735028 
sample estimates:
mean of x mean of y 
 5.737374  6.343434 
Testi ei anna perusteita hylätä oletusta siitä, että kummassakin kielessä keskipituudet olisivat samoja. Päättely menee suunnilleen näin:
  • ensimmäisenä voi katsoa aina p-value -kohdan, jossa 0.1757 jo paljastaa, että noin 17 % tapauksissa eli kerran kuudesta tulisi näinkin iso ero keskiarvoon
  • itse t-testin nimenomainen suure t saa arvon -1,485624, joka on 95 % ns. luottamusvälin sisällä, eli sillä alueella, jolle t lankeaa 95 % tapauksista.

Siitä, että saneiden pituuksien jakautuma ei vastaa normaalijakautumaa saa ainakin havainnollisen kuvan pylväsdiagrammeilla eli histogrammeilla:

> hist(alm100$LEN)
> hist(aho100$LEN)
Histogrammit ovat vinoja luonnollisesta syystä. Pituus on aina vähintään yksi ja lyhyet sanat ovat yleisimpiä, mutta pitempiäkin esiintyy. T-testi on siis perustellusti huono.

Histogrammin ohella tilastotieteessä käytetään ns. kertymäfunktiota, joka ilmoittaa, kuinka suuri osuus kaikista havainnoista on annettua arvoa pienempi tai yhtäsuuri sen kanssa. Teoreettisesti kertymäfunktio on hyvä sikäli, että se on laskettavissa kaikenlaisille jakautumille, olivat ne jatkuvalta tai diskreetiltä asteikolta tai vaikka tällaisten yhdistelmältä.

> plot(ecdf(alm100$LEN), do.points=FALSE, verticals=TRUE)
> plot(ecdf(aho100$LEN), do.points=FALSE, verticals=TRUE, col=2, add=TRUE)

On sellaisiakin testejä, jotka eivät edellytä normaalijakautuman oletusta. Yksi näistä on Kolmogorov-Smirnovin testi. Se perustuu juuri kertymäfunktioiden vertailuun ja mittaa kahden kertymäfunktion välistä maksimieroa, johon testi perustuu.

> ks.test(alm100$LEN, aho100$LEN)

        Two-sample Kolmogorov-Smirnov test

data:  alm100$LEN and aho100$LEN 
D = 0.202, p-value = 0.03518
alternative hypothesis: two-sided 

Warning message:
In ks.test(alm100$LEN, aho100$LEN) :
  cannot compute correct p-values with ties
Kolmogorovin ja Smirnovin testi siis löytää melkein merkitsevän (riski alle 5 %) eron kielten välillä.

On toinenkin, Mannin ja Whitneyn (ja Wilcoxonin) U testi, joka mittaa tasoeroja olettamatta normaalijakautumaa. Se perustuu vähän samaan ajatteluun kuin järjestyskorrelaatiokin eli siihen, että muuttujien arvot korvataan niiden järjestysluvuilla. kahta riippumatonta muuttujaa, kuten tässä, verrataan siten, että tarkastellaan sitä, kuinka kaikkien arvojen nousevassa järjestyksessä eri ryhmien arvot keskenään sijoittuvat.

> wilcox.test(alm100$LEN, aho100$LEN)

        Wilcoxon rank sum test with continuity correction

data:  alm100$LEN and aho100$LEN 
W = 4112, p-value = 0.04931
alternative hypothesis: true location shift is not equal to 0 
Myös Mannin ja Whitneyn testi saa jo tällä otoksella melkein merkitsevän eron näiden kahden otoksen välille.


Tehtävä 2

Tämän sivun liitteenä on myös Ahon ja Almqvistin koko teoksisat tehdyt havaintomatriisit. Ne voit lukea R:ään havaintomatriisiksi samaan tapaan kuin yllä, esim. aho <- read.table("aho-helsinkiin-lenwd.txt", header=TRUE). Huomaa, että niistä voi ottaa osia, esim. aho$LEN[1001:1200] ottaa kaksisataa alkiota alkaen alkiosta 1001. Tehtävänä on toistaa yllä esitetyt askelet (t-testi, Kolmogorov-Smirnovin testi ja Mann-Whitneyn U-testi) juuri tuollaiselle kandensadan alkion osalle kummastakin kirjasta. Tuloksena annetaan sähköpostiviestiin kopioituna R:n konsolilta komennot ja niiden tulokset sekä ennen kaikkea tulkinta, siis onko mahdollinen ero melkein merkitsevä (5 %), merkitsevä (1 %) tai erittäin merkitsevä (0,1 %) riskirajalla.

Tehtävä 3

Vertaa Kolmogorovin ja Smirnovin testillä Ahon koko teoksesta sananpituuksien jakaumia teoksen sisäisesti. (a) sata ensimmäistä vs. sata alkaen kohdasta 10001, (b) tuhat ensimmäistä vs. tuhat alkaen kohdasta 10001. Kuvaile tulos ja tulkitse kuten edellisessä tehtävässä.

-- KimmoKoskenniemi - 2010-11-11


Topic attachments
I Attachment Action Size Date Who Comment
Texttxt aho-100-lenwd.txt manage 1.0 K 2010-11-12 - 06:30 KimmoKoskenniemi Aho "Helsinkiin" 100 sanan näyte
Texttxt aho-helsinkiin-lenwd.txt manage 198.4 K 2010-11-12 - 07:45 KimmoKoskenniemi Aho "Helsinkiin" koko tekstin saneet ja niiden pituudet
Texttxt alm-100-lenwd.txt manage 1.0 K 2010-11-12 - 06:29 KimmoKoskenniemi Almqvist "Det går an" 100 sanan näyte
Texttxt almqvist-det-gaar-an-lenwd.txt manage 308.0 K 2010-11-12 - 07:44 KimmoKoskenniemi Almqvist "Det går an" koko tekstin saneet ja pituudet
Topic revision: r8 - 2012-02-10 - KimmoKoskenniemi
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2018 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback