□回帰分析
・単回帰分析
y=c+ax の回帰を行う。データをこの式に代入して行列で表現すると、Y=XA となる。
Yはデータ個数の縦ベクトル、Xはデータ個数行・2列の行列、A=(c a) の縦ベクトル
/ .qml.mlsq[X;Y] / 公式には.qml.mlsq[A;B] q)show X: flip (10#1;til 10) / 0-9で、1列目は固定で1 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 q)show Y: (10?10) + 2*til 10 / 切片5、傾き2 8 3 13 11 12 16 18 15 24 23 q).qml.mlsq[X;Y] / 1つめが切片, 2つめが傾き 4.654545 1.921212
回帰分析の各種情報を取りやすくした関数がcontribのlinreg.qに定義されている
参考: Is there linear regression algorithms written by Q language?
https://groups.google.com/forum/#!searchin/personal-kdbplus/linear$20regression/personal-kdbplus/CRf-kOx-v4I/mqqo49tsvTIJ
・contribからソースを入手
http://code.kx.com/wsvn/code/contrib/azholos/linreg.q
/ 単回帰分析 q)show X: (1;til 10) / flipせずに単純に係数を並べてOK 1 0 1 2 3 4 5 6 7 8 9 q)show Y: (10?10) + 2*til 10 / Yは上と同じ 5 8 8 7 11 13 19 22 18 19 q) linreg[Y;X] | :: X | (1 0f;1 1f;1 2f;1 3f;1 4f;1 5f;1 6f;1 7f;1 8f;1 9f) y | 1 6 7 15 16 19 21 19 20 18f S | (4.473113 -0.706281;-0.706281 0.1569513) b | 5.145455 2.012121 e | -4.145455 -1.157576 -2.169697 3.818182 2.806061 3.793939 3.781818 -0.230303 -1.242424 -5.254545 n | 10 m | 2 df | 8 se | 2.114974 0.3961708 tstat| 2.432869 5.078923 tpval| 0.04101822 0.0009544019 rss | 103.5879 tss | 437.6 r2 | 0.7632818 r2adj| 0.733692 fstat| 25.79546 fpval| 0.0009544019
0 件のコメント:
コメントを投稿