Kovarianz < Statistik/Hypothesen < Stochastik < Oberstufe < Schule < Mathe < Vorhilfe
|
Aufgabe | http://people.revoledu.com/kardi/tutorial/Similarity/MahalanobisDistance.html |
Ich versuche diese Berechnung zu verstehen. Leider kann ich nicht erkennen wie man auf die Kovarianz von Gruppe 1 bzw. 2 kommt, kann mir jemand die Berechnung z.B. von x2 zeigen?
Die Formel lautet ja:
[mm] Ci=\bruch{1}{ni}*X^{T}*X
[/mm]
Wie komme ich nun z.B. auf die:
[mm] 0.56=\bruch{1}{5}*X^{T}*X [/mm] ??
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Ok, ist soweit klar. Also die eigentliche Aufgabe besteht darin die Mahalanobisdistanz zweier Vektoren in Java zu berechnen (Programmieren).
Dazu muss ich ja die Kovarianzberechnen. Jedoch haben wie folgenden Hinweis erhalten:
Die Koeffizienten sind quasi unkorreliert, was unsere Kovariantmatrix auf die Hauptdiagonale schrumpfen lässt. In diesm Fall ist es einfach die Matrix mit den Inversen der varianzen auf der Hauptdiagonale.
Wenn man dazu noch weiß:
Cov (X, X) = Var(X) erhalten wir einen Vektor mit Erwartungswert und einen weiteren mit den Varianzen.
--
Leider komm ich nicht weiter. Ich verstehe nicht ganz was wie ich das berechne.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:17 Fr 11.01.2013 | Autor: | luis52 |
> Ok, ist soweit klar. Also die eigentliche Aufgabe besteht
> darin die Mahalanobisdistanz zweier Vektoren in Java zu
> berechnen (Programmieren).
Hm, bist dum mit Java "verheiratet". In R geht das im Handumdrehen...
>
> Dazu muss ich ja die Kovarianzberechnen. Jedoch haben wie
> folgenden Hinweis erhalten:
>
> Die Koeffizienten sind quasi unkorreliert, was unsere
> Kovariantmatrix auf die Hauptdiagonale schrumpfen lässt.
> In diesm Fall ist es einfach die Matrix mit den Inversen
> der varianzen auf der Hauptdiagonale.
> Wenn man dazu noch weiß:
> Cov (X, X) = Var(X) erhalten wir einen Vektor mit
> Erwartungswert und einen weiteren mit den Varianzen.
>
Angenommen die Vektoren sind [mm] $\mathbf{x}=(x_1,\dots,x_p)'$ [/mm] und [mm] $\mathbf{y}=(y_1,\dots,y_p)'$. [/mm] Aus der Datenmatrix berechnest du die Varianz-Kovarianzmatrix [mm] $\mathbf{S}=(s_{ij})$. [/mm] Dann ist die MD [mm] $\sqrt{(\mathbf{x}-\mathbf{y})'\mathbf{S}^{-1}(\mathbf{x}-\mathbf{y})}$. [/mm] In deinem ist also [mm] $\mathbf{S}$ [/mm] die Diagonalmatrix der [mm] $s_{ii}$ [/mm] und [mm] $\mathbf{S}^{-1}$ [/mm] ist folglich die Diagonalmatrix der [mm] $1/s_{ii}$. [/mm] In diesem Fall vereinfacht sich die Chose zu
[mm] $\sqrt{(\mathbf{x}-\mathbf{y})'\mathbf{S}^{-1}(\mathbf{x}-\mathbf{y})=\sum_{i=1}^p\frac{(x_i-y_i)^2}{s_{ii}}}$.
[/mm]
Was es mit dem Vektor von Erwartungwerten auf sich hat, ist mir nicht klar,
vg Luis
|
|
|
|
|
Leider wird mir das noch nicht so ganz klar, können wir das vielleicht an einem Beispiel verdeutlichen?
Also ich habe zwei Vektoren die veglichen werden sollen, der Abstand.
Vektor A
v1 = (x0, x1, x2, .... x39)
v2 = (x0, x1, x2, .... x39)
v3 = (x0, x1, x2, .... x39)
.
.
.
v57 = (x0, x1, x2, .... x39)
Vektor B
v1 = (y0, y1, y2, .... y39)
v2 = (y0, y1, y2, .... y39)
v3 = (y0, y1, y2, .... y39)
.
.
.
v32 = (y0, y1, y2, .... y39)
Der eine Vektor hat 57 Beobachtungen und 39 Werte.
Der Vektor B hat 32 Beobachtungen und 39 Werte.
Da soll jetzt geprüft werden wie stark der unterschied ist, mit mahalanobis.
Zunächst muss ich wie in dem Beispiel auf der Webseite. Für jeden Vektor in jeder Spalte die Werte addieren. Also (y1+y1+y1+y1) / Gesamtzahl(32). Dann erhalte ich das arithmetische Mittel. Anschließend für jede Zelle arithm. Mittel - Zelle. Dann erhalte ich ka eine neue Matrix mit den Centered data.
Stimmt das soweit ??
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:21 Fr 11.01.2013 | Autor: | luis52 |
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
>
> Also ich habe zwei Vektoren die veglichen werden sollen,
> der Abstand.
Nein, du hast anscheinend zwei Matrizen.
>
> Vektor A
> v1 = (x0, x1, x2, .... x39)
> v2 = (x0, x1, x2, .... x39)
> v3 = (x0, x1, x2, .... x39)
> .
> .
> .
> v57 = (x0, x1, x2, .... x39)
Nennen wir diese Matrix $\mathbf{X}$. (Deine Notation ist ungluecklich: Wie unterscheidest $x_0$ bei $v_1$ von $x_0$ bei $v_2$?).
>
> Vektor B
> v1 = (y0, y1, y2, .... y39)
> v2 = (y0, y1, y2, .... y39)
> v3 = (y0, y1, y2, .... y39)
> .
> .
> .
> v32 = (y0, y1, y2, .... y39)
Nennen wir diese Matrix $\mathbf{Y}$.
>
> Der eine Vektor hat 57 Beobachtungen und 39 Werte.
> Der Vektor B hat 32 Beobachtungen und 39 Werte.
$\mathbf{X}$ hat 57 Zeilen und 39 Spalten, $\mathbf{Y}$ hat 32 Zeilen und 39 Spalten.
>
> Da soll jetzt geprüft werden wie stark der unterschied
> ist, mit mahalanobis.
>
> Zunächst muss ich wie in dem Beispiel auf der Webseite.
Anscheinend beziehst du dich auf B, also $\mathbf{Y}$
> Für jeden Vektor in jeder Spalte die Werte addieren. Also
> (y1+y1+y1+y1) / Gesamtzahl(32).
Muessen hier nicht 32 Summanden stehen?
> Dann erhalte ich das
> arithmetische Mittel. Anschließend für jede Zelle arithm.
> Mittel - Zelle.
Nehmen wir mal die Matrix $\mathbf{X}$. Der Eintrag in Zeile $i=1,\dots,57$ und Spalte $j=1,\dots,39$ sei $x_{ij}$. Dann sind 39 arithmetische Mittel $\bar x_j=\frac{1}{59}\sum_{i=1}^{59}x_{ij}$ zu berechnen. Sie ergeben den ersten Mittelwertevektor $\bar{ \mathbf{x}}=(\bar x_1,\dots,\bar x_{39})'$. Analog berechnest du $\bar{\mathbf{y}}=(\bar y_1,\dots\bar y_{39})'$ mit $\bar y_j=\frac{1}{32}\sum_{i=1}^{32}y_{ij}$.
> Dann erhalte ich ka eine neue Matrix mit
> den Centered data.
Ja, und zwar so z.B. $\hat{\mathbf{X}}=(\hat {x}_{ij}})$ mit $\hat{x}_{ij}=x_{ij}-\bar x_j$. d.h. zu ziehst in Spalte $j$ jeweils das Spaltenmittel ab.
vg Luis
|
|
|
|
|
Ok, und aus dieser neuen Matrix bilde ich normal die Inverse ("Spalten und Zeilen Tauschen"). Und nun berechne die Kovarianzmatrix.
$ [mm] C_i=\bruch{1}{ni}\cdot{}\red{\hat X^{T}\cdot{}\hat X} [/mm] $
Aber brauche ich das oder hilft mir hier der Hinweis um arbeit zu sparen?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:08 Fr 11.01.2013 | Autor: | luis52 |
> Ok, und aus dieser neuen Matrix bilde ich normal die
> Inverse ("Spalten und Zeilen Tauschen"). Und nun berechne
> die Kovarianzmatrix.
>
> [mm]C_i=\bruch{1}{ni}\cdot{}\red{\hat X^{T}\cdot{}\hat X}[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Genauer gesagt musst du $\mathbf{C}_1=\frac{1}{57}\hat{\mathbf{X}}'\hat{\mathbf{X}$ und $\mathbf{C}_2=\frac{1}{32}\hat{\mathbf{Y}}'\hat{\mathbf{Y}$ berechnen.
>
> Aber brauche ich das oder hilft mir hier der Hinweis um
> arbeit zu sparen?
Anscheinend ist bekannt dass $\mathbf{C}_j$ eine Diagonalmatrix ist. Dann ist auch $\mathbf{S}=\frac{1}{57+32}(57\mathbf{C}_1+32\mathbf{C}_2)$ eine Diagonalmatrix. Und $\mathbf{S}^{-1}$ auch. Die brauchst zur Berechnung der MD $(\bar{\mathbf{x}}-\bar{\mathbf{y}})'\mathbf{S}^{-1}(\bar{\mathbf{x}}-\bar{\mathbf{y}})$.
vg Luis
|
|
|
|
|
MD Steht für Mahalanobis Distanz?
Also muss ich wirklich die Inverse der beiden Matrix bilden und dann für beide Vektoren die Kovarianz aus der inversen und normalen Matrix? S lässt sich dann ganz einfach berechnen. Nur wie komm ich auf $ [mm] \mathbf{S}^{-1} [/mm] $ ?
Wenn ich alles habe setzt ich es in Mahalanobis ein und erhalte die Distanz?
$ [mm] (\bar{\mathbf{x}}-\bar{\mathbf{y}})'\mathbf{S}^{-1}(\bar{\mathbf{x}}-\bar{\mathbf{y}}) [/mm] $.
Weiß nicht ob du damit was anfangen kannst, aber so sieht mein Code aktuell für einen Vektor aus. So erhalte ich meine neue Matrix (matrixA) diese muss ich nun invertieren.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 10:20 Sa 12.01.2013 | Autor: | luis52 |
> MD Steht für Mahalanobis Distanz?
Ja.
>
> Also muss ich wirklich die Inverse der beiden Matrix bilden
> und dann für beide Vektoren die Kovarianz aus der inversen
> und normalen Matrix? S lässt sich dann ganz einfach
> berechnen. Nur wie komm ich auf [mm]\mathbf{S}^{-1}[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
?
Wie gesagt, wenn $\mathbf{S}$ eine Diagonalmatrix ist mit Elementen $s_{ii}$, so ist $\mathbf{S}^{-1}$ eine Diagonalmatrix ist mit Elementen $1/s_{ii}$.
>
>
> Wenn ich alles habe setzt ich es in Mahalanobis ein und
> erhalte die Distanz?
Ja. Du brauchst sogar gar keine Matrix zu berechnen. Aufgrund der einfachen Struktur ist hier MD=$\sqrt{\sum_{i=1}^p\frac{(\bar x_i-\bar y_i)^2}{s_{ii}}}}$.
> .
>
>
> Weiß nicht ob du damit was anfangen kannst,
Nein.
vg Luis
|
|
|
|
|
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Okay. Also setze ich wie folgt in diese Formel ein.
MD=$ \sqrt{\sum_{i=1}^p\frac{(\bar x_i-\bar y_i)^2}{s_{ii}}}} $.
p Ist die Anzahl der Vektoren also 39 ?
$ \bar x $ War mein Vektor mit den 39 Mittelwerten von Vektor X (pro Spalte)
$ \bar y $ entsprechend für Vektor Y
Das subtrahiert und anschließend quadriert.
Nur was ist $ s_{ii} $, dazu benötige ich doch diese Formel, was wiederum heißt das ich die Kovarianzmatrix benötige?
$ \mathbf{S}=\frac{1}{57+32}(57\mathbf{C}_1+32\mathbf{C}_2) $
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 12:16 Sa 12.01.2013 | Autor: | luis52 |
>
> Nur was ist [mm]s_{ii} [/mm], dazu benötige ich doch diese Formel,
Genauso wie du fuer jede Spalte der Matrizen die 39 arithmetischen Mittel berechnest, berechnest du fuer jede Spalte die mittlere quadratische Abweichung (mqA). Angenommen, eine Spalte hat die Elemente [mm] $z_1,\dots,z_n$ [/mm] (mit $n=57$ oder $n=32$). Dann ist
[mm] $s^2=\frac{1}{n}\sum_{i=1}^n(z_i-\bar z)^2$.
[/mm]
Auf diese Weise entsteht einerseits die Diagonalmatrix [mm] $\mathbf{C}_1$ [/mm] der mqA der x-Matrix und die Diagonalmatrix [mm] $\mathbf{C}_2$ [/mm] der mqA der y-Matrix. Dann ist $ [mm] \mathbf{S}=\frac{1}{57+32}(57\mathbf{C}_1+32\mathbf{C}_2) [/mm] $. Das ist eine Diagonalmatrix mit Diagonalelementen
[mm] $s_{ii}=\frac{1}{89}\left(\sum_{k=1}^{57}(x_{ki}-\bar x)^2+\sum_{k=1}^{32}(y_{ki}-\bar y)^2\right)$.
[/mm]
Und $ [mm] \mathbf{S}^{-1}$ [/mm] ist die Diagonalmatrix der Kehrwerte [mm] $1/s_{ii}$. [/mm] Aber wie gesagt, eine Matrix musst du nicht berechnen.
vg Luis
|
|
|
|
|
Ok. Die Formel ist nun klar. Nur bin ich nun etwas mit Spalten und Zeilen verwirrt.
Ich habe für VektorA (57 Zeilen, 39 Spalten), das arithmetische Mittel berechnen also habe ich 39 Ergebnisse.
Das gleiche habe ich für Vektor B (32 Zeilen, 39 Spalten) gemacht. Auch 39 Ergebnisse.
Nun kann ich die mqA für die Spalten berechnen das wäre dann für VektorA 2223 Subtraktionen und für Vektor B 1248 Subtraktionen. Die Ergebnise werden summiert und anschließend addiert.
Und zum Schluss mal 1/89 gerechnet. Dann habe ich Sii für MB.
Stimmt das?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 12:57 Sa 12.01.2013 | Autor: | luis52 |
> Ok. Die Formel ist nun klar. Nur bin ich nun etwas mit
> Spalten und Zeilen verwirrt.
>
> Ich habe für VektorA (57 Zeilen, 39 Spalten), das
> arithmetische Mittel berechnen also habe ich 39
> Ergebnisse.
>
> Das gleiche habe ich für Vektor B (32 Zeilen, 39 Spalten)
> gemacht. Auch 39 Ergebnisse.
>
> Nun kann ich die mqA für die Spalten berechnen das wäre
> dann für VektorA 2223 Subtraktionen und für Vektor B
> 1248 Subtraktionen. Die Ergebnise werden summiert und
> anschließend addiert.
Hm, bei der Berechnung hast du die Additionen doch auch nicht gezaehlt
Fuer die Matrix A-Matrix (nicht Vektor!) musst du 39 Werte [mm] $\sum_{k=1}^{57}(x_{ki}-\bar x)^2$, $i=1,\dots,39$ [/mm] berechnen, und fuer die Matrix B auch 39 Werte [mm] $\sum_{k=1}^{32}(y_{ki}-\bar y)^2$, $i=1,\dots,39$,.
[/mm]
> Und zum Schluss mal 1/89 gerechnet. Dann habe ich Sii für
> MB.
Ja, $ [mm] s_{ii}=\frac{1}{89}\left(\sum_{k=1}^{57}(x_{ki}-\bar x)^2+\sum_{k=1}^{32}(y_{ki}-\bar y)^2\right) [/mm] $.
vg Luis
|
|
|
|
|
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Edit:
Mir ist gerade selbst aufgefallen das es nicht stimmt.
$ \sqrt{\sum_{i=1}^p\frac{(\bar x_i-\bar y_i)^2}{s_{ii}}}} $.
p ist die Anzahl der Spalten? 39? Also berechne ich ja auch Sii nur pro Spalte.
Ich habe dann 2 Vektoren pro Spalte die ich für MD benötige.
1. arith Mittel
2. Sii
Und das pro Spalte also 39 mal.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:42 Sa 12.01.2013 | Autor: | luis52 |
> Edit:
> Mir ist gerade selbst aufgefallen das es nicht stimmt.
>
> [mm]\sqrt{\sum_{i=1}^p\frac{(\bar x_i-\bar y_i)^2}{s_{ii}}}} [/mm].
>
> p ist die Anzahl der Spalten? 39? Also berechne ich ja auch
> Sii nur pro Spalte.
>
> Ich habe dann 2 Vektoren pro Spalte die ich für MD
> benötige.
> 1. arith Mittel
> 2. Sii
>
> Und das pro Spalte also 39 mal.
> Vieleicht noch mal anders beschrieben wie ich sii berechne, mit Beispielzahlen.
>
> VektorA (3 Zeilen, 5 Spalten)
> 1. --- 3, 6, 9, 7, 4
> 2. --- 6, 8, 1, 0, 4
> 3. --- 8, 6, 2, 4, 3
>
> VektorB (4 Zeilen, 5 Spalten)
> 1. --- 3, 8, 7, 6, 4
> 2. --- 5, 6, 8, 7, 1
> 3. --- 3, 1, 0, 8, 4
> 4. --- 9, 2, 5, 7, 1
>
> Bestimme pro Spalte pro Vektor das arithmetische Mittel.
>
> VektorA 5.7 6.7 usw.
> VektorV 5 4.25 usw.
>
> Kann ich dann einfach für Sii wie folgt rechnen?
> 1/7 * [(3-5.7)² + (8-6.7)² + .... usw.] +[(3-5)²+(8-4.25)²+(7-... usw.]
Fast!
1/7 * [(3-5.7)² + (6-6.7)² + .... usw.] +[(3-5)²+(8-4.25)²+(7-... usw.]
>
> Die erste eckige Klammer hat dann 15 Berechnungen (additionen) und die
> zweite Klammer 20 Berechnungen (additionen). Stimmt das?
Mag sein. Ist das wichtig?
vg Luis
PS: Das Beispiel hinkt, da einige Korrelationen sehr gross sind.
|
|
|
|