VB.Net在执行线性回归时具有双倍数据范围

时间:2014-09-23 15:34:25

标签: vb.net linear-regression

我在VB.Net中使用这些数据执行线性回归

1411478155,71.9700012207031 1411478150,72.9700012207031 1411478145,73.9700012207031 1411478140,74.9700012207031 1411478135,76.9700012207031 1411478130,78.9700012207031 1411478125,80.9700012207031 1411478120,81.9700012207031 1411478115,82.9700012207031 1411478110,84.9700012207031 1411478105,85.9700012207031 1411478100,88.9700012207031

我正在使用的公式是

enter image description here

其中x = UTC秒,y =值

在分母中,我得到零值,因为分母中的两个表达式都等于2.8688695263517E+20的值。

我将我的系列定义为, Dim xs(12) As [Double] Dim ys(12) As [Double] 我不确定方括号是否重要。 目前,由于零分母,我无法获得结果。我应该使用哪种数据类型? 我希望将来有更多的数据行。

编辑: 以下是子

`

    Public Sub GetLinearRegressionParams(ByVal xs() As Double, ByVal ys() As Double, ByRef a As Double, ByRef b As Double)
    Dim sumX As Double = 0
    Dim sumY As Double = 0
    Dim sumXY As Double = 0
    Dim sumX2 As Double = 0
    Dim n As Integer
    n = 0 
    For index = 0 To xs.Length - 1
        If xs(index) = Nothing Then
        Else
            sumX = sumX + xs(index)
            sumY = sumY + ys(index)
            sumXY = sumXY + xs(index) * ys(index)
            sumX2 = sumX2 + xs(index) * xs(index)
            n = n + 1
        End If
    Next

    a = (sumY * sumX2 - sumX * sumXY) / (n * sumX2 - sumX * sumX)
    b = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX)

End Sub

`

0 个答案:

没有答案