2変量の「単回帰直線」の「切片」と「傾き」を Ruby で簡単に計算するように試してみました。
Array クラスを拡張する方法です。
それほど難しい数学的アルゴリズムでも、それほど難しいプログラミングロジックでもありませんが、少し頻繁に使用することになりそうなので試してみた次第です。
0. 前提条件
- Ruby 2.1.3-p242 での作業を想定。
1. 単回帰直線について
まず、簡単に単回帰直線について。
(数式が多いので、別途 で作成した文書を貼り付け)
説明変数が1次だったので「単回帰『直線』」と呼んでいたが、2次以上なら「単回帰『曲線』」と呼ぶことになる。
また、説明変数が2種類以上ある場合は「重回帰曲線」と呼ぶ。
さらに、回帰直線・曲線を求めたり、これらを使用して分析したりすることを「回帰分析」と呼ぶ。
2. Ruby スクリプト作成
以下のように Array クラスを拡張してメソッドを定義してみた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
3. Ruby スクリプト実行
実行してみる。
1 2 3 4 5 6 |
|
4. 視覚的な確認
参考までに、上記スクリプトで使用した2変量の各点と作成された単回帰直線を R でグラフに描画してみた。
当然ながら、よくあるそれらしいグラフとなった。
このメソッドを応用して、相関のある2変量での予測が可能となります。
以上。