<>
On Nov 24, 2009, at 2:33 AM, Joao wrote:
>
> Sorry, but as I'm understanding the problem here is to use time series
> operators and matrix... To use the time series operators you must
> - -tsset- your data first.
>
> clear all
> input depvar indepvar1 indepvar2
> 2 15 3
> 3 23 5
> 4 19 8
> 2 32 6
> 5 27 4
> end
>
> gen time=_n
> tsset time, yearly
>
> reg depvar indepvar1 indepvar2
> gen cons=1
> foreach var of varlist indepvar1 indepvar2 cons{
> gen f`var'=F.`var'
> }
> mkmat findepvar1 findepvar2 fcons, matrix(var_ind)
> matrix B1=e(b)
> matrix y_hat1 = var_ind*B1'
> svmat y_hat1, names(depvar_hat)
A solution using Stata's matrix language may run afoul of the matsize limit, which in Stata/IC is an iimmutable 800 rows or columns. I don't think you are trying to do anything that requires matrices -- as others have posted, predict should be able to do what you need without any explicit algebra -- but if you want to do something like this, use Mata, as Martin suggested. Mata is not subject to the matsize limit. A silly example:
clear
set obs 1000000
g junk = uniform()
tomata junk
mata:
junk = junk :/ colsum(junk :* junk)
end
su junk
As tomata (from SSC, by Bill Gould) creates view matrices, an alternative to Martin's code would be
reg price weight foreign trunk if !mi(rep78)
g double pred = .
g double res = .
tomata price weight foreign trunk pred res if e(sample)
mata:
b=st_matrix("e(b)")'
X=(weight, foreign, trunk, J(rows(weight),1,1))
y=price
pred[.] = X*b
res[.] = y - pred
end
Kit Baum | Boston College Economics & DIW Berlin | http://ideas.repec.org/e/pba1.html
An Introduction to Stata Programming | http://www.stata-press.com/books/isp.html
An Introduction to Modern Econometrics Using Stata | http://www.stata-press.com/books/imeus.html
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/