Kétmintás t-próba (Student's t-test)

 

A segédprogramot Tarczay Klára írta.

 

A matematikai háttér:

Elég gyakori probléma, hogy szeretnénk tudni, két eloszlásnak vajon ugyanaz-e az átlaga. Például: az elsõ mért adatok olyanok, melyek egy esemény elõtt történtek, a második mért adatok pedig az esemény után lettek összegyûjtve. Ezek után kíváncsiak vagyunk, hogy az esemény - "kezelés" vagy a "kontrollparaméterek változtatása" - okozott-e változást. Egy egyszerû, szemléletes példa erre: meteorológiai állomást építenek a város szélére, majd néhány év elteltével a város terjeszkedése során az állomást is körbeépítik. Befolyásolta-e ez a tény az adatokat, és mennyire szignifikáns a hatása?
Az elsõ gondolatunk az lehet, megkérdezzük, hogy a két összegyûjtött adatsor átlagának mennyi a szórásnégyzete. Hasznos dolog tudni ezt a számot: megmutatja az átlagok különbségének az "erõsségét vagy fontosságát", ha ez a különbség jelentõs. Mindezek mellett nem mond semmit arról, hogy az adatsorok mennyire különböznek, azaz statisztikailag szignifikáns-e az eltérés. Az átlagok eltérése elõfordulhat, hogy semmi összefüggést nem mutat a szórásnégyzettel, miközben az eltérés akár elég nagy is lehet. Ez akkor áll fenn, ha sok adatunk van. Fordítva, a különbség mérsékleten nagy lehet, de nem szignifikáns, ha "ritkák" az adatok.
A mennyiség, ami méri az átlagok különbségének "nagyságát", nem a szórásnégyzet (standard deviation), hanem az ún. standard hiba (standard error). Az adatok értékének standard hibája megmutatja, hogy az adatokból nyert átlag mennyire pontosan becsli a "valódi átlagot". A standard hiba jellemzõen megegyezik a szórásnégyzet/adatpontok számának négyzetgyökével.

A szokásos statisztika arra, hogy az átlagok eltérésének szignifikanciáját mérjük, a kétmintás t-próba. Itt meg kell jegyezni, hogy csak abban az estben alkalmazhatjuk ezt a próbát, ha normál eloszlású minták paramétereire vonatkozik a próba, és a minták függetlenek. Akkor használjuk, ha úgy gondoljuk, hogy a két mintának a szórása megegyezik, de az átlaguk lehet, hogy nem. A t-próbát a következõképpen számítjuk:
1. A standard hibát megbecsüljük az átlagok különbsége és a korrigált tapasztalati szórásnégyzet alapján az alábbi formulából (Sd):

 

ahol az egyes szummákat az adott adatsor adatszáma szerint kell venni, NA és NB az egyes adatok száma, és az adatsorok átlaga.

2. Kiszámítjuk a t-próbát (t):



3. Összehasonlítjuk a t-próba értékét az NA+NB-2 szabadsági fokú Student-eloszlás adott biztonsági szinthez tartozó értékével, majd külön subroutine-nal becslést adunk a szignifikancia értékére. Ennek tárgyalásába most nem megyek bele. Itt azt kell csak tudni, hogy a "nem teljes" (incomplete) béta függvényrõl szóló programrészletet alkalmazza a számítások során a subroutine.
A szignifikancia egy 0 és 1 közötti szám, és valószínûség, hogy az viszonylag nagy is lehet, még ha a kifejezések átlaga meg is egyezik. Így a szignifikancia numerikus értéke ha kicsi ( 10-3), az azt jelenti, hogy az észlelt különbség nagyon jelentõs. Fontos megemlíteni, hogy a statisztikai biztonság minden esetben 95%-os.

 

A subroutine használata:

A subroutine bemenõ adatai, vagyis amit meg kell adni: a két adatsor egy-egy vektorban tárolva és az adatsorok elemszáma -data1, data2 a két vektor (valós), n1,n2 a két elemszám (egész).
A kijövõ értékek: t- a t-próba értéke (valós) és a prob nevû (valós) szám, amely megmutatja a szignifikanciát.
A programrészlethez szükséges még egy subroutine: avevar -ez számítja az átlagokat és a szórásokat; és egy függvény: betai - ez pedig a hipotézisvizsgálathoz kell. A betai függvény felhasznál további két függvényt: betacf és gammln.

 

A subroutine meghívása:

A subroutine-t a következõ módon kell meghívni a fõprogramban:

call ttest(data1,n1,data2,n2,t,prob)

Megj.: Érdekes lehet gyakran az is, hogy mennyi a minták átlaga és szórásnégyzete. Mivel ezt is kiszámolja a subroutine, ki lehet íratni.

 

Példa a segédprogram használatára:

program teszt
parameter (n=3)
real data1(n),data2(n)
data data1/290,311,284/
data data2/271,304,260/
call tptest(data1,data2,n,t,prob)
write(*,*)t,prob
stop
end

Fontos! A data adatmezõt a programszövegben kell módosítani, tehát nem input adat!!!!

Ha ezekkel a számokkal futattod le( data1/290,311,284/ illetve data2/271,304,260/ , ezt kell kapnod: 3.304... és 0.0806...

Itt leled e hasznos segédprogramot: tproba.for

 


[Vissza a fõoldalra]