2014-03-26 180 views
0

我想用Mata來進行一些矩陣計算,例如,X轉置* V inverse * X。我已經有X的轉置,但需要計算V的逆。我需要在其他矩陣上執行類似的計算。其中一些矩陣很大,所以視圖是最好的方法。我不清楚如何做到這一點。這裏是我的代碼:Mata矩陣運算

version 13 
cd "data" 
use V1,clear 

mata: 
real matrix V 
st_view(V=.,.,.) 

real matrix Vinv 
Vinv=cholinv(V) 
end 

cd "data" 
use XT,clear 

mata: 
real matrix XT 
st_view(XT=,.,.) 
end 

cd "data" 
use X,clear 

mata: 
real matrix X 
st_view(X=,.,.) 

real matrix XTVinv 
real matrix A1 

XTVinv=X*Vinv 
A1=XTVinv*X 
end 

幾個問題:

  1. 我看到有加載到內存中的數據的例子。我的矩陣在單獨的Stata文件中,所以我需要單獨加載它們,但這是在Mata內部還是外部完成的?

  2. Vinv需要是一個視圖,但我不知道如何使它成爲一個。

  3. 我需要爲X轉置和X設置視圖。對於各種矩陣的所有視圖是否會持續存在以便我可以在最後執行乘法?

  4. XTVinv和A1需要是視圖,但我不知道如何設置。

回答

0

在馬塔視圖是數據的視圖,正是這意味着在在Stata當前數據集的一個或多個觀測和相同種類的一個或多個變量(數字或字符串)。主要的一點是,Mata不需要將數據集複製到Mata中,因爲它已經在系統中。

但它不起作用的另一種方式。視圖不是您通常可以用來保存任意矩陣的東西。白魔法只是讓馬塔看到Stata;在沒有相應的內存需求的情況下,在Mata中保存大型矩陣並不是什麼白費。

所以,據我所知,你不能把一個矩陣視爲一個視圖,除非你先把它作爲一個Stata數據集輸入。

但意見的好處主要是防止您持有相同的數據兩次,一次在Stata和一次在Mata。對於純粹的矩陣運算,我懷疑只是在馬塔閱讀一個矩陣會有什麼損失。

這是寫意。你會在Statalist上得到更好的答案,因爲更多的Mata程序員,包括Stata自己的開發人員,在這裏比在這裏呆在那裏。不過,你會被要求使用真實姓名。 (據我所知,這是威廉莎士比亞。)

0

這裏的問題似乎是如何向Mata輸入數據以及如何創建意見。下面是從馬塔手冊和Stata的幫助下采取了一些例子:

clear all 
set more off 

// Load example database (as usual) 
sysuse auto 
keep mpg weight displace 
describe 

// Create matrices in Mata from Stata 
putmata y1=mpg X1=(weight displace) 

// Enter Mata mode 
mata 

// Create views inside Mata from Stata 
st_view(y2=., ., "mpg") 
st_view(X2=., ., ("weight", "displace")) 

// Display matrices and views created 
y1 

X1 

y2 

X2 

// Create matrix inside Mata and display its transpose 
S = (1, 2 \ 3, 4) 
S' 

// Display 2x2 matrix from the view X2 
X2[1..2,1..2] 
* Display its transpose 
X2[1..2, 1..2]' 

// Exit Mata mode 
end 

在創建視圖時我們給st_view()說明在哪裏保存數據的參數。

: Z = . 
: st_view(Z, ., .) 

但是你可以結合這兩種成一個:在下面的例子中,Z正在函數調用之前定義

: st_view(Z=., ., .) 

我提到這一點,因爲在你的代碼,你定義矩陣兩次。一次在st_view()之前再打電話,暗示有些混亂。

st_data()是另一種可能性,以及tomata(用戶由William Gould,SJ Run findit tomata編寫)。

如果數據來自不同的源文件,也許有可能merge他們,像平常一樣在Stata中加載,然後在Mata中使用它們。確切的策略將取決於你想要達到的目標以及初始數據文件的結構。

在另一方面,還有讀馬塔手冊,特別[M0] 介紹馬塔手動[M1] 介紹和建議沒有替代品。