Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

# st: mata conformability error, but matrices are conformable

 From Misha Spisok To statalist@hsphsun2.harvard.edu Subject st: mata conformability error, but matrices are conformable Date Fri, 7 May 2010 18:57:37 -0700

```Hello, Statalist!

I am getting the following error due to some code I have written
(given below with complete, but short, working example to reproduce
the error):

*:  3200  conformability error
makexb():     -  function returned error
<istmt>:     -  function returned error

I would expect this to mean that, within my -mata- code, I am trying
to multiply non-conformable matrices.  But, when doing the steps in my
code interactively in -mata-, it doesn't seem to be the case.  I
suspect the problem lies elsewhere, but I can't figure out where.  One
guess is how I'm attempting to retrieve things from Stata in Mata is
the problem.  I used, -set trace on-, but that didn't help (me) any.

(I developed my code after modifying some code in a presentation by
Prof. Baum and checking out [M].  As is, the code is a stepping stone,
but I can't get to this first step.)

My goal, at this point, is, given a dependent variable, y, and some
independent variables, x1, x2, ..., xK, to create a new variable Xb
which is the prediction of a linear regression of y on x1, x2, ...,
xK.  I know there's an easy way to do this with -predict-, but this is
just a step.  (baby steps!)

My program:
-----------------
program calcp, rclass
version 10.1
syntax varlist [if] [in]
marksample touse

tokenize `varlist'
global lhs "`1'"
mac shift
global rhs "`*'"

regress `lhs' `rhs' if `touse'
mata: makexb("`rhs'", "`touse'")
end

version 10.1
mata:
void makexb(string scalar rhs, string scalar touse)
{
X = st_data(., tokens("`rhs'"))
b = st_matrix("e(b)")
Xb = X*b'
st_addvar("float", "Xb")
}
end
-------------------

So, after saving this as an .ado file, I can do the following.

sysuse auto, clear
local xlist mpg-length
calcp price `xlist'

But, as noted above, I get this error:

*:  3200  conformability error
makexb():     -  function returned error
<istmt>:     -  function returned error
r(3200);

end of do-file

r(3200);

An aside is, Why does the regression not include a constant?  Is it
because Stata is limiting itself to regressing `lhs' on `rhs' as
given?

Thanks!

Misha
*
*   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/
```

© Copyright 1996–2016 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index