Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
804to808
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Korrelationskoeffizient

Korrelationskoeffizient
22.09.2006 21:44:07
marco hirschinger
Hallo Leute,
weis einer von euch vielleicht wie man in Excel den Autokorrelationskoeffizienten
berechnen und zu einer Zeitreihe ein Autokorrelogramm erstellen kann?
Für eine baldige Antwort wäre ich sehr dankbar.
mfG
Hirschinger Marco

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Korrelationskoeffizient
22.09.2006 23:42:51
ingUR
Hallo, Marco,
in welcher Form wilst Du die Kooefizienten nutzen? Als Ergebeniswert bei Vorgabe von lag k oder als Reihe für k = 1.. n-1?
Im ersten falls wäre aus dem nachfolgenden Programmcode die Funktion Autokoorelation in eine Zellenfunktion umzugestellten, die dann in der Form =Autokoorelation(B2:B100, 3, Mittelwert(B2:B100)) aufgerufen werden könnte, wobei der zweite Übergabeparameter den Wert für k darstellt.
Option Explicit
Sub AutoKoor()
Dim y() As Double, c() As Double, rnorm() As Double
Dim firstRow As Long, lastRow As Long, r As Long
Dim sum As Double, n As Long, yMittel As Double, k As Long
firstRow = Range("A:A").Find(What:="Zeit", _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, _
MatchCase:=True).Row + 1
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
ReDim y(lastRow - firstRow + 1)
ReDim c(lastRow - firstRow + 1)
ReDim rnorm(lastRow - firstRow + 1)
For r = firstRow To lastRow
y(r - firstRow + 1) = Cells(r, 2)
sum = sum + y(r - firstRow + 1)
n = n + 1
Next r
yMittel = sum / n
rnorm(0) = 1
For k = 0 To n - 1
c(k) = AutoKoorelation(y(), k, yMittel)
If k > 0 Then rnorm(k) = c(k) / c(0)
Cells(firstRow + k, 3) = k
Cells(firstRow + k, 4) = rnorm(k)
Next k
End Sub
Function AutoKoorelation(y() As Double, k As Long, yM As Double) As Double
Dim sum As Double, t As Long, n As Long
n = UBound(y)
For t = 1 To n - k
sum = sum + (y(t) - yM) * (y(t + k) - yM)
Next t
AutoKoorelation = sum / n
End Function

Die Datentabelle liegt dabei in der Form vor, das in Spalte A eine Kopfzeile den Begriff Zeit enthält. Daran anschließend stehen die Zeitwerte. In der Spalte B stehen die Werte der zu untersuchenden Zeitreihe.
In den Spalten C und E werden die k und die zugehörigen r-Werte, = empirische Autokoorelation c(k) / enpirische Varianz) = c(k)/c(0), eingetragen.
Gruß,
Uwe
https://www.herber.de/bbs/user/36942.xls
Anzeige
AW: Korrelationskoeffizient
22.09.2006 23:50:52
ingUR
Da ist etwas "verschluckt" worden, denn es muß natürlich im letzten Absatz lauten:
... = empirische Autokorrelation r(k) = (Autokovarianz(k) / empirische Varianz) = c(k)/c(0) ...
Gruß!
AW: Autokorrelationskoeff. als Zellenformel
24.09.2006 10:26:55
ingUR
Hall!
Ergänzend zum Makro, hier eine Lösung mit Zellenformel zu bestimmung der Autokorrelationsfaktoren
https://www.herber.de/bbs/user/36959.xls
Prüfung und Tests sind vor Einsatz erforderlich.
Gruß!
AW: Autokorrelationskoeff. als Zellenformel
24.09.2006 21:02:21
Hirschinger Marco
Hallo Uwe,
erstmal vielen Dank für deine schnelle Antwort. Was du mit lag k meinst weis ich leider nicht. Vielleicht könntest du dir mal bitte die folgenden 2 Bilder anschauen:
https://www.herber.de/bbs/user/36971.jpg

Die Datei https://www.herber.de/bbs/user/36972.jpg wurde aus Datenschutzgründen gelöscht

Mein Problem besteht die auf S. 29 gezeigte Formel auf eine Zeitreihe anzuwenden um daraus ein Autokorrelogramm wie auf S. 30 zu machen ?!
Gruß Marco
Anzeige
AW: Autokorrelationskoeff. als Zellenformel
25.09.2006 12:16:06
ingUR
Hallo, Marco,
prinzipiell sollten die beiden Ansätze, nämlich dem, den ich der EXCEL-Programmierung zugrunde gelegt habe und dem im Buchauszug, Formel ( B.23 ), zu gleichen Aussagen über die Zeitreihe führen. Einzig wird der Mittelwert ( yMittel ) aus einem unterschiedlichen Datenumfang gewonnen, wodurch sich die Relationen in ihren Werten verändern ohne dass sie relativ zueinander das Bild verändern.
Da ich nicht sicher bin, wie weit die Deutung und die Aussage der Autokorrelation graphisch vorgestellt ist, hier der Versuch einer Kurzerläuterung:
Sofern zwei Datenbereiche sich in ihrem Verlauf ähneln oder gar decken, so spricht man von positiver Korrelation dieser beiden Bereiche. Das Maß der Güte ist eine Relationszahl zwischen +1 und –1. Je näher der Wert bei +1 liegt, um so besser ist der Gleichlauf der beiden Graphen (positive Korrelation). Werte nahe bei –1 bedeuten den gegengerichteten Verlauf (negative Korrelation). Nimmt der ermittelte Korrelationsfaktor Werte um Null an, so kann kein Gleichlauf zwieschen den zu vergleichenden Kurvenabschnitten festgestellt werden.
Stammen die beiden zu vergleichenden Datenbereichen aus einer Datenreihe, so spricht man von Autokorrelation, da der Bezug zu "sich selbst" ermittelt wird.
Als Beispiel sei die Cosinusfunktion betrachtet. Ihr Mittelwert yM wird, bei genügend umfangreicher Datenmenge, den Wert Null annehmen. Die Differenzen der y-Werte zum Mittelwert, ( y-yM ), sind dann die Funktionswerte selbst.
Wird eine "Transparentkopie" dieser Cosinuskurve über diese Kurve gelegt, so sind diese beiden Kurven deckungsgleich.
Bildet man nun das Summenprodukt über alle diese Differenzen, dann erhält man die Varianzfunktion:
Bildet man nun das Summenprodukt über alle diese Differenzen, dann erhält man die Varianz:
st2 = Summe( (yt-yM) * (yt-yM) )
Da wegen der Quadrierung der Differenzen in diesem Fall nur positive Werte entstehen, ergibt sich gegenüber den nachfolgend ermittelten Werten, der größte Wert in den betrachteten Intervallgrenzen der Zeitreihe.
Verschiebt man nun die Transparentkopie um eine Einheit nach rechts, so wird klar, dass zwar für beide Zeitreihen der Mittelwert und auch die Differenzen jeder Zeitreihe zum Mittelwert identisch bleiben, jedoch das Produkt zum Zeitpunkt t wird nun berechnet zu:
( yt-yM ) * ( yt+1-yM )
Es wird klar, dass nun nicht mehr ein Maximalwert bei der Summenbildung errechnet wird, da einerseits nun negative Anteile entstehen können, andererseits aber auch die korrespondierenden Produktsummenteile kleiner werden, als die Summe aus den Quadraten (z.B., jedoch nicht als mathematische Beweisführung: 34 = 5*5 + 3*3 > 5*3 + 3*5 = 30 ).
Die Autovarianzfunktion nimmt damit diese Gestalt an:
gt2 = Summe( (yt-yM) * (yt+k-yM) )
wobei k, hier gleich 1, die (Zeit-)Verschiebung der Datenbereiche relativ zueinander benennt ( lag, engl.: Zeitabstand, Verzögerung, Zeitdifferenz... ).
Es wird klar, wenn man k von 1 bis N-1 laufen lässt, dass man dann mit der Funktion gt2 eine Autovarianzfunktion erhält.
Dividiert man alle diese Werte der Autovarianzfunktion durch den Wert der Varianzfunktion mit k = 0, dann erhält im Wertebereich von +1 bis –1 die Autokorrelationsfunktion, die als Korrelogramm aufgetragen wird.
Bei dieser Betrachtung wird von einem Mittelwert ausgegangen, den durch die Ursprungsgraphen und dessen Datenpunkte bestimmt ist.
Da jedoch immer nur die N Datenpunkte in die Berechnung einfließen, die durch das Intervall T gegeben sind, wird deutlich, dass die Anzahl der Summenglieder sich mit vergrößernder Verschiebung sich verringern (Summet=1, T-k bzw. Summet=1+k, T). Das kann bei der Ermittlung der Mittelwerte berücksichtigt werden und führt so zu unterschiedlichen Berechnungsansätzen.
Wesentlich ist jedoch die Aussage der Autokorrelationsfunktion: die betragsmäßigen Größtewerte signalisieren positive bzw. negative Korrelation der Datenbereiche. Eine zyklische Wiederkehr derartiger Ausprägungen liefern eine Periodenlänge.
Klar ist, dass bei k = 0 der Funktionswert der Autokorrelation den Wert 1 annimmt, denn die beiden Kurvenbereiche sind deckungsgleich (Höchstmaß an positiver Korrelation).
Mit zunehmender Verschiebung (lag) nimmt die Korrelation zwischen den sich im Intervall T überdeckenden Kurvenbereichen ab, bis dieser Wert auf das Höchstmaß der negativen Korrelation, nämlich –1, abfällt, was bedeutet, dass die "Cosinisberge" (phi = 0, 2*pi, 4*pi, ...) des einen Datenbereiches, mit den "Cosinustälern" (phi = pi, 3*pi, 5*pi,...) des anderen Datenbereiches zeitgleich auftreten. Die Verschiebung beträgt als Kreisfrequenz gerade pi.
https://www.herber.de/bbs/user/36981.xls
Die Graphern auf der Buchseite 30 sind ideele Verläufe, die in dem ersten Bild eine negative Korrelation bei Verschiebung der Datenbereiche um k = tau = 6 und eine positive Korrelation bei Verschiebung um k = tau = 12 in der ausgangsdatenreihe erkennen lassen. Das Zeite Bild zeigt, dass nur die Überdeckung ohne Zeitdifferenz ein hohes Maß an positiver Korrelation liefert, während jede Vergrößerung der Verschiebung zum fehlen einer Korrelation führt.
Die Zellenformeln, die hier zur Umsezung der Zellenformeln angeschrieben wurden, sind in ihren Einzelkomponenten ermittelt, so dass das Nachfollziehen der Teile möglich wird (Prüfen und Testen kann zu Veränderungen der Formel führen!). Das Zusammenführen dieser Formeln zu einer Zellenformel ist möglich, indem man dei Komponentenformeln entsprechend zusammenkopiert.
Das Verändern des Makros bedeutet, die Summenbildungen in den entsprechenden Grenzen durchzuführen, die die Mittelwertbildung aus den (T-tau)-Werten impliziet in der Formel enthält. Dazu komme ich momentan nicht mehr. Wenn dieser Schritt notwenndig ist, und Du dabei Unterstützung wünschst, dann melde Dich einfach.
Gruß,
Uwe
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige