回帰直線を求めるには?


ミチ  2004-06-08 23:10:32  No: 113815  IP: [192.*.*.*]

毎度おせわになってます。
VB6.0環境において
MS Flexgridコントロール上のx,y軸にそれぞれ数値が10個ほどあるとします。それの値を回帰直線として

y = ax + b

の式にあらわしてaとbの値を求めたいと思うのですが、よい方法がありますでしょうか?
VBAですとエクセル上でLINESTを使えばできたと思うのですが、
VBでは使えないのでしょうか。

編集 削除
岡田 之仁  2004-06-08 23:19:24  No: 113816  IP: [192.*.*.*]

直線を引くという課題と、回帰直線?を引くという二つの問題が
提起されています。

その両方を解決したいのでしょうか?
それとも線を引きたいのでしょうか?

因みに、回帰直線と言う部分で・・・EXCEL的に言います
と、近似直線を引きたいのですよネ?
では、データの散らばりにもよりますが、最小二乗法を用いて
可能とすることができると思います。

よって、a,b両方のパラメータは確定化できます。
あとは、どうやって線を引くかですが・・・

どこの何に引きたいのでしょうか?
MS-FlexGrid上に引きたいということですか?
それとも別のグラフモジュールを用いて行うつもりなのでしょ
うか?よく解りません。

以上。

編集 削除
ミチ  2004-06-08 23:38:45  No: 113817  IP: [192.*.*.*]

岡田 之仁様  ありがとうございます。
説明が不足していたようで申し訳ありませんでした。

線を引くことは目的ではなく単純にaとbの値を求めたいだけなのです。
最小二乗法などについてのコードなど教えていただけますでしょうか。
よろしくお願いします。

編集 削除
岡田 之仁  2004-06-09 00:55:05  No: 113818  IP: [192.*.*.*]

最小二乗では・・・
過去ログにありますが・・・
http://madia.world.coocan.jp/vb/vb_bbs2/200402_04020086.html

で、後は、係数aを求めるには、xをゼロとして、切片のbを
求めれば、結果、係数aが求められます。

その辺は一次方程式の解法ですから・・・

以上。

編集 削除
特攻隊長まるるう  2004-06-09 08:51:19  No: 113819  IP: [192.*.*.*]

『エクセルを使用しない』という条件付きでなければ
エクセルシートに書き込んでもいいと思いますけど…
…高次方程式にも対応してますし…ってゆーか[VB6.0]
でそんな感じの雛型ファイルを作成するプログラムは
作ったことあります。

編集 削除
ぴろあき  2004-06-09 11:41:12  No: 113820  IP: [192.*.*.*]

VBは科学技術計算向きではありません。
・2進数から10進数に変換される際の誤差
・Double型変数へのSingle型変数代入時に生ずる誤差
・情報落ち
・桁落ち
等々、多くの計算誤差要因があります。

式が複雑になればなるほど、
計算の順序が変わるだけで、
計算の結果が大きく変わってしまいます。

誤差をそれほど気にしないならば、
下記URLにサンプルをUpしておきますので、参考程度にしてみてください。
http://puti-money.hp.infoseek.co.jp/Test.txt
#サンプル1の方が誤差は少ないようです(Fortranと比較して)
#上記ファイルは、明日消去します。

誤差を出したくないなら、
VisualFortranでDllを作成するなんてのが一番かも知れません。

編集 削除
ぴろあき  2004-06-09 11:56:10  No: 113821  IP: [192.*.*.*]

ちなみに、サンプル1では、
元の要素がX軸に等間隔に並んでいる事を想定しています。

サンプル2は、
元の要素のX軸の間隔がどのようになっていても、
計算できるサブルーチンを改造して、
ここでは、やはり等間隔として使用しています。

要素のX軸間隔が等間隔ではないならば、
サンプル2を改良してご使用ください。

#こんなサンプルですが、一応メシの種なので、
#明日消去する事についてはご理解ください。

編集 削除
ぴろあき  2004-06-09 12:01:02  No: 113822  IP: [192.*.*.*]

連投スマソ。
>元の要素がX軸に等間隔
元の要素のX軸投射が等間隔
という意味です。

編集 削除
ぴろあき  2004-06-09 17:11:43  No: 113823  IP: [192.*.*.*]

#また連投スマソ。
仕事終わりに、「最小二乗法」「Vb」
をキーワードに検索してみました。

ソース付きのページが普通にヒットしますね。。。
いい時代になった。。。のか?
という事で、私のサンプルは消去します。

#チラ見した限りでは、計算誤差はあまり考慮していないようです。
http://structure.cande.iwate-u.ac.jp/textbook/computer/Vb6/VB2.html
http://www.nmri.go.jp/eng/khirata/vb/kinji/detail.html

編集 削除