Afsnit 6.5: Two sample tests i python

I de tre foregående afsnit omkring sammenligning af to normalfordelte observationssæt blev alle beregningerne lavet ved at bruge python som en lommeregner. I afsnittet her vil beregningerne blive lavet på mere simpel vis med avancerede funktioner. I skal bruge funktioner som jeg selv har kodet og som I finder i filen pytFunktioner.py omtalt i afsnit 1.6. (Python har en indbygget funktion til at lave -testet for ens middelværdier, men denne funktion giver ikke det tilhørende konfidensinterval for forskellen i middelværdier.)
Jeg har i de foregående afsnit indført to tests af hypotesen om ens middelværdier i to normalfordelte populationer. Et test (-testet) i situationen hvor varianserne er ens og et andet (Welchs test), når varianserne i de to grupper er forskellige. Hvorfor bruger vi to test i stedet for blot at nøjes med testet, hvor det ikke antages, at varianserne er ens? De fleste vil nok bruge -testet, hvis baggrundsviden gør, at man formoder de to varianser er ens. Fortolkningen af et konfidensinterval for forskel i middelværdierne bliver nemmere, og for meget små stikprøvestørrelser () vil testet bedre kunne opdage en forskel end Welchs test. Det sidste kan aflæses i, at konfidensintervallet for forskellen mellem de to middelværdier er smallere for -testet end for Welchs test (dette skyldes, at antallet af frihedsgrader for -testet er som er større end eller lig med antallet af frihedsgrader i Welchs test).
Omvendt, hvis man ikke tror, at varianserne er ens, skal man bruge Welchs test. Når varianserne er forskellige, ser man ofte en sammenhæng mellem middelværdi og spredning, således at spredningen approksimativt er proportional med middelværdien (når der måles på positive størrelser). I sådanne situationer opnår man typisk ens varianser, hvis man logaritmetransformerer data. Et eksempel på dette beskrives nedenfor.

6.5.1 Two samples: Teste middelværdier ens

For at teste at middelværdierne er ens i to normalfordelinger, skal man enten bruge -testet, hvis de to varianser er ens, eller også bruge Welchs test, hvis de to varianser ikke er ens. Begge de to tests udregnes med funktionen ttest2. Hvis data ligger i to vektorer x1 og x2, bliver kaldet i tilfældet, hvor varianserne antages ens:
Hvis de to varianser antages forskellige skal man ændre True til False. De forskellige dele af output er som følger:
Nedre og øvre grænse er for et 95%-konfidensinterval for forskel i middelværdi mellem gruppe 1 og gruppe2, det vil sige for parameteren Gå nu tilbage til Eksempel 6.2.2 og Eksempel 6.3.2 og gentag beregningerne ved hjælp af ttest2.

6.5.1 Teste to middelværdier ens

Først laver vi beregningerne hørende til Eksempel 6.2.2 med data omkring mængden af ekstraheret cell free DNA, baseret på to protokoller Qiagen og Triton.

Se opstartskoden (til/fra)

Vi aflæser her -teststørrelsen til -værdien fra en -fordeling er , og et 95%-konfidensinterval for forskel i middelværdi er
Vi betragter dernæst beregningerne hørende til Eksempel 6.3.2 med måling af massefylden af kvælstof foretaget af Lord Rayleigh.
Vi aflæser her -teststørrelsen til -værdien fra en -fordeling er , og et 95%-konfidensinterval for forskel i middelværdi er

6.5.2 Eksempel: log-data

I eksempel 6.2.2 så vi, at mængden af ekstraheret cell free DNA var næsten dobbelt så stor ved Triton-metoden som ved Qiagen-metoden. Den empiriske spredning ved Triton-metoden er også højere end den empiriske spredning ved Qiagen-metoden. Man ser ofte, når prøver med forskellige mængder måles med det samme apparat, så vil spredningen vokse med middelværdien. Det er ikke helt den situation vi står i her, da forskellen skyldes målemetoden og ikke forskel i den underliggende mængde. Alligevel kan den samme effekt godt optræde her. I sådanne situationer vil der ofte ske det, at hvis data logaritmetransformeres, vil der efterfølgende være større lighed mellem varianserne. Nedenfor laver jeg en analyse af de logaritmetransformerede data, hvor jeg antager, at der er samme varians i de to grupper for de logaritmetransformerede data.
Lad os betegne logaritmen til mængden af ekstraheret CFDNA med henholdsvis og for den 'te prøve i de to grupper. Vi betragter Statistisk Model 6.1.2, hvor de logaritmetransformerede data har samme varians, her skrevet som
hvor er middelværdien af logaritmen til mængden. Man kan matematisk vise sammenhængen hvor er middelværdien af mængden. I kodevinduet nedenfor laves der qqplots for de logaritmetransformerede data. Figurerne tyder på, at vi kan beskrive såvel de oprindelige data som de logaritmetransformerede data med normalfordelingen. Man kan ikke ud fra figuren sige, at varianserne er mere ens for de logaritmetransformerede data.
I kodevinduet laves der et 95%-konfidensinterval for forskel i middelværdi mellem gruppe 1 og gruppe2, under antagelsen om samme varians. Konfidensintervallet er baseret på -fordelingen, og bliver Da nul ikke ligger i intervallet, strider data mod at sige, at der er samme middelværdi for de logaritmetransformerede data. Vi kan oversætte konfidensintervallet til et konfidensinterval for forholdet mellem middelværdierne på den oprindelige skala.
Resultat 6.5.2. (Fra log til ikke-log)
Da vi har antaget samme varians i de to grupper på logaritmeskalaen, giver sammenhængen at
Her står, at forholdet mellem middelværdierne på den oprindelige skala er exponentialfunktionen taget på differensen mellem middelværdierne på logaritmeskalaen. Et konfidensinterval for forholdet fås derfor ved at tage eksponentialfunktionen på intervalendepunkterne for konfidensintervallet for
For data omkring mængden af CFDNA giver dette resultat 95%-konfidensintervallet Her står, at med 95% sikkerhed er middelværdien af mængden af CFDNA ved Qiagen-metoden mellem 41% og 56% af middelværdien ved brug af Triton-metoden.

Beregninger i python

Se opstartskoden (til/fra)

6.5.3 Two samples: Teste varianser ens

Python har ikke en indbygget funktion til at lave -testet for hypotesen om ens varianser i Statistisk Model 6.1.1 med to normalfordelte observationssæt. Jeg har derfor selv kodet en funktion med navnet vartest2. Funktionen ligger i pytFunktioner.py. Hvis data ligger i to vektorer x og y, og output placeres i fUD, bliver kaldet
De forskellige dele af output er som følger:
Det 95%-konfidensinterval, der angives i output, er for forholdet mellem de to variansparametre, det vil sige for (dette konfidensinterval har jeg ikke omtalt ovenfor). Gå nu tilbage til Eksempel 6.4.3, og find de beregnede værdier der i output fra et kald af vartest2.

6.5.3 Teste to varianser ens

I det følgende kodevindue betragtes data fra Eksempel 6.2.2 omkring mængden af ekstraheret cell free DNA, baseret på to protokoller Qiagen og Triton. Der laves først et test for at varianserne er ens for data på den oprindelige skala og dernæst for de logaritmetransformerede data.

Se opstartskoden (til/fra)

Vi aflæser i output, at for de utransformerede data er -tesstørrelsen 0.375 og -værdien er 0.075. Hvis vi i stedet betragter de logaritmetransformerede data, er -tesstørrelsen 1.343 og -værdien er 0.54. Data strider altså ikke mod samme varians hverken for de oprindelige data eller for de transformerede data, men for de logaritmetransformerede data er de empiriske varianser mere ens.
Hvilken -fordeling bruges til beregningen af -værdien?

Svar: Aflæsning

I output fra vartest2 aflæses, at der er 13 frihedsgrader i tæller og 19 frihedsgrader i nævner. Den anvendte fordeling er derfor en -fordeling.

ForegåendeNæste