Gå till index

Lilla Forskarskolan: Forskningsmetoder och Analys med R

0% färdig
0/0 Steps
  1. Analys och forskning med R och Posit (Rstudio)
  2. Grunderna i R och Rstudio
    7 Ämnen
  3. Importera, exportera, spara och ladda data
    5 Ämnen
  4. Strängar och regular expressions (regex)
    1 Ämne
  5. Bearbetning av data med dplyr
    12 Ämnen
  6. Visualisera och presentera
    14 Ämnen
  7. Explorerande och deskriptiva analyser
    6 Ämnen
  8. Prediktionsmodeller
    12 Ämnen
  9. Klassisk regressionsanalys
    8 Ämnen
  10. Machine learning (ML) och Artificiell Intelligens (AI)
    9 Ämnen
  11. Skapa prediktionsmodeller med Tidymodels
    6 Ämnen
  12. Hypotestester och epidemiologiska mått
    5 Ämnen
Avsnitt Progress
0% färdig

Val av statistisk test

Detta kapitel beskriver de viktigast statistiska testerna och deras användningsområde. Det finns statistiska tester för alla tänkbara typer av jämförelser. Varje statistiskt test tar avstamp i nollhypotesen. Om man jämför ett medelvärde för två grupper så innebär nollhypotesen att man utgår ifrån att det inte finns någon skillnad mellan grupperna. Om man undersöker om en prediktor (t ex blodtryck) har betydelse för ett utfallsmått (t ex död) med hjälp av regression så har man också en nollhypotes och den innebär att man utgår ifrån att blodtryck inte har något samband med död (dvs regressionskoefficienten för blodtryck = 0). För att bedöma vilket statistiskt test som är lämpligt måste man alltså beakta variablernas natur och samband. Man skiljer på kontinuerliga och kategoriska variabler.

En kategorisk variabel (även kallad nominal) har minst två kategorier (även kallat nivåer). Kön är en kategorisk variabel och det finns (oftast i kliniska studier) två nivåer, nämligen man och kvinna. Etnicitet är också en kategorisk variabel och där man exempelvis Sydamerikan, Svensk, Asiat, Nordamerikan etc finnas. I fallet med kön och etnicitet finns ingen inbördes ordning mellan kategorierna (dvs man kan inte ordna kategorierna i fallande eller stigande ordning på ett naturligt sätt). Det finns dock kategoriska variabler som har en naturlig ordning och en sådan variabel kallas ordinal. Exempel på en kategorisk variabel som är ordinal är utbildningsnivå, som kan kategorieras från låg, medel till hög utbildning. Vissa ordinala variabler är dessutom av typen intervall, vilket innebär att avståndet mellan de olika kategorierna är jämn. Vi kan exempelvis skapa inkomstkategorier (månadsinkomst) genom att skapa grupperna: 15000-20000, 20000-25000, 25000-30000 osv.

En kontinuerlig variabel är som regel ett mätvärde eller annan numerisk siffra. Ålder i år, kroppsvikt i kilo och avstånd i meter är samtliga kontinuerliga variabler. Ur en aspekt är den kontinuerliga variabeln lik en intervall-variabel, eftersom avståndet mellan varje siffra är lika stort. Faktum är att en intervall-variabel med ett stort antall nivåer kan betraktas som en kontinuerlig variabel.

Statistiska tester och regressionsmodeller bygger på matematiska antaganden. Testets eller modellens validitet är avhängig av att vissa antaganden är uppfyllda. Ett vanligt antagande är variabelns distribution, eftersom de flesta tester egentligen jämför distributioner. Att jämföra två gruppers medelvärde innebär egentligen att man jämför distributionerna.

Antaganden om normalfördelning för kontinuerliga variabler

T-test och ANOVA (analysis of variance) kräver inte att de värdena från de individuella observationerna i stickprovet skall vara normalfördelade. Däremot kräver dessa tester att själva medelvärdena skall vara normalfördelade, så till vida att om man tar många stickprov och beräknar medelvärde i varje så skall dessa medelvärden vara normalfördelade. Ett sätt att garantera att medelvärdena är normalfördelade är att undersöka om de individuella observationerna i stickprovet uppvisar en normalfördelning. Vidare kommer ändå alla medelvärden, oavsett den underliggande fördelningen, närma sig normalfördelning allteftersom stickprovets storlek ökar. Om man har >30 observationer kan man anta att normalfördelning föreligger. (För detaljer kan läsaren förkovra sig i central limit theorem).

För regression som baseras på OLS (ordinary least squares) så måste residualerna vara normalfördelade. Om både den beroende variabeln och prediktorerna är normalfördelade så garanterar det (i det närmaste) att residualerna är normalfördelade. Notera dock att varken den beroende variabeln eller prediktorerna måste vara normalfördelade för att residualerna skall bli det.

Val av statistiskt test: 3 variabler eller fler

graph TD V(3 variabler eller fler) ---> K1(Kontinuerlig beroende variabel) & K2(Kategorisk beroende variabel) K1 ---> ML(Multipel regression) K2 ---> Två(Beroende variabel med 2 kategorier) ---> LR(Logistisk regression) K2 ---> Tre(Beroende variabel med 3 kategorier eller fler) ---> MR(Multinomial logistisk regression)

Val av statistiskt test: 1 variabel

graph TD V(1 variabel) ---> Kategorisk & Kontinuerlig Kategorisk ---> Two1(2 grupper) ---> One(One-proportion test) Kategorisk ---> Two2(>2 grupper) ---> Ki(Chi-square goodness-of-fit test) Kontinuerlig ---> P1(Parametrisk) ---> X("One-sample students t-test") Kontinuerlig ---> P2(Icke parametrisk) ---> Y("One-sample Wilcoxon test")

Val av test: 2 kontinuerliga variabler

graph LR; TwoVar(2 variabler) TwoVar ---> TwoQuant(2 kvantitativa) ---> Parametrisk ---> Pear(Pearsons korrelation) TwoQuant(2 kvantitativa) ---> Icke-parametrisk ---> Spear(Spearmans Rank korrelation) TwoVar ---> 1Q1C(1 kontinuerlig och 1 kategorisk) ---> TwoGroups(Två grupper) ---> Paired1(Paired samples) ---> Parametric1(Parametrisk) ---> Stud1(Student's t test for paired samples) Paired1 ---> NParametric1(Icke-parametrisk) ---> Wilcox1(Wilcoxon signed rank test) TwoGroups ---> OS1(Oberoende samples) ---> Parametric2(Parametrisk) & NParametric2(Icke parametrisk) NParametric2 ---> MW1(Mann-Whitney U test) Parametric2 ---> EPV1(Equal population variances) & UPV1(Unequal population variances) EPV1 ---> Stud2(Students t-test for 2 independent samples) UPV1 ---> Welch2(Welchs t-test for 2 independent samples) 1Q1C ---> TreGrupper(>2 grupper) TreGrupper ---> OS(Oberoende samples) & PS(Paired samples) OS ---> NParametric3(Icke-parametrisk) ---> KW(Kruskal-Wallis test) OS ---> Parametric3(Parametrisk) ---> EPV2(Equal population variace) & UPV2(Unequal Population variance) EPV2 ---> OWA(One-way ANOVA) UPV2 ---> WA(Welch's ANOVA) PS ---> PO(Parametrisk) ---> RA(Repeated measures ANOVA) PS ---> IPO(Icke-parametrisk) ---> FT(Friedman test) TwoVar ---> TvåKvalitativa TvåKvalitativa ---> TyK(2 groups for each variable) TyK ---> PS3(Paired samples) ---> TPS(Two paired samples) & 3PO(3 paired samples or more) TPS ---> MT(McNemars test) 3PO ---> Coq(Cochran's Q test) TyK ---> OS3(Oberoende samples) OS3 ---> ef(expected frequencies <5) ---> Fisch(Fischers exact test) OS3 ---> ef2(expected frequencies >=5) ---> Chi(Chi-squared test of independence) TvåKvalitativa ---> YT(Mer än 2 grupper för minst 1 variabel) ---> Chi(Chi-squared test of independence)

One-sample t-test

Som namnet antyder används detta test om man har en grupp för vilken man vill göra en jämförelse. Testet används om man vill undersöka om ett medelvärde skiljer sig från ett hypotetiskt värde. Om man undersöker längd i en skolklass och noterar att medellängden i klassen är 180 cm så kan man undersöka om det medelvärdet skiljer sig från siffran 175 cm (som alltså är ett hypotetiskt värde).

I R används funktionen t.test för att genomföra one-sample t-test. Vi skall nu jämföra om medelåldern för lungcancerpatienter i ett klassiskt R-dataset skiljer sig från ett hypotetiskt värde:

R
# Installera paket med data
install.packages(&amp;amp;amp;amp;amp;amp;quot;survival&amp;amp;amp;amp;amp;amp;quot;)
library(survival)

# Aktivera tabell med patientdata
data(lung)

# Betrakta tabellen med patientdata
View(lung)

# Undersök medelåldern
mean(lung$age)

# Testa om medelåldern skiljer sig från hypotetiskt värde 60.
t.test(lung$age, mu = 60)

Vi erhåller ett P-värde på 0.0000642 vilket innebär att medelvärdet för patienterna skiljer sig från 60. One-sample t-test lämpar sig för normalfördelade variabler med interavall-skala.

One-sample median test

Detta test motsvarar ovanstående test men istället är det medianen som undersöks. I detta fall behöver vi endast anta att variabeln är på ordinal-skala. I R används funktionen wilcox.test för att genomföra one-sample median test. Exempel följer:

R
# Testa om median för ålder skiljer sig från 60
wilcox.test(lung$age, mu = 60)

Binomialt test

Binomialt test används för kategoriska variabler som har två nivåer. Testet kan avgöra om en andel som observeras i stickprovet skiljer sig från en hypotetisk andel. I R används funktionen prop.test för att genomföra binomialt test. I exemplet nedan skall vi undersöka om andelen kvinnor i samma dataset som tidigare (lung) är lika med 0.5 (dvs om kvinnor utgör hälften av alla patienterna).

R
# Med hjälp av funktionen ifelse skapar vi en ny variabel som kallas kvinna. Denna variabeln ställs till 1 om variabeln sex = 2 (kvinna), och annars ställs den till 0 (man).

lung$kvinna &lt;- ifelse(lung$sex==2, 1, 0)

# Nu skall vi testa om andelen kvinnor är 0.5 (dvs hälften är kvinnor)

prop.test(sum(lung$kvinna), length(lung$kvinna), p = 0.5)

Chi-square goodness of fit

Chi-square goodness of fit är en extension av det binomiala testet så till vida att vi här kan testa en variabel med fler än 2 kategorier. Vi kan alltså testa om fördelningen av cancertyp skiljer sig från ett hypotetiskt värde. Ponera att variabeln cancertyp har följande fyra nivåer: lungcancer, koloncancer, njurcancer och levercancer. Vår hypotes är att fördelningen mellan dessa fyra typer är jämn, så att vardera utgör 25%. Den förväntade (expected) värdet för varje kategori är alltså 25% (0.25). För att testa detta används funktionen chisq.test i R enligt följande:

R
# I detta exempel kommer observationerna från tabellen data och variabeln heter cancertyp.

# Vi kommer testa om varje cancertyp utgör lika stor andel av all cancer. Det finns fyra cancertyper i databasen, dvs varje typ utgör 25% enligt vår hypotes.

chisq.test(table(data$cancertyp), p = c(0.25, 0.25, 0.25, 0.25))

Independent samples t-test

Detta test används för att jämföra medelvärden i två grupper som är oberoende av varandra. Oberoende syftar till att grupperna inte får påverka varandra. Låt oss ta två exempel för att förtydliga detta:

  1. Om ett antal patienter vägs innan och efter kirurgisk behandling för fetma så har vi två värden som skall jämföras, nämligen vikten innan och vikten efter behandling. I detta fall är dock vikten innan och efter behandling beroende av varandra eftersom det är samma personer i båda distributionerna. I detta fall använd dependent samples t-test.
  2. Om vi vill jämföra längden på män och kvinnor på Göteborgs Universitet så har vi alltså två medelvärden som skall jämföras. Dessa medelvärden är dock inte beroende av varandra och då används independent samples t-test.

I samma dataset som tidigare jämför vi nu om män och kvinnor är lika gamla.

R
t.test(lung$age ~ lung$sex)

P-värdet blev 0.06394 vilket är större än 0.05 och därför kan vi inte med säkerhet säga att det är någon åldersskillnad. Vi gör ytterligare ett test där vi jämför kalorier i kosten.

R
t.test(lung$meal.cal ~ lung$sex)

I detta fall var P-värdet 0.01989 vilket indikerar att det finns en statistiskt signifikant skillnad i kalorier mellan män och kvinnor.

Wilcoxon-Mann-Whitney test

Detta test används i samma situation som independent samples t-test men skillnaden är att Wilcoxon-Mann-Whitney test inte förutsätter att variabeln är normalfördelad. Däremot förutsätter detta testet att variabeln är på ordinal skala. För att jämföra män och kvinnors ålder på samma vis så skrivs följande i R:

R
wilcox.test(lung$meal.cal ~ lung$sex)

Chi-square test (Chi-två test, χ2 test)

Chi-två test används för att undersöka två kategoriska variabler. Testet bygger på att man jämför observerade frekvenser (för varje variabels nivåer) och jämför med förväntade frekvenser. Man testar hypotesen att de observerade frekvenserna är (mer eller mindre) ekvivalent med de förväntade frekvenserna. Om vi, exempelvis, undersöker om det är lika många män och kvinnor som får hjärtinfarkt genom att använda variabeln kön som är dikotom (man eller kvinna) samt hjärtinfarkt (ja eller nej). Om nollhypotesen är att andelen män och kvinnor som får hjärtinfarkt är lika många så förväntar vi oss att observera lika många män och kvinnor i båda nivåerna för hjärtinfarkt.

Chi-två-testet kan illustreras med en tabell. Vi undersöker totalt 40 personer med hjärtinfarkt.

KönOE(O-E)2((O-E)2) / E
Man3220144144/20
Kvinna820144144/20
Summa4040 288/20=14,4

Värdet på χ2 är här 14.4. För att testa om detta är statistiskt signifikant måste vi titta i chi-två-tabell efter värdet 14.4 med 1 frihetsgrad. Antal frihetsgrader är kön-variabelns antal nivåer (=2) minus 1, dvs 2–1 vilket blir 1. I tabellen framgår det kritiska värdet för det aktuella χ2 och antal frihetsgrader; om χ2 är större än det kritiska värdet så förkastas nollhypotesen. Observera att all statistisk mjukvara gör dessa beräkningar automatiskt och returnerar ett P-värde för nollhypotesen. sist men inte minst skall nämnas att Chi-två-test förutsätter att det är minst 5 förväntade observationer finns i varje cell i korstabellen ovanför (Tabell 1). Om antalet personer i någon cell är <5 så bör Fisher's exact test användas istället.

Observera att de variabler som ingår i ett Chi-två test kan ha fler än två nivåer och det behöver inte finnas lika många nivåer i de båda variablerna.

I följande exempel undersöker vi om lika många män och kvinnor dog i lungcancer-studien:

R
chisq.test(table(lung$sex, lung$status))

Fisher's exac test

Fisher's exact test är ekvivalent med Chi-två test men används istället när någon cell innehåller färre än 5 förväntade observationer. Fisher's exat test kan användas oavsett hur få antalet förväntade observationer är. Motvsrande kod i R blir:

R
fisher.test(table(lung$sex, lung$status))

One-way ANOVA

One-way ANOVA (envägs variansanalys)

One-way ANOVA används när man har en kategorisk oberoende variabel (med två eller fler nivåer) och en kontinuerlig normalfördelad beroende variabel (på intervall-skala). Här jämförs alltså om fördelningen för den kontinuerliga variabeln är den samma för de olika nivåerna av den kategorisk variabeln. Exempelvis skulle vi kunna jämföra om kroppsvikten är samma för de olika etniska grupperna i en gymnasieskola.

I R kommer vi använda dataset "bladder" som också finns i survival-paketet. Vi laddar "bladder" genom kommandot "data(bladder)". Då laddas faktiskt tre varianter av "bladder", varav vi kommer använda "bladder1". I detta dataset kommer vi undersöka om initial tumörstorlek skiljer sig i relation till det slutliga utfallet. Tumörstorleken beskrivs med variabeln size som är en kontinuerlig variabel. Utfallet beskrivs med variabeln status där 0 = överlevde, 1 = återfall av cance, 2 = död i cancer och 3 = död annan orsak. Tumörstorlek kommer alltså jämföras i dessa fyra grupper.

R
data(bladder)
summary(aov(bladder1$size ~ bladder1$status))

P-värdet är 0.249 vilket innebär att vi inte kan förkasta nollhypotesen (som säger att det inte är någon skillnad i initial tumörstorlek). Således är tumörerna lika stora vid studiens start.

Kruskal Wallis test

Kruskal Wallis test används när man har en oberoende variabel med två eller fler nivåer och en beroende variabel som är ordinal-skala. Testet liknar envägs ANOVA men är icke-parametriskt, vilket innebär att den beroende variabeln inte behöver vara normalfördelad interval.

R
kruskal.test(data$beroende, data$oberoende)

Paired t-test (t-test för beroende mätningar)

Om man vill jämföra två värden som är beroende av varandra kan man använda paired t-test. Detta förutsätter att värdet som skall jämföras är normalfördelat. Värdena är som regel beroende av varandra om de är hämtade från samma individ, vilket är fallet vid mätning vid två tidpunkter. Det kan exempelvis vara mätning av kroppsvikt innan och efter en behandling för övervikt.

Följande R-kod är endast för att illustrera funktionen i R. De data som används är egentligen inte beroende av varandra.

R
# Variabeln kroppsvikt är kontinuerlig
# Variabeln mätningens_tidpunkt är en dikotom variabel som är "1" om det är mätvärdet innan behandling och "2" om det är värdet efter behandling
t.test(data$kroppsvikt, data$mätningens_tidpunkt, paired = TRUE)

Wilcoxon signed rank sum test

Detta är det icke-parametriska alternativet till paired t-test och används alltså när man inte kan förutsätta att den beroende variabeln är normalfördelad med interval. Testet förutsätter dock att variabeln är ordinal åtminstone.

R
wilcox.test(data$beroende_variabel, data$oberoende_variabel, paired = TRUE)

McNemar test

McNemars test används när man undersöker en beroende kategorisk variabel i två grupper som är relaterade. Test ä alltså analogt med paired t-test men den beroende variabeln är kategorisk och har två nivåer i detta fall. T ex kan du avgöra om andelen patienter som hade depression (ja/nej) innan och efter behandling med beteendeterapi skiljer sig.

Se exempel i R genom att skriva: ?mcnemar.test i konsolen.

One-way repeated measures ANOVA

Detta test motsvarar envägs ANOVA (one-way ANOVA) men i detta fall går det bra om samma individ bidrar med fler än 1 mätning (dvs det förekommer upprepade mätningar för samma individ(er). Den oberoende variabeln är alltså kategorisk med två eller fler nivåer. Den beroende variabeln är normalfördelad på intervall-skala. Vi rekommenderar att man istället för one-way repeated measures anova använder mixed models (random effects models) som är effektivare.

Korrelation

Detta har diskuterats i kapitlet om korrelation och regression.

Simple linjär samt multipel regression

Detta har diskuterats i kapitlet om simpel linjär regression samt multipel (linjär) regression.

Simpel logistisk regression och multipel logistisk regression

Detta har diskuterats i kapitlet om logistisk regression.

Analysis of covariance (ANCOVA)

ANCOVA är ekvivalent med ANOVA men i detta fall ingår, utöver en kategorisk prediktor, även en kontinuerlig prediktor. ANCOVA kan därför ersättas med multipel regression.

Referenser

Ovanstående är i mångt och mycket ett referat av IDREs guide till val av test.