Bookmark and Share

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


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

Re: st: Constrained Regression in Stata


From   Austin Nichols <austinnichols@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Constrained Regression in Stata
Date   Fri, 3 Jun 2011 15:53:21 -0400

Steve--
True that (1-exp(_b[/b1])-exp(_b[/b2])) need not be positive, in which
case another parametrization would be required to meet the poster's
desiderata (possibly just switching the order of b1, b2, b3 would work
in many cases); did you mean to constrain all coefs to be less than
one as well?

On Fri, Jun 3, 2011 at 3:08 PM, Steven Samuels <sjsamuels@gmail.com> wrote:
> In Austin's example, the third coefficient is constrained to be: (1-exp(_b[/b1])-exp(_b[/b2].
> I don't see that this guarantees that the coefficient will be positive.  The following code does, though in this example, the results are identical:
>
> ***************************************
> nl (gpm=   (exp({b1})/(1+exp({b1})+exp({b2})))*wt  ///
>         + (exp({b2})/(1+exp({b1})+exp({b2})))*l   ///
>         + (1/(1+exp({b1})+exp({b2})))*tn  ///
>         +{_cons})
>
>  nlcom (exp(_b[/b1])/(1+exp(_b[/b1])+exp(_b[/b2])))  ///
>       (exp(_b[/b2])/(1+exp(_b[/b1])+exp(_b[/b2])))  ///
>       (1/(1+exp(_b[/b1])+exp(_b[/b2]))), post
> *****************************************************
>
>
> Steve
>
> On Jun 3, 2011, at 10:05 AM, Austin Nichols wrote:
>
> If you want to impose all coefs are nonnegative and sum to one, try:
>
> sysuse auto, clear
> g gpm=1/mpg
> g wt=weight/1000
> g l=length/1000
> g tn=turn/1000
> reg gpm wt l tn, nohe
> * constrained to be positive:
> nl (gpm=exp({b1})*wt+exp({b2})*l+exp({b3})*tn+{_cons}), nolog
> nlcom (exp(_b[/b1])) (exp(_b[/b2])) (exp(_b[/b3])), post
> * constrained to be positive and sum to one:
> nl (gpm=exp({b1})*wt+exp({b2})*l+(1-exp({b1})-exp({b2}))*tn+{_cons})
> nlcom (exp(_b[/b1])) (exp(_b[/b2])) (1-exp(_b[/b1])-exp(_b[/b2])), post
>
> But imposing such assumptions tends to result in very implausible
> models, unless the unconstrained coefs are very close to satisfying
> your constraints.  See also p.1188 of [R] nl.
>
> On Fri, Jun 3, 2011 at 2:03 AM, Nick Cox <njcoxstata@gmail.com> wrote:
>> This is an FAQ. See
>>
>> How do I fit a regression with interval constraints in Stata?
>> Isabel Cañette, StataCorp
>> October 2006; updated July 2008; minor revisions April 2011
>> http://www.stata.com/support/faqs/stat/intconst.html
>>
>> Nick
>>
>> On Fri, Jun 3, 2011 at 12:24 AM, Meg22 <meadhbh2@gmail.com> wrote:
>>
>>> I need to do a constrained regression in stata-I need all the beta
>>> coefficents to be positive and sum to 1.
>>>
>>> I have 11 independent variables so my regression is:
>>> reg Rrf bills it lt cor lcvalue lcgrowth medcap smallcap noncanbonds us jap
>>> if fundno ==`i'
>>>
>>> I need all the betas to be positive, sum to 1 and there to be a constant.

*
*   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–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index