Script

Werbung
Einführung in die Statistik mit R
Landau 12.3. – 15.3.2007
Ralf Schäfer
Kaarina Foit
Helmholtz-Zentrum für Umweltforschung- UFZ
Permoserstraße 15
04318 Leipzig
Tel. 0341 – 235 2120
e-mail:
[email protected]
[email protected]
Inhaltsverzeichnis
1.
2.
3.
4.
Erläuterung einiger Fachbegriffe ........................................................................................ 4
Daten einlesen mit R ......................................................................................................... 11
Datenzugriff ...................................................................................................................... 12
Charakterisierung von Stichproben ................................................................................... 13
4.1. Erster Datenüberblick ................................................................................................. 14
4.2. Mittelwerte ................................................................................................................. 16
4.3. Varianz ....................................................................................................................... 17
4.4. Freiheitsgrade ............................................................................................................. 19
4.5. Standardfehler und Vertrauensbereich ....................................................................... 20
4.5.1. Standardfehler des Mittelwerts............................................................................ 20
4.5.2. Konfidenzintervall / Vertrauensbereich des Mittelwerts .................................... 21
5. Theoretische Verteilungen ................................................................................................ 25
5.1. Die Normalverteilung ................................................................................................ 27
5.2. Z-Transformation ....................................................................................................... 28
5.3. Liegt Normalverteilung vor? ...................................................................................... 29
5.4. Transformation zur Normalverteilung ....................................................................... 31
6. Vergleich zweier Stichproben ........................................................................................... 32
6.1. Prüfung der Voraussetzung für parametrische Tests.................................................. 33
6.1.1. Normalverteilung ................................................................................................ 33
6.1.2. Gleichheit der Varianz / Varianzhomogenität ..................................................... 33
6.2. Student’s t-test ............................................................................................................ 34
6.3. Wilcoxon Rangsummentest........................................................................................ 36
7. Statistische Modellierung .................................................................................................. 37
8. Das Nullmodell ................................................................................................................. 41
9. Varianzanalyse / Anova (Analysis of Variance) ............................................................... 42
9.1. Einfaktorielle ANOVA (one-way Anova) ................................................................. 43
9.2. A Priori Kontraste ...................................................................................................... 47
9.3. A posteriori Kontraste (Aggregierung nicht-signifikanter Faktorstufen) .................. 48
9.4. Kontraste .................................................................................................................... 50
9.5. Multipler Vergleiche .................................................................................................. 52
9.6. Zwei- bzw. Mehrfaktorielle ANOVA ........................................................................ 55
10. Regression ........................................................................................................................ 57
10.1. Klassische lineare Regression .................................................................................. 57
10.1.1. Standardfehler bei der Regression..................................................................... 60
10.2. Weitere lineare Regressionen: .................................................................................. 61
10.2.1. Polynomiale Regression: ................................................................................... 61
10.2.2. Linearisierbare Regressionsfunktionen ............................................................. 61
Nichtlineare Regression ....................................................................................................... 65
10.3. Multiple Regression ................................................................................................. 66
10.3.1. Grafische Voruntersuchungen ........................................................................... 66
10.3.2. Modellierung ..................................................................................................... 68
11. ANCOVA – Analysis of Covariance ............................................................................... 71
12. Sammlung wichtiger Befehle ........................................................................................... 76
2
vorliegendes Skript enthält Beispiele, Übersichten etc. aus folgenden Büchern:
Crawley, M. J. (2005) Statistics: An introduction in using R. Chichester, John Wiley.
Crawley, M. J. (2002) Statistical Computing: An Introduction to Data Analysis using S-PLUS.
Chichester, John Wiley.
Lozan J. L. & Kausch H. (2004) Angewandte Statistik für Naturwissenschaftler.
Hambur,Wissenschaftliche Auswertungen.
3
1.
Erläuterung einiger Fachbegriffe
(aus: Lozan JL & Kausch H: „Angewandte Statistik für Naturwissenschaftler“,
Wissenschaftliche Auswertungen 2004, Auflage 3)
4
5
6
7
8
9
10
2.
Daten einlesen mit R
Normalfall: Daten sind in einer Exceltabelle
Schritt 1:
Datensatz kontrollieren:
je Zeile - ein Messobjekt!
Schritt 2:
Tabellenblatt speichern unter
Text Tabstopp-getrennt (*.txt)
Hinweise ignorieren:
(Der ausgewählte Dateityp unterstützt keine Arbeitsmappen, die mehrere Blätter enthalten…
*.txt kann Merkmale enthalten…)
Schritt 3:
R öffnen
Neues Dokument öffnen
Tabelle/Datei einlesen mit
dat <- read.table(“c:\\temp\\yvalues.txt”, dec=",",header=T)
oder
dat <- read.table(“c:/temp/yvalues.txt”, dec=",", header=T)
Befehle werden ausgelöst durch:
Cursor in Befehlszeile positionieren oder Befehlszeile(n) markieren und „Crtl + r“
Typische Anfängerfehler:
1. Deutsche Excel-Version verwendet Komma als Dezimalzeichen (statt Punkt wie in R)
->
Daten einlesen mit dec=“,“ (s.o.)
2. Überschriften der Spalten enthalten Leerzeichen/Umlaute/Sonderzeichen
->
Leerzeichen können durch „.“ oder „_“ersetzt werden, generell auf kurze und
prägnante Variablennamen achten
Hat alles geklappt??
Überprüfung in R
Name
attach(df)
names(df)
Datensatz erscheint in der Konsole
über die Variablennamen kann auf die Daten zugegriffen werden
Variablennamen erscheinen
11
3.
Datenzugriff
verwendete Abkürzungen im Folgenden:
Name der geladenen Datentabelle/dataframe = df
Namen der Variablen / Spaltenüberschriften = VarX, VarY
Datenzugriff auf die Datentabelle/dataframe
allgemein: wenn die Datentabelle mit dem Befehl attach() angehängt ist (s.o.), kann auf
Variablen direkt mit ihrem Namen zugegriffen werden. Variablen von nicht angehängten
Tabellen erreicht man mit der Verknüpfung $, also z.B. df$VarX.
df
df [Zeilen, Spalten]
gesamte Datentabelle wird angezeigt
allgemeine Formulierung des Datenzugriffs:
mit der ersten Position werden die Zeilen eingeschränkt, mit
der zweiten Position die Spalten; einfach mal ausprobieren!!
Beispiele:
df [2:3,1:3]
df [2,1]
df [c(1,3,5),1]
df [ , “VarX“]
df [VarX > 3 & VarY < 100, ]
df [order(df[,1]),]
df [rev(order(df[,1])),]
Zeilen 2 bis 3 und Spalten 1 bis 3
nur eine Zelle/Messwert: Zeile 2, Spalte1
Spalte 1 mit den Zeilen 1, 3 und 5
alle Zeilen der Variablen mit dem Namen „VarX“
alle Spalten, aber nur die Zeilen mit Messwerten der
Variablen VarX > 3 und der Variablen VarY < 100
df wird nach Spalte 1 aufwärts sortiert
df wird nach Spalte 1 abwärts sortiert
alle Vergleiche
Relational Operators
Logical Operators
>
<
<=
<=
==
!=
& (=AND)
| (=OR)
! (=NOT)
größer als
kleiner als
größer gleich als
kleiner gleich als
gleich
nicht gleich
und
oder
nicht
weitere Befehle:
VarX[2]
VarX[-1]
sort(VarX)
Zugriff auf die Variablenposition 2
Entfernen der Variablenposition 1
Variablenwerte werden aufsteigend sortiert
sum(VarX)
length(VarX)
sample (VarX,k,replace=T)
which(VarX>10)
Summe der Variablenwerte
Anzahl der Variablenwerte
Stichprobe der Variablen X mit n=k und mit Ersetzen
Position aller Variablenwerte, die größer als 10 sind
12
.
4.
Charakterisierung von Stichproben
13
4.1. Erster Datenüberblick
summary(dat)
m<- dat[sex==0,“size“]
erster statistischer Überblick über die Daten
wir erzeugen einen Subset
plot (m, ylab“Körpergröße der Männer in cm“)
Abb. 1a: Streudiagramm der
Körpergröße der Männer.
X-Achse: Indices der
Messwerte (= Reihenfolge der
Datenaufnahme).
Abb. 1b: Streudiagramm zum
gleichen Datensatz mit
eingefügtem Ausreißer.
Ausreißer hier selbst erzeugt
mit m[20]<-500.
(Messwert vorher: 182.7)
Leichte Aufdeckung von Ausreißern:
Identifizierung der Position mit beispielsweise
which (m>400).
Ausreißer-Regel:
Ausreißer sind z.B. Messfehler, Beurteilungsfehler, Rechenfehler oder pathologische Fälle im
Untersuchungsmaterial. Faustregel: Bei mindestens 10 Einzelwerten darf ein Wert verworfen
werden, der außerhalb des Bereichs x = ± 4sd liegt (vgl. Kapitel 4.3.). Regel ist umstritten
und sollte bei Anwendung im Text erwähnt werden.
14
boxplot (m, ylab = “Körpergröße der Männer in cm“)
Abb. 2: Box-Whisker-Plot („Kiste mit Schnurrhaaren“ ). Die Daten sind ihrer Lage geviertelt.
Die Trennpunkte heißen Quartile. Punkte markieren eventuelle Ausreißer. Hier handelt es
sich allerdings um keinen Ausreißer, der Mensch ist so groß! Anhand von Boxplot lässt sich
auch abschätzen, ob Normalverteilung vorliegt (sind die Quartile gleichmäßig verteilt?).
hist(m, xlab = "Körpergröße der Männer in cm",ylab=“Häufigkeit“,main = "")
Abb. 3: Histogramm, mit
entsprechenden Klassen,
Klassengrenzen, Klassenmitte.
Zum Vergleich: Verlauf der
Normalverteilung (durchgezogene
Linie), parametrisiert mit unseren
Messwerten (Erzeugung s.
Kapitel 5.2.).
Grafische Darstellung der Verteilung.
übliche Frage: Liegt Normalverteilung vor? (Näheres im Kapitel 5).
Häufigste Klasse entspricht etwa dem Modalwert (s.u.)
Schiefe (scew):
 sind rechts vom Modalwert mehr Balken: linkssteile Schiefe / positive Schiefe
 sind links vom Modalwert mehr Balken: rechtssteile Schiefe / negative Schiefe
Exzess (Wölbung oder Kurtosis):
 liegt das Maximum über der Normalverteilung: positiver Exzess
 liegt das Maximum unter der Normalverteilung: negativer Exzess
15
4.2. Mittelwerte
Eingabe in R
arithmetischer Mittelwert
Am häufigsten verwendetes Maß.
Zentralwert / Median
Verwendet bei asymmetrischen
Verteilungen, Bonitierungswerte,
Halbwertszeiten radioaktiver Substanzen
etc., insbesondere bei zu kleinen
Stichproben, da diese meist schief verteilt
sind.
x
x
i
n
Der Wert, der die
aufsteigend sortierte
Stichprobe halbiert.
Dichtemittel / Modalwert
z.B. bei nominalen Daten (wie
Schulnoten) und mehrgipfelige
Verteilungen (umfangreiche Stichprobe
notwendig).
Der Wert, der in einer
gipfeligen Verteilung am
häufigsten vorkommt.
geometrische Mittelwert
bei natürlichen Wachstums- und
Absterbevorgängen (nichtlineare
Abhängigkeit von der Zeit)
G  n x1  x 2 ...  x n
mean (Var)
median (Var)
Aufgaben:
1. Quantifizier für unser Beispiel die Mittelwerte.
2. Erstelle dieselben Grafen für die Körpergröße der Frauen.
3. Lass dir die Grafen parallel darstellen mit dem Befehl par(mfrow=c(Zeilen, Spalten)).
16
4.3. Varianz
Bisher wichtige und intuitive Kenngröße: Mittelwerte.
Genauso wichtig: wie stark streuen die Messwerte um den Mittelwert??
Abb. 4: Streuung der
Messwerte (Punkte) um den
Mittelwert (Linie).
Wofür brauche ich eine Kenngröße für die Streuung = Varianz?
1. Zur Berechnung von Kenngrößen wie Standardfehler und Vertrauensbereich (s. Kap. 4.5).
2. Für so gut wie alles was noch kommen wird!!!
Denn wir werden mit statistischen Modellen die Daten abbilden, und die Frage wird immer
lauten: wie gut passt das Modell an die Daten an und wie stark streuen die Messwerte um die
Modellwerte (= Restvarianz / SSE), s. Kapitel 7.
Einschub: die for-Schleife in R
zur Erstellung der Grafik s.o.
plot (m)
abline(mean(m),0)
for (i in 1:25)
{
lines(c(i,i),c(mean(m),m[i]))
}
Zähler i zählt hoch von 1 bis 25.
Für jedes i wird der Befehl innerhalb der geschweiften Klammer ausgeführt.
17
Entwicklung der Kenngröße Varianz:
 ( y  y)  0
nahe liegend, aber geht leider nicht:
Differenzen Messwert – Mittelwert aufsummiert ergibt 0
(
Lösung I: Absolutwerte der Differenzen verwenden, sehr rechenaufwändig,
allerdings heutzutage kein Problem mehr und diese Lösung wird auch
verwendet.
yy )
y  y
2
Lösung II: Differenzen werden quadriert. Das ist weniger
rechenaufwändig, da es eine Rechenkurzform gibt (s.u.).
= Sum of squares / SSQ
 y )
2
(Kurzform:
y
2

n
 SSQ ist allerdings noch abhängig vom Stichprobenumfang
Die bisherige Kenngröße
(je mehr Messwerte desto größer ist SSQ), daher wird jetzt noch über den Stichprobenumfang
gemittelt
y  y 
2
Varianz  s2 
Standardabweichung =
n 1
Varianz

Befehle im Zusammenhang mit der Streuung
var(Var)
sd(Var)
min(Var)
max(Var)
range(Var)
diff(range(Var))
18
Varianz
Standardabweichung
kleinster Variablenwert
größter Variablenwert
kleinster und größter Variablenwert
Spannbreite des Range
4.4. Freiheitsgrade
Warum wird bei der Varianz durch „n-1“ geteilt und nicht einfach durch „n“???
Beispiel:
wir haben eine Stichprobe von 5 Messwerten
wir wissen: der Mittelwert ist 4
folgende Messwerte sind dir bekannt:
2
4
7
0
?
wie lautet Messwert Nr. 5 ??
19
4.5. Standardfehler und Vertrauensbereich
Der errechnete arithmetische Mittelwert ist nur eine Schätzung für den wahren (unbekannten)
Mittelwert der Grundgesamtheit. Es gibt verschiedene Möglichkeiten, die Abweichung des x
(=arithmetischer Mittelwert) von μ (=Mittelwert der Grundgesamtheit) anzugeben.
4.5.1. Standardfehler des Mittelwerts
SE y 
s2
n
je größer die Varianz (Streuung), desto größer die Unsicherheit
je größer die Stichprobe, desto kleiner die Unsicherheit
Davon die Wurzel √, damit Standardfehler und Mittelwert die gleiche Einheit haben
(ansonsten wäre durch die Varianz s^2 die Einheit des Standardfehlers quadriert).
Eingabe in R
allgemein:
sqrt(var(Messwerte)/n)
Beispiel:
sqrt(var(m)/25)
im Text ausgedrückt mit
Die mittlere Körpergröße der Männer beträgt 186,6 ± 1,15 cm (1 s.e., n=25).
20
4.5.2. Konfidenzintervall / Vertrauensbereich des Mittelwerts
I. Parametrische Ermittlung
Der Vertrauensbereich gibt das Intervall an, das den wahren Mittelwerts μ mit einer
bestimmten Wahrscheinlichkeit einschließt. D.h. bei wiederholter Beprobung fallen die
Mittelwerte der neuen Stichproben mit festgelegter Wahrscheinlichkeit in das berechnete
Intervall. Bei der parametrischen Ermittlung wird dabei vorausgesetzt, dass x normalverteilt
ist.
Je größer das Vertrauen / Konfidenz / Wahrscheinlichkeitswert, desto größer das Intervall.
Ein Bereich mit 100%iger Wahrscheinlichkeit wäre -∞ bis +∞. Völlig sinnfrei.
Üblich: Berechnung des Konfidenzintervalls in dem mit einer Wahrscheinlichkeit von 95%
alle berechneten Mittelwerte liegen.
Stichprobenumfang < 30
Stichprobenumfang > 30
Konfidenzintervall (CI)
= Quantil der t-Verteilg × Standardfehler
Konfidenzintervall (CI)
= Quantil der Normalverteilg ×
Standardfehler
CI95%  t  0.025, d . f .  9 
s2
n
CI 95%  n  0.025
s2
n
in R:
in R:
qt(c(.025,.975),25)*sqrt(var(m)/25)
qnorm(c(.025,.975))*sqrt(var(size)/50)
im Text ausgedrückt mit
Die mittlere Körpergröße der Männer beträgt 186,6 ± 2,25 cm (95% C.I., n =25).
21
Warum berechne ich die Quantile der Normalverteilung für die Wahrscheinlichkeiten
von 2.5% (qnorm(.025)) und 97.5% (qnorm(.975)), wenn ich den 95%-igen
Vertrauensbereich ermitteln möchte?
Abb. 5: Die Quantile (orange senkrechte Linie) zu den Wahrscheinlichkeiten (graue Fläche unter der
Glockenkurve der Normalverteilung) von 97.5% (Abb. links), 2.5% (Abb. mitte) sowie 95%.
Der mittlere Wertebereich von 95% ergibt sich, wenn man die Wahrscheinlichkeiten
(=Flächen) von 2.5% von 97.5% abzieht.
Warum verwende ich bei kleinen Stichprobenumfängen die Student’s t-Verteilung statt
der Normalverteilung??
Abb. 6: Normalverteilung (durchgezogene
Linie) und t-Verteilung (gestrichelte Line)
für kleine Stichprobe (FG = 3) im Vergleich.
Die Quantile, die den mittleren Wertebereich
von 95% einschließen (orange senkrechte
Line) verschieben sich nach außen (vgl. dazu
Abb. 5 rechts).
Student’s t-Verteilung berücksichtigt den Stichprobenumfang!!
Bei großen Stichprobenumfängen sind Standardnormalverteilung und Student’s t-Verteilung
nahezu identisch. Bei kleinen Stichprobenumfängen (hier FG = 3) ist die t-Verteilung flacher
als die Normalverteilung und hat dafür dickere Enden.
22
II. Nicht-parametrische Ermittlung durch Bootstrapping
„pulling yourself up by your own bootlaces“
= „something for nothing“
Ich erzeuge von meiner Stichprobe neue Stichproben (mit zurücklegen = replace) und
berechne die dazugehörigen Mittelwerte. Im Anschluss ermittel ich, welche Quantile/Grenzen
die mittleren 95% der Mittelwerte einschließen. Vorteil dieser Methode: Die Schiefe einer
Verteilung wird in der Berechnung des Konfidenzintervalls berücksichtigt und eine
Normalverteilung ist nicht vorausgesetzt!
a<-numeric(10000)
for (i in 1:10000)
{
a[i]=mean(sample(m,25,replace=T))
}
hist(a)
quantile (a,c(0.025,0.975))
im Text wird das Konfidenzintervall ausgedrückt mit
Die mittlere Körpergröße der Männer beträgt 185cm (mit bootstrap 95% CI von 183 –
187cm).
Aufgabe:
1. Erläutere die Programmierschritte des Bootstrapping.
2. Berechne Standardfehler, Konfidenzintervall parametrisch und Konfidenzintervall durch
Bootstrapping für die Frauen und für die Gewichte. Vergleiche die Werte tabellarisch.
23
24
5.
Theoretische Verteilungen
Normalverteilung
Wird im folgenden Kapitel ausführlich behandelt.
2 weitere wichtige Verteilungen:
Poisson-Verteilung
bei Zählungen in einer bestimmten und immer gleichen Einheit (Zeit, Raum, Länge,
Volumen, Fläche)
Beispiele
 Anzahl der Blätter an einer Pflanze
 Anzahl der Mutationen je Zelle nach intensiver Bestrahlung
Eigenschaften der Verteilung
 häufiges Vorkommen des Messwerts NULL,
 keine negativen Werte möglich
 diskrete Werte (es wird gezählt, also nur ganze Zahlen)
 kleinen Mittelwert: unsymmetrische Verteilung mit linkssteiler (positiver) Schiefe
 großem Mittelwert: ähnlich Normalverteilung
 nur Wahrscheinlichkeit p (keine Informationen über Misserfolg wie in der
Binomialverteilung)
 Varianz steigt mit Mittelwert an
Schwierigkeit
linearen Regressionmethoden sind nicht möglich, da
 das lineare Modell auch negative Werte vorhersagt
 keine Gleichheit der Varianz (s.o.) und Residuen nicht normalverteilt
 NULLEN sind schwierig zu behandeln bei Transformationen
Lösung in R
glm (gesprochen „glims“) mit family = poisson)
model<-glm(Mutationen<-Bestrahlung, poisson )
weitere Behandlung wie bei linearer Regression
25
Binomialverteilung
Zufallsexperimente: tritt ein Ergebnis ein oder nicht
Das heißt Informationen über 2 Wahrscheinlichkeiten: Erfolg (p) und Misserfolg (q=1-p).
Je nach der Wahrscheinlichkeit linksschief (kleines p) oder rechtsschief (großes p)
Beispiele
 prozentualer Anteil von Mortalität (tot - lebend)
 Infektionsrate einer Krankheit (gesund - krank)
Eigenschaften
 Das heißt Informationen über 2 Wahrscheinlichkeiten: Erfolg (p) und Misserfolg
(q=1-p).
 Je nach der Wahrscheinlichkeit linksschief (kleines p) oder rechtsschief (großes p)
 Keine negativen Werte oder Werte über 100%
 Varianz ist im Bereich des Mittelwerts am höchsten und nimmt zu den Grenzen des
Wertebereichs ab.
Schwierigkeiten
ähnlich wie bei der Poissonverteilung
Lösung in R
glm (gesprochen „glims“) mit family = binomial)
26
5.1. Die Normalverteilung
Warum so wichtig??
1. Viele Daten in der Natur sind normalverteilt
2. es gibt den zentralen Grenzwertsatz!!!
Wenn man wiederholt Stichproben aus einer Grundgesamtheit entnimmt und für jede
Stichprobe den Mittelwert berechnet, dann tendiert die Verteilung der Mittelwerte zur
Normalverteilung. Das gilt auch für andere Kenngrößen (z.B. Varianz). Und es gilt ebenfalls,
wenn die Grundgesamtheit nicht normalverteilt ist!!!
3. wir kennen ihre Form!!
Zur Normalverteilung gibt es eine Funktion, die Gaußsche Glockenkurve. Mit ihrer Hilfe
kann man über normalverteilte Daten automatisch viel aussagen.
Folge: Normalverteilung ist Voraussetzung für sämtliche parametrische Methoden
4. Sind Daten nicht normalverteilt, so lassen sie sich meist mithilfe einer geeigneten
Transformation zur Normalverteilung umformen (s. Kapitel 5.4.)
Die Dichtefunktion der Normalverteilung lautet:
y  f x  
1
e
 2

 x 2
2 2
mit μ und σ² als Mittelwert und Varianz der Grundgesamtheit.
Die Funktionswerte geben die Wahrscheinlichkeitsdichte der Messwerte x an.
In R: dnorm(x, mean = …, sd = …)
Die Standardnormalverteilung hat den Mittelwert 0 und die Standardabweichung 1.
In R: dnorm (x, mean= 0, sd=1)
oder dnorm (x)
(Rest ist voreingestellt)
27
5.2. Z-Transformation
Die Messwerte der
Körpergröße Männer als
Normalverteilung und die
Standardnormalverteilung
im Vergleich.
x<-seq(170,200,0.1)
y<dnorm(x,mean=mean(m),sd=sd(m))
plot(x,y,…)
xst<-seq(-4,4,.01)
yst<-dnorm(xst)
plot(xst,yst…)
Mit der Z-Transformation
werden die Messwerte
standardisiert:
z
y  y
s
z=(m-mean(m))/sd(m)
hist (z,…)
hist(m,…)
Gemeinsame Darstellung
der Dichtefunktion und
Verteilung der Werte im
Histogramm:
hist(m,…)
lines(x,y*125)
28
Scalingfaktor =
Klassenbreite * n
hist (z,…)
lines(xst,yst*25)
5.3. Liegt Normalverteilung vor?
Für die folgenden Überlegungen in diesem Kapitel und für parametrische Tests im
Allgemeinen ist die Normalverteilung Voraussetzung. Deswegen müssen wir zunächst unsere
Daten auf Normalverteilung überprüfen.
I. Grafische Methode:
Der Quantile-Quantile plot oder auch Boxplot (s. Kapitel 4.1.).
Abb. 7: Quantile-quantile plot
zum Datensatz Körpergröße
der Männer (=m).
qqnorm (m)
qqline (m)
Ordnet den Messwerten die entsprechenden Quantile der
Normalverteilung zu.
Gerade zur Orientierung: bei perfekter Normalverteilung der Daten
liegen alle Punkte exakt auf der Geraden.
II. Shapiro-Test:
shapiro.test(m)
Nullhypothese:
Alternativhypothese:
Es liegt Normalverteilung vor.
Verteilung unserer Messdaten unterscheidet sich signifikant von der
Normalverteilung.
Shapiro-Wilk normality test
data: m
W = 0.9802, p-value = 0.8898
Mit einer Wahrscheinlichkeit von 89% kann die Nullhypothese angenommen warden: es kann
eine Normalverteilung der Messdaten angenommen werden.
29
Was weiß ich über die Standardnormalverteilung??
qnorm (Quantil):
An welcher Stelle liegt ein bestimmtes Quantil?
Abb. 8: Gaußsche Glockenkurve /
Wahrscheinlichkeitsdichte der
Normalverteilung mit den
eingezeichneten Quantilen -1.96 und
+1.96, die die mittleren 95% der Werte
einschließen.
Beispiele:
Wo liegt der Median?
qnorm (0.5) = 0
Zwischen welchen Quantilen werden die
mittleren 95% der Werte erwartet?
qnorm(c(0.025,0.975))
[1] 0
[1]
-1.959964
1.959964
pnorm (normale Standardabweichung):
Wieviele Messwerte liegen unterhalb einer bestimmten nd?
Abb. 9: Gaußsche Glockenkurve /
Wahrscheinlichkeitsdichte der
Normalverteilung mit den
eingezeichneten Wahrscheinlichkeiten
unterhalb dem Quantil -2 und oberhalb
dem Quantil +3.
Beispiele:
Wieviel Prozent der Messwerte liegen unterhalb
von -2 nd?
Wieviel Prozent der Messwerte liegen oberhalb
von +3 nd?
pnorm (-2)
[1]
0.02275013
1-pnorm(3)
[1]
0.001349898
Aufgaben:
Wie groß ist die Wahrscheinlichkeit, dass einer der Personen kleiner als 180 cm ist?
30
5.4.
Transformation zur Normalverteilung
vorher:
Art der Transformation
nachher:
Logarithmische Transf.
log(x) oder ln (x)
Wurzel-Transf.
x
Wurzel-Transf.
x
Kehrwert-Transf.
1/x
Potenz-Transf.
xn
31
6.
Vergleich zweier Stichproben
In diesem Kurs:
parametrisch
 t-test für nicht-verbundene Stichproben
 t-test für verbundene Stichproben
parameterfrei
 Wilcoxon Rangsummentest für verbundene Stichproben
parametrische und parameterfrei Tests:
Parametrische Methoden setzen im allgemeinen Normalverteilung und Varianzhomogenität
der Werte voraus, was allerdings häufig nicht erfüllt ist. Die aufgestellten Hypothesen sollen
dann durch einen Vergleich von Parametern angenommen oder abgelehnt werden.
Parameterfreie Tests verwenden anstelle von Messwerten deren Rangzahlen.
Normalverteilung und Varianzhomogenität müssen hier nicht vorliegen.
nicht-verbundene und verbundene Stichproben:
eine Stichprobe ist verbunden, wenn sich die Messwerte z.B. aus unterschiedlichen
Messmethoden am gleichen Untersuchungsobjekt ergeben. Die Werte sind dann voneinander
abhängig (hoher Messwert mit Methode I wird ebenfalls hohen Messwert mit Methode II
ergeben). Oder z.B. Messungen im Ober- und Unterlauf desselben Flusses.
32
6.1. Prüfung der Voraussetzung für parametrische Tests
6.1.1. Normalverteilung
s. Kapitel 5.3.
6.1.2. Gleichheit der Varianz / Varianzhomogenität
größere Varianz
kleine Varianz
= Varianzverhältnis/Prüfgröße
Wenn Varianzen unterschiedlich sind, dann ist Varianzverhältnis/Prüfgröße > 1
Nullhypothese H0 = Varianzen sind gleich
Alternativhypothese Ha = Varianzen unterscheiden sich signifikant
Wann sind die Varianzen signifikant unterschiedlich, so dass die Nullhypothese abgelehnt
werden muss? Wir brauchen einen Vergleichswert = kritischer Wert aus der F-Verteilung
Berechnung per Hand:
qf = Qantile der F-Verteilung
qf(p, FG_Zähler,FG_Nenner)
p ist bei α = 0.05 und einem zweiseitiger Test:
einseitiger Test:
(p = 1 – α/2)
(p = 1 - α)
bzw. moderne/alternative Ergebnisdarstellung:
= Angabe der Wahrscheinlichkeit, dass die beiden Varianzen gleich sind ist mit
pf = Wahrscheinlichkeiten der F-Verteilung
einseitig:
(1-pf(Verhältnis, FG_Zähler,FG_Nenner))
zweiseitig:
2*(1-pf(Verhältnis, FG_Zähler,FG_Nenner))
var.test(Var1,Var2)
F test to compare two variances
data: m and f
F = 1.1474, num df = 24, denom df = 24, p-value = 0.739
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.5056134 2.6037168
sample estimates:
ratio of variances
1.147377
33
6.2. Student’s t-test
Prüfgröße:
t

Differenz zwischen beiden Mittelwerten
s.e. der Differenz

y A  yB
s.e.diff
Faustregel: bei einem t-Wert > 2 liegt Signifikanz vor.
Nullhypothese H0: Mittelwerte sind gleich.
Alternativhypothese Ha: Mittelwerte sind unterschiedlich.
Aber was ist der Standardfehler der Differenz s.e.diff ??
Bei einer nicht-verbundenen Stichprobe:
Die Varianz der Differenz
= die Summe der beiden Stichprobenvarianzen
 y2
A
  A2   B2
 yB
daraus ergibt sich
s.e.diff 
s A2
s B2

n A nB
t.test (Var1, Var2)
Abb.11: nicht-verbundene Stichprobe
im Vergleich dazu:
Bei einer verbundenen Stichprobe:
Die Varianz der Differenz
= die Summe der beiden Stichprobenvarianzen
- 2*Covarianz von A und B
 y2
A
 yB
  A2   B2  2* Cov von A und B
Die Varianz der Differenz ist also kleiner als in
der nicht-verbundenen Stichprobe.
2
s.e.diff 
Abb.12: nicht-verbundene Stichprobe
34
sd
n
t.test (Var1, Var2, paired = T)
Welch Two Sample t-test
data: m and f
t = 11.3377, df = 47.775, p-value = 3.792e-15
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
14.69562 21.03238
sample estimates:
mean of x mean of y
186.604
168.740
Paired t-test
data: d5[, 1] and d5[, 3]
t = 96.8868, df = 24, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
17.48346 18.24454
sample estimates:
mean of the differences
17.864
35
6.3. Wilcoxon Rangsummentest
Wenn die Voraussetzungen (Normalverteilung der Daten und Gleichheit der Varianzen) nicht
erfüllt sind, dann sind nicht-parametrische Tests vorzuziehen, die statt mit den Messwerten
mit den Rangwerten operieren. Falls Messwerte doppelt vorkommen, werden die zugehörigen
Rangwerte gemittelt.
Probe
Werte
Probe
Werte
Nr.
A
3
A
1
1
1,0
A
4
A
2
2
2,5
A
4
A
2
3
2,5
6,0
Rank
A
3
A
3
4
A
2
A
3
5
6,0
A
3
A
3
6
6,0
6,0
A
1
A
3
7
A
3
B
3
8
6,0
A
5
A
4
9
10,5
A
2
A
4
10
10,5
B
5
B
4
11
10,5
B
5
B
4
12
10,5
15,0
jetzt Tabelle nach den
Messwerten aufsteigend
sortieren und Rangnummern
vergeben. Bei gleichen
Messwerten werden die
Rangnummern gemittelt.
B
6
A
5
13
B
7
B
5
14
15,0
B
4
B
5
15
15,0
15,0
B
4
B
5
16
B
3
B
5
17
15,0
B
5
B
6
18
18,5
18,5
20,0
B
6
B
6
19
B
5
B
7
20
Summe der Rangwerte für:
Stichprobe A = 1.0 + 2.5 + 2.5 + …
Stichprobe B = 6.0 + 10.5 + 10.5 +…
= 66
= 144
Nullhypothese wird zurückgewiesen, wenn die kleinere der beiden Summen (hier = 66)
kleiner ist als der tabellierte Vergleichswert.
Der Vergleichswert lautet für Stichprobe A (n=10) und Stichprobe B (n=10) 5%-Wert lautet
78!!
in R: wilcox.test (var1, var2)
Wilcoxon rank sum test with continuity correction
data: m and f
W = 619, p-value = 2.893e-09
alternative hypothesis: true location shift is not equal to 0
Warning message:
cannot compute exact p-value with ties in: wilcox.test.default(m, f)
36
7.
Statistische Modellierung
Die Anpassung von Modellen an die Daten ist die zentrale Aufgabe von R. Das Ziel ist dabei,
ein minimal adäquates Modell aus allen möglichen Modellen herauszufinden.
gesättigtes Modell
maximales Modell
minimal adäquates Modell
Nullmodell
1 Parameter für jeden Datenpunkt
Anpassung: perfekt
Freiheitsgrade: keine
Erklärende Kraft des Modells: keine
Enhält alle (p) Faktoren, Interaktionen und Kovariaten, die
von Interesse sein könnten. Einige von den Termen werden
nicht signifikant sein und müssen wieder entfernt werden
Freiheitsgrade: n-p-1
erklärende Kraft des Modells: ?
vereinfachtes Modell mit 0≤p’≤p Parametern
Anpassung: weniger gut als im Vergleich mit dem
maximalen Modell, aber nicht signifikant schlechter
Freiheitsgrade: n-p’-1
Erklärende Kraft des Modells: r2 = SSR/SSY
Nur ein Parameter: der allgemeine Mittelwert
ohne jegliche erklärenden Variablen
Anpassung: keine (SSE=SSY)
Freiheitsgrade: n-1
Erklärende Kraft des Modells: keine
Das geschieht durch Modellvereinfachung in folgenden Schritten:
1
2
3
4
Prozedur
Anpassung des
maximalen Modells
Beginn der
Modellvereinfachung
Modellvergleich /
Varianzvergleich
beider Modelle (mit
und ohne entfernten
Term) durch Anova
Erreichen des
minimal adäquaten
Modells
Verwendung aller Faktoren, Interaktionen und Kovariaten
von Interesse. Wie lautet der SSE?
Untersuchung der Parameterschätzungen mit summary.
Entferne die am wenigsten signifikanten Terme zuerst mit
update- und beginn dabei immer mit den Interaktionen der
höchsten Ordnung.
Wenn die Entfernung des Terms die Anpassung nicht
signifikant verschlechtert hat, dann lass den Term
unberücksichtigt.
Wenn die Entfernung die Anpassung signifikant
verschlechtert hat dann zurück mit dem Term durch update+.
Wiederhole Schritt 2 und 3 bis das Modell nur noch
signifikante Terme enthält. Das ist das minimal adäquate
Modell. Wenn keins der Parameter signifikant ist, dann ist
das minimal adäquate Modell das Nullmodell
37
Struktur der Modelle in R
Antwortvariable ~ erklärende Variablen
mit „~“ als „ist modelliert als eine Funktion von“
Auf der rechten Seite der Modellgleichung
 erklärende Variablen
 Interaktionen, falls vorhanden
 nicht-lineare Terme
 eventuelle Fehlerterme
Bedeutung der verwendeten Symbole
Einbeziehung einer erklärenden Variablen in das Modell
+
Entfernung einer erklärenden Variablen aus dem Modell
Einbeziehung der erklärenden Variablen und ihren
*
Interaktionen, s. Beispiel unten
nur Interaktion zwischen den erklärenden Variablen
:
Nesting
/
bei Bedingungen
|
(keine Addition)
(keine Subtraktion)
(keine
Multiplikation)
(keine Division)
(keine Division)
Beispiele
erklärende
Variable ist
y~1
y~x
y~x
y~a+b
y~a*b*c
y~a+b+c-a:b:c
y~a+b
y~a*b
kontinuierlich
kategorisch
beide kategorisch
alle kategorisch
alle kategorisch
a ist kontinuierlich,
b ist kategorisch
a ist kontinuierlich,
b ist kategorisch
Modell
Nullmodell
einfache lineare Regression
einfaktorielle ANOVA
zweifaktorielle ANOVA
faktorielle ANOVA
dreifaktorielle ANOVA ohne Interaktion 3. Ordnung
ANCOVA mit allgemeiner Steigung und 2
Schnittpunkten mit der y-Achse
ANCOVA mit 2 Steigungen und 2 Schnittpunkten
mit der y-Achse
Interaktionen bei kontinuierlichen Variablen:
A*B*C ist dasselbe wie A+B+C+A:B+A:C+B:C+A:B:C
 mit A, B und C als Haupteffekte
 A:B, A:C und B:C als Interaktionen erster Ordnung
 A:B:C als Interaktion dritter Ordnung
Interaktionen werden wie neue Variablen behandelt, deren Werte aus einer punktweisen
Multiplikation der zugrunde liegendenVektoren berechnet worden sind.
Interaktionen bei kategorischen Variablen: A*B
(a-1) (b-1) Anzahl der Interaktionen mit a = Faktorstufen der Variablen A und
b = Faktorstufen der Variablen B.
38
ohne
erklärende
Variable
Körpergröße
Körpergewicht
I. Nullmodell (=Mittelwert)
I. Nullmodell (=Mittelwert)
SSQ der Residuen = 5478,6
SSQ der Residuen = 3.72
Gibt es ein besseres Modell???
Mit kleineren Residuen / kleinerer Varianz / kleinerer SSQ = bessere Anpassung
an die Daten???
mit
erklärender
Variable
II. Varianzanalyse / Anova
III. Regressionsanalyse
erklärende
Variable ist
kategorisch
(nominal oder ordinal)
kontinuierlich
(metrisch)
Die Körpergröße ist abhängig vom
Geschlecht (=Faktor) mit den beiden
Stufen/Level: männlich und weiblich
Das Körpergewicht ist abhängig von
der Körpergröße, mit kontinuierlichen
Werten zwischen 160 und 200cm.
SSQ der Residuen = 1489,5
SSQ der Residuen = 0,83
Beispiel
39
Geht es noch besser?
Ja, durch Kombination aus beiden Modellideen
IV. ANCOVA
erklärende
Variablen
sind
Beispiel
kategorisch und kontinuierlich
Das Körpergewicht ist abhängig von der Körpergröße,
die wiederum in Wechselbeziehung steht mit dem Geschlecht.
SSQ der Residuen = 0.63
40
8.
Das Nullmodell
Das allereinfachste Modell ohne erklärende Variable!
Abb. 13: Nullmodell zur Variablen
Körpergröße (Frauen und Männer).
Die Messwerte werden durch den
Mittelwert abgebildet. Die
Körpergröße lag im Durchschnitt bei
177,7 cm. Abweichung als Sum of
Squares: 5478,6.
Eingabe für den Plot:
pf<-seq(1,49,2)
pm<-seq(2,50,2)
plot(pm,m,ylab="Körpergröße in cm",xlab="Index",ylim=c(155,203))
points(pf,f)
abline(h=mean(size))
for (i in 1:25)
{
lines(c(pf[i],pf[i]),c(mean(size),f[i]))
lines(c(pm[i],pm[i]),c(mean(size),m[i]))
}
nullmodell<-aov(size~1)
Ergebnis
Sum of Squares
Deg. of Freedom
Residuals
5478.581
49
Residual standard error: 10.57392
41
9.
Varianzanalyse / Anova (Analysis of Variance)
Frage: Gibt es irgendwelche Unterschiede zwischen den Mittelwerte, die Wert sind, erklärt
zu werden?
Nullhypothese: Mittelwerte der Faktorstufen sind gleich
Alternativhypothese: wenigstens einer der Mittelwerte unterscheidet sich von den anderen.
Kochrezept im Überblick
Schritt 1:
Grafischer Überblick über die Daten mit boxplot.
Befehl: plot(Faktor, Antwortvariable).
Schritt2:
Durchführung der Anova
Schritt 3:
 Modellvereinfachung unter Verwendung von Kontrasten !
 zu Kontraste (vgl. Kapitel 9.4.)
 bei einer einfaktoriellen Anova können eventuell Faktorstufen zusammengefasst
werden
 Allgemein (mehrfaktorielle Anova, multiple Regression, Ancova) werden bei der
Modellvereinfachung insbesondere Interaktionen zwischen den erklärenden
Variablen überprüft.
Schritt 4:
Sind die Voraussetzungen der Anova erfüllt? Überprüfung mit Modell-Plots
Schritt 5:
Multipler Vergleich der Mittelwerte
auch bekannt als Post-hoc-Test
Kein wirklicher Bestandteil der Anova, aber schließt sich dieser an,
insbesonderen der einfaktoriellen Anova mit vielen Faktorstufen.
vgl. Kapitel 9.5..
42
9.1. Einfaktorielle ANOVA (one-way Anova)




Untersuchung eines einzigen Faktors mit 3 oder mehr Faktorstufen
Bei nur 2 Faktorstufen verwenden wir den t-test (s. Seite 6.2.)
Zur Veranschaulichung der Anova-Grundidee und zum Vergleich der Anova mit dem
t-test wird ein kurzes Beispiel einer einfaktoriellen Anova mit 2 Faktorstufen.
im Anschluss: „echte“ einfaktorielle ANOVA mit 5 Faktorstufen nach Kochrezept.
Grundidee
Wenn sich die Mittelwerte signifikant unterscheiden, dann ist der SSQ der einzelnen
Mittelwerte (=SSE) kleiner als der SSQ des allgemeinen Mittelwerts (=SSY). Wir vergleichen
also Varianzen, um Mittelwerte zu vergleichen.
Total SSQ:
SSY   ( y  y )
2
Varianz um den allgemeinen
Miitelwert y
(= Nullmodell)
1. Treatment SSQ = SSA
SSA 
  yˆ  y 
2
oder SSA = SSY-SSE
durch Modell erklärter Varianzanteil
Differenz zwischen allg. Mittelwert y und
Mittelwert der treatments y A und yB
bzw. der gefitteten Modellwerte ŷ .
2. Error SSQ = SSE
SSE    y  yˆ 
2
SSE    y A  y A     y B  y B 
2
2
nicht durch Modell erklärter Varianzanteil
=Residuen.
43
Die Anova-Tabelle
Varianzanteil
sex
Summe der
Abstandsquadrate
Freiheitsgrade
Mittl.
Abstandsquadrate
F-Verhältnis
=Sum of squares
=degrees of
freedom
=mean squares
= SSA/SSE
= SSQ / Sum Sq
= Df
= Mean Sq
= F value
3989.0
31.03
SSA
3989.0
:
1
=
3989.0
Residuals SSE
1489.5
:
48
=
s2 = 31.03
Total
5478.5
:
49
=
111.8
SST
=128.54
model<-aov(size~sex)
summary(model)
sex
Residuals
48
Df
1
1489.5
Sum Sq
3989.0
31.0
Mean Sq
3989.0
F value
128.54
Pr(>F)
3.549e-15 ***
Ergebnis: Die beiden Mittelwerte unterscheiden sich ….
Vergleich dazu den t-test (s. Seite 6.2.):
Eingabe in R: t.test(m,f)
Welch Two Sample t-test
data: m and f
t = 11.3377, df = 47.775, p-value = 3.792e-15
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
14.69562 21.03238
sample estimates:
mean of x mean of y
186.604
168.740
44
Beispiel: Einfaktorielle Anova (mit 5 Faktorstufen)
read.table(„...//konkurrenz.txt“,...)
Schritt 1:
Grafischer Überblick über die Daten.
plot(schnitt, biomasse, xlab=““, ylab=““)
Abb.14a: Box-and-Whisker Plot zum Datensatz
“Konkurrenz”.
Abb. 14b: Box-and-Whisker Plot zum Datensatz
“Konkurrenz” mit Einkerbung: wenn sich 2
Einkerbungen nicht überlappen, dann ist
anzunehmen, dass sich die beiden Mediane
signifikant voneinander unterscheiden.
weniger sinnvoll, aber vielleicht gefordert in Veröffentlichung:
Funktion für Einzeichnung des Standardfehlers in
das Säulendiagramm
error.bars<-function(yv,z,nn){
xv<-barplot(yv,ylim=c(0,(max(yv)+max(z))),
names=nn,ylab=deparse(substitute(yv)))
g<-(max(xv)-min(xv))/50
for (i in 1:length(xv)){
lines(c(xv[i],xv[i]),c(yv[i]+z[i],yv[i]-z[i]))
lines(c(xv[i]-g,xv[i]+g),c(yv[i]+z[i],yv[i]+z[i]))
lines(c(xv[i]-g,xv[i]+g),c(yv[i]-z[i],yv[i]-z[i]))
}}
se<-rep(28.75,5)
labels<-as.character(levels(schnitt))
ybar<-as.vector(tapply(biomasse,schnitt,mean))
Abb. 15: Säulendiagramm mit Standardfehler,
Syntax s. Box oben.
error.bars(ybar,se,labels)
45
Schritt2:
model1<-aov(biomasse~schnitt)
summary(model1)
Df
4
25
schnitt
Residuals
Sum Sq
85356
124020
Mean Sq
21339
4961
F value
4.3015
Pr(>F)
0.008752 **
Anova zeigt, dass die Schnitt-Behandlung einen hoch-signifikanten Effekt (Pr = 0.008752)
auf die Biomasse hat.
Jetzt wollen wir herausfinden:
Welche Faktorstufen haben den größten Effekt auf die Biomasse?
Sind alle Schnitt-Behandlungen signifikant unterschiedlich zur Kontrolle?
Wie lautet das minimale adäquate Modell?
Schritt 3:
Übersicht über die Faktorstufen erhält man durch
summary.lm(model1)
Coefficients:
(Intercept)
schnittob_25
schnittob_50
schnittunt_10
schnittunt_5
Estimate Std. Error t value Pr(>|t|)
465.17
28.75 16.177 9.4e-15 ***
88.17
40.66
2.168 0.03987 *
104.17
40.66
2.562 0.01683 *
145.50
40.66
3.578 0.00145 **
145.33
40.66
3.574 0.00147 **
Bei R ist der Treatment-Kontrast voreingestellt (s. Kapitel 9.4.).
Nachteil von Treatment-Kontrasten:
Signifikanz heißt nur signifikanter Unterschied zum ersten Stufe, die alphabetisch gewählt ist
(Reihenfolge lässt sich abändern mit Befehl relevel). Hier tatsächlich die Kontrolle, muss aber
nicht sein. Wir erfahren hier nicht, wie viele und welche signifikanten Faktorstufen im
minimal adäquaten Modell zu behalten sind.
Modellvereinfachung unter Verwendung von Kontrasten
2 Vorgehensweisen:
1. A priori Kontraste: sinnvolle im Vorfeld geplante Vergleiche von Faktorstufen
2. A posteriori Kontraste: man aggregiert nicht-signifikante Faktorstufen schrittweise
46
9.2. A Priori Kontraste
= sinnvolle im Vorfeld geplante Vergleiche von Faktorstufen
Hier sind folgende orthogonale Kontraste sinnvoll:
Kontrolle gegen allg. Behandlung
Schnitt am Trieb gegen Schitt an der Wurzel
Schnitt Trieb 25 cm gegen 50 cm
Schnitt Wurzel 10 cm gegen 5 cm
Kontrolle ob_25
4
-1
0
1
0
0
0
1
ob_50
-1
1
0
-1
unt_10 unt_5
-1
-1
-1
-1
1
-1
0
0
levels (schnitt)
[1] "kontr"
"ob_25"
"ob_50"
"unt_10" "unt_5"
contrasts(schnitt) <- cbind(c(4,-1,-1,-1,-1),c(0,1,1,-1,-1),c(0,0,0,1,-1),c(0,1,-1,0,0))
contrasts(schnitt)
kontr
ob_25
ob_50
unt_10
unt_5
[,1] [,2] [,3] [,4]
4
0
0
0
-1
1
0
1
-1
1
0
-1
-1
-1
1
0
-1
-1
-1
0
model2<-aov(biomasse~schnitt)
summary.lm(model2)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 561.80000
12.85926 43.688 < 2e-16 ***
schnitt1
-24.15833
6.42963 -3.757 0.000921 ***
schnitt2
-24.62500
14.37708 -1.713 0.099128 .
schnitt3
0.08333
20.33227
0.004 0.996762
schnitt4
-8.00000
20.33227 -0.393 0.697313
zurücksetzen lässt sich der angelegt Kontrast mit
contrasts(schnitt)<-NULL
47
9.3. A posteriori Kontraste (Aggregierung nicht-signifikanter
Faktorstufen)
summary.lm(model1)
Coefficients:
(Intercept)
schnittob_25
schnittob_50
schnittunt_10
schnittunt_5
Estimate Std. Error t value Pr(>|t|)
465.17
28.75 16.177 9.4e-15 ***
88.17
40.66
2.168 0.03987 *
104.17
40.66
2.562 0.01683 *
145.50
40.66
3.578 0.00145 **
145.33
40.66
3.574 0.00147 **
Default-Einstellung: treatment-Kontrast: d.h. alle Parameterschätzungen sind Differenzen zur
Faktorstufe, die als (Intercept) angegeben ist. (Intercept) = Faktorstufe Kontrolle.
Es unterscheiden sich alle Faktorstufen signifikant von der Kontrolle.
Aber unterscheiden sie sich untereinander bzw. kann man das Modell vereinfachen, indem
man Faktorstufen zusammenfasst, die sich nicht signifikant unterscheiden?
Erste Vereinfachung:
wir fassen schnittunt_10 und schnittunt_5 zur Faktorstufe unten zusammen.
schnitt2<-schnitt
levels(schnitt2)
[1] "kontr" "ob_25" "ob_50" "unt_10" "unt_5"
levels(schnitt2)[4:5]<-"unten"
levels(schnitt2)
[1] "kontr" "ob_25" "ob_50" "unten"
erzeugen einfacheres Modell:
model2<-aov(biomasse~schnitt2)
summary.lm(model2)
Coefficients:
Estimate Std.
(Intercept)
465.17
schnitt2ob_25
88.17
schnitt2ob_50
104.17
schnitt2unten
145.42
Error t value Pr(>|t|)
28.20 16.498 2.72e-15 ***
39.87
2.211 0.036029 *
39.87
2.612 0.014744 *
34.53
4.211 0.000269 ***
Hat sich die Anpassung des einfacheren Modells signifikant verschlechtert?
Wir vergleichen model1 und model2 miteinander:
anova(model1,model2)
Analysis of Variance Table
Model 1:
Model 2:
Res.Df
1
25
2
26
biomasse ~ schnitt
biomasse ~ schnitt2
RSS Df Sum of Sq
124020
124020 -1 -0.0833333
F Pr(>F)
0.0000168 0.9968
Ergebnis: Vereinfachung kann akzeptiert werden, da 0.9968 = nicht signifikant.
Aufgabe: Fahre mit der Aggregierung fort, bis zum einfachsten Modell: wie lautet es?
48
Schritt 4:
Sind die Voraussetzungen der Anova erfüllt?
plot(model)
49
9.4. Kontraste
Kontraste sind die Essenz der Hypothesenprüfung und Modellvereinfachung in der Anova.
Man kann mit Kontrasten Mittelwerte oder Gruppen von Mittelwerten mit anderen
Mittelwerten oder Gruppen von Mittelwerten vergleichen.
Es gibt 2 Arten von Kontraste:
1. A priori Kontraste: sinnvolle im Vorfeld geplante Vergleiche von Faktorstufen
2. A posteriori Kontraste: schrittweise Aggregierung von nicht-signifikanten
Faktorstufen
Eigentlich sollte man nur a posteriori Kontraste durchführen, da sie geplant sind.
Bei einer wissenschaftlichen Untersuchung sollte man eigentlich bei der Versuchsplanung
und vor der Datenerhebung seine Hypothesen festlegen / formulieren, anschließend nur noch
überprüfen. Die Hypothesen spiegeln sich in den gewählten a priori - Kontrasten wieder. Aber
die a-posteriori-Prozedur in gängig und sozusagen in der Natur des Menschen.





gruppierte Faktorstufen erhalten dasselbe Vorzeichen
Faktorstufen, die verglichen/gegenüber gestellt werden, erhalten gegensätzliche
Vorzeichen
Faktorstufen, die aus dem Vergleich ausgeschlossen werden, erhalten eine 0
Der Konrastkoeffizient c muss in der Summe 0 ergeben
bei orthogonalen Kontrasten ergibt die Summe aller Produkte von 2 beliebigen
Kontrasten ebenfalls 0.
es gibt unglaublich viele mögliche Kontraste,
aber nur k-1 orthogonale Kontraste
Beispiel für ein orthogonalen a priori-Kontraste: s.Kapitel 9.2.
Konkurrenzversuch durch Pflanzenbeschnitt:
Die Anova zeigte, dass die Schnitt-Behandlung einen hoch-signifikanten Effekt (Pr =
0.008752) auf die Biomasse hat.
Folgende sinnvolle Wahl von Kontrasten für weitere Hypothesenprüfung bietet sich an:
Kontrolle gegen allg. Behandlung
Schnitt am Trieb gegen Schitt an der Wurzel
Schnitt Trieb: 25 cm gegen 50 cm
Schnitt Wurzel: 10 cm gegen 5 cm
Kontr
4
0
0
0
Prüfung der Orthogonalität:
z.B. Zeilen
1: Kontrolle gegen allg. Behandlung
gegen
2: Schnitt am Trieb gegen Schitt an der
Wurzel
50
ob_25
-1
1
0
1
+
+
+
+
ob_50
-1
1
0
-1
Nr. 1
4
*
-1
*
-1
*
-1
*
-1
*
Summe
unt_10
-1
-1
1
0
Nr. 2
0
1
1
-1
-1
unt_5
-1
-1
-1
0
0
-1
-1
1
1
0
c = Summe
0
0
0
0
weitere Kontraste:
1. Treatment-Kontrast (Voreingestellt in R)
comp<-read.table("C:\\Kaarina\\rrr\\konkurrenz.txt",header = TRUE)
attach(comp)
names(comp)
contrasts(schnitt)
kontr
ob_25
ob_50
unt_10
unt_5
ob_25 ob_50 unt_10 unt_5
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
2. Helmert-Kontrast
options(contrasts=c("contr.helmert","contr.poly"))
contrasts(schnitt)
kontr
ob_25
ob_50
unt_10
unt_5
[,1] [,2] [,3] [,4]
-1
-1
-1
-1
1
-1
-1
-1
0
2
-1
-1
0
0
3
-1
0
0
0
4
zurück zum Treatment-Kontrast geht es wieder mit:
options(contrasts=c("contr.treatment","contr.poly"))
contrasts(schnitt)
51
9.5. Multipler Vergleiche
Die Anova zeigt, ob mindestens ein Unterschied zwischen verschiedenen Behandlungen/
Faktorstufen vorliegt. Multiple Vergleiche (engl. Multiple Comparison Tests, MCPs ) testen
die paarweisen Unterschiede (Existenz und Größe).
Problem bei muliplen Vergleichen:
Man beeinflusst α, also die Wahrscheinlichkeit des Typ-I-Fehlers!!
Führen wir nur einen Test bei α = 0.05 durch, können wir uns sicher sein, dass die
Wahrscheinlichkeit eines als falsch erkannten signifikanten Unterschieds bei 5% liegt. Wenn
allerdings gleichzeitig 40 Vergleiche durchführt werden, erwarten wir allein durch Zufall 2
Ergebnisse, die fälschlicherweise als signifikant verschieden akzeptiert werden. Wie können
wir die echten und unechten Signifikanzen unterscheiden?
Wir müssen α verkleinern!! Wenn α allerdings zu klein wird, dann steigt wiederum das Risiko
eines Typ-II-Fehlers: Annahme von falschen Nullhypothesen.
Es gibt verschiedene Korrekturmethoden zu α (beispielsweise):


Bonferroni’s Korrektur: reduziert α im Verhältnis der Anzahl der Vergleiche (m)
α = α/m
Tukey’ honestly significant difference (HSD): die Wahrscheinlichkeit, dass alle
Grenzen gelten ist mindesten ein α.
Beispiel: Pilzertrag in Abhängigkeit vom Waldhabitattyp.
daten<-read.table("C:\\Kaarina\\rrr\\fungus.txt",header = TRUE, sep = ",")
attach(daten)
model<-aov(Fungus~Habitat)
summary(model)
plot(Habitat,Fungus,cex.axis=0.7)
TukeyHSD(model, "Habitat", ordered = TRUE)
52
Fit: aov(formula = Fungus ~ Habitat)
$Habitat
Alder-Aspen
Hornbeam-Aspen
Cherry-Aspen
Birch-Aspen
Holmoak-Aspen
Spruce-Aspen
Oak-Aspen
diff
lwr
upr
p adj
0.52109812 -4.156371577 5.198568 1.0000000
1.22609704 -3.451372658 5.903567 0.9998463
4.34152240 -0.335947298 9.018992 0.0989338
4.68466404 0.007194342 9.362134 0.0492363
6.42503410 1.747564407 11.102504 0.0005550
6.94976968 2.272299981 11.627239 0.0001137
9.19531554 4.517845843 13.872785 0.0000001
…
plot(TukeyHSD(model, "Habitat"),cex=0.01)
…
Interpretation:
Für Signifikanz dürfen die unteren und oberen Grenzen des Konfidenzintervalls die Null nicht
einschließen. Entweder die untere Grenze ist positiv oder die obere Grenze ist negativ.
53
pairwise.t.test(Ozone, Month)
Pairwise comparisons using t tests with pooled SD
data:
Fungus and Habitat
Ash
Aspen
Beech
Birch
Cherry
Chestnut
Holmoak
Hornbeam
Lime
Oak
Pine
Rowan
Spruce
Sycamore
Alder
< 2e-16
1.00000
3.1e-08
0.07639
0.14203
< 2e-16
0.00122
1.00000
< 2e-16
2.3e-07
5.1e-09
< 2e-16
0.00029
4.9e-14
Ash
< 2e-16
5.2e-06
5.8e-14
1.6e-14
1.00000
4.0e-11
< 2e-16
1.00000
7.4e-07
2.6e-05
0.02076
2.8e-10
0.07957
Aspen
4.8e-09
0.02495
0.05388
< 2e-16
0.00029
1.00000
< 2e-16
3.9e-08
7.7e-10
< 2e-16
6.1e-05
7.0e-15
Beech
0.00956
0.00400
0.00065
0.32318
3.3e-07
5.0e-06
1.00000
1.00000
2.0e-13
0.71075
0.21243
Birch
1.00000
2.4e-11
1.00000
0.27888
5.5e-14
0.03710
0.00265
< 2e-16
1.00000
2.0e-07
Ash
Aspen
Beech
Birch
Cherry
Chestnut
Holmoak
Hornbeam
Lime
Oak
Pine
Rowan
Spruce
Sycamore
Lime
7.1e-07
2.5e-05
0.02098
2.7e-10
0.07956
Oak
1.00000
2.1e-14
1.00000
0.07182
Pine
1.3e-12
0.32401
0.47533
Rowan
< 2e-16
1.1e-07
Spruce
0.00027
Cherry
6.5e-12
1.00000
0.47533
1.6e-14
0.01775
0.00110
< 2e-16
0.94235
6.2e-08
Chestnut
1.3e-08
< 2e-16
1.00000
0.00012
0.00250
0.00033
8.2e-08
1.00000
hier sind auch andere Methoden der p-Korrektur einstellbar:
c("holm", "hochberg", "hommel", "bonferroni", "BH", "BY", "fdr", "none")
beispielsweise:
pairwise.t.test(Fungus, Habitat, p.adj = "bonf")
54
Holmoak
0.00762
3.8e-11
0.75837
0.13416
< 2e-16
1.00000
5.7e-05
Hornbeam
< 2e-16
2.4e-06
6.2e-08
< 2e-16
0.00199
7.0e-13
9.6. Zwei- bzw. Mehrfaktorielle ANOVA



Mehrfaktorielle Experimente haben 2 oder mehr Faktoren
mit jeweils 2 oder mehr Faktorstufen
mit Replikaten auf jeder Faktorstufe
Das erlaubt uns statistische Interaktionen/Wechselbeziehungen zu untersuchen: d.h. die
Antwort auf ein Faktor hängt ab von der Faktorstufe eines anderen Faktors.
Beispiel:
Ertragssteigerungen (Gewichtszunahme) bei Mastvieh durch unterschiedliches Futter (3
Faktorstufen) und unterschiedliches Ergänzungsfutter (4 Faktorstufen).
gewicht<-read.table("C:\\Kaarina\\rrr\\vieh.txt",header = TRUE)
attach(gewicht)
names(gewicht)
tapply(ertrag,list(futter,erg.futter),mean)
agrimore control supergain supersupp
gerste 26.34848 23.29665 22.46612 25.57530
hafer 23.29838 20.49366 19.66300 21.86023
weizen 19.63907 17.40552 17.01243 19.66834
barplot(tapply(ertrag,list(futter,erg.futter),mean),
beside=T,col=c("red","orange","yellow"))
namen<-c("Gerste","Hafer","Weizen")
farben<-c("red","orange","yellow")
legend("topright", namen, fill=farben)
model<-aov(ertrag~futter*erg.futter)
summary(model)
summary.lm(model)
55
Ergebnis: sämtliche Interaktionen sind nicht signifikant und können aus dem Modell entfernt
werden.
model<-aov(ertrag~futter+erg.futter)
summary.lm(model)
(Intercept)
futterhafer
futterweizen
erg.futtercontrol
erg.futtersupergain
erg.futtersupersupp
Estimate Std. Error t value Pr(>|t|)
26.1230
0.4408 59.258 < 2e-16 ***
-3.0928
0.4408 -7.016 1.38e-08 ***
-5.9903
0.4408 -13.589 < 2e-16 ***
-2.6967
0.5090 -5.298 4.03e-06 ***
-3.3815
0.5090 -6.643 4.72e-08 ***
-0.7274
0.5090 -1.429
0.160
Die besten Ertragssteigerungen zeigen supersupp und agrimore (ist als Intercept dargestellt),
die geringsten Ertragssteigerungen sind bei der Kontrolle und supergain zu verzeichnen. Wir
fassen die Faktorstufen entsprechend ein in „gut“ und „schlecht“.
erg.futt2<-factor(erg.futter)
levels(erg.futt2)
levels(erg.futt2)[c(1,4)]<-"gut"
levels(erg.futt2)[c(2,3)]<-"schlecht"
model2<-aov(ertrag~futter+erg.futt2)
anova(model,model2)
Model 1:
Model 2:
Res.Df
1
42
2
44
ertrag
ertrag
RSS
65.296
71.284
~ futter + erg.futter
~ futter + erg.futt2
Df Sum of Sq
F Pr(>F)
-2
-5.988 1.9257 0.1584
Da sich durch die Modellvereinfachung die Anpassungsgüte nicht signifikant verschlechtert
hat, behalten wir die einfache Variante bei. Wir haben 2 Freiheitsgrade eingespart und das
minimal adäquate Modell erreicht: alle Parameter sind signifikant, unterscheiden sich von
Null und voneinander:
summary.lm(model2)
(Intercept)
futterhafer
futterweizen
erg.futt2schlecht
56
Estimate Std. Error t value Pr(>|t|)
25.7593
0.3674 70.106 < 2e-16
-3.0928
0.4500 -6.873 1.76e-08
-5.9903
0.4500 -13.311 < 2e-16
-2.6754
0.3674 -7.281 4.43e-09
***
***
***
***
10. Regression
10.1. Klassische lineare Regression
Grundidee
Wenn sich die Steigung der Regressionsgeraden signifikant von Null unterscheidet (und
damit vom allgemeinen Mittelwert), dann ist der SSQ umd die Regressionsgerade (=SSE)
kleiner als der SSQ des allgemeinen Mittelwerts (=SSY). Wir vergleichen also Varianzen, um
eine signifikante Steigung nachzuweisen.
Total SSQ:
SSY   ( y  y )
2
Varianz um den allgemeinen
Miitelwert y
(= Nullmodell)
1. Regressions SSQ = SSR
2. Error SSQ = SSE
2
SSR    yˆ  y  oder SSR = SSY-SSE
oder SSR  b  SSXY !!!!!
SSE    y  yˆ 
durch Modell erklärter Varianzanteil
Differenz zwischen allg. Mittelwert y und
den gefitteten Modellwerte ŷ (=Regressionsgerade).
nicht durch Modell erklärter Varianzanteil
=Residuen.
2
57
Die Anova-Tabelle zur linearen Regression
Varianzanteil
size
Summe der
Abstandsquadrate
Freiheitsgrade
Mittl.
Abstandsquadrate
F-Verhältnis
=Sum of squares
=degrees of
freedom
=mean squares
= SSR/SSE
= SSQ / Sum Sq
= Df
= Mean Sq
= F value
2.886
0.017
SSR
2.886
:
1
=
2.886
Residuals SSE
0.834
:
48
=
s2 = 0.017
Total
3.720
:
49
=
0.076
SSY
=166.10
model<-lm(d$weight~size)
summary.aov(model)
size
Residuals
Df
1
48
Sum Sq
2.88642
0.83411
Mean Sq
2.88642
0.01738
F value
166.10
Pr(>F)
< 2.2e-16 ***
Ergebnis:
Parameter des Regressionsmodells
Wie sieht die Regressionsgerade aus?
summary(model)
Coefficients:
Estimate
(Intercept) 2.202109
size
0.022953
Std. Error
0.316978
0.001781
t value
6.947
12.888
Pr(>|t|)
8.86e-09 ***
< 2e-16 ***
Ergebnis:
Der Schnittpunkt mit der Y-Achse der Geraden liegt bei 2.2, die Steigung beträgt 0.023 mit
einem Standardfehler von 0.0018.
58
Ermittlung aller Parameter und Kenngrößen
die 3 Summenquadrate:
SSY    y  y 
Kurzformeln:
2
,
 y

2
SSX   x  x  und SSXY    y  y   x  x 
2
SSY   y

2
n
 x

2
SSX   x
2
Parameter der linearen
 Regression
SSXY   xy 
n
 x y
n

SSXY
SSX

Steigung
b

Schnittpunkt mit der y-Achse / Interzept
a  y  bx
Korrelationskoeffizient
r
SSXY
SSX  SSY
= cov(x,y)
Daraus ergibt sich das Bestimmtheitsmaß oder umgangssprachlich „r-Quadrat“:
SSXY 2
r 
SSX  SSY
2
r2 
durch Re gression erklärter Anteil der Varianz SSR

totale Varianz in y
SSY
da SSR  b  SSXY
Aufgabe: Mit der Funktion Regr.test (in der Scriptdatei „Regr_test.txt“) kannst du dir einen
Eindruck über die Funktion und Kenngrößen der linearen Regression verschaffen.
59
10.1.1.
s.e. y 
Standardfehler bei der Regression
2
s
n
Wiederholung: Standardfehler für den Mittelwert (s. S. 4.5)
 Wurzelterm: damit Standarfehler und Parameter dieselbe Einheit haben
 die Fehlervarianz s2 im Zähler
1. Standardfehler der Steigung
s.e.b 
s2
SSX
Abb. 16: SSX ist ein Maß für
die Verteilung der Messwerte
entlang der x-Achse.
Je breiter die Messwerte verteilt
sind, desto höher die Sicherheit
des geschätzten Parameters.
2.a) Standardfehler für einen Modellwert
ŷ an der Stelle x,
2.b) Standardfehler für den Interzept
 1  x  x 2 
s.e. yˆ  s 2  

SSX 
n
s.e.a 
s2  x2
n  SSX
Die Unsicherheit der Modellwerte steigt mit Quadrat der Entfernung zu x (d.h. mit  x  x  ).
Im Grafen: Links niedriger x , rechts hoher x . In beiden Fällen ist eine 25% Streuung der
Steigung eingezeichnet. Vergleich den Unterschied in der Unsicherheit bei der Vorhersage
eines bestimmten Modellwerts und des Schnittpunkt mit der y-Achse.
2
60
10.2. Weitere lineare Regressionen:
der Zusammenhang zwischen y und x ist nicht immer einer Gerade!
Aber Occam’s Razor verlangt: wir passen solange ein lineares Modell an, bis ein nichtlineares signifikant besser ist!!
10.2.1.
Polynomiale Regression:
Ein quadratisches Modell beschreibt die Beziehung zwischen y und x, allerdings erklärt es
nicht die mechanistischen oder kausalen Zusammenhänge zwischen y und x!!
allgemeine Form
y  a  bx  cx 2
also ein Interzept a und zwei Steigungen für x und x2 .
a=4
b=2
c=-0.1
x<-seq(0,10,0.1)
poly.f<-a+b*x+c*x^2
plot(x,poly.f,type="l")
Polynomiale Regression in R:
lm(y=x+ x2)
10.2.2.
Linearisierbare Regressionsfunktionen
Einige Regressionsfunktionen können in eine Gerade transformiert werden. In der folgenden
Tabelle sind die wichtigsten Beispiele zusammengestellt.
Vorgehensweise:
aus kausalen/mechanistischen Überlegungen oder aus Anschauung des Datenmaterials wird
eine passende Funktion ausgewählt
Beispiel Funktion Zeile 3: y = a * xb
Eingabe in R erfolgt mit lm (Y*X)
Beispiel Funktion Zeile 3: lm (log y ~ log x)
Die berechneten Parameterwerte für Interzept und Steigung entsprechen A und B und können
umgerechnet werden gemäß Tabelle
Beispiel Funktion Zeile 3: a = 10A sowie b = B.
61
Kurve
62
linearisierbare
Funktion
linearisierte Funktion nach
Transformation:
Eingabe in R: lm(Y~X),
d.h. z.B. in Zeile 1: lm(log y * x)
Berechng
der
Parameter
a und b
Y
=
A
+
B
*
X
a=
b=
log y  a  bx
log y
=
a
+
b
*
x
A
B
y  a  b log x
y
=
a
+
b
* log x
A
B
y  a  xb
log y
= log a
+
b
* log x
10A
B
y  a bx
log y
= log a
+ log b
*
x
10A
10B
y  a  e bx
ln y
=
ln a
+
b
*
x
eA
B
y  a  eb / x
ln y
=
ln a
+
b
*
1/x
eA
B
Kurve
linearisierbare
Funktion
y a
b
x
y
a
bx
y
ax
bx
y
1
a  bx
y
x
a  bx
y  a  bx n
linearisierte Funktion nach
Transformation:
Eingabe in R: lm(Y~X),
d.h. z.B. in Zeile 1: lm(log y * x)
Berechng
der
Parameter
a und b
Y
=
A
+
B
*
X
a=
b=
y
=
a
+
b
*
1/x
A
B
1/y
=
b/a
+
1/a
*
x
1/B
A*a
1/y
=
1/a
+
b/a
*
1/x
1/A
B*a
1/y
=
a
+
b
*
x
A
B
x/y
=
a
+
b
*
x
A
B
y
=
a
+
b
*
xn
A
B
63
Aufgabe: radioaktiver Abbau
rm(list=ls())
curve<-read.table("C:\\Kaarina\\rrr\\decay.txt",header = TRUE)
attach(curve)
names (curve)
plot(x,y,pch=16)
linear<-lm(y~x)
summary(linear)
par(mfrow=c(2,2))
plot(linear)
plot(x,y,pch=16)
abline(linear)
Polynomiale Regression
x2<-x^2
quadrat<-lm(y~x+x2)
summary(quadrat)
anova(linear,quadrat)
par(mfrow=c(2,2))
plot(quadrat)
xv<-seq(0,30,.1)
yv<-predict(quadrat,list(x=xv,x2=xv^2))
plot(x,y,pch=16)
lines (xv,yv)
Fit der Exponentialfunktion y  ae bx (s. Tabelle Funktion Nr. 5)
exponentiell<-lm(log(y)~x)
summary (exponentiell)
anova (linear,exponentiell)
anova (quadrat, exponentiell)
par(mfrow=c(2,2))
plot(exponentiell)
yv2<-exp(predict(exponentiell,list(x=xv)))
plot(x,y,pch=16)
lines(xv,yv2,lty=2)
Frage: Welches Model ist vorzuziehen und warum?
(Antwort auf der nächsten Seite)
64
Die berechneten 3 Modelle gegenübergestellt:
Abb. 17:
Multiple R-Squared: 0.77
Adjusted R-Squared: 0.76
Multiple R-Squared: 0.91
Adjusted R-Squared: 0.90
Multiple R-Squared: 0.83
Adjusted R-Squared: 0.82
Die beste Anpassung zeigt das exponentielle Modell.
Allerdings ist bei einer Zerfallskurve kein lokales Maximum zu erwarten und aufgrund
unseres mechanistischen Hintergrundwissens über radioaktiven Zerfall entscheiden wir uns
für das Modell des exponentiellen Abbaus, obwohl das r-Quadrat und auch der Residuenplot
eine polynomiale Regression empfehlen.
Nichtlineare Regression
Wir haben ein nicht-lineares mechanistisches Modell und möchten die Parameter und
zugehörigen Standardfehler schätzen.
Nichtlinearität, dass die Zusammenhang kurvig ist und nicht durch Transformation
linearisiert werden kann (vgl. Kapitel 10.2.2.).
in R:



wir verwenden das statistische Modell nls („non-linear least squares“) statt
wie bisher lm
wir geben R die exakte Formulierung der Gleichung als Modellformel
R benötigt Anfangs-/Startwerte für die Berechnung der Parameter
Beispiel: Länge der Kieferknochen in Abhängigkeit vom Alter bei Rehen
mechanistisches Modell: y  a(1  e bx )
rehe<-read.table("C:\\Kaarina\\rrr\\kiefer.txt",header = TRUE)
attach(rehe)
names(rehe)
plot(alter,knochen,pch=16)
Schätzung der Startwerte:
Welchen Wert hat y bei x=∞?
y   a(1  e  )  a(1  0)  a
Parameter a lässt sich aus dem Grafen ablesen und liegt bei ca. 120.
Parameter c: die Kurve ist am steilsten bei y=40 und x=5.
b
log 1  y / a 
log( 1  40 / 120)

 0.08109302
x
5
library(nls)
model<-nls(knochen~a*(1-exp(-b*alter)),start=list(a=120,b=0.081))
summary(model)
Parameters:
Estimate
Pr(>|t|)
a 115.58044
b
0.11882
Std. Error
2.84364
0.01233
Plot der Werte:
av<-seq(0,50,0.1)
bv<-predict(model,list(alter=av))
plot(alter,knochen,pch=16)
lines(av,bv)
65
t
value
40.645
9.635
< 2e-16 ***
3.69e-13 ***
10.3. Multiple Regression
Bei einer kontinuierlichen abhängigen Variable und 2 oder mehr kontinuierlichen
erklärenden Variablen.
ozon<-read.table("C:\\Kaarina\\rrr\\ozone.data.txt",header = TRUE)
attach(ozon)
names(ozon)
10.3.1.
Grafische Voruntersuchungen
Gibt es Korrelation zwischen den erklärenden Variablen?
pairs(ozon,panel=panel.smooth)
Liegt Krümmung vor in der Abhängigkeit zur erklärenden Variablen?
library(mgcv)
par(mfrow=c(2,2))
model<-gam(ozone~s(rad)+s(temp)+s(wind))
plot(model)
Gibt es Interaktionen zwischen den erklärenden Variablen?
library(tree)
model<-tree(ozone~.,data=ozon)
plot(model)
text(model)
„Pairs-Plot“
Abb.18: „Pairs-Plot“ zum
Beispiel. Die abhängige
Variable, Ozon-Konzentration,
ist auf der y-Achse der untersten
Reihe.
 starke negative
Korrelation mit der
Wind-Geschwindigkeit
 positive Korrelation mit
der Temperatur
 möglicherweise humped
Korrelation mit der
Strahlung
66
„Gam-Plot“
Krümmung in der Abhängigkeit zur Ozon-Konzentration liegt vor bei Temperatur und Wind.
Allerdings nur bei der Temperatur schreibt auch das Konfidenzintervall eindeutig eine
Krümmung vor (ist eng genug angeschmiegt).
„Tree-Plot“
67



Temperatur ist der absolut wichtigste Faktor zur Erklärung der Ozon-Konzentration.
(Je länger die Zweig, desto größer die erklärte Varianz).
Windgeschwindigkeit ist ausschlaggebend bei hohen und niedrigen Temperaturen.
Windstille ist assoziiert mit hohen mittleren Ozon-Konzentrationen (am Ende einer
Verzweigung sind Mittelwerte der abhängigen Variable verzeichnet).
Strahlung (Radiation) hat folgenden Effekt:
 Bei niedrigen Temperaturen ist Strahlung wichtig bei relativ hohen
Windgeschwindigkeiten (<7.15),
 bei hohen Temperaturen ist Strahlung wichtig bei relativ niedrigen
Windgeschwindigkeiten (<10.6).
 hohe Strahlung geht in beiden Fällen mit hohen mittleren Ozon-Konzentrationen
einher.
10.3.2.
Modellierung
Welche erklärende Variablen sind in das Modell mit einzubeziehen?
Risiko der Überparametrisierung!
In das Ausgangsmodell nehmen wir alle 3 erklärenden Variablen mit allen ihren möglichen
Interaktionen:
temp, wind, rad, temp:wind, temp:rad, wind:rad, temp:wind:rad = 7 Parameter
Außerdem die quadrierten erklärenden Variablen, um dem Modell eine Krümmung in der
Anpassung an die Daten zu ermöglichen:
I(rad^2),I(temp^2),I(wind^2) = 3 Parameter
Insgesamt 10 Parameter im Modell stehen 111 Datensätzen gegenüber.
Faustregel bezüglich der Überparametrisierung: nie mehr als n/3 Parameter im Modell
schätzen. Diese Regel haben wir nicht gebrochen, Überparametrisierung liegt nicht vor!
model1<-lm(ozone~temp*wind*rad+I(rad^2)+I(temp^2)+I(wind^2))
summary(model1)
Nun wird Schritt für Schritt das Modell vereinfacht, beginnend mit den Interaktionen höchster
Stufe!!
model2<-update(model1,~.-temp:wind:rad)
summary(model2)
Aufgabe: Versuche selber fortzufahren!
68
model3<-update(model2,~.-wind:rad)
summary(model3)
model4<-update(model3,~.-temp:wind)
summary(model4)
model5<-update(model4,~.-I(rad^2))
summary(model5)
model6<-update(model5,~.-temp:rad)
summary(model6)
Jetzt sind schonmal alle Terme im Modell signifikant und wir überprüfen die
Voraussetzungen für statistische Modellierung (Gleichheit der Varianz und Normalverteilung
der Residuen).
par(mfrow=c(2,2))
plot(model6)
Da Heteroscedastizität vorliegt und auch keine Normalverteilung der Residuen gegeben ist,
versuchen wir es mit einer log Transformation der abhängigen Variablen.
model7<-lm(log(ozone)~temp+wind+rad+I(temp^2)+I(wind^2))
summary(model7)
Wir können weiter vereinfachen:
model8<-update(model7,~.-I(temp^2))
summary(model8)
par(mfrow=c(2,2))
plot (model8)
Wert Nr. 17 ist gem. dem Cook’s plot ein sehr einflussreicher Wert und wir überprüfen, ob
sich an der Parameterschätzung und den Standardfehler stark etwas ändert, wenn wir ihn
rauslassen:
model9<-lm(log(ozone)~temp+wind+rad+I(wind^2),subset=(1:length(ozon)!=17))
summary(model9)
par(mfrow=c(2,2))
plot(model9)
Ergebnis
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.7231644 0.6457316
1.120 0.26528
temp
0.0464240 0.0059918
7.748 5.94e-12 ***
wind
-0.2203843 0.0597744 -3.687 0.00036 ***
rad
0.0025295 0.0005404
4.681 8.49e-06 ***
I(wind^2)
0.0072233 0.0026292
2.747 0.00706 **
69
Abb. 19: Modell-Plot zur Überprüfung der Modellvoraussetzungen und
Anpassung.
70
11. ANCOVA – Analysis of Covariance
Kombination aus Regression und Anova (s. Übersicht Kapitel 7).
Die abhängige Variable ist kontinuierlich (z.B. Körpergewicht), wenigstens eine erklärende
Variable ist kontinuierlich (z.B. Körpergröße) und mindestens eine erklärende Variable ist
kategorisch (z.B. Geschlecht).
Das maximale Modell (vor Modellvereinfachung) beinhaltet die Schätzung einer Steigung
und eines Interzepts (Regression) für jede Stufe der kategorischen Variablen (Anova)
Durch Modellvereinfachung gibt es folgenden Modellvarianten der Ancova:
Aufgabe: Überlege, welchen Einfluss die Parameter in den obigen Modellvarianten jeweils
haben.
Regeln der Modellvereinfachung:
Entscheidungen basieren auf die erklärende Kraft der Modelle: wenn ein einfacheres Modell
nicht signifikant weniger der Variation in der Antwort erklärt, dann ist das einfachere Modell
vorzuziehen. Mit dem Befehl anova wird die erklärende Kraft der Modelle verglichen: Wir
behalten das kompliziertere Modell nur bei, wenn der p-Wert des Modellvergleichs weniger
als 0.05 beträgt.
71
unser Anfangsbeispiel:
Körpergewicht in Abhängigkeit von Größe und Geschlecht.
d<-read.table("C:\\Kaarina\\rrr\\daten.txt", header = TRUE)
attach(d)
names(d)
logweight=log(weight)
Das maximale Modell mit Interaktion Größe und Geschlecht lautet:
model1<-lm(logweight~size*sex)
summary.aov(model1)
size
sex
size:sex
Residuals
Df
1
1
1
46
Sum Sq
2.88642
0.10765
0.09580
0.63067
Mean Sq F value
Pr(>F)
2.88642 210.5317 < 2.2e-16 ***
0.10765
7.8516 0.007406 **
0.09580
6.9876 0.011185 *
0.01371
Zum Vergleich ein einfaches Modell ohne Interaktion von Größe und Geschlecht.
model2<-lm(logweight~size+sex)
summary.aov(model2)
size
sex
Residuals
Df Sum Sq Mean Sq F value Pr(>F)
1 2.88642 2.88642 186.7418 < 2e-16 ***
1 0.10765 0.10765
6.9644 0.01124 *
47 0.72647 0.01546
Vergleich beider zeigt: da ein signifkanter Unterschied in der Datenanpassung zwischen
Modell1 (komplizierter) und Modell2 (einfacher) besteht, ist das kompliziertere Modell 1
beizubehalten:
anova(model1,model2)
Model 1: d$weight ~ size * sex
Model 2: d$weight ~ size + sex
Res.Df
RSS Df Sum of Sq
F Pr(>F)
1
46 0.63067
2
47 0.72647 -1 -0.09580 6.9876 0.01119 *
72
Wie sehen die Parameter des Modells1 aus?
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.447253
0.750546 -0.596
0.5542
size
0.038798
0.004446
8.727 2.57e-11 ***
sexm
2.668649
1.078751
2.474
0.0171 *
size:sexm
-0.016077
0.006082 -2.643
0.0112 *
Interpretation des Outputs:
Wir haben insgesamt zwei Geraden berechnet und damit zwei Schnittpunkte mit der y-Achse
und 2 Steigungen. Wie können wir die Werte aus dem Output entnehmen?
Intercept:
Schnittpunkt mit der y-Achse für die Körpergröße (size) = 0 für eine Faktorstufe unserer
kategorischen Variable Geschlecht (sex). Doch welche Faktorstufe ist hier gemeint? Es ist die
Faktorstufe, die im Alphabet als erstes kommt. Faktorstufen bei uns: m und f (Kontrolle mit
der Eingabe levels(sex)). Es ist also die Faktorstufen für das Geschlecht weiblich (f).
size:
Es handelt sich um die Steigung einer der beiden Geraden. Auch hier ist wieder die Gerade
gemeint, die an die Gewichtsdaten der Frauen anpasst, da f im Alphabet vor m steht.
Damit ist die Gerade für die Frauen parametrisiert. Nun zu den Männern.
sexm:
Es handelt sich um den Unterschied zum Schnittpunkt der y-Achse der Frauen. Um den
Schnittpunkt mit der y-Achse der Männer zu berechnen addieren wir die beiden Werte:
-0.447253 + 2.668649 = 2.221396.
size:sexm:
Es handelt sich um den Unterschied in den Steigungen der beiden Kurven. Die Gerade der
Männer steigt um den Betrag -0.016077 flacher an. Die Steigung berechnet sich
folgendermaßen:
0.038798 -0.016077 = 0.022721
73
Zweites Beispiel:
d<-read.table("C:\\Kaarina\\rrr\\beweidung.txt", header = TRUE)
attach(d)
names(d)
plot(wurzel,ertrag)
plot(beweidung,ertrag)
Das überraschende und eher seltsames Ergebnis (beweidete Pflanzen haben einen höheren
Ertrag) wird auch durch eine voreilige Anova bestätigt:
voreilig<-aov(ertrag~beweidung)
summary(voreilig)
beweidung
Residuals
Df Sum Sq Mean Sq F value Pr(>F)
1 2910.4 2910.4 5.3086 0.02678 *
38 20833.4
548.2
Aber wir haben ja noch eine weitere erklärende Variable: die Anfängliche Wurzelgröße der
Pflanzen. Das Maximale Modell mit Interaktion lautet:
model1<-lm(ertrag~wurzel*beweidung)
summary.aov(model1)
Df Sum Sq Mean Sq F value
Pr(>F)
wurzel
1 16795.0 16795.0 359.9681 < 2.2e-16 ***
beweidung
1 5264.4 5264.4 112.8316 1.209e-12 ***
wurzel:beweidung 1
4.8
4.8
0.1031
0.75
Residuals
36 1679.6
46.7
Die Interaktion ist nicht signifikant und wir aus dem Modell entfernt. Ist das einfache Modell
in der Erklärung der Daten signifikant schlechter?
74
anova(model1,model2)
Model 1:
Model 2:
Res.Df
1
36
2
37
ertrag ~ wurzel * beweidung
ertrag ~ wurzel + beweidung
RSS Df Sum of Sq
F Pr(>F)
1679.65
1684.46 -1
-4.81 0.1031
0.75
Eindeutig nein (0.75>>0.05). Wir können das einfache Modell ohne Interaktion beibehalten.
Wie sehen die geschätzten Parameterwerte aus?
summary.lm(model2)
Estimate Std. Error t value Pr(>|t|)
(Intercept)
-127.829
9.664 -13.23 1.35e-15 ***
wurzel
23.560
1.149
20.51 < 2e-16 ***
beweidungunbeweidet
36.103
3.357
10.75 6.11e-13 ***
Wir haben also die Parameter für 2 Geraden, die parallel zueinander verlaufen, da sich die
Beweidung nicht auf den Anstieg des Ertrages auswirkt (Interaktion wurde entfernt). Der
Schnittpunkt mit der y-Achse liegt für die beweideten Daten bei -127.8, für die unbeweideten
Daten bei -91.7 (-127.829+36.103), da „beweidet“ im Alphabet vor „unbeweidet“ steht. Die
gemeinsame Steigung der Geraden beträgt 23.6.
ertr.split<-split(ertrag,beweidung)
wurzel.split<-split(wurzel,beweidung)
plot(wurzel,ertrag,type="n",ylab="Ertrag",
xlab="Anfänglicher Wurzeldurchmesser")
points(wurzel.split[[1]],ertr.split[[1]],pch=19)
points(wurzel.split[[2]],ertr.split[[2]],pch=21)
legend("topleft",
c("beweidet","unbeweidet"),pch=c(19,21))
abline(-127.829,23.56)
abline(-127.829+36.103,23.56)
Schlussfolgerung:
Die Beweidung führt also im Mittel zu einem geringeren Ertrag (vgl. Trugschluß s.o.).
Sind weitere erklärende Variablen vorhanden, so sind diese in das Maximale Modell mit
einzubeziehen und bei Nichtsignifikanz zu entfernen. Ansonsten kann es zu
Fehlinterpretationen kommen.
75
12.
Sammlung wichtiger Befehle
Hilfe
?
help()
apropos()
Community im Internet:
require(Paketname)
Zuordnung
Name <- …
Befehle auslösen
1. in der Konsole direkt: Befehlszeile eingeben und enter
2. im Dokument: markieren der Befehlszeile(n) und Ctrl + r
Datenzugriff
c(3,4,5,7)
seq(3,30,2)
read.table(“c:\\temp\\yvalues.txt”,header=T)
numeric(1000)
attach (dataframe)
detach (dataframe)
names (dataframe)
dataframe
dataframe [2:3,1:3]
dataframe [Var1 > 3 & Var2 > 1, c(1,3,6)]
dataframe [order(dataframe[,1]), 1:6]
dataframe [rev(order(dataframe[,1])), 1:6]
dataframe[2,1]
alle Vergleiche
vektor[2]
vektor[-1]
sort(vektor) [2]
sample (Wert,k,replace=T)
which(Var>10) = Position
Aufräumen
rm(Var1,Var2,Var3)
rm(list=ls())
76
Was läuft intern??? - Information und Steuerung
attach (dataframe)
detach (dataframe)
names (dataframe)
search()
Die Datenbank wird an den Suchpfad von R angehängt.
Das bedeutet, dass auf Objekte/Variablen direkt durch ihren
Namen zugegriffen werden kann.
Die Datenbank wird wieder aus dem Suchpfad von R entfernt.
Zeigt alle Objekt-/Variablennamen, die durch attach angehängt
sind.
Gibt eine Liste aller angehängten Pakete/packages (geladene
Programmeinheiten) und R Objekte (gewöhnlich die
angehängten dataframes).
ls () oder alternativ
objects ()
Zeigt die Namen der geladenen und verwendbaren Objekte wie
beispielsweise den Namen des dataframes.
rm(list=ls())
rm(VarX,Var,Y,VarZ,…)
Entfernt alle geladenen Objekte.
Entfernt nur die gelisteten Objekte.
str(df)
Zeigt die Struktur eines Objekts, z.B. eines dataframes.
Basics
Untersuchung einer Variablen
summary (dataframe)
sinnvolle Zusammenfassung zum Datensatz
im Einzelnen
sum(Var)
length(Var)
sort(Var)
min(Var)
max(Var)
range(Var)
diff(range(Var))
Summe der Variablenwerte
Anzahl der Variablenwerte
Variablenwerte aufsteigend sortieren
kleinster Variablenwert
größter Variablenwert
kleinster und größter Variablenwert
Spannbreite des Range
Mittelwerte und Co.
mean(Var)
var(Var)
sd(Var)
median(Var)
length(Var)/sum(1/Var)
oder
1/mean(1/Var)
77
arithmetischer Mittelwert
Varianz
Standardabweichung
Median
harmonisches Mittel
Praktisches
table(Var)
length(table(Var))
pretty(Var, n=5)
Zeile 1: Auflistung der Variablenwerte
Zeile 2: zugehörige Anzahl der einzelnen Variablenwerte
wie viele unterschiedliche Variablenwerte gibt es?
für Variable werden hübsche Intervallschritte (Anzahl = n)
gefunden
Plots
allgemeines:
plot.new()
oder
frame()
par(mfrow=c(2, 3))
neues Fenster öffnen
Grafikfenster eingeteilt in 2 Grafen untereinander und 3
nebeneinander
Scatterplot
plot(x,y,…)
type =
„p“
„l“
„b“
main = „…“
sub = „…“
xlab, ylab = „…“
asp
plottet x- und y-Werte
für Punkte
für Linien
für beides …
Haupttitel
Untertitel des Plots
Titel des x.-Achse und y-Achse
Verhältnis der x/y-Achse
weitere Grafen:
hist(Var)
boxplot(Var)
interaction.plot
qqnorm(Var,…)
qqline(Var,…)
+ siehe auch apropos(„plot“)
Histogramm
Boxplot
Quantil-Quantil-Plot
Quantil-Quantil-Plot gegen die Normalverteilung
Leeres Grafikfenster erzeugen:
plot(c(0,10),c(0,30),type=”n”)
spannt einen leeren Grafen auf von 0 bis 10 auf der x-Achse
und 0 bis 30 auf der y-Achse
78
Aktives Grafikfenster füllen:
points(x,y);
points(c(…),c(…))
lines(x,y)
lines(c(…),c(…))
abline(a,b)
abline(h=c(…),v=c(…))
Linie mit a=Schnittpunkt y-Achse und b=Steigung
h= y-Werte für horizontale Linien, v= x-Werte für vertikale
Linien
Argumente unter:
par
plot.default
plot.window
Parameter für Grafen
Argumente für Scatterplots
Rechnen
sqrt(x)
exp(x)
log(x)
modulo:
gerade%%2=0
ungerade%%2=1
ceiling(x)
der kleinste Integer größer als x
Statistische Tests
ctest = Classical Tests
Name
Fisher’s F test
Student’s t-test
Befehl
Wilcoxon’s rank test
wilcox.test
Binominal-Test
Pearson’s oder
Spearman’s
Rankkorrelation
chi-square test
prop.test
cor.test
Fisher’s exact test
fisher.test
79
var.test
t.test
chisq.test
wann
Vergleich von 2 Varianzen
Vergleich von 2 Proben mit normalverteilten
Fehlern
Vergleich von 2 Proben mit nichtnormalverteilten Fehlern
Vergleich von 2 Proportionen
Korrelation von 2 Variablen
Test der Unabhängigkeit in
Kontingenztabellen
Test der Unabhängigkeit in
Kontingenztabellen
Herunterladen