| 
    
     |  | 学校の課題で、セル(1、1)からセル(30、1)に30個のxの測定値が書き込まれている。また、セル(1、2)からセル(30、2)に30個のyの測定値が書き込まれている。これらのn組(n=30)のデータは直線 y=a+bx によって代表されるとして、データを最も良く代表する切片aと傾きbを線形最小二乗法によって求めると以下のように表される。 
 y=a+bx
 b=Sxy/Sx
 a=yave-bxave
 Sx=Σ(xi-xave)2
 Sxy=Σ(xi-xave)(yi-yave)
 xave=(1/n)Σxi
 yave=(1/n)Σyi
 ただし、
 Σf(xi)=f(x1)+f(x2)+ ・・+f(xn)
 を表す。上記のn組のデータから決定されるaをセル(1、3)に、bをセル(2、3)に出力するVBAプログラムを書け。という問題がありまして、
 Sub for3()
 Dim x As Integer, y As Integer, a As Integer, b As Integer, sxy As Integer, sx As Integer, xave As Integer, yave As Integer, xi As Integer, yi As Integer, wx As Integer, wy As Integer
 xi = Cells(x, 1).Value
 yi = Cells(y, 2).Value
 wx = 0
 wy = 0
 For x = 1 To 30 Step 1
 wx = wx + x
 Next x
 For y = 1 To 30 Step 1
 wy = wy + y
 Next y
 yi = a * xi + b
 b = sxy - sx
 a = yave - b * xave
 sx = (wx - xave) ^ 2
 sxy = (wx - xave) * (wy - yave)
 xave = wx / 30
 yave = wy / 30
 Cells(1, 3).Value = a
 Cells(2, 3).Value = b
 End Sub
 と書いたのですがうまくいきません。
 どこが悪いのか教えてください。
 長くなってすいません。よろしくお願いします。
 
 
 |  |