Я могу сгенерировать правильный перехват и коэффициенты для множественной регрессии (Math. Net), суммируя до трех независимых переменных. Тем не менее, как только четвертая независимая переменная добавлена, возвращаемые значения уже не близки к закрытию.
Используя этот код:
Dim i As Integer
Dim g(5)() As Double
g(0) = {1.0, 4.0, 3.2}
g(1) = {2.0, 5.0, 4.1}
g(2) = {3.0, 2.0, 2.5}
g(3) = {4.0, 3.0, 1.6}
g(4) = {4.0, 3.0, 1.6}
Dim d As Double() = {3.5, 5.6, 1.2, 15.2, 3.4, 4.2}
Dim p As Double() = MultipleRegression.QR(Of Double)(g, d, intercept:=True)
For i = 0 To UBound(p)
Debug.WriteLine(p(i))
Next
Я получаю:
-2.45972222222223
1.13194444444445
3.11805555555555
-2.38888888888889
Это правильно.
Однако, если я запускаю тот же код, но добавляю 4-ю независимую переменную как таковую:
Dim i As Integer
Dim g(5)() As Double
g(0) = {1.0, 4.0, 3.2, 5.3}
g(1) = {2.0, 5.0, 4.1, 2.4}
g(2) = {3.0, 2.0, 2.5, 3.6}
g(3) = {4.0, 3.0, 1.6, 2.1}
g(4) = {4.0, 3.0, 1.6, 2.1}
g(5) = {4.0, 3.0, 1.6, 2.1}
Dim d As Double() = {3.5, 5.6, 1.2, 15.2, 3.4, 4.2}
Dim p As Double() = MultipleRegression.QR(Of Double)(g, d, intercept:=True)
For i = 0 To UBound(p)
Debug.WriteLine(p(i))
Next
Я получаю:
6.88018203734109E+17
-9.8476516475107E+16
-3.19472310972754E+16
-4.61094057074081E+16
-5.92835216238101E+16
Эти числа нигде близко не быть правильным.
Если кто-нибудь может дать какое-либо указание относительно того, что я делаю неправильно, я был бы очень признателен. ТИА