近期我们数学实习,有一道题是用vb编写一个一元线性回归的模拟 程序,哪位高手会写或有过类似的经验或者有相关资料请帮忙一下子喔~~~

解决方案 »

  1.   

    http://dev.csdn.net/article/31/31973.shtm
      

  2.   

    Dim x() As Double
    Dim y() As Double
    Dim xz() As Double
    Dim c() As Double
    Dim d() As Double
    Dim a() As Double
    Dim am, bm, cm As Double
    dim m,n as long ’m为点的个数,n为自变量个数,一元当然就是1ReDim x(m, n)'自变量矩阵
    ReDim y(m)'因变量矩阵
    ReDim xz(n, m)'x()的转置
    ReDim c(n, 2 * n)'增广矩阵
    ReDim d(n, m)'这个忘了是啥,过渡用的
    ReDim a(n)'回归系数矩阵
    For i = 1 To m
     x(i, 1) = 1
    Next i
    For i = 1 To m
      For j = 2 To n
         x(i, j) = VSFGrid1.TextMatrix(i, j - 1)
      Next j
    Next iFor i = 1 To m
      y(i) = VSFGrid1.TextMatrix(i, n)
    Next i'a=(x'*x)^-1*x'*y
    For i = 1 To n
     For j = 1 To m
       xz(i, j) = x(j, i)   '转置
     Next j
    Next iFor i = 1 To n
      For j = 1 To 2 * n
        If j = i + n Then
          c(i, j) = 1
        Else
          c(i, j) = 0
        End If
      Next j
    Next iFor i = 1 To n
      For j = 1 To n
        For k = 1 To m
          c(i, j) = c(i, j) + xz(i, k) * x(k, j) '求xz()*x()
        Next k
      Next j
    Next i
    For k = 1 To n '用主元除主元所在行的所有元素
      am = 1 / c(k, k) '将主元变为1
      For j = k To 2 * n
        c(k, j) = c(k, j) * am
      Next j'____________________________________
      For i = k + 1 To n '将原矩阵变为下三角矩阵
        bm = c(i, k)
        For j = 1 To 2 * n
          c(i, j) = c(i, j) - c(k, j) * bm
        Next j
      Next i
    Next k
    '------------------------------------------------
    For k = 2 To n
      For i = 1 To k - 1 '将下三角矩阵变为单位阵
        cm = c(i, k)
        For j = k To 2 * n
          c(i, j) = c(i, j) - c(k, j) * cm
        Next j
      Next i
    Next k
    '------------------------------------------------For i = 1 To n
      For j = 1 To n
        c(i, j) = c(i, j + n)
      Next j
    Next i
    For i = 1 To n
      For j = 1 To m
        For k = 1 To n
          d(i, j) = d(i, j) + c(i, k) * xz(k, j)
        Next k
      Next j
    Next iFor i = 1 To n
      For j = 1 To m
        a(i) = a(i) + d(i, j) * y(j)
      Next j
    Next i
     
      

  3.   

    引用EXCEL函数库,然后从中找到一元线性回归函数,直接导入相关参数,即可算出一元线性回归,还可以算出曲线回归等.
      

  4.   

    楼上的,似乎把我这代码粘过去比引用excel要简单点
    用excel函数库或许对你来说简单,但对别人来说可能不简单,你既然觉得简单,那为什么不干脆帮忙帮到底,把代码写出来呢?