t-test

av Anders Sundell

Ett väldigt vanligt test för att undersöka hur en grupp skiljer sig mot en annan grupp, eller ett referensvärde, är t-testet. Vi kan med testet undersöka om skillnaden är statistiskt signifikant, det vill säga, väldigt osannolik om nollhypotesen skulle vara korrekt.

Ett typiskt exempel är när man undersöker om två olika urval har olika värden på någon variabel som man är intresserad av. Till exempel när vi jämför olika grupper i en urvalsundersökning. Är det troligt att skillnaderna vi kan se i vårt urval också återfinns i den population som vi dragit urvalet ur?

Vi kan också använda testet för att jämföra behandlings- och kontrollgrupp i ett experiment. För att svara på om behandlingen gett effekt ser vi om skillnaden är tillräckligt stor för att det ska vara osannolikt att det är slumpen som orsakar den skillnad vi ser i grupperna.

I det här exemplet kommer vi att använda oss av data från den amerikanska General Social Survey, som är en enkätundersökning med vanliga medborgare, med frågor om allt möjligt. Respondenterna har valts ut i princip slumpmässigt från det amerikanska folket. Vi kommer använda versionen från 2016. Ladda ned den för att följa med i exemplet. Nedan öppnar jag datafilen fårn min dator.

In [1]:
use "/Users/xsunde/Dropbox/Jupyter/stathelp/data/GSS2016.dta", clear

Frågeställning: Jobbar män mer än kvinnor?

Vi ska titta närmare på variabeln hrs1 som visar hur många timmar respondenten jobbade förra veckan. Medelvärdet är 40,9 timmar. Men hur ser det ut, uppdelat på kvinnor och män? Vi kan använda variabeln sex där män har fått koden 1 och kvinnor koden 2 för att undersöka saken.

Innan vi går in på själva t-testet tittar vi på medelvärdena. Det är inte nödvändigt att ta det stegvis, men det gör det enklare att fokusera på en sak i taget.

Vi tar fram medelvärdet för kvinnor och män med kommandot table:

In [7]:
table sex, contents(mean hrs1)
----------------------
responden |
ts sex    | mean(hrs1)
----------+-----------
     male |    44.1604
   female |     37.904
----------------------

Resultatet är tydligt: Amerikanska män jobbar ungefär 6,2 timmar mer i veckan än kvinnor. Ganska väntat givet hur familjemönstren brukar se ut.

Den här analysen baseras dock bara på 792 män och 854 kvinnor. Och i båda grupperna finns det individer som inte jobbar alls, och som jobbar mer än 89 timmar i veckan (det högsta svarsalternativet). Kan vi vara säkra på att det här är en verklig skillnad, eller var det bara så att vi råkade få något fler manliga arbetsnarkomaner i vårt urval, bara på grund av slump i urvalet? För att svara på den frågan använder vi oss av t-testet.

t-test av två grupper

Nu gör vi ett tankeexperiment - vi antar att det ute i den amerikanska befolkningen inte finns några skillnader i hur mycket kvinnor och män jobbar. Om så är fallet, och vi gör ett urval av 1646 individer, hur ofta skulle vi då få en sån här stor könsskillnad, bara på grund av slump?

Om det skulle hända ofta kanske vi inte ska dra så stora växlar på könsskillnaden som vi uppmätt. Men om det skulle vara väldigt sällsynt, till exempel bara hända en gång på 20, då kan vi vara hyfsat säkra på att könsskillnaden vi nu ser (män jobbar 6 timmar mer) faktiskt indikerar att det finns en skillnad ute i befolkningen.

Måttet på hur ofta en så här stor skillnad uppstår på grund av slump i urvalet är p-värdet, eller signifikansvärdet. Vanligtvis är vår beslutsregel att vi betraktar skillnader som max inträffar en gång på 20 som signifikanta, alltså att vi använder oss av 95% säkerhetsnivå. Konkret innebär det att vi ska hålla utkik efter p-värden som är lägre än 0,05.

Nu gör vi testet i Stata. Kommandot heter pedagogiskt nog ttest, och principen är att vi skriver kommandot, variabeln vi vill testa hrs1 och anger sedan variabeln som visar grupperna med option by(sex).

In [8]:
ttest hrs1, by(sex)
Two-sample t test with equal variances
------------------------------------------------------------------------------
   Group |     Obs        Mean    Std. Err.   Std. Dev.   [95% Conf. Interval]
---------+--------------------------------------------------------------------
    male |     792    44.16035    .5228357     14.7139    43.13404    45.18666
  female |     854    37.90398    .4598889    13.43946    37.00133    38.80663
---------+--------------------------------------------------------------------
combined |   1,646    40.91434    .3550878    14.40624    40.21787    41.61081
---------+--------------------------------------------------------------------
    diff |            6.256372    .6939482                4.895257    7.617488
------------------------------------------------------------------------------
    diff = mean(male) - mean(female)                              t =   9.0156
Ho: diff = 0                                     degrees of freedom =     1644

    Ha: diff < 0                 Ha: diff != 0                 Ha: diff > 0
 Pr(T < t) = 1.0000         Pr(|T| > |t|) = 0.0000          Pr(T > t) = 0.0000

Här kommer det många siffror på en gång, men vi känner igen medelvärdena i kolumnen "Mean". Kolumnen "Obs" visar antalet personer i varje grupp. "Std. Err." visar standardfelet kring medelvärdet, alltså osäkerheten i skattningen av medelvärdet. "Std. Dev." visar standardavvikelsen kring medelvärdet, ett mått på spridningen i urvalet. "95% conf interval" visar konfidensintervallet kring medelvärdet. Om vi gör om urvalet en mängd gånger kommer vårt konfidensintervall täcka över det sanna medelvärdet (till exempel för antalet jobbade timmar bland män) i populationen 95 procent av gångerna.

I raderna hittar vi först värdena för män, sedan kvinnor, sedan för båda grupperna kombinerat, och slutligen för skillnaden mellan grupperna. Medelvärdesskillnaden är 6,256.

T-värdet står angivet under tabellen, till höger. t = 9,0156 kan vi utläsa.

Men det vi var intresserade av var som sagt signifikanstesten. Dem hittar vi längst ner, och det viktigaste finns i mitten. Det testar hypotesen att det finns en skillnad (positiv eller negativ) mellan kvinnor och män. P-värdet här är 0,0000. Det betyder att om det nu inte fanns någon skillnad mellan kvinnor och män ute i den amerikanska befolkningen, så skulle vi få en sån här stor skillnad (åt något håll) i vårt urval mindre än en gång på 10000. Mer troligt är alltså att det faktiskt finns en skillnad mellan kvinnor och män, också ute i befolkningen!

Om p-värdet till exempel hade varit 0,2534 hade det betytt att vi sett en sån här stor skillnad mellan kvinnor och män 25 gånger av 100, bara på grund av slump i urvalet, trots att det inte fanns någon skillnad i befolkningen. I sådana lägen kan man inte förkasta nollhypotesen - det kan mycket väl vara så att det inte finns någon skillnad.

Ensidiga test

Det kallas ett dubbelsidigt t-test, och är vad man normalt ska använda. Men i vissa specialfall kan det finnas anledning att använda så kallade ensidiga test. De lämpar sig för hypoteser om att det ska finnas en skillnad i en viss riktning. Det kan vara relevant om vi har att göra med någon process där vi kan vara säkra på att det inte kan bli en ökning, eller en minskning. Oftast är det inte så.

Men om man ändå vill använda ett ensidigt test hittar vi dem till vänster och höger längst ned. Vi börjar till vänster, där vi hittar ett test som används om man har en hypotes om att vi ska ha ett värde som är mindre än noll (dvs att kvinnor jobbar mer än män). Vi gör som tidigare ett tankeexperiment och utgår från att nollhypotesen är sann. Om det nu är så, hur ofta kommer slumpen göra så att vi får ett värde som är mindre än det vi nu uppmätte (6,26)? P-värdet är 1,0000. Det betyder att vi i princip alltid (det är avrundat) får ett värde som är mindre än 6,26. Informationen är inte särskilt användbar i det här fallet. Vi kan inte använda den för att förkasta någon hypotes.

Till höger hittar vi istället testet som används om vi har en hypotes att skillnaden ska vara större än noll (dvs att män jobbar mer än kvinnor). Om vi antar att nollhypotesen är sann, hur ofta kommer slumpen göra så att vi får ett värde som är större än det vi uppmätte (6,26)? P-värdet är 0.0000 (avrundat) vilket innebär att det händer mindre än en gång på 10000. Inte särskilt sannolikt alltså. Mer sannolikt är alltså att män faktiskt jobbar mer än kvinnor, ute i befolkningen.

P-värdena kommer (om resultatet går i hypotesens riktning) att vara hälften så stora för de ensidiga testen som för det tvåsidiga, eftersom vi bara behöver ta ett sorts utfall i beaktande. Men man kan inte bestämma sig för om man ska använda ensidigt eller tvåsidigt test efter att man sett resultatet. Det måste man göra på förhand, på teoretiska grunder. Och sådana är ofta svåra att finna. Den enkla rekommendationen är alltså att alltid använda tvåsidiga test.

t-test mot ett specifikt referensvärde

Nu jämförde vi två grupper. Men ibland vill vi jämföra medelvärdet i en grupp mot ett fast referensvärde. Till exempel kan det vara intressant att se om ett partis stöd i en opinionsundersökning kan sägas vara signifikant högre än spärren till riksdagen. I det här fallet kan vi undersöka om genomsnittsamerikanen jobbar mer eller mindre än 40 timmar i veckan.

Vi skriver då kommandot, variabeln vi vill testa, och sedan lika med referensvärdet. Såhär:

In [11]:
ttest hrs1 == 40
One-sample t test
------------------------------------------------------------------------------
Variable |     Obs        Mean    Std. Err.   Std. Dev.   [95% Conf. Interval]
---------+--------------------------------------------------------------------
    hrs1 |   1,646    40.91434    .3550878    14.40624    40.21787    41.61081
------------------------------------------------------------------------------
    mean = mean(hrs1)                                             t =   2.5750
Ho: mean = 40                                    degrees of freedom =     1645

    Ha: mean < 40               Ha: mean != 40                 Ha: mean > 40
 Pr(T < t) = 0.9949         Pr(|T| > |t|) = 0.0101          Pr(T > t) = 0.0051

Medelarbetstiden för hela urvalet är alltså 40,9. Lite mer men ganska nära 40 timmar, alltså. Men är det tillräckligt mycket mer för att vi ska kunna vara säkra på att amerikaner jobbar mer än 40 timmar i veckan?

Vi ser här längst ner i mitten att p-värdet blir 0,0101. Det betyder att om nollhypotesen - att de jobbar 40 timmar i veckan - stämmer, så gör slumpen så att vi får ett urvalsmedelvärde på 40,9 ungefär en gång på hundra. Alltså inte så ofta. Det är därför rimligare att dra slutsatsen att jo, i USA jobbar folk i snitt mer än 40 timmar i veckan. Om vi testar ett annat referensvärde, till exempel 41, förändras signifikanssiffrorna.

In [12]:
ttest hrs1 == 41
One-sample t test
------------------------------------------------------------------------------
Variable |     Obs        Mean    Std. Err.   Std. Dev.   [95% Conf. Interval]
---------+--------------------------------------------------------------------
    hrs1 |   1,646    40.91434    .3550878    14.40624    40.21787    41.61081
------------------------------------------------------------------------------
    mean = mean(hrs1)                                             t =  -0.2412
Ho: mean = 41                                    degrees of freedom =     1645

    Ha: mean < 41               Ha: mean != 41                 Ha: mean > 41
 Pr(T < t) = 0.4047         Pr(|T| > |t|) = 0.8094          Pr(T > t) = 0.5953

P-värdet är nu 0,8094. Vi kan därför inte säga att datan i vårt urval stöder hypotesen att folk jobbar mindre än 41 timmar i veckan. Datan är förenlig med den nollhypotesen.

Jämförelse med regressionsanalys

Kommandot för t-test är ganska lätt att förstå, och inom vissa områden är det konvention att använda just t-test. I andra jobbar man mer med regressionsanalys. De två olika analyserna visar dock samma sak - när man gör en regressionsanalys i ett statistikprogram får man oftast med ett t-test på köpet. Regressionsanalysen visar vad som händer med den beroende variabeln när man ökar den oberoende variabeln ett steg.

I det här fallet, vad händer med arbetstiden om man ökar variabeln sex ett steg? Dvs, om vi går från man (som har värdet 1) till kvinna (som har värdet 2)? Vi kan pröva:

In [6]:
reg hrs1 sex
      Source |       SS           df       MS      Number of obs   =     1,646
-------------+----------------------------------   F(1, 1644)      =     81.28
       Model |  16084.1601         1  16084.1601   Prob > F        =    0.0000
    Residual |  325318.762     1,644  197.882458   R-squared       =    0.0471
-------------+----------------------------------   Adj R-squared   =    0.0465
       Total |  341402.922     1,645   207.53977   Root MSE        =    14.067

------------------------------------------------------------------------------
        hrs1 |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         sex |  -6.256372   .6939482    -9.02   0.000    -7.617488   -4.895257
       _cons |   50.41673   1.109558    45.44   0.000     48.24043    52.59302
------------------------------------------------------------------------------

Det intressanta är koefficienten i raden "sex", som är -6,26. Om man går från man till kvinna förändras arbetstiden med -6,26 timmar. Dvs samma skillnad som vi såg tidigare (fast nu är den minus, eftersom det här blir värdet för män minus värdet för kvinnor)! T-värdet är -9,02, alltså samma som i t-testet, fast nu negativt (eftersom skillnaden blev negativ här).

Raden "cons" visar interceptet, alltså värdet på den beroende variabeln när alla oberoende variabler är 0. Alltså om variabeln sex är 0, vilket den inte kan vara. För att räkna ut medelvärdet för män får vi därför ta 50,4-6,25=44,15. Samma som vi såg tidigare.

Det man kan göra med kommandot ttest kan man alltså ofta göra med reg också. Men kanske är det lättare att läsa av tabellen från ttest- där får vi medelvärdena tydligt utskrivna.

Avslutning

t-testet är ett väldigt vanligt och användbart test, när vi vill undersöka hur stor sannolikt eller osannolikt det är att skillnader vi observererar är orsakade av slump i urvalsprocesser. Därför är de i strikt mening bara relevanta när vi har att göra med slumpmässiga urval, eller med slumpmässig tilldelning i ett experiment.

I praktiken används testen dock ibland på data av annan typ, som till exempel observationsdata på världens länder. Då blir det mer en indikation på om skillnader är betydelsefulla eller inte.