Erzeugen zweier Datenreihen und anzeigen:
x <- c(30, 40, 20, 30)
y <- c(40, 50, 10, 20)
x
y
[1] 30 40 20 30
[1] 40 50 10 20
Zuerst stellen wir die Datenpunkte nochmal im Streudiagramm dar:
plot(x, y, pch=19, xlim=c(0,60), ylim=c(0,60))
Die lineare Regression versucht nun, die Datenpunkte im Streudiagramm durch eine Gerade zu beschreiben. Es geht es darum, die beiden Parameter a und b für diese Gerade zu finden.
In R macht man die einfache Regressionsrechnung mit:
lm(y ~ x)
Call:
lm(formula = y ~ x)
Coefficients:
(Intercept) x
-30 2
Die Parameter a und b werden hier als "Coefficients" bezeichnet. "Intercept" ist der Schnittpunkt mit der y-Achse. Der Parameter a ist also -30. Und der Parameter b ist 2.
Mithilfe der abline()
-Funktion können wir die Regressionsgerade auch ganz einfach im Streudiagramm anzeigen: ℹ️ Hinweis
plot(y ~ x)
ist dasselbe wie plot(x, y)
. Die plot()
-Funktion akzeptiert beide Aufrufformate gleichermaßen.
Wir ändern jetzt das Format des Funktions-Aufrufs, um es an lm(y ~ x)
anzupassen. So kann man leichter erkennen, dass es bei beiden Befehlen gewissermaßen um dasselbe geht: Den Zusammenhang von X
und Y
. Bzw. die Art, wie Y
von X
abhängt.
Die Sprechweise von y ~ x
ist "Y by X". Die Tilde (~) spricht man am besten als by. Y
richtet sich sozusagen nach X
.
plot(y ~ x)
heißt, Y
wird dargestellt in Abhängigkeit von X
.
lm(y ~ x)
heißt, Y
wird vorausgesagt anhand von X
.
plot(y ~ x, pch=19, xlim=c(0,60), ylim=c(0,60))
abline(lm(y ~ x), col="red")
Auch für unser ℹ️ mtcars Objekt können wir eine Regressionsgerade einblenden:
Das Objekt mtcars
ist ein Data Frame für 32 Automodelle aus den 1970er Jahren mit technischen Angaben, wie etwa die Anzahl Zylinder. Es ist bei jeder R-Installation immer automatisch vorhanden. Als Übungs-Datensatz.
plot(mtcars$mpg ~ mtcars$wt, pch=19, xlab="Gewicht", ylab="Meilen pro Gallone")
abline(lm(mtcars$mpg ~ mtcars$wt), col="red")
x <- c(30, 40, 20, 30)
y <- c(40, 50, 10, 20)
x
y
lm(y ~ x)
plot(y ~ x, pch=19, xlim=c(0,60), ylim=c(0,60))
abline(lm(y ~ x), col="red")
plot(mtcars$mpg ~ mtcars$wt, pch=19, xlab="Gewicht", ylab="Meilen pro Gallone")
abline(lm(mtcars$mpg ~ mtcars$wt), col="red")