Grundlagen

Bei einer Division von links zweier Vektoren, wird in Matlab die Lösung mit dem
kleinsten Fehler selbst berechnet, wenn keine genaue Lösung ermittelt werden
kann. Deshalb wird keine spezielle Funktion zur Durchführung einer Regression
benötigt.
In der Regression werden die Gleichungssysteme verschiedener Geraden gelöst.
Die Gleichungen sind durch Matrizen entstanden. In den Matrizen können keine
Variablen stehen.
Das Ziel ist, dass eine Gleichung wie Unten im Nachhinein vorhanden ist:

Hinweis: Wenn in der Parametermatrix Variablen stehen, muss die Funktion
transformiert werden, damit die Gleichung lösbar ist.
Wenn die Parameter-Matrix(M) Variablen beinhaltet, kann Matlab diese
Regressionsanalyse nicht durchführen. Dafür müssen die Funktionen in
Parameter-Matrix in eine geeignete Form transformiert werden.

Beispiel 1:
Bestimmen Sie die beste Parabel durch diese Punkte
(1,3|2,2),(2|3),(4,1|5),(5,5|6,25)
unter Berücksichtigung von Standardabweichung = 0,5
Lösung: (linearisiert)
Eine Parabelgleichung sieht so aus: (Fit-Funktion)

M ist die Parameter-Matrix und a beinhaltet die Lösungen (Koeffizienten-Matrix)


x1 bis x4 sind hier angelegt worden, da 4 Punkte gegeben sind. 

 

 

Programm-Code
x=[1.3 2 4.1 5.5]; % Vorgegebene x-Werte als Vektor anlegen
y=[2.2 2.3 5 6.25]; % Vorgegebene y-Werte als Vektor anlegen
sy=[0.5 0.5 0.5 0.5]; % Standardabweichung an allen Stellen als Vektor
M=ones(4,3); % die M-Matrix mit 4 Reihen und 3 Spalten
M(:,1)=x.^2; % in alle 4 Elemente der ersten Spalte von M wird x^2
eingesetzt
M(:,2)=x; % in alle 4 Elemente der zweiten Spalte von M wird x eingesetzt.
Bei der 3. Spalte wurde vorher 1 eingesetzt, deshalb sind hier keine
Änderungen nötig.
yneu=y./sy; % y-Werte dividiert durch die Standardabweichung und in
yneu abgespeichert.
Mneu=zeros(4,3); % eine neue Matriz mit gleicher Größe wie M aber mit
Nullen, damit die bestimmten Elemente mit anderen Werten eingesetzt
werden.
For i=1:3
% For-Schleife läuft von 1 bis 3 (Anzahl von Termen bzw. Spalten)
Mneu(:,i)=M(:,i)./sy‘; % die M-Elemente jeweils durch Standardabweichung berechnet
End % Beendung der For-Schleife
a=Mneu\yneu‘; %Berechnung von a-Werten (Koeffizienten). Bei einer
linearen Gleichung (y=M*a), um a auszurechnen, ist normalerweise y/M zu
berechnen. Aber bei Matrizen ist die Schreibweise wie folgt:
M\y‘ (y wird transponiert, damit es lösbar ist)
yfit=M*a; % Jetzt müssen die berechneten a-Werte mit M (nicht Mneu)
multipliziert werden, um y-Werte von der Fit-Funktion zu erhalten
errorbar(x,y,sy,’o’)
chiq=norm((yfit’-y)./sy).^2; % Berechnung von Chi-Quadrat, welche in
Matlab vorprogrammiert wurde. Unter dem Befehl: norm
Standardabweichung der gefitteten Funktion
MM=inv(Mneu’*Mneu);
Sa=sqrt(diag(MM);

Beispiel 2: (nicht linearisiert)
Passen Sie an die folgenden 8 Punkte
(0|2),(1|1,1),(3|1),(4|0,5),(5|4),(6|4),(7|5),(8|8) mit der Methode der kleinsten
Quadrate die Funktion
an.
Bestimmen Sie die Standardabweichungen der ermittelten Parameter und führen Sie einen x^2 – Test durch die Standardabweichungen der obigen y-Werte setzen
sie dabei mit 2 an.

Mit Startvektor a=[50,10,10,20]

Lösung:
Clear all
Close all
x=0:8;
y=[2, 1.1 ,1 ,0.5, 4, 4, 5 ,8];
sy=[2 2 2 2 2 2 2 2]; % Standardabweichungsvektor . Eine weitere
Schreibweise dieses Vektors ist: sy=2*ones(1,8)
(2 wird mit allen Komponenten einer 1-Matrix mit einer Reihe und 8 Spalten
multipliziert)
a=[50,10,10,20]; % Startvektor für nicht linearisierte Regression-Aufgaben
anlegen.
F=@ (a) norm(fitf(x,a)-y)./sy); % Formel der Methode der kleinsten Quadrate
die Funktion
Hinweis: Variable a wird definiert, damit diese durch andere Matlab-Befehle
minimiert werden kann und dann zum Quadrat als auch gleich Chi-Quadrat
gesetzt wird.
[an, fval, exitflag]= fminsearch (F,a);
chiq=fval^2; % fval ist die minimierte F und “an” die neue a-werte. Fval hoch
2 zur Berechnung von Chi-Quadrat
xneu=-0.5:0.01:9;
yneu=fitf(x,an); %fitf wurde Seperat als eine Funktion definiert.
errorbar(x,y,sy,‘o‘);
hold on
plot(xneu,yneu)
axis([-1 9 0 10])
hold off
M=ones(8,4) ; % da es in der Funktion 4 Parameter sind, werden für die MMatrix 4 Spalten benötigt. (Also a,b,c,d . Die Partielle Ableitung).
Hinweis: den Parameter a nicht mit a (Koeffizienten) verwechseln.
M(:,1)= 1./(x-an(3)).^2+an(4); % in der ersten Spalte der M wird die erste
Ableitung der Funktion nach a abgespeichert.
„an (3)“ einspricht dem Parameter c und an (4)=d.
M(:.2)= -1./(x-an(3)).^2; % in der zweiten Spalte der M wird die erste
Ableitung der Funktion nach b abgespeichert.
„an (3)“ entspricht dem Parameter c .
M(:,3)=2(x+an(3))*(an(1)-an(2)); % in der dritten Spalte der M wird die
erste Ableitung der Funktion nach c abgespeichert.
M(:.4)= an(1);
Mneu=zeors(8,4);
For i=1:4 % gleiche Anzahl wie die Spalten von M
Mneu(:.i)=M(:,i)./sy’; % Jeweilige Spalte der Matrix wird durch die
Standardabweichung dividiert. Die Standardabweichung wird transponiert
eingegeben, damit die Division möglich ist.
end
MM=inv(Mneu’*Mneu);
Sa=sqrt(diag(MM);
Fitfunktion:
Function f = fitf(x,a)
f=(a(1)-a(2))./((x-a(3)).^2)+a(3)*a(4);
end