VBによる回帰直線のプログラム
VB6を本を見ながら勉強していますが、どの本にもフォーム上にグラフを表示するものばかりでピクチャボックスに回帰直線y=ax+bの直線を描けるようにはどうしたらいいのかプログラムに困っています。どなたか分かる方いましたらよろしくお願いします。ちなみにプログラムはこのようになっています;
Private Sub Command1_Click()
Dim c(10) As Double
Dim d(10) As Double
Dim cx As Integer, cy As Integer, lx As Integer, ly As Integer
'-----------------------------------------------------------------
'ピクチャボックスの初期化
Picture1.Cls
'グラフの位置
cx = 60
cy = 320
lx = 300
ly = 300
'グラフ枠を描画
Picture1.FillColor = QBColor(15)
Picture1.Line (cx, cy)-(cx + lx, cy - ly), , B
'縦軸の目盛り
Picture1.DrawStyle = 2 '線の種類 点線
For i = 0 To 5
Picture1.Line (cx, cy - 60 * i)-(cx + lx, cy - 60 * i)
Picture1.CurrentX = cx - 25 'ラベルを表示する場所の指定
Picture1.CurrentY = cy - 60 * i '横軸を描画
Picture1.Print Format(i) 'ラベル出力位置を設定
'(i*縦軸の目盛りの倍数 現在は10倍
Next i
'横軸の目盛り
For i = 0 To 5
Picture1.Line (cx + 60 * i, cy)-(cx + 60 * i, cy - ly)
Picture1.CurrentX = cx + 60 * i
Picture1.CurrentY = cy + 5
Picture1.Print Format(i)
Next i
'------------------------------------------------------------------------
Dim n As Integer 'n:データ数
n = Val(Text3.Text)
For i = 0 To n - 1
c(i) = Val(Text1(i).Text)
d(i) = Val(Text2(i).Text)
Next i
'データを○印でプロット
For i = 0 To n - 1
Picture1.Circle (cx + 60 * c(i), cy - 60 * d(i)), 3, QBColor(0)
Next i
'ここまで成功----------------------------------------------------------------------
'xに関する平均値と標準偏差の計算プログラム
Dim sx As Double, sxx As Double, avx As Double, sdx As Double
Dim x(10) As Integer
For i = 0 To n - 1
x(i + 1) = c(i)
Next i
sx = 0
sxx = 0
For i = 1 To n
sx = sx + x(i)
sxx = sxx + x(i) * x(i)
Next i
avx = sx / n
sdx = Sqr((sxx - n * avx * avx) / n)
'yに関する平均値と標準偏差の計算プログラム
Dim sy As Double, syy As Double, svy As Double, sdy As Double
Dim y(10) As Double 'インデックスが範囲を超えているのエラーの解決 10を代入
For i = 0 To n - 1
y(i + 1) = d(i)
Next i
sy = 0
syy = 0
For i = 1 To n
sy = sy + y(i)
syy = syy + y(i) * y(i)
Next i
avy = sy / n
sdy = Sqr((syy - n * avy * avy) / n)
'--------------------------------------------------------------------------------------
'回帰直線y=ax+bを描く
End Sub
お礼
解決できました。ありがとうございました!