Nutzung von Matrixfunktionen mit VBA array
Matrixfunktionen
Die Ausgabe soll als User Defined
Function geschehen.
Leider sagt mir Excel bei der Ausgabe der Daten, dass der falsche Datentyp verwendet wurde.
Da ich kein VBA Profi bin, definiere ich ohnehin nur Zählvariablen als Integer. Alles andere _
lasse ich undefiniert, sodass sowohl die Funktion als auch die Arrays automatisch als Variant deklariert werden müssten.
Die Berechnungen der Arrays innerhalb von VBA wird richtig berechnet, das habe ich soweit geprfü _
ft.
Ziel ist für eine Vielzahl an Zeitreihen eine Multifaktor Regression durchzuführen. Ich weiss, _
dass es natürlich mit der RGP Funktion bzw. Linest möglich ist. Die Zeitreihen sind jedoch alle unterschiedlich lang und beginnen bzw. enden zu unterschiedlichen Zeitpunkten. Daher definiere ich eben die Vektoren in VBA individuell.
Der Code sieht folgendermaßen aus (ist sicherlich nicht der effizienteste und schnellste)
Function linreg_rowdata(r, x)
Dim m As Integer, n As Integer, j As Integer, i As Integer, k As Integer, l As Integer
Dim y, Z
Dim beta
m = WorksheetFunction.Max(r.Rows.Count, r.Columns.Count)
n = WorksheetFunction.Min(x.Rows.Count, x.Columns.Count)
j = WorksheetFunction.Count(r)
ReDim y(1 To j)
ReDim Z(1 To j, 1 To n + 1)
ReDim beta(1 To n + 1)
k = 1
For i = 1 To m
If r(i) "" Then
y(k) = r(i)
For l = 2 To n + 1
Z(k, 1) = 1
Z(k, l) = x(l - 1, i)
Next l
k = k + 1
End If
Next i
beta = WorksheetFunction.MMult(WorksheetFunction.MInverse(WorksheetFunction.MMult( _
WorksheetFunction.Transpose(Z), Z)), WorksheetFunction.MMult(WorksheetFunction.MInverse(Z), y))
linreg_rowdata = beta
End Function