Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1360to1364
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
Inhaltsverzeichnis

Standardabweichung von Array [VBA]

Standardabweichung von Array [VBA]
21.05.2014 15:52:24
Array
Hallo zusammen,
ich benötige die Standardabweichung von einem Array, ich habe bisher den Durchschnitt aus 60-Renditewerten berechnet, dies funktioniert auch
    'Renditeberechnung'
For n = 1 To UBound(St) - 1
rendite(n) = (St(n, 1) / St(n + 1, 1)) - 1
Next n
'Berechnung des E-Werts'
For i = 1 To 1141
sum = 0
For n = 1 To 60
sum = sum + rendite(i + n - 1)
Next
WinAve(i, 1) = sum / 60
Next i

Nun wollte ich genauso die Standardabweichung berechnen, leider komme ich dabei auf das selbe _ Ergebnis, wie beim Erwartungswert: Nun meine Frage, was muss ich bei der Standardabweichung ändern?

Berechnung der StDev'
For i = 1 To 1141
StDev = 0
For n = 1 To 60
StDev = StDev + rendite(i + n - 1)
Next
WinStd(i, 1) = StDev / 60
Next i

Vielen Dank!!!

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Standardabweichung von Array [VBA]
21.05.2014 15:59:19
Array
Die Standardabweichung ist die Quadratwurzel aus der Varianz,
die Varianz ist definiert als die Differenz von den Einzelwerten zum Erwartungswert im Quadrat durch die Anzahl der Werte.
ich denke das Problem liegt eher darin, wenn ich mir das so anschaue sehe ich keinen großen Unterschied zur Berechnung des E-Wertes und der StD-Abweichung, abgesehen von den Bezeichnern...
Gruß
kimbo

AW: Standardabweichung von Array [VBA]
21.05.2014 16:01:33
Array
Entschuldige!
die Varianz ist definiert als die Differenz von den Einzelwerten zum Erwartungswert im Quadrat durch die Anzahl der Werte.

Die Summe daraus durch die Anzahl der Werte!

Anzeige
AW: Standardabweichung von Array [VBA]
21.05.2014 16:06:42
Array
Hallo, ja ich dachte StDev macht das automatisch :(
Wäre es dann so richtig:
    For n = 1 To UBound(St) - 1
rendite(n) = (St(n, 1) / St(n + 1, 1)) - 1
Next n
'Berechnung des E-Werts'
For i = 1 To 1141
sum = 0
For n = 1 To 60
sum = sum + rendite(i + n - 1)
Next
WinAve(i, 1) = sum / 60
WinStd(i, 1) = (rendite(i) - WinAve(i, 1)) / 60
Next i

AW: Standardabweichung von Array [VBA]
21.05.2014 16:13:51
Array
Hab das Quadrat vergesssen:
    For n = 1 To UBound(St) - 1
rendite(n) = (St(n, 1) / St(n + 1, 1)) - 1
Next n
'Berechnung des E-Werts'
For i = 1 To 1141
sum = 0
For n = 1 To 60
sum = sum + rendite(i + n - 1)
Next
WinAve(i, 1) = sum / 60
WinStd(i, 1) = (rendite(i) - WinAve(i, 1)) ^ 2 / 60
Next i

Anzeige
AW: Standardabweichung von Array [VBA]
21.05.2014 16:22:04
Array
Die Funktion StDev ist eine WorksheetFunction soweit ich weiß, die müsstest du dann auch dementsprechend verwenden.
So dürfte das noch nicht ganz funktionieren.
Schau mal hier: http://www.anthony-vba.kefra.com/vba/vba1.htm vorbei, das sollte dein Problem lösen.

AW: Standardabweichung von Array [VBA]
21.05.2014 16:36:02
Array
Vielen Dank für den Link, leider komme ich immer noch nicht auf das manuell errechnete Ergebnis...
    For n = 1 To UBound(St) - 1
rendite(n) = (St(n, 1) / St(n + 1, 1)) - 1
Next n
'Berechnung des E-Werts'
For i = 1 To 1141
Sum = 0
For n = 1 To 60
Sum = Sum + rendite(i + n - 1)
Next
WinAve(i, 1) = Sum / 60
Next i
For i = 1 To 1141
SumSq = 0
For n = 1 To 60
SumSq = SumSq + (rendite(i) - WinAve(i, 1)) ^ 2
StdDev = Sqr(SumSq / (60 - 1))
Next n
WinStd(i, 1) = StdDev
Next i

Anzeige
AW: Standardabweichung von Array [VBA]
22.05.2014 08:33:50
Array
Hi,
war gestern nicht mehr am Rechner.
Ist es wichtig für dich die Werte in ein zweidimensionales Array zu schreiben? Werden die Einzelwerte später ausgelesen?
Sonst versuch es mal so:
'Für den Mittelwert
Sum = 0
For n = 1 To 60
Sum = Sum + rendite(n)
Next n
WinAve = Sum / 60
'Für die Standardabweichung
SumSq = 0
For n = 1 To 60
SumSq = SumSq + (rendite(n) - WinAve) ^ 2
Next n
StdDev = Sqr(SumSq / (60 - 1))

Gruß kimbo

AW: Standardabweichung von Array [VBA]
22.05.2014 11:31:10
Array
Ja, ich brauche ja den Vektor, da sich das Feld immer verschiebt...also erst betrachte ich wert 1-60, dann 2-61, dann 3-62...außerdem muss ich mir am Ende den Vektor auf einem Tabellenblatt ausgeben lassen...

Anzeige
AW: Standardabweichung von Array [VBA]
22.05.2014 11:47:11
Array

For n = 1 To UBound(St) - 1
rendite(n) = (St(n, 1) / St(n + 1, 1)) - 1
Next n
'Berechnung des E-Werts'
For i = 1 To 1141
sum = 0
For n = 1 To 60
sum = sum + rendite(i + n - 1)
Next
WinAve(i, 1) = sum / 60
'Für Standardabweichung
For i = 1 to 1141
For n = 1 to 60
SumSq = SumSq + (Rendite(i + n-1) - WinAve(i,1)^2
next n
WinStd(i, 1) = Sqr(SumSq/59)
Next i
Funktionierts so?

AW: Standardabweichung von Array [VBA]
23.05.2014 16:27:18
Array
Vielen Dank, es funktioniert!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige