Introduktion til R. Faculty of Health Sciences



Relaterede dokumenter
Introduktion til overlevelsesanalyse

Introduktion til overlevelsesanalyse

Introduktion til SPSS

Lineær og logistisk regression

Overlevelsesanalyse. Faculty of Health Sciences

Kommentarer til øvelser i basalkursus, 2. uge

Institut for Matematiske Fag Sandsynlighedsregning og Statistik 2. R opgaver

R syntaks. Installation af R

Introduktion til overlevelsesanalyse

Introduktion til R. March 8, Regne- og tegneprogrammet R kan frit downloades fra adressen. http : //mirrors.sunsite.dk.cran

1 Start og afslutning. Help.

Vi vil analysere effekten af rygning og alkohol på chancen for at blive gravid ved at benytte forskellige Cox regressions modeller.

HOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL

Faculty of Health Sciences. Logistisk regression: Kvantitative forklarende variable

Overlevelsesfunktion. Vi kalder S(t) for overlevelsesfunktionen.

R / RStudio. Intro til R / RStudio

Introduktion til overlevelsesanalyse

Indledning. På de følgende sider vises, primært i tegneserieform, lidt om mulighederne i PC-AXIS for Windows.

Øvelse 7: Aktuar-tabeller, Kaplan-Meier kurver og log-rank test

Dag 6: Interaktion. Overlevelsesanalyse

Statistik i GeoGebra

Kort intro til SAS. Efterår Janne Petersen Judith L Jacobsen Lene Theil Skovgaard

Statistik FSV 4. semester 2014 Holdundervisning Uge 1: 4. februar Introduktion til Stata

Øvelser til basalkursus, 2. uge

Program dag 2 (11. april 2011)

RESPONSE INSIGHT HURTIG BRUGERMANUAL 2018 ASPEKT R&D A/S VERSION JANUAR 2018

Klargøring af data til aflevering til DDA. Instruks

I dag. Statistisk analyse af en enkelt stikprøve: LR test og t-test, modelkontrol, R Sandsynlighedsregning og Statistik (SaSt)

Statistik kommandoer i Stata opdateret 16/ Erik Parner

Statistik kommandoer i Stata opdateret 22/ Erik Parner

Oversigt. 1 Gennemgående eksempel: Højde og vægt. 2 Korrelation. 3 Regressionsanalyse (kap 11) 4 Mindste kvadraters metode

MPH specialmodul Epidemiologi og Biostatistik

Stastistik og Databehandling på en TI-83

Statistiske Modeller 1: Kontingenstabeller i SAS

Kom godt i gang med I-bogen

Faculty of Health Sciences. Basal Statistik. Overlevelsesanalyse. Lene Theil Skovgaard. 12. marts 2018

Hvorfor SAS Kort intro til SAS

Basal Statistik - SPSS

For at få 8 linjer ud, skal dette specifiseres i kommandoen ved at sætte antal lig 8 n=8:

SAS formater i Danmarks Statistik

Statistik FSV 4. semester 2014 Øvelser Uge 2: 11. februar

Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010

1 Regressionsproblemet 2

Hjemmeopgave, efterår 2009

Mindste kvadraters tilpasning Prædiktion og residualer Estimation af betinget standardafvigelse Test for uafhængighed Konfidensinterval for hældning

Basal statistik for sundhedsvidenskabelige forskere, efterår 2014 Udleveret 30. september, afleveres senest ved øvelserne i uge 44 (

Forelæsning 11: Kapitel 11: Regressionsanalyse

Basal Statistik - SPSS

Fagets IT Introduktion til MATLAB

GIS. Guide til indlæsning af data i ArcGIS herunder KMS-data fra internettet

Naturvidenskabelig Bacheloruddannelse Forår 2006 Matematisk Modellering 1 Side 1

Opgave 1 Betragt to diskrete stokastiske variable X og Y. Antag at sandsynlighedsfunktionen p X for X er givet ved

Løsning til eksamensopgaven i Basal Biostatistik (J.nr.: 1050/06)

Vejledning til prototypen af RaConverter

Faculty of Health Sciences. Basal Statistik. Begreber. Parrede sammenligninger. Lene Theil Skovgaard. 6. september 2016

SÅDAN BRUGER DU REGNEARK INTRODUKTION

Morten Frydenberg 14. marts 2006

SPSS appendix SPSS APPENDIX. Box plots. Indlæsning. Faculty of Health Sciences. Basal Statistik: Sammenligning af grupper, Variansanalyse

Faculty of Health Sciences. SPSS appendix. Basal Statistik: Sammenligning af grupper, Variansanalyse. Lene Theil Skovgaard. 22.

SPSS appendix SPSS APPENDIX. Box plots. Indlæsning. Faculty of Health Sciences. Basal Statistik: Sammenligning af grupper, Variansanalyse

Introduktion Indtastning Funktioner Scripts Optimering. Matlab

Morten Frydenberg 26. april 2004

Undervisning i Dansk Palliativ Database

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje.

Klasseøvelser dag 2 Opgave 1

Løsning til eksaminen d. 14. december 2009

Fable Kom godt i gang

Bilag til Statistik i løb : Statistik og Microsoft Excel tastevejledning / af Lars Bo Kristensen

02101 Indledende Programmering Introduktion til Eclipse

Manual opdateret Oktober 2015 Copyright ABC Softwork Aps. Materialet må ikke gengives eller kopieres uden tilladelse. Download din gratis 30 dages

Multipel Lineær Regression

Basal statistik for lægevidenskabelige forskere, forår 2012 Udleveret 6.marts, afleveres senest ved øvelserne i uge 15 (

R E D C A P M A N U A L. Importér data til REDCap fra CSV-fil. Opbyg din eksisterende database i REDCap Version 1.0

Basal statistik for lægevidenskabelige forskere, forår 2014 Udleveret 4. marts, afleveres senest ved øvelserne i uge 13 (25.

MSI pakke til distribution af AutoPilot komponenter.

Statistik for Biokemikere Projekt

Kom godt i gang med Fable-robotten

Indstillinger. 1. Built-in viewer 2. Built-in viewer embedded 3. Ekstern viewer

Opgavebesvarelse, Basalkursus, uge 3

MPH specialmodul i biostatistik og epidemiologi SAS-øvelser vedr. case-control studie af malignt melanom.

Vejledning til opbygning af hjemmesider

Økonometri 1 Forår 2006 Ugeseddel 11

Introduktion til PCIM version 9.07

Det kunne godt se ud til at ikke-rygere er ældre. Spredningen ser ud til at være nogenlunde ens i de to grupper.

Analyse af binære responsvariable

Statistik Lektion 1. Introduktion Grundlæggende statistiske begreber Deskriptiv statistik

Produkt og marked - matematiske og statistiske metoder

Vi ønsker at konstruere normalområder for stofskiftet, som funktion af kropsvægten.

Man indlæser en såkaldt frequency-table i SAS ved følgende kommandoer:

Betjenings vejledning

Simpel Lineær Regression

Program. Modelkontrol og prædiktion. Multiple sammenligninger. Opgave 5.2: fosforkoncentration

Udleveret 1. oktober, afleveres senest ved øvelserne i uge 44 (29. oktober-1. november)

Løsning til opgave i logistisk regression

KORTLÆGNING AF DIGITIALISERINGS- BEHOV I DANMARK HUMANOMICS RESEARCH CENTER

Morten Frydenberg Biostatistik version dato:

Træningsaktiviteter dag 3

Modelkontrol i Faktor Modeller

Øvelser i epidemiologi og biostatistik, 6. april 2010 Baseline-informationer fra Ebeltoft datasættet Eksempel på besvarelse

Transkript:

Faculty of Health Sciences Introduktion til R Susanne Rosthøj Biostatistisk Afdeling Institut for Folkesundhedsvidenskab Københavns Universitet sr@biostat.ku.dk Kursushjemmeside: www.biostat.ku.dk/~sr/forskningsaar/survival2011

Statistikprogrammer De mest kendte / udbredte er SAS. Få har adgang til SAS (indenfor RH/regionH). SPSS. De fleste har adgang til SPSS, men man kan hurtigt komme til kort med standardversionen. Stata. R. Excel (kan meget lidt). 2 / 31

Hvorfor R? Fordele: 3 / 31 R er gratis. R er et open-source program. Vedligeholdes af en stor gruppe internationale forskere og opdateres løbende. Alle har mulighed for at lave pakker indeholdende specialfunktioner. Derfor er R hurtigere up-to-date og har i nogle tilfælde flere muligheder end kommercielle programmer. Flexibelt. Funktioner og kommandoer kan kombineres til nye funktioner og kommandoer. Grafik. Let at lave flotte grafer. Stor flexibilitet. Let at finde pakker og dokumentation på nettet. Kan man ikke selv løse sit problem findes R-help mailing liste (se https://stat.ethz.ch/mailman/listinfo/r-help).

Hvorfor fravælge R? Ulemper: Nogle funktioner kan være langsomme. Meget store datasæt går ikke (registerdata). Ikke altid veldokumenteret. Fejlmeddelelser kan være svære at forstå. Programmering i stedet for peg-og-klik (måske i virkeligheden en fordel). Der findes dog en brugervenlig grænseflade, R Commander, til det mest basale. 4 / 31

At komme i gang med R R kan downloades fra www.r-project.org. Installerer næsten sig selv. Lær mere om R: Peter Dalgaard: Introductory Statistics with R. En letlæselig introduktion til R er kapitel 1 i Applied R for the quantitative social scientist af R. Nieuwenhuis som kan hentes fra http://www.rensenieuwenhuis.nl/applied-r-manualfor-the-quantitative-social-scientist/ Læs dette kapitel til næste gang. Prøv evt selv at google Introduction to R (575.000.000 resultater!). 5 / 31

Hvordan arbejde med R? 6 / 31 R består af en konsol, hvor man kan skrive kommandoer og hvor output vises (avanceret lommeregner). Til at holde styr på og gemme kommandoer anbefales det at arbejde i et script -vindue Et script er en samling af kommandoer. Et nyt script laves via File-menuen -> New script. Scripts kan gemmes og åbnes gennem File-menuen. Ved markering af linier / kommandoer efterfulgt af Crtl+R kopieres disse linier til konsolvinduet og eksekveres. R ignorerer al tekst efter en # (nyttigt til forklaringer i scriptet). I konsolvinduet vises kommandoer i rødt, output i blåt. Bemærk: Hvis R går ned går scriptvinduet også ned - husk derfor at gemme regelmæssigt!

R som lommeregner R har alle standard funktioner indbygget: 3+2 3*2 3^2 log(3) pi cos(3) R skelner mellem store og små bogstaver. Pil op-tasten genkalder forrige kommando. R afsluttes med q(). Man kan da vælge at gemme alt i hukommelsen. Det kan hentes frem næste gang R åbnes under File -> Load workspace... 7 / 31

Variable og hukommelse Variable (objekter): Tal, data, output, etc. kan gemmes i hukommelsen ved <-. Eksempler: x <- c(1, 2, 3) y <- c(4, 5, 6) x + y # viser summen z <- x + y # gemmer summen i z z # viser z frugt<-c("banan","appelsin") frugt Hukommelse: Kommandoen ls() viser alle variable i hukommelsen. Variable kan slettes med rm(), e.g. rm(x,y) 8 / 31

Datastrukturer En vektor er en liste af elementer, f.eks. x<-1:10 y<-seq(1,5,by=1) Vi kan udvælge en del af en vektor med []: x[1] x[1:5] x[y] En matrix er en todimensionel liste, f.eks. a<-matrix(1:10,ncol=5,nrow=2,byrow=false) b<-matrix(1:10,ncol=5,nrow=2,byrow=true) Vi kan udvælge en del af matricen med []: a[1,1] a[2,4:5] 9 / 31

Datasæt Datasæt i R gemmes i en data frame: x1<-1:10 y1<-5*10:1 z1<-c(rep("pige",3),rep("dreng",7)) data<-data.frame(x1,y1,z1) Vi kan hente variablene i data framen: names(data) # hvad er variabelnavnene? head(data) # viser de foerste 6 linier tail(data) # viser de sidste 6 linier data$x1 data[,1] rm(x1,y1,z1) # sletter variable - nu ligger de i data x1 Vi kan gøre variablene i data framen globale: attach(data) x1 og fjerne dem fra hukommelsen igen: detach(data) x1 10 / 31

Omkodning af variable Vi kan regne videre på variable og definere nye: attach(data) w1<-x1+1.2*y1 w1 w1+z1 w1<-w1+1 Logiske operatorer &! og eller ej Relationer ==!= < <= > >= ens foskellig Vi kan vælge elementer ud which(y1>15) y1[y1>15]<-7 y1 11 / 31

Funktioner Vi kan regne videre på variable/objekter: x<-1:10 mean(x) sum(x) median(x) Nogle funktioner kræver flere argumenter: # Generer 100 observationer fra en standard normalfordeling w<-rnorm(100,0,1) Det er vigtigt at argumenterne optræder i den rigtige rækkefølge. Alternativt kan man specificere argumenterne w<-rnorm(n=100,mean=0,sd=1) og rækkefølgen er ligegyldig. Hvordan finder man ud af syntaksen? I konsollen tastes help(rnorm) eller args(rnorm). Hvordan finder man overhovedet funktionen? 12 / 31 Google! Evt R-commander.

R commander Der findes en peg-og-klik-pakke til R : R commander. Denne indeholder de mest basale metoder, men der findes også ekstra pakker (plug-ins) som giver adgang til andre metoder. Vi vil generelt fokusere på selv at skrive koden (pga. fleksibilitet), men I vil også få en kort introduktion til R commander. 13 / 31

Installering af pakker Kan enten gøres via menuen Packages -> Install Package(s)... eller ved kommandoen install.packages. Eksempel: Installering af R commander: install.packages("rcmdr") install.packages("rcmdrplugin.survival") Aktivering af installerede pakker: library(rcmdrplugin.survival) Pakkerne skal aktiveres hver gang R åbnes, men skal kun installeres en gang. 14 / 31

Hvordan ser et R-datasæt ud? En linie pr individ: time event female logwbc placebo 35 0 1 1.45 0 34 0 1 1.47 0 32 0 1 2.20 0 32 0 1 2.53 0 25 0 1 1.78 0 23 1 1 2.57 0 22 1 1 2.32 0.......... Rækker repræsenterer individer. Søjler repræsenterer variable (værdier). Manglende værdier repræsenteres med NA (Not Available). 15 / 31

Indlæsning af data Tekstfiler: Første række indeholder ofte variabelnavne. Søjlerne er adskilt af en indikator (, ; mellemrum tab). Indlæses i R med read.table(), read.csv(), read.delim(): Det er nyttigt at oprette et arbejdskatalog til sine filer: setwd("c:/xxx") (set working directory). Se indholdet af kataloget med dir(). data<-read.table("filnavn") # Kommasepareret fil data<-read.csv("filnavn") data<-read.table("filnavn",header=true, sep=",") # Tabulatorsepareret fil data<-read.delim("filnavn") data<-read.table("filnavn",header=true, sep="\t") 16 / 31

Datafiler kan i Excel gemmes i csv-format. Datafiler fra andre statistikprogrammer kan læses ind ved: library(foreign) data<-read.spss("filnavn") data<-read.dta("filnavn") # Stata-filer At indlæse data fra SAS kræver lidt krumspring. Ændring / tilføjelse af variabelnavne names(data) names(data)<-c("a","b","d") 17 / 31

Overlevelsesanalyse i R Overlevelsesanalyse i R laves med pakken survival. Denne pakke er en del af standardinstallationen, men skal stadig aktiveres med library(survival). Vi får brug for følgende funktioner: Surv : Laver survivalobjekter (=responsen). survfit : Estimerer KM-kurver. summary : Giver et print af KM-kurver. survdiff : Udfører LogRank-test. plot : Plotter KM-kurver. 18 / 31

Survivalobjekter Funktionerne i survival arbejder med survivalobjekter, som kombinerer levetiderne med censureringsoplysningerne. Survivalobjekter dannes med funktionen Surv og bruger to argumenter, Surv(time,event): time : Navnet på variablen med follow-up tid event : Status indikator event=true eller event=1 hvis observeret levetid event=false eller event=0 hvis censureret levetid. Survivalobjektet er responsen og bruges alene i andre funktioner. 19 / 31

surv > rdata<-read.table("c:/documents and Settings/Rdata/remissionData.dat > library(survival) header=t,sep=";") > head(rdata) time failure sex logwbc placebo 1 35 0 1 1.45 0 2 34 0 1 1.47 0 3 32 0 1 2.20 0 4 32 0 1 2.53 0 5 25 0 1 1.78 0 6 23 1 1 2.57 0 > rdata.treatment<-subset(rdata,placebo==0) > attach(rdata.treatment) > surv.treatment<-surv(time,event=failure) > surv.treatment [1] 35+ 34+ 32+ 32+ 25+ 23 22 20+ 19+ 17+ 16 13 11+ 10+ 10 9+ [20] 6 6 > > detach(rdata.treatment) 20 / 31

Kaplan-Meier estimatoren KM-estimatoren beregnes vha funktionen survfit > KM.treatment<-survfit(surv.treatment~1) > KM.treatment Call: survfit(formula = surv.treatment ~ 1) records n.max n.start events median 0.95LCL 0.95UCL 21 21 21 9 23 16 NA Her angiver 1 at vi vil have én KM-kurve baseret på alle patienterne (svarende til en gruppe). 21 / 31

Selve KM-estimaterne får vi ud vha summary: > summary(km.treatment) Call: survfit(formula = surv.treatment ~ 1) time n.risk n.event survival std.err lower 95% CI upper 95% CI 6 21 3 0.857 0.0764 0.720 1.000 7 17 1 0.807 0.0869 0.653 0.996 10 15 1 0.753 0.0963 0.586 0.968 13 12 1 0.690 0.1068 0.510 0.935 16 11 1 0.627 0.1141 0.439 0.896 22 7 1 0.538 0.1282 0.337 0.858 23 6 1 0.448 0.1346 0.249 0.807 22 / 31

Et plot af Kaplan-Meier estimatoren > plot(km.treatment) 0.0 0.2 0.4 0.6 0.8 1.0 0 5 10 15 20 25 30 35 Plot uden konfidensintervaller og censureringsmærker: plot(km.treatment,conf.int=f,mark.time=f) 23 / 31

At gemme et plot i R Et plot kan gemmes på flere måder: Højreklik på grafen. Der er mulighed for at gemme som postscript eller meta-fil. Som pdf. Før plot-koden anvendes kommandoen pdf( filnavn.pdf ). Plottet afsluttes med dev.off(). Eksempel: pdf("kmplot.pdf") plot(km.treatment) dev.off() Der findes også andre formater - brug google for at finde dem. 24 / 31

KM estimater for begge grupper på en gang Igen benyttes Surv sammen med survfit: > attach(rdata) > KM.byTreatment<-survfit(Surv(time,event=failure)~placebo) > KM.byTreatment Call: survfit(formula = Surv(time, event = failure) ~ placebo) records n.max n.start events median 0.95LCL 0.95UCL placebo=0 21 21 21 9 23 16 NA placebo=1 21 21 21 21 8 4 12 Her angiver ~placebo at KM-kurverne skal laves separat for hver behandlingsgruppe. 25 / 31

> summary(km.bytreatment) Call: survfit(formula = Surv(time, event = failure) ~ placebo) placebo=0 time n.risk n.event survival std.err lower 95% CI upper 95% CI 6 21 3 0.857 0.0764 0.720 1.000 7 17 1 0.807 0.0869 0.653 0.996 10 15 1 0.753 0.0963 0.586 0.968 13 12 1 0.690 0.1068 0.510 0.935 16 11 1 0.627 0.1141 0.439 0.896 22 7 1 0.538 0.1282 0.337 0.858 23 6 1 0.448 0.1346 0.249 0.807 placebo=1 time n.risk n.event survival std.err lower 95% CI upper 95% CI 1 21 2 0.9048 0.0641 0.78754 1.000 2 19 2 0.8095 0.0857 0.65785 0.996 3 17 1 0.7619 0.0929 0.59988 0.968 4 16 2 0.6667 0.1029 0.49268 0.902 5 14 2 0.5714 0.1080 0.39455 0.828 8 12 4 0.3810 0.1060 0.22085 0.657 11 8 2 0.2857 0.0986 0.14529 0.562 12 6 2 0.1905 0.0857 0.07887 0.460 15 4 1 0.1429 0.0764 0.05011 0.407 17 3 1 0.0952 0.0641 0.02549 0.356 22 2 1 0.0476 0.0465 0.00703 0.322 23 1 1 0.0000 NaN NA NA 26 / 31

Et plot af KM opdelt på behandlingsgruppe plot(km.bytreatment,xlab="tid (uger)",lty=1:2, col=c("black","grey"),lwd=2) legend(25, 1, c("behandling","placebo"),lty = 1:2, lwd=2, col=c("black","grey")) title("km-kurver for remissionsdata") Her er xlab=x-axis label, lty=line type, lwd=line width, col=color. KM kurver for remissionsdata 0.0 0.2 0.4 0.6 0.8 1.0 Behandling Placebo 0 5 10 15 20 25 30 35 Tid (uger) 27 / 31

LogRank-testet Sammenligning af placebo- med behandlingsgruppen foretages vha survdiff: > survdiff(surv(time,event=failure)~placebo) Call: survdiff(formula = Surv(time, event = failure) ~ placebo) N Observed Expected (O-E)^2/E (O-E)^2/V placebo=0 21 9 19.3 5.46 16.8 placebo=1 21 21 10.7 9.77 16.8 Chisq= 16.8 on 1 degrees of freedom, p= 4.17e-05 28 / 31

Øvelser I må gerne forsøge at bruge R commander. Hvis, så kig på den kode der genereres og prøv at forstå den. Lidt indledende gymnastik i R: 1. Indlæs remissionsdata fra Excel-filen remissiondata.xls på kursushjemmesiden. 2. Lav et histogram af logwbc. 3. Beregn median, gennemsnit og standardafvigelse for logwbc. Beregn selv et 95%-konfidensinterval for middelværdien. 4. Hvordan er fordelingen af køn? (Lav en tabel med table). 5. Hvordan er fordelingen af køn på de to behandlinger? Er der forskel på antallet af kvinder i de to grupper? (Lav et χ 2 -test). 6. Sammenlign logwbc for placebogruppen med logwbc for behandlingsgruppen - er der forskel? Er det vigtigt? 29 / 31

Overlevelsesanalyse i R: Remissionsdata: 1. Genskab KM-kurven for hver behandlingsgruppe for sig. Tilføj et 95%-konfidensinterval baseret på log(-log)-transformationen. 2. Genskab plottet indeholdende begge KM-kurver. 3. Udfør LogRank-testet. 4. Sammenlign mænd og kvinder mht. overlevelse. 5. Lav en ny variabel, som inddeler logwbc i høj / lav. Er der forskel på overlevelsen i disse to grupper? Lav en tilsvarende undersøgelse, hvor logwbc er inddelt i tre grupper lav / mellem / høj. Hvad ser vi? 30 / 31

Maligne melanomer: 1. Et datasæt om maligne melanomer er tilgængeligt i pakken timereg. Installér og aktivér pakken. Datasættet melanoma gøres tilgængeligt med kommandoen data(melanoma). 2. Dan et overblik over data med tabeller og histogrammer. Prøv at finde info på nettet om dette datasæt - hvordan skal status-variablen forstås? 3. Vi vil fokusere på død pga melanomer, dvs. død af andre årsager skal betragtes som censurering. Er der forskel på risikoen for død af maligne melanomer for mænd og kvinder? Hvori består forskellen? 4. Undersøg om andre variable kan have en betydning. 31 / 31