毎度おせわになってます。
VB6.0環境において
MS Flexgridコントロール上のx,y軸にそれぞれ数値が10個ほどあるとします。それの値を回帰直線として
y = ax + b
の式にあらわしてaとbの値を求めたいと思うのですが、よい方法がありますでしょうか?
VBAですとエクセル上でLINESTを使えばできたと思うのですが、
VBでは使えないのでしょうか。
直線を引くという課題と、回帰直線?を引くという二つの問題が
提起されています。
その両方を解決したいのでしょうか?
それとも線を引きたいのでしょうか?
因みに、回帰直線と言う部分で・・・EXCEL的に言います
と、近似直線を引きたいのですよネ?
では、データの散らばりにもよりますが、最小二乗法を用いて
可能とすることができると思います。
よって、a,b両方のパラメータは確定化できます。
あとは、どうやって線を引くかですが・・・
どこの何に引きたいのでしょうか?
MS-FlexGrid上に引きたいということですか?
それとも別のグラフモジュールを用いて行うつもりなのでしょ
うか?よく解りません。
以上。
岡田 之仁様 ありがとうございます。
説明が不足していたようで申し訳ありませんでした。
線を引くことは目的ではなく単純にaとbの値を求めたいだけなのです。
最小二乗法などについてのコードなど教えていただけますでしょうか。
よろしくお願いします。
最小二乗では・・・
過去ログにありますが・・・
http://madia.world.coocan.jp/vb/vb_bbs2/200402_04020086.html
で、後は、係数aを求めるには、xをゼロとして、切片のbを
求めれば、結果、係数aが求められます。
その辺は一次方程式の解法ですから・・・
以上。
『エクセルを使用しない』という条件付きでなければ
エクセルシートに書き込んでもいいと思いますけど…
…高次方程式にも対応してますし…ってゆーか[VB6.0]
でそんな感じの雛型ファイルを作成するプログラムは
作ったことあります。
VBは科学技術計算向きではありません。
・2進数から10進数に変換される際の誤差
・Double型変数へのSingle型変数代入時に生ずる誤差
・情報落ち
・桁落ち
等々、多くの計算誤差要因があります。
式が複雑になればなるほど、
計算の順序が変わるだけで、
計算の結果が大きく変わってしまいます。
誤差をそれほど気にしないならば、
下記URLにサンプルをUpしておきますので、参考程度にしてみてください。
http://puti-money.hp.infoseek.co.jp/Test.txt
#サンプル1の方が誤差は少ないようです(Fortranと比較して)
#上記ファイルは、明日消去します。
誤差を出したくないなら、
VisualFortranでDllを作成するなんてのが一番かも知れません。
ちなみに、サンプル1では、
元の要素がX軸に等間隔に並んでいる事を想定しています。
サンプル2は、
元の要素のX軸の間隔がどのようになっていても、
計算できるサブルーチンを改造して、
ここでは、やはり等間隔として使用しています。
要素のX軸間隔が等間隔ではないならば、
サンプル2を改良してご使用ください。
#こんなサンプルですが、一応メシの種なので、
#明日消去する事についてはご理解ください。
連投スマソ。
>元の要素がX軸に等間隔
元の要素のX軸投射が等間隔
という意味です。
#また連投スマソ。
仕事終わりに、「最小二乗法」「Vb」
をキーワードに検索してみました。
ソース付きのページが普通にヒットしますね。。。
いい時代になった。。。のか?
という事で、私のサンプルは消去します。
#チラ見した限りでは、計算誤差はあまり考慮していないようです。
http://structure.cande.iwate-u.ac.jp/textbook/computer/Vb6/VB2.html
http://www.nmri.go.jp/eng/khirata/vb/kinji/detail.html