Help! Statistiek! Overzicht Doorlopende serie laagdrempelige lezingen, voor iedereen vrij toegankelijk. Doel: Informeren over statistiek in klinisch onderzoek. - statistische programma s - tips SPSS Tijd: Derde woensdag in de maand, 12-13 uur - info over R, enkele voorbeelden 15 oktober: Van SPSS tot R 19 november: Robuuste statistiek 17 december: Causale relaties Sprekers: Václav Fidler, Hans Burgerhof, Wendy Post, Sacha la Bastide DG Epidemiologie 2 Data, computers, statistiek Statistische programma s Data worden verzameld om bepaalde vragen te beantwoorden, zoals b.v. betreffende de preventie van OK-gerelateerde infecties. Statistiek is nodig bij - operationaliseren van de vraag - design van de studie - (wijze van) verzamelen van data - samenvatten/beschrijven, analyseren - conclusies trekken Beoordelingscriteria : - inhoud - betrouwbaarheid - gebruiksgemak - ondersteuning - beschikbaarheid SPSS, Stata, SAS, Statistica, Excel, Minitab, S-Plus, R, Statistische programma s 3 4 Excel: hoeveel is 1+1? Excel: hoe is het mogelijk? Cel B2 is geformatteerd als text... Dat verklaart echter niet waarom + anders werkt dan SUM!!! Excel kan dit overigens wel signaleren: In Tools / Options / Error checking: Number stored as text aanvinken. 5 6 1
Fouten in berekeningen - Computerprogramma s bevatten fouten. - Meeste fouten bij statistische verwerking van gegevens zijn echter toe te schrijven aan foutief gebruik. The good news is that statistical analysis is becoming easier and cheaper. The bad news is that statistical analysis is becoming easier and cheaper. Info over SPSS Veelzijdig programma, UMCG en RUG licenties, gebruikt in onderwijs, veel gebruikers. Versies 14, 15, 16, (17) in omloop. Oorspronelijk Statistical Package for Social Sciences. Draagt sporen van het main-frame verleden, met name in syntax. Is niet overal beschikbaar - is duur. Hofacker (Am J Physiol, 1983) 7 8 Voorbeelden SPSS gebruik Indelen in groepen naar lengte (1) - Visual binning - Toets van de normaliteit - Syntax files, gebruik van Paste > Transform > Visual Binning Enkele suggesties: - documenteer goed je data - bewaar een gecorrigeerde versie in een nieuw bestand - gebruik syntax-files (met commentaar), zowel voor aanpassingen van data als voor statistische analyses Voorbeeld: data van n = 211 moeders, o.a. hun lengte 9 10 11 12 2
13 14 Indelen in groepen naar lengte (2) Histogram van lengtes van 211 moeders Valid <= 167 168-170 171-175 176+ Total mother's height(cm) (Binned) Frequency Percent Valid Percent 57 27.0 27.0 27.0 53 25.1 25.1 52.1 60 28.4 28.4 80.6 41 19.4 19.4 100.0 211 100.0 100.0 Groepen kunnen niet altijd even groot gemaakt worden. Cumulative Percent Is dit een normale (Gausische) verdeling? Maak een Q-Q-plot; gebruik eventueel een toets 15 16 Niet-parametrische K-S test van normaliteit (1) Niet-parametrische K-S- test van normaliteit (2) > Analyze > Nonparametric tests > 1-Sample K-S One-Sample Kolmogorov-Smirnov Test mother's height(cm) N 211 Normal Parameters a,b Mean 170.66 Std. Deviation 5.773 Most Extreme Differences Kolmogorov-Smirnov Z Absolute Positive Negative.067.067 -.056.970 niet significant, maar... Asymp. Sig. (2-tailed).304 a. Test distribution is Normal. 17 b. Calculated from data. 18 3
Niet-parametrische K-S test van normaliteit (3) > Analyze > Descriptives Statistics > Explore > Niet-parametrische K-S- test van normaliteit (4) Tests of Normality mother's height(cm) a. Lilliefors Significance Correction Kolmogorov-Smirnov a Shapiro-Wilk Statistic df Sig. Statistic df Sig..067 211.023.985 211.023 Eerst P=0,304, nu P=0,023!!! Wat is er aan de hand? P=0,023 is de correcte P-waarde (Lilliefors K-S toets). 19 De andere KS-toets veronderstelt dat het gemiddelde en de standaardafwijking van de verdeling van tevoren bekend zijn, i.p.v. dat ze uit data geschat worden. 20 Syntax en syntax-file Syntax-file syntax1.sps - Opdrachten kunnen worden weggeschreven met Paste. - Syntax-file heeft extensie SPS. - Syntax-file is een text file. Het kan eenvoudig - aangepast worden en van commentaar voorzien. - Het is vaak handiger de syntax te bewaren in plaats van de output-file. * Commentaar : voorbeeld syntax file. GET FILE='F:\HS\bweight.sav'. FREQUENCIES VARIABLES=hm /FORMAT=NOTABLE /HISTOGRAM /ORDER= ANALYSIS. NPAR TESTS /K-S(NORMAL)= hm /MISSING ANALYSIS. EXAMINE VARIABLES=hm /PLOT BOXPLOT NPPLOT /COMPARE GROUP /STATISTICS NONE /CINTERVAL 95 /MISSING LISTWISE /NOTOTAL. Let op de puntjes! 21 22 S, S-Plus, R R - S is een statistische programmeer-taal - S-Plus is een commerciële implementatie van deze taal - R is een Open Source implementatie van S - Belangrijke voordeel van beide pakketten is het gemak waarmee (nieuwe) statistische methoden ingebouwd kunnen worden. - RUG en UMCG hebben S-Plus licentie. S-Plus is duur. - R is vrij te downloaden van internet. Het programma is ook beschikbaar via RUG netwerk. R: oorspronkelijk geschreven door Ross Ihaka and Robert Gentleman (Auckland, Nieuw Zeeland), in 1990 s Vanaf 1997: internationale R-core team (n ~ 15) Open Source, onderdeel van het GNU-project (o.a. Linux) - kan door iedereen vrij gebruikt worden - state-of-the-art methoden - kwaliteitscontrole! - efficiente bug tracking and fixing systeem (gebruikers) 23 24 4
R Waar te vinden? Op: http://cran.r-project.org/ R werkt anders dan je gewend bent van SPSS. Bij normaal gebruik worden de opdrachten ingetypt in plaats van selecteren met de muis. In R is alles een object. De data, de aanroep van een procedure, het resultaat daarvan. Op internet zijn goede tutorials voor R te vinden. Zie b.v: http://cran.r-project.org/doc/contrib/verzani-simpler.pdf Van R en S-Plus wordt wel weleens gezegd dat ze een steep learning curve hebben. 25 26 R als rekenmachientje > 1+1 [1] 2 > sqrt(2) [1] 1.414214 > seq(0, 5, length=6) [1] 0 1 2 3 4 5 sin(seq(0, 2 * pi, length = 100)) -1.0-0.5 0.0 0.5 1.0 0 20 40 60 80 100 Index > plot( sin( seq(0, 2*pi, length=100) ) ) 27 28 Lilliefors-K-S test uit library nortest # inlezen van data (lengtes) in vector ht > ht <- read.table("k:\\hs\\htdata")[,1] > n <- length(ht) > n # n=lengte van vector van lengtes [1] 211 > lillie.test(ht) Schat P-waarde door simulaties > nsample <- 1000 > pp <- rep(na,nsample) # NA=Not Available > for (i in 1:nsample) pp[i] <- + lillie.test(rnorm(n,0,1))$p.value > hist(pp) > mean( pp < lillie.test(ht)$p.value ) Lilliefors (Kolmogorov-Smirnov) normality test data: ht D = 0.0668, p-value = 0.02327 [1] 0.019 29 30 5
Verdeling van de gesimuleerde P-waarden Bepaal Confidence Interval voor het gemiddelde (1) Frequency 0 20 40 60 80 100 120 Histogram of pp > c( mean(ht), sqrt(var(ht)) ) [1] 170.658768 5.773268 # gemiddelde en SD > ci1 <- mean(ht)-qnorm(0.975)*sqrt(var(ht)/n) > ci2 <- mean(ht)+qnorm(0.975)*sqrt(var(ht)/n) > round( c(ci1,ci2), 1 ) [1] 169.9 171.4 0.0 0.2 0.4 0.6 0.8 1.0 pp 31 32 Bepaal CI voor gemiddelde met bootstrap Bepaal CI voor SD met bootstrap (SD=5,8) > hh <- rep(na,nsample) > for (i in 1:nsample) hh[i] <- + mean( sample(ht,replace=true) ) > round( quantile(hh,c(0.025,0.975)), 1) 2.5% 97.5% 169.9 171.4 > > hh <- rep(na,nsample) > for (i in 1:nsample) hh[i] <- + sqrt(var( sample(ht,replace=true) )) > round( quantile(hh,c(0.025,0.975)), 1) > 2.5% 97.5% 5.1 6.4 33 34 Voorbeeld grafiekje in R Volgende Help! Statistiek! lezing: Group A Group B score 1.0 0.9 0.8 0.7 0.6 score 1.0 0.9 0.8 0.7 0.6 woensdag 18 november 2008, 12-13 uur zaal 16, UMCG Onderwijs Centrum Robuuste statistiek 4 6 8 12 16 time (months) 4 6 8 12 16 time (months) Handouts van deze presentatie komen te staan onder Courses op http://www.epidemiologygroningen.nl Analyseren: met mixed-effect-models analyse... 35 36 6