|
|
Polynomial Regression
Public Sub Regrese()
Dim varr As Variant
Dim vara As Single
Dim varb As Single
Dim varc As Single
Dim MinRow As Long
Dim MaxRow As Integer
Dim dblAverage As Double
Dim i As Integer
Dim SST As Double
Dim SSE As Double
Dim R2 As Double
MinRow = 2
MaxRow = Application.CountA(Columns(1))
varr = Application.LinEst(Range("B" & MinRow & ":B" & MaxRow), _
Application.Power(Range("A" & MinRow & ":A" & MaxRow), Array(1, 2)), True, 0)
vara = Application.Index(varr, 1)
varb = Application.Index(varr, 2)
varc = Application.Index(varr, 3)
Range("E3").Value = vara
Range("F3").Value = varb
Range("G3").Value = varc
dblAverage = Application.WorksheetFunction.Sum(Range("B1:B" & MaxRow)) / (MaxRow - 1)
For i = 1 To MaxRow - 1
SSE = SSE + ((Cells(i + 1, 1) ^ 2) * vara + Cells(i + 1, 1) * varb + varc - Cells(i + 1, 2)) ^ 2
SST = SST + (Cells(i + 1, 2) - dblAverage) ^ 2
Next i
R2 = 1 - (SSE / SST)
Range("F4").Value = R2
End Sub
|
|