Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


72553 / 76738 ←次へ | 前へ→

【8668】最小二乗法の課題で・・・。
質問  学生です  - 03/10/28(火) 16:40 -

引用なし
パスワード
   学校の課題で、セル(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
と書いたのですがうまくいきません。
どこが悪いのか教えてください。
長くなってすいません。よろしくお願いします。
0 hits

【8668】最小二乗法の課題で・・・。 学生です 03/10/28(火) 16:40 質問
【8672】Re:それを考えるのが勉強 角田 03/10/28(火) 17:58 発言
【8674】Re:最小二乗法の課題で・・・。 りん 03/10/28(火) 18:17 回答
【8675】Re:ヒントその3 ichinose 03/10/28(火) 23:39 発言

72553 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free