tb021  行列の操作



matrix系のコマンド群は通常、推定法の開発者によって用いられるもので、[P] マニュアル中に仕様が記述されています。しかしStataのエンドユーザであっても行列の操作が必要になることがあります。構造型VARのフィットを行うsvarコマンドなどがその一例です([TS] svar (mwp-007) 参照)。
 

(1) 行列の定義

比較的小さな行列を手入力する場合にはダイアログを使用するのが最も簡便でしょう。

と操作の上、ダイアログ上で次のように入力してみてください。

コマンド入力の場合にはmatrix inputコマンドを使用します。その際、要素の区切りは","によって、行の区切りは"\"(backslash)によって表します。

. matrix input A = (1,2,2\1,1,4\1,2,1)
 

(2) 表列の表示

行列の内容を表示させるにはmatrix listコマンドを使用します。

. matrix list A

Stataにおける行列オブジェクトには行名、列名が付帯している点に注意してください。デフォルトの場合、行名にはr1, r2, ...が、列名にはc1, c2, ...が用いられます。より意味のある名称に変更したい場合にはmatrix rownames, matrix colnamesコマンドを使用します(マニュアルエントリ [P] matrix rownames 参照)。

行列の(i, j)要素へのアクセスは行列名に[i, j]を付加する形で行えます。例えばA(2, 3)であれば

. display A[2, 3]
4

のような応答を得ることができます。
 

(3) ベクトル

Stataにはベクトルという特別なオブジェクトは存在しません。行ベクトルにしろ列ベクトルにしろ、行列の特殊ケースとして扱われます。
 

(4) 行列操作

行列操作用に定義されている演算子の一覧についてはマニュアルページ [U] 14.7 Matrix operators をご参照ください。例えば"'"(apostrophe)を使用すると行列の転置が行えます。

. matrix B = A'
. matrix list B

行名、列名にも演算操作が施されている点に注意する必要があります。逆行列を計算するためにはinv()関数を使用します。

. matrix C = inv(A)
. matrix list C

. matrix D = A*C
. matrix list D


 

(5) スカラー変数への変換

行列の各列を通常の変数と見立てて、グラフィックスコマンド等、他のStataコマンドで処理したいといったことも考えられるわけですが、そのためにはスカラー変数への変換というステップを踏む必要があります。そのためのコマンドがsvmatです([P] matrix mkmat 参照)。

生成されるスカラー変数の名称設定についてはいくつかオプションが用意されていますが、デフォルトを選択すると今の場合"Aj"という変数名が設定されます。

. svmat A
. list


 

(6) Stataにより生成される行列

行列はStataによっても生成されます。例えばExampleデータセットauto.dtaに対してregressコマンドを実行してみます。

. sysuse auto.dta
. regress mpg weight foreign

regressのような推定コマンドからの出力はereturn listコマンドによって確認することができます。


 
(途中省略)

行列e(b)には推定された係数ベクトルの値が格納されています。

. matrix list e(b)

一方、行列e(V)には推定された分散共分散行列の値が格納されています。

. matrix list e(V)


 

(7) Mata

StataにはMataという行列操作用の言語も用意されています。これについては [M] マニュアルをご参照ください。


小技コーナー ページへ戻る

 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =

© 2018 Math工房