________________________________________________________________________________
Inhalt....: Regression
Kategorie.: Arbeitsblatt
Mathematik: Stochastik, Statistik
MuPAD.....: 3.1.1
Datum.....: 2005-07-04
Autoren...: Anke Kusterer <kusterer@math.uni-goettingen.de>
Autoren...: Anna Lena Stahr <annalena.stahr@web.de>
Funktionen: stats::linReg, stats::reg, plot::Scatterplot
________________________________________________________________________________
Regression
Dieses Notebook führt in die lineare und allgemeine Regression mit MuPAD ein.
Wir betrachten ein Zufallsexperiment, dessen Ergebnis Y nicht nur vom Zufall,
sondern auch vom Wert x einer sogenannten erklärenden Variablen abhängt,
und fragen nach dem Zusammenhang zwischen den Werten der erklärenden
Variablen und dem Ergebnis Y des Zufallsexperiments. Zum Beispiel könnten
wir den Einfluss des Körpergewichts auf den Blutdruck oder den Einfluss der
Körpergröße auf das Körpergewicht untersuchen. Natürlich haben nicht alle
Menschen mit einer festen Körpergröße x dasselbe Körpergewicht. Das
Körpergewicht hängt also nicht nur von der Körpergröße x, sondern auch von
der zufällig ausgewählten Person ab. In diesem Sinne ist das Körpergewicht Y
als eine Zufallsvariable zu verstehen.
Wird der Zusammenhang zwischen der erklärenden Variable und dem Ausgang
des Zufallsexperiments durch eine Gleichung der Form Y=a+bx+N beschrieben
- hierbei sind a und b reelle Zahlen und N ist eine normalverteilte Zufallsvariable
mit Erwartungswert 0 und Varianz s2 - so spricht man von einem linearen
Regressionsmodell. Zwischen der erklärenden Variable x und dem
Erwartungswert der Zufallsvariablen Y besteht dann eine lineare Abhängigkeit:
E(Y)=a+bx. Die Beeinflussung des Ergebnisses durch den Zufall wird also durch
die Zufallsvariable N wiedergegeben.
Die Parameter a und b werden Regressionskoeffizienten genannt, die durch
y=a+bx beschriebene Gerade heißt Regressionsgerade.
Wie aber bestimmt man die Regressionskoeffizienten?
Dazu führen wir bei verschiedenen Werten x1,…,xn der erklärenden Variablen
unabhängige Experimente durch und benennen die zugehörigen Zufallsvariablen
mit Y1,…,Yn. Ihre Ausgänge bezeichnen wir entsprechend mit y1,…,yn. Für das
Gesamtexperiment erhalten wir dann das Modell Yi = a + bxi + Ni, i=1,...,n, wobei
Ni unabhängige, normalverteilte Zufallsvariablen mit Erwartungswert 0 und
Varianz s2 sind. Die Zufallsvariablen Y1,…,Yn sind somit unabhängige, aber nicht
identisch verteilte Zufallsvariablen. Wir stellen die Datenpaare (xi, yi) als
Punktwolke in einem zweidimensionalen Koordinatensystem dar. Wegen des
Zufallseinflusses auf das Ergebnis des Experiments liegen die Punkte nicht alle
auf der Regressionsgeraden, sondern um diese herum verstreut:

Unser Problem besteht nun darin, aus den Datenpaaren (xi, yi), i=1,...,n, die
Regressionsgerade zu schätzen. Dazu versuchen wir, die Summe der Quadrate
der vertikalen Abstände zwischen den Datenpunkten und der
Regressiongeraden y=a+bx zu minimieren:

Diese Methode wird Kleinste-Quadrate-Methode genannt.
Die Werte für die Regressionskoeffizienten erhalten wir, indem wir die partiellen
Ableitungen von Q(a,b) nach a und b gleich 0 setzen. Wir erhalten dann das
lineare Gleichungssystem


Mit

folgt aus der ersten Gleichung

Wir setzen das in die zweite Gleichung ein und erhalten

Wegen

erhalten wir dann

Im Folgenden betrachten wir ein Beispiel:
Beim Auswerten von Studien ist man häufig daran interessiert, den Zusammen-
hang zwischen zwei oder mehreren ermittelten Variablen zu betrachten.
Graphisch können zwei solche Größen (hier Körpergewicht und Systolischer
Blutdruck) als Punktwolke dargestellt werden. Dazu definieren wir die zwei Listen
"Gewicht" und "Blutdruck", in denen der i. Eintrag jeweils dem Gewicht bzw. dem
Blutdruck des i. Patienten entspricht:
Gewicht:=[54.5, 77.0, 78.5, 48.0, 90.0, 86.5, 54.6, 61.0, 66.0, 54.0, 85.0, 80.0, 80.5, 96.7,
68.0, 50.0, 71.5, 55.0, 78.5, 94.5, 68.7, 97.2, 53.0, 84.0]:
Blutdruck:=[128, 154, 180, 96, 142, 170, 122, 130, 118, 98, 172, 149, 150, 181, 170, 109, 140,
150, 139, 157, 121, 160, 91, 161]:
N:=nops(Gewicht);nops(Blutdruck)
![]()
![]()
Z:=[[Gewicht[i],Blutdruck[i]]$i=1..N]
![]()
Wolke:=plot::PointList2d(Z,Color=RGB::DarkBlue,
AxesTitles=["Körpergewicht",
"Systolischer Blutdruck"]):
plot(Wolke)

Berechnung der Regressionsgeraden mit MuPAD
Durch diese Punktwolke (das sogenannte Scatter-Diagramm), kann nun eine
Regressionsgerade gelegt werden. Diese kann auf zwei Arten ermittelt werden:
a) Mit dem Befehl stats::linReg
b) Mit Hilfe von plot::Scatterplot
zu a)
Der Befehl stats::linReg berechnet unter Annahme einer linearen Beziehung
yi = a + bxi + Ni zwischen den Datenpaaren (xi, yi) die Koeffizienten a und b mit
der Methode der kleinsten Quadrate (d.h., dass die Summe der quadratischen
Fehler minimiert wird). stats::linReg gibt folgende Werte der Regressionsgerade
aus: [[y-Achsen-Abschnitt, Steigung], minimale Summe der Quadrate]
Für unser Körpergewicht-Blutdruck-Beispiel von oben sieht dies wie folgt aus:
A:=stats::linReg(Gewicht,Blutdruck)
![]()
Die oben erzeugte Punktwolke und die so ermittelte Regressionsgerade in einer
Grafik:
RG:= x -> A[1][1]+x*A[1][2]:
RG_Fkt:=plot::Function2d(RG,x=30..100,Color=RGB::Green):
plot(RG_Fkt,Wolke,AxesTitles=["Körpergewicht",
"Systolischer Blutdruck"])

Im nächsten Diagramm zeichnen wir zusätzlich die vertikalen Abstände zwischen
den Datenpunkten und der Regressiongeraden ein.
Strecken:=plot::Line2d([Gewicht[i],RG(Gewicht[i])],
[Gewicht[i],Blutdruck[i]],
Color=RGB::CadmiumRedLight)$i=1..N:
plot(Wolke, RG_Fkt, Strecken,
AxesTitles=["Körpergewicht","Systolischer Blutdruck"])

Durch die folgende Berechnung wird die Summe der Quadrate der vertikalen
Abstände ermittelt. Diese entspricht der minimalen Quadratsumme, die MuPAD
oben alks zweiten Operanden von A ausgegeben hat.
_plus((RG(Gewicht[i])-Blutdruck[i])^2 $ i=1..N)
![]()
zu b)
Die Funktion plot::Scatterplot erzeugt eine Punktwolke zweier diskreter
Datensätze [x1, x2,…,xn] und [y1, y2,…,yn]. Zusätzlich wird eine Regressionsgerade
y=a+bx aus den gegebenen Datenpaaren [x1, y1], ..., [xn, yn] berechnet und
gezeichnet. Die Werte für die Regressionskoeffizienten werden intern mit der oben
bereits beschriebenen Funktion stats::linReg berechnet.
plot(plot::Scatterplot(Gewicht, Blutdruck),
AxesTitles=["Körpergewicht","Systolischer Blutdruck"]):

Allgemeine Regression
Bei komplexeren Zusammenhängen ist die Methode der linearen Regression
oft nicht anwendbar. Ein Beispiel für so einen komplexen Zusammenhang ist
das Wachstum von Pflanzen oder Bakterienpopulationen, bei dem die
Größe der Pflanze bzw. der Population exponentiell mit der Zeit zunimmt.
Faktoren wie die Lichteinstrahlung, Temperatur, usw. bewirken den
Zufallseinfluss auf das Experiment.
Einige Vorgänge lassen sich auch durch Regressionskurven höherer als erster
Ordnung beschreiben. Wir wollen im Folgenden ein Beispiel für einen
quadratischen Zusammenhang untersuchen.
Beispiel für ein quadratisches Regressionsmodell:
In einem Test wurde der Bremsweg eines Fahrzeugs in Abhängigkeit von der
Geschwindigkeit gemessen. Das Fahrzeug fuhr dazu mit Geschwindigkeiten
von 30 km/h bis 150 km/h auf die Teststrecke zu:
Geschwindigkeit:=[i$i=30..150]:
Es wurden jeweils die folgenden Bremswege gemessen:
Bremsweg:=
[3.97891745, 21.061060588, 17.06037225, 24.01629131, 12.43126793, 9.8094236134,
19.651019548, 16.98468274, 19.84417492, 12.73642417, 25.14649198,
21.44683376, 15.46205634, 24.29414796, 15.392030178, 33.71120709,
23.16474327, 18.57062022, 23.36230183, 29.21325307, 28.75010144, 15.9006755,
27.74729473, 15.00564141, 30.59248623, 45.93836398, 35.95137232,
33.46136017, 36.38423997, 41.13594597, 40.59400644, 50.59150549,
25.15378406, 35.81940001, 41.77130433, 49.61868359, 37.45803546,
47.73291978, 41.18957922, 45.20238232, 49.92015362, 61.77461266,
50.31902651, 41.14787663, 63.87246223, 60.0820335, 64.78429958, 69.47030006,
65.52763979, 70.98651649, 63.6321556, 60.82405466, 69.01625347, 62.98062434,
75.9652618, 82.48404609, 64.5017531, 68.7538461, 77.1799272, 77.75655815,
75.73198462, 78.69878317, 92.20989107, 91.38679956, 89.82156977,
93.93645958, 82.52517617, 94.26709463, 102.0333729, 89.90982932,
105.9134785, 103.6583097, 113.5349407, 109.0112797, 115.3997244,
104.9828971, 108.8500553, 102.6576437, 117.0859873, 124.6961986,
115.9476952, 124.0723524, 125.0712362, 126.6447242, 130.7179894,
128.1730612, 134.0034832, 144.0433438, 125.5202107, 140.737293, 133.4085889,
145.1791798, 153.2579911, 140.0843198, 152.3572198, 150.8776044,
163.6669613, 152.0843418, 169.1345325, 167.9793435, 170.0085124,
182.4530317, 163.730378, 173.7505832, 174.3549419, 190.2999208, 189.7779234,
196.9631235, 187.3460035, 201.4765792, 206.7704613, 189.4863833,
202.3327058, 217.4426568, 210.3733267, 203.0912722, 210.4641933,
225.4045869, 235.6651301, 222.3858326, 226.2468696]:
M:=nops(Geschwindigkeit);nops(Bremsweg)
![]()
![]()
Wir stellen die Datenpaare wieder in einer Punktwolke dar:
Autotest:=[[Geschwindigkeit[i],Bremsweg[i]]$i=1..M]:
test:=plot::PointList2d(Autotest,Color=RGB::MidnightBlue):
plot(test,AxesTitles=["Geschwindigkeit in km/h",
"Bremsweg in m"])

Wendet man nun den Befehl plot::Scatterplot an, erhält man folgende Grafik:
plot(plot::Scatterplot(Geschwindigkeit,Bremsweg),
AxesTitles=["Geschwindigkeit in km/h","Bremsweg in m"]):

Die lineare Regression liefert hier eine unbefriedigende Lösung. Für
kleine Geschwindigkeiten sagt sie einen negativen Bremsweg voraus.
Außerdem wissen wir aus der Physik bereits, dass sich bei doppelter
Geschwindigkeit der Bremsweg vervierfacht.
MuPAD bietet für das allgemeine Regressionsmodell die Funktion stats::reg.
stats::reg berechnet die Regressionskoeffizienten für die allgemeine
Regression. Dazu muss der funktionale Zusammenhang angegeben werden.
Für unseren quadratischen Fall bedeutet dies:
ax2+bx+c
Es könnte jedoch auch jeder andere Zusammenhang eingegeben werden.
stats::reg gibt die Regressionskoeffizienten in der in der Eingabe angegeben
Reihenfolge und als letzten Wert die minimale Summe der Quadrate aus.
C:=stats::reg(Geschwindigkeit,Bremsweg,a*x^2+b*x+c,[x],[a,b,c])
![]()
w:=plot::Function2d(C[1][1]*x^2+C[1][2]*x+C[1][3],
x=30..150,Color=RGB::Pink):
plot(w,test)

Zuletzt vergleichen wir noch die Summe der Quadrate der vertikalen Abstände
bei linearer und bei quadratischer Regression:
stats::linReg(Geschwindigkeit, Bremsweg);
stats::reg(Geschwindigkeit,Bremsweg,a*x^2+b*x+c,[x],[a,b,c])
![]()
![]()
Die quadratische Regression liefert also tatsächlich eine bessere Beschreibung
des funktionalen Zusammenhangs zwischen der Geschwindigkeit und dem
Bremsweg.
________________________________________________________________________________
Aufgabe:
1. An Versuchspersonen wurden Körpergröße [cm] (erster Eintrag) und Körpergewicht [kg]
(zweiter Eintrag) gemessen:
(188,5;88,5), (177,5;86,5), (183;102), (182;93), (170;81,5), (185,5;83,5),
(175,5;82,5), (175,5;96), (183;87,5), (173;79,5)
Stellen Sie die Ergebnisse der Untersuchung in einer Punktwolke dar, berechnen Sie die
Regressionskoeffizienten und plotten Sie die Regressionsgerade.
________________________________________________________________________________
Anmerkungen:
1. Für die wahrscheinlichkeitstheoretischen Grundlagen sei beispielweise auf das Buch "Einführung in
die Wahrscheinlichkeitstheorie und Statistik" von Dehling, H. & Haupt, B., Springer-Verlag
Berlin Heidelberg 2003, verwiesen.
2. Weitere Anregungen zum Einsatz von MuPAD in der Lehre finden Sie auf unserem WebPortal
MuPAD in Schule und Studium unter: http://schule.mupad.de bzw. http://studium.mupad.de.
________________________________________________________________________________