30 lines
1 KiB
Text
30 lines
1 KiB
Text
Option Base 1
|
|
Private Function polynomial_regression(y As Variant, x As Variant, degree As Integer) As Variant
|
|
Dim a() As Double
|
|
ReDim a(UBound(x), 2)
|
|
For i = 1 To UBound(x)
|
|
For j = 1 To degree
|
|
a(i, j) = x(i) ^ j
|
|
Next j
|
|
Next i
|
|
polynomial_regression = WorksheetFunction.LinEst(WorksheetFunction.Transpose(y), a, True, True)
|
|
End Function
|
|
Public Sub main()
|
|
x = [{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}]
|
|
y = [{1, 6, 17, 34, 57, 86, 121, 162, 209, 262, 321}]
|
|
result = polynomial_regression(y, x, 2)
|
|
Debug.Print "coefficients : ";
|
|
For i = UBound(result, 2) To 1 Step -1
|
|
Debug.Print Format(result(1, i), "0.#####"),
|
|
Next i
|
|
Debug.Print
|
|
Debug.Print "standard errors: ";
|
|
For i = UBound(result, 2) To 1 Step -1
|
|
Debug.Print Format(result(2, i), "0.#####"),
|
|
Next i
|
|
Debug.Print vbCrLf
|
|
Debug.Print "R^2 ="; result(3, 1)
|
|
Debug.Print "F ="; result(4, 1)
|
|
Debug.Print "Degrees of freedom:"; result(4, 2)
|
|
Debug.Print "Standard error of y estimate:"; result(3, 2)
|
|
End Sub
|