N×N正方行列とN行行列の積におけるアルゴリズム | SystemTradingのブログ

SystemTradingのブログ

システムトレードに関するブログです

N×NとN行の2つの行列の積は1次方程式を解く際に頻繁に使用

します。重回帰分析においては逆行列を求めて、その逆行列を用

いて各係数を求めるため行列の積として最も覚えておかなければ

いけないアルゴリズムといえるでしょう。

 

 

参考1 : 重回帰分析における計算プロセス

参考2 : 逆行列アルゴリズム

 

 

行列計算は配列とループ構文によって容易に表現できます。ただ、

配列の制御を間違えると大きく間違った値が出力されますので注

意が必要です。

Excelで検算しながらアルゴリズムの正確性を確認すると良いでしょ

う (^O^)/

今回は頻出かつ基本的な行列の積として、

 

 

N×Nの正方行列とN行の行列との積

 

 

に限って解説します♪

 

 

 

■ N×Nの正方行列とN行の行列の積

計算のパターンは以下のとおりです!

 

 
HSF-SystemTradingのブログ-1gyoseki1

 

 

先にExcelで例題と検算を兼ねて計算結果を示しておきます♪

Excelでの積はMMULT関数にて計算を行います。計算の基本は下記の

リンク先から復習してくださいね (^-^)/

 

 

参考 : 行列における基本計算

 

 

 
HSF-SystemTradingのブログ-1gyouseki2

 

 

ではPower Languageにて行列の積のソースコードを載せます

 

 

 

■ Power Laguage における行列の積ソースコード

   (N×Nの正方行列とN行の行列における積編)

 

入力変数M : N×Nの正方行列 と N行の行列におけるN値

 

 

 

下記ソースコードはインディケーター形式で作成し、作成したインディケーター

を適当なシンボルに適用してください。

計算結果はPower Language EditorのOutput欄へと出力されます。 

 

 

 

 

Inputs:M(3);
Vars:count1(0),count2(0),count3(0),Box(0);
Arrays:AMatrix[100,100](0),BMatrix[100,100](0),XMatrix[100,100](0);
//Matrix Data*********************************************************************
AMatrix[0,0]=2;AMatrix[0,1]=3;AMatrix[0,2]=2;
AMatrix[1,0]=1;AMatrix[1,1]=2;AMatrix[1,2]=2;
AMatrix[2,0]=4;AMatrix[2,1]=5;AMatrix[2,2]=3;
BMatrix[0,0]=2;BMatrix[1,0]=5;BMatrix[2,0]=4;
//Matrix**************************************************************************
For count1=0 to M-1 begin
XMatrix[count1,0]=0;
end;
For count1=0 to M-1 begin
For count2=0 to M-1 begin
XMatrix[count1,0]=AMatrix[count1,count2]*BMatrix[count2,0]+XMatrix[count1,0];
end;
end;
//Print***************************************************************************
Print(Xmatrix[0,0]);
Print(Xmatrix[1,0]);
Print(Xmatrix[2,0]);
 

 

 
HSF-SystemTradingのブログ-1gyouseki3
 

 

 

Outputにはバー毎に計算結果が出力されてしまうので最終行から3行分

が積の結果になります。Excelの結果と一致したことによりPower Language

による行列の積アルゴリズムは正常に計算されていることが確認できました。

 

 

上記の行列の積と逆行列は重回帰分析における偏差積和行列の計算に必須

となるアルゴリズムです。これらを組み合わせますとプログラミング言語ベース

での重回帰分析が行えます。

今回はPower Languageにおけるソースコードですが、特殊な処理をしている

わけではないため他の言語へも容易に変換できるでしょう。

 

 

参考 : 逆行列アルゴリズム

 

 

と併せてプログラミング言語において重回帰分析を行ってみましょう♪

 

 

 

ペタしてね