プログラミングフォーラムで困惑している完全で再現性のあるコードは表示されませんが、良い例を投稿するにはhttps://stackoverflow.com/help/mcveを参照してください。
バックアップした目標は、相関行列の合計です。ここでは、correlate
の使用法を説明します。このコマンドの直後にマトリックスが利用可能です。同じテクニックは、あなたのコードのように他の方法で得られた相関行列にも適用されることに注意してください。
. sysuse auto, clear
(1978 Automobile Data)
. corr headroom trunk length turn displacement
(obs=74)
| headroom trunk length turn displa~t
-------------+---------------------------------------------
headroom | 1.0000
trunk | 0.6620 1.0000
length | 0.5163 0.7266 1.0000
turn | 0.4245 0.6011 0.8643 1.0000
displacement | 0.4745 0.6086 0.8351 0.7768 1.0000
. ret li
scalars:
r(N) = 74
r(rho) = .6620111289412028
matrices:
r(C) : 5 x 5
. mata : sum(st_matrix("r(C)"))
17.97943754
したがって、行列をMataに渡して合計を取得します。
また、戻すこともできます。
行列の和は単なる定数であるため、Stata変数に保持する必要はありません。これも無駄になります。スカラーまたはローカルマクロが適切な選択肢です。あなたはスカラーとして戻っStataのに合計を渡すことができます:
. mata : st_numscalar("rsum", sum(st_matrix("r(C)")))
. di rsum
17.979438
明らかにあなたはまた、トレースを引く変数の数に等しく、そして残りを半減させることができ、最後のポイントを表示するには
。あなたはそれを行うためにマタに滞在することも、Stataで行うこともできます。要するに、相関行列をStataデータに変換することは、目的に応じて避けることができます。