Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: st: Which inverter? (was: RE: RE: ivreg2 weak-id statistic and quadratic terms)
From
"Schaffer, Mark E" <[email protected]>
To
<[email protected]>
Subject
RE: st: Which inverter? (was: RE: RE: ivreg2 weak-id statistic and quadratic terms)
Date
Tue, 21 Feb 2012 19:21:13 -0000
Scott,
I think you're right - it's the default tolerance. I tried setting the tolerance by hand for both svsolve() and qrsolve(), and if set small enough they both replicated -regress- and the scaled data.
So I wasn't quite right. It's not the solver per se, but the default tolerance that it uses.
Which raises somewhat different but still interesting questions:
- Why is the default tolerance of svsolve() and qrsolve() in this example lax compared to luinv() and invsym()?
- Is it generally the case that with scaling problems, svsolve() and/or qrsolve() will be more lax? I.e., was it a coincidence that Miroslav's example generated the same behaviour? Or might luinv() and/or invsym() sometimes be more lax?
- Is there a simple way of checking for these things without adding much in the way of computational overhead?
- Might it make sense to add to a future Mata wish-list an option for these solvers to return the tolerance to the user so that it can be checked?
--Mark
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of
> Scott Merryman
> Sent: 21 February 2012 17:46
> To: [email protected]
> Subject: Re: st: Which inverter? (was: RE: RE: ivreg2 weak-id
> statistic and quadratic terms)
>
> Is it that the tolerance is very large due to the large value
> of max(S)? Changing the tolerance does result in values that
> are close to the scaled data:
>
> . *max(S)
>
> . mata: max(svdsv(XX))
> 1.31904e+15
>
> . *value of tolerance
>
> . mata: max(svdsv(XX))*max(y)*epsilon(1)
> 7.615041406
>
> . mata: beta_sv2=svsolve(XX,Xy,.,-max(svdsv(XX))*max(y)*epsilon(1))
>
> . mata: beta_sv2
> 1
> +----------------+
> 1 | .755934374 |
> 2 | .0032936694 |
> 3 | -1.97687e-06 |
> 4 | .001060688 |
> +----------------+
>
> . mata: beta_sv2=svsolve(XX,Xy,.,-epsilon(1))
>
> . mata: beta_sv2
> 1
> +----------------+
> 1 | .6979560211 |
> 2 | -.0218987055 |
> 3 | 1.97388e-06 |
> 4 | 41.39947923 |
> +----------------+
>
> . *Compare to scaled data
>
> . mata: beta_sv1=svsolve(XX1,Xy1)
>
> . mata: beta_sv1
> 1
> +----------------+
> 1 | .6979557583 |
> 2 | -21.89870042 |
> 3 | 1.973884277 |
> 4 | 41.39947954 |
> +----------------+
>
>
> Scott
>
>
> On Mon, Feb 20, 2012 at 6:11 PM, Schaffer, Mark E
> <[email protected]> wrote:
> > Hi all. I have traced the problem to the choice of inverter. At
> > least, it's definitely the problem in the auto dataset
> example below,
> > and I'll bet it's the source of Miroslav's problem as well.
>
> *
> * 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/
>
--
Heriot-Watt University is a Scottish charity
registered under charity number SC000278.
Heriot-Watt University is the Sunday Times
Scottish University of the Year 2011-2012
*
* 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/