Bookmark and Share

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: Threshold regression using NL - How to specify indicator variable?


From   "Hoffman, George" <[email protected]>
To   "[email protected]" <[email protected]>
Subject   RE: st: Threshold regression using NL - How to specify indicator variable?
Date   Mon, 3 Sep 2012 23:30:21 +0000

Have you looked at 
http://www.ats.ucla.edu/stat/stata/faq/nl_optimal_knots.htm

the general form is explained about half way done the page.

nl (y = ({a1} + {b1}*x)*(x < {c}) + ///
	  ({a1} + {b1}*{c} + {b2}*(x-{c}))*(x >= {c})), ///
	   initial(a1 25 b1 -2 c 10 b2 2)

also, look at 'nlhockey', a user-written package that does hockey-stick regression as an  add-on to nl.
(findit nlhockey)

Both approaches work! Start with nlhockey.


-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Nick Cox
Sent: Monday, September 03, 2012 1:57 PM
To: [email protected]
Subject: Re: st: Threshold regression using NL - How to specify indicator variable?

What do you mean by "doesn't work"?

An alternative is to use -cond(,)-.

On Mon, Sep 3, 2012 at 7:46 PM, Ophelie Desmarais <[email protected]> wrote:
> Dear Nick,
>
> Thanks again for your fast reply and help.
>
> I have tried it the way you suggested, but it doesn't work - would you 
> mind giving me a hint on how the actual expression would look like?
>
> nl (y = {a1=1}+{a2=1}*X*(X>{Z=1})+{a3=1}*X*(X<{Z=1})) ?
>
> Thank you so much.
>
> Ophelie
>
> On 3 September 2012 19:26, Nick Cox <[email protected]> wrote:
>> You don't need an explicit operator or function for indicators. (X <
>> Z) is perfectly legitimate Stata code and such terms can be included 
>> freely in defining models to -nl-. Drop the I's from your expression 
>> and you are half-way there.
>>
>> Nick
>>
>> On Mon, Sep 3, 2012 at 7:03 PM, Ophelie Desmarais 
>> <[email protected]> wrote:
>>
>>> I would like to create a simple non-linear threshold regression:
>>>
>>> y = a1+a2*X*I(X>Z)+a3*X*I(X<Z)
>>>
>>> where in the linear case a2=a3. Z is unknown and to be estimated.
>>>
>>> Is there anyway to do this with Stata's "nl" command? The tutorial 
>>> suggests that you can run relatively straightforward models like:  
>>> nl (y = {b0=1}*(1 - exp(-1*{b1=0.1}*x)))
>>>
>>> i.e. you just define the functional form in command line. But I am 
>>> not aware of an operator for an indicator variable, so I'm not sure 
>>> how to do this here.
>>>
>>> Any suggestions would be appreciated - I did check the previous 
>>> posts and run a Google search, but no success.
>> *
>> *   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/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index