Den ensidede variansanalysemodel (Statistisk
Model 6.2.3) analyseres i R
med funktionerne lm, summary og confint,
som er beskrevet i afsnit 5.4.
Modelformlen, der bruges, er
'x~G', hvor
G er en faktor, der deler data op i grupper, og x er
en vektor med responsværdierne. Se det skjulte punkt nedenfor. For at forstå parametertabellen er det vigtigt at
kende den parametrisering, som anvendes i beregningerne.
For modellen i 6.2.3, med k grupper,
faktorniveauerne 1,2,…,k
og tilhørende
middelværdiparametre μ1,…,μk, benyttes
i forbindelse med modelformlen 'x~G'
følgende parametrisering og navngivning.
Vi kan se, at i parametertabellen bruges intercept, svarende
til det første
niveau af faktoren, og derefter forskelle mellem parametre,
hvilket ofte vil være
af større interesse end parameterværdierne selv.
Det t-test, der står i parametertabellen
ud for et faktorniveau,
bliver således et test for at forskellen i parameterværdi er nul,
eller sagt på en anden måde et test for, at de to parameterværdier er
ens. På tilsvarende vis er konfidensintervallerne
for forskel i parameterværdier. (Bemærk iøvrigt, at i tilfældet
med to grupper vil analysen her betragte forskellen μ2−μ1,
hvorimod t.test fra afsnit 4.13
betragter μ1−μ2.)
I nedenstående kodevindue laves en analyse med lm,
hvor spredningen σ
er nul, hvorfor estimaterne bliver lig med de sande værdier af
parametrene. Kør kommandoerne, og sørg for at forstå output
i parametertabellen i forhold til de sande værdier af
μA,μB,μC og σ.
I output er Intercept=μA,GB=μB−μA og
GC=μC−μA. Vi kan også udtrykke dette omvendt:
μA=Intercept,μB=Intercept+GB og
μC=Intercept+GC. I parametriseringen
bruges en leksikografisk ordning af niveauerne i faktoren G, således at
intercept svarer til "A".
Prøv at lægge mere og mere støj på data ved at vælge
sigma=0.5, sigma=1 og sigma=2. Bemærk,
hvordan p-værdierne stiger i de tre t-test i parametertabellen.Hvis man vil ændre på, hvilken gruppe R bruger som Intercept, kan
man benytte funktionen relevel. Hvis kommandoen
G=relevel(G,"C") indsættes lige efter
definitionen af G i ovenstående kode, vil Intercept blive
μC. Prøv dette.
Hvis man ønsker, at lm skal bruge parametriseringen med
μ1,μ2,…,μk i stedet for forskelle i
parameterværdierne, kan dette gøres med kaldet
lm(x∼G-1). I modelformlen undertrykker "-1" brugen af
et intercept.
6.4.1 Test af modelreduktion i R
Vi vil generelt udtrykke os på den måde, at vi tester en
reduktion fra en model M1 til en model M2, hvis vi tester en
hypotese, der bringer os fra model M1 til model M2.
I dette afsnit vil model M1 være den
ensidede variansanalysemodel 6.2.3,
og model M2 er
modellen (6.2.1), hvor alle middelværdierne er ens.
For at beregne F-testet for denne reduktion skal man
benytte funktionen anova i R.
Input til denne er output fra to kald af estimationsfunktionen,
nemlig output fra analyse af model M1 og output fra analyse af
model M2. Hvis vi betegner de to output med
lmUD1 og lmUD2 bliver kaldet (bemærk, at
lmUD2 står før lmUD1)
anova(lmUD2,lmUD1)
I tilfældet med model M2 fra (6.2.1),
hvor alle observationerne har samme middelværdi, foregår analysen
med kaldet lm(x∼1). For at teste at
alle middelværdierne er ens, bliver kaldet til anova:
anova(lm(x∼1),lm(x∼G))
Output fra anova er en Testtabel. Denne har
2 rækker og 7 søjler. Strukturen er som følger.
12Res.Df−−RSS−−Df−Sum of Sq−F−Pr(>F)−
Søjlen RSS indeholder SSD(M) for de to modeller, og
Res.Df de tilhørende frihedsgrader.
Til beregning af F-testet skal vi bruge s2(M1,M2),
som fremkommer som (Sum of Sq)/Df, hvor
Df kan beregnes som differensen mellem de to værdier under
Res.Df, og Sum of Sq kan beregnes som differensen
mellem de to værdier under RSS (dette beskrives nøjere i
afsnit 6.7). Søjlen F indeholder F-teststørrelsen
s2(M1,M2)/s2(M1), og søjlen Pr(>F) angiver den
tilhørende p-værdi beregnet fra en
F(Df,Res.Df[2])-fordeling.
6.4.2 Analyse af data omkring metoder til håndvask
For datasættet beskrevet i starten af afsnit 6.2
lader vi bakti være bakterietallet for den i'te måling
og lader metodei være den tilhørende metode til
håndvask. Vi betragter Statistisk Model
6.2.3, her skrevet som
Bakti∼N(μmetodei,σ2),i=1,…,32,
hvor middelværdiparametrene og σ2 kan variere frit.
Kør følgende kode for at få lavet en parametertabel for modellen.
Eftersom niveauet "antibakspray" kommer først i en leksikografisk
ordning, er Intercept i parametertabellen
μ^antibakspray=37.50. Skønnet over forskellen
mellem at bruge antibakteriel sæbe (antisaebe) og antibakteriel spray
er μ^antisaebe−μ^antibakspray=55.00, som
står i rækken "metodeantisaebe". I samme række ses, at p-værdien
er 0.0067 for et t-test af, at forskellen i middelværdi er nul
(de to middelværdier er ens). Da p-værdien er langt under 0.05,
tyder data altså på en forskel i de to metoder til håndvask.
Hvis I erstatter "summary" med "confint", kan I se, at
95%-konfidensintervallet for forskel mellem de to middelværdier er
[16.5,93.5]. Dette er et bredt interval, hvilket afspejler, at
der kun er 8 observationer i hver gruppe og spredningen i bakterietallet
fra dag til dag er stort: skønnet over spredningen er
s(M1)=37.55. Parametertabellen indeholder tre t-test for forskel i middelværdier.
Hvis nu de tre p-værdier alle havde været 0.06, skulle vi så
konkludere, at data ikke strider mod at alle fire middelværdier er
ens? Svaret er nej, for eksempel kunne μ^2 ligge over
μ^1 og μ^3 kunne ligge under μ^1, og så ville
data tyde på en forskel mellem μ2 og μ3. For at teste
hypotesen om ens middelværdier
μantibakspray=μantisaebe=μsaebe=μvand,
benyttes kommandoen anova som vist i den følgende kode.
Beregn ud fra parametertabellen skøn over de fire middelværdier.
Kør så koden igen, hvor du tilføjer "-1" lige efter "metode" i
modelformlen for at kontrollere dine beregninger.Hvis vi gerne vil se forskellen mellem at bruge enten sæbe eller
at bruge antibakteriel sæbe, tilføjer vi kommandoen
metode=relevel(metode,"saebe") lige efter linjen, hvor
metode indskrives, således at "saebe" bliver brugt
som Intercept. Prøv dette. Er den antibakterielle sæbe
bedre end almindelig sæbe?
Fra output fra summary under indgangen metodeantisaebe ses,
at skøn over
forkellen μantisaebe−μsaebe er -13.5, og et
t-test, for hypotesen at denne forskel er nul, giver
en p-værdi på 0.48. Den observerede forskel er derfor ikke stor nok,
til at vi kan påvise en forskel i middelværdi.
6.4.3 Om brugen af lm og dataframes
Ofte indlæses data fra en csv-fil, og den indlæste struktur i
R er en dataframe. Vi kan danne variable i R
ud fra søjlerne i denne dataframe og bruge disse variable i kaldet af
lm. Dette har dog lidt karakter af "at gå over åen efter vand".
I stedet kan man i kaldet af lm bruge søjleoverskrifterne som
navne på variable, hvis man samtidigt tilføjer i kaldet, at data ligger
i den indlæste dataframe. Dette er vist i kodevinduet nedenfor,
hvor vi efterligner en indlæst dataframe ved at danne en dataframe ud
fra de indskrevne data.
I den første analyse betragtes alle data, hvorimod i den anden analyse
betragtes en delmængde opnået ved at bruge subset
kommandoen i R.