Overzicht
Help! Statistiek! Doorlopende serie laagdrempelige lezingen, voor iedereen vrij toegankelijk.
- statistische programma’s
Doel: Informeren over statistiek in klinisch onderzoek.
- tips SPSS
Tijd:
- info over R, enkele voorbeelden
Derde woensdag in de maand, 12-13 uur
15 oktober: 19 november: 17 december: Sprekers:
“Van SPSS tot R” “Robuuste statistiek” “Causale relaties”
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.
Beoordelingscriteria : inhoud betrouwbaarheid gebruiksgemak ondersteuning beschikbaarheid
Statistiek is nodig bij operationaliseren van de vraag design van de studie (wijze van) verzamelen van data samenvatten/beschrijven, analyseren conclusies trekken
SPSS, Stata, SAS, Statistica, Excel, Minitab, S-Plus, R, …
Statistische programma’s 3
Excel: hoeveel is 1+1?
4
Excel: hoe is het mogelijk? Cel B2 is geformatteerd als text... Dat verklaart echter niet waarom “ + ” anders werkt dan “ SUM “…
!!! 5
Excel kan dit overigens wel signaleren: In Tools / Options / Error checking: “Number stored as text” aanvinken. 6
1
Fouten in berekeningen
Info over SPSS • Veelzijdig programma, UMCG en RUG licenties, gebruikt in onderwijs, veel gebruikers. Versies 14, 15, 16, (17) in omloop.
- Computerprogramma’s bevatten fouten. - Meeste fouten bij statistische verwerking van gegevens zijn echter toe te schrijven aan foutief gebruik.
• Oorspronelijk Statistical Package for Social Sciences. Draagt sporen van het main-frame verleden, met name in syntax.
“The good news is that statistical analysis is becoming easier and cheaper. The bad news is that statistical analysis is becoming easier and cheaper.”
Is niet overal beschikbaar - is duur.
Hofacker (Am J Physiol, 1983)
7
Voorbeelden SPSS gebruik
8
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
Histogram van lengtes van 211 moeders
Indelen in groepen naar lengte (2)
mother's height(cm) (Binned)
Frequency Valid
Percent
Valid Percent
Cumulative Percent
<= 167
57
27.0
27.0
27.0
168 - 170
53
25.1
25.1
52.1
171 - 175
60
28.4
28.4
80.6
176+
41
19.4
19.4
100.0
Total
211
100.0
100.0
Is dit een normale (Gausische) verdeling? Maak een Q-Q-plot; gebruik eventueel een toets…
Groepen kunnen niet altijd even groot gemaakt worden. 15
Niet-parametrische K-S test van normaliteit (1)
16
Niet-parametrische K-S- test van normaliteit (2) One-Sample Kolmogorov-Smirnov Test
> Analyze > Nonparametric tests > 1-Sample K-S…
mother's height(cm) 211
N Normal Parameters a,b
Mean Std. Deviation
Most Extreme Differences
Absolute
170.66 5.773 .067
Positive
.067
Negative
-.056
Kolmogorov-Smirnov Z
.970
Asymp. Sig. (2-tailed)
.304
niet significant, maar ...
a. Test distribution is Normal. b. Calculated from data. 17
18
3
Niet-parametrische K-S test van normaliteit (3)
Niet-parametrische K-S- test van normaliteit (4)
> Analyze > Descriptives Statistics > Explore … > Tests of Normality a
Kolmogorov-Smirnov mother's height(cm)
Statistic .067
df
Sig. .023
211
Shapiro-Wilk Statistic .985
df 211
Sig. .023
a. Lilliefors Significance Correction
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.
Syntax en syntax-file
Syntax-file syntax1.sps * Commentaar : voorbeeld syntax file
-
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.
20
GET
.
FILE='F:\HS\bweight.sav'.
FREQUENCIES VARIABLES=hm /HISTOGRAM
Let op de puntjes!
/FORMAT=NOTABLE /ORDER= ANALYSIS .
NPAR TESTS /K-S(NORMAL)= hm /MISSING ANALYSIS. EXAMINE VARIABLES=hm /PLOT BOXPLOT NPPLOT /STATISTICS NONE /MISSING LISTWISE
/COMPARE GROUP /CINTERVAL 95 /NOTOTAL.
21
S, S-Plus, R
22
R R: oorspronkelijk geschreven door Ross Ihaka and Robert Gentleman (Auckland, Nieuw Zeeland), in 1990‘s
- S is een statistische programmeer-taal - S-Plus is een commerciële implementatie van deze taal - R is een Open Source implementatie van S
Vanaf 1997: internationale “R-core” team (n ~ 15) - Belangrijke voordeel van beide pakketten is het gemak waarmee (nieuwe) statistische methoden ingebouwd kunnen worden.
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)
- 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. 23
24
4
Waar te vinden? Op: http://cran.r-project.org/
R 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.0
> 1+1
[1] 1.414214
0.0 -0.5
> sqrt(2)
sin(seq(0, 2 * pi, length = 100))
0.5
[1] 2
[1] 0 1 2 3 4 5
-1.0
> seq(0, 5, length=6) 0
20
40
60
80
100
Index
> plot( sin( seq(0, 2*pi, length=100) ) ) 27
28
Schat P-waarde door simulaties
Lilliefors-K-S test uit library nortest # inlezen van data (lengtes) in vector ht
>
nsample <- 1000
> ht <- read.table("k:\\hs\\htdata")[,1]
>
pp <- rep(NA,nsample)
> n <- length(ht)
>
for (i in 1:nsample) pp[i] <-
> n
+
# n=lengte van vector van lengtes
# NA=Not Available
lillie.test(rnorm(n,0,1))$p.value
[1] 211
>
hist(pp)
> lillie.test(ht)
>
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)
Histogram of pp 120
> c( mean(ht), sqrt(var(ht)) ) 5.773268
# gemiddelde en SD
100
[1] 170.658768
60
> ci2 <- mean(ht)+qnorm(0.975)*sqrt(var(ht)/n) > round( c(ci1,ci2), 1 )
40
Frequency
80
> ci1 <- mean(ht)-qnorm(0.975)*sqrt(var(ht)/n)
0
20
[1] 169.9 171.4
0.0
0.2
0.4
0.6
0.8
1.0
31
32
pp
Bepaal CI voor gemiddelde met bootstrap
Bepaal CI voor SD met bootstrap (SD=5,8)
> hh <- rep(NA,nsample)
> hh <- rep(NA,nsample)
> for (i in 1:nsample) hh[i] <-
> for (i in 1:nsample) hh[i] <-
+
+
mean( sample(ht,replace=TRUE) )
sqrt(var( sample(ht,replace=TRUE) ))
> round( quantile(hh,c(0.025,0.975)), 1)
> round( quantile(hh,c(0.025,0.975)), 1)
2.5% 97.5%
> 2.5% 97.5% 5.1
169.9 171.4
6.4
>
33
Voorbeeld grafiekje in R
Volgende Help! Statistiek! lezing:
Group B
1.0
1.0
0.9
0.9 score
score
Group A
34
0.8 0.7
woensdag 18 november 2008, 12-13 uur zaal 16, UMCG Onderwijs Centrum “Robuuste statistiek ”
0.8 0.7
0.6
0.6 4 6 8
12
time (months)
16
4 6 8
12
16
Handouts van deze presentatie komen te staan onder Courses op http://www.EpidemiologyGroningen.nl
time (months)
Analyseren: met mixed-effect-models analyse ...
35
36
6