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]

From |
Richard Herron <richard.c.herron@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
Re: st: Why is Mata much slower than MATLAB at matrix inversion? |

Date |
Fri, 20 Jul 2012 16:26:59 -0400 |

Why is j pos def? j = mm' is symmetric with non-negative numbers. I can think of a j = [0, 1; 1, 0] and k' = [1, -1] so that k'jk = -2 < 0 so that j isn't pos def. Am I missing something? (Although this isn't an answer to the real question.) Richard Herron On Fri, Jul 20, 2012 at 4:11 PM, Patrick Roland <patrick.rolande@gmail.com> wrote: > j is necessarily positive definite. The speed difference seems to hold > for matrices of all sizes. Would very much appreciate any insight > here. > > On Fri, Jul 20, 2012 at 12:47 PM, Richard Herron > <richard.c.herron@gmail.com> wrote: >> Your matrix j isn't necessarily positive definite, although it is symmetric. >> >> Does this significant speed advantage stand for real use cases? I >> don't know of a use case where you need to invert a 2000 x 2000 >> matrix. >> >> I think this is about all the the help that I can provide; I spend >> most of my time outside of Mata. Hopefully one of the experts can shed >> some light here. >> >> Richard Herron >> >> >> On Fri, Jul 20, 2012 at 3:18 PM, Patrick Roland >> <patrick.rolande@gmail.com> wrote: >>> The matrix formation takes a negligible amount of time. luinv() seems >>> to be (much) faster than cholinv() even for positive definite >>> matrices. Here's the code I used to check: >>> >>> timer_clear() >>> mata >>> m = runiform(2000,2000) >>> j = m*m' >>> timer_on(1) >>> h = cholinv(j) >>> timer_off(1) >>> timer_on(2) >>> p = luinv(j) >>> timer_off(2) >>> timer() >>> >>> >>> On Fri, Jul 20, 2012 at 11:57 AM, Richard Herron >>> <richard.c.herron@gmail.com> wrote: >>>> -cholinv()- would be faster if you met the symmetric, positive >>>> definite requirement. I am also surprised that Mata isn't competitive >>>> with Matlab on matrix inversion (I thought they all used the same >>>> algorithms). >>>> >>>> Have you tried taking the matrix generation step out of the timing >>>> block? Is there a chance that the matrix formation process if >>>> different between the two (Sorry, I don't have Stata and Matlab >>>> installs handy). >>>> >>>> Richard Herron >>>> >>>> >>>> On Fri, Jul 20, 2012 at 2:50 PM, Patrick Roland >>>> <patrick.rolande@gmail.com> wrote: >>>>> luinv() takes about 15 times longer than MATLAB's inverse function. >>>>> Maybe I'm being naive, but why wouldn't all serious matrix languages >>>>> invert matrices at roughly the same speed? Don't they use the same >>>>> linear algebra routines? >>>>> >>>>> Another curiosity is that the luinv() is more general and faster. Why >>>>> would anyone want to use cholinv()? >>>>> >>>>> On Fri, Jul 20, 2012 at 9:17 AM, Richard Herron >>>>> <richard.c.herron@gmail.com> wrote: >>>>>> Patrick, -cholinv()- requires a symmetric positive definite matrix, >>>>>> but I don't think you M matrix is PD. Try -luinv()-. >>>>>> >>>>>> Although for most use cases your matrix will be symmetric, right? Then >>>>>> you should use -invsym()- or a solve function. >>>>>> >>>>>> Richard Herron >>>>>> >>>>>> >>>>>> On Thu, Jul 19, 2012 at 9:22 PM, Patrick Roland >>>>>> <patrick.rolande@gmail.com> >>>>>> wrote: >>>>>>> >>>>>>> I'm comparing two code snippets. In Mata: >>>>>>> >>>>>>> mata >>>>>>> timer_on(1) >>>>>>> M = rnormal(2000,2000,0,1) >>>>>>> J = cholinv(M) >>>>>>> timer_off(1) >>>>>>> timer() >>>>>>> end >>>>>>> >>>>>>> In MATLAB: >>>>>>> >>>>>>> tic; >>>>>>> M = normrnd(0,1,2000,2000); >>>>>>> J = inv(M); >>>>>>> toc; >>>>>>> >>>>>>> I find that MATLAB is about 20 times faster (1.5 seconds vs 30 >>>>>>> seconds). Is there something I'm missing here, or is MATLAB just much >>>>>>> faster at matrix inversion? I'd much prefer to use Mata because of >>>>>>> integration with Stata, but if the speed difference is going to be on >>>>>>> this order then MATLAB is more attractive. >>>>>>> >>>>>>> >>>>>>> Any input here is appreciated. >>>>>>> * >>>>>>> * 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/ >>>>>> * >>>>>> * 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/ >>>>> * >>>>> * 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/ >>>> * >>>> * 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/ >>> * >>> * 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/ >> * >> * 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/ > * > * 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/ * * 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/

**References**:**st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Patrick Roland <patrick.rolande@gmail.com>

**Re: st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Richard Herron <richard.c.herron@gmail.com>

**Re: st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Patrick Roland <patrick.rolande@gmail.com>

**Re: st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Richard Herron <richard.c.herron@gmail.com>

**Re: st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Patrick Roland <patrick.rolande@gmail.com>

**Re: st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Richard Herron <richard.c.herron@gmail.com>

**Re: st: Why is Mata much slower than MATLAB at matrix inversion?***From:*Patrick Roland <patrick.rolande@gmail.com>

- Prev by Date:
**st: Why to use and how to interpret interaction terms in nlogit?** - Next by Date:
**Re: st: Why is Mata much slower than MATLAB at matrix inversion?** - Previous by thread:
**Re: st: Why is Mata much slower than MATLAB at matrix inversion?** - Next by thread:
**Re: st: Why is Mata much slower than MATLAB at matrix inversion?** - Index(es):