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: Nonlinear regression syntax


From   Nick Cox <[email protected]>
To   [email protected]
Subject   Re: st: Nonlinear regression syntax
Date   Sat, 19 Jan 2013 16:35:30 +0000

Thanks for this, but my answer is the same.

{rg*(1+exp(-gamma*(moveave-ci)))^-1}

is illegal, indeed meaningless, so far as -nl- is concerned.

But

nl (rx={rg}+{rg}*(1+exp(-gamma*(moveave-ci)))^-1}+{gfc})

looks legal from what you say. It can be re-written, I think, as

nl (rx={rg} * (1+ 1/(1+exp(-gamma*(moveave-ci)))+{gfc})

leaving two parameters to estimate. I haven't read the paper you cite,
but it seems to me your interest in a more complicated expression
depending partly on parameter estimates is, as it were, downstream of
this and the first job is estimating those parameters.

-nl- often needs initial values for parameters to do a good job, or
even to converge at all.

Nick

On Sat, Jan 19, 2013 at 3:18 PM, David Ashcraft
<[email protected]> wrote:
> Thanks Nick,
>
> when I said constant in the previous e-mail, I meant that the value of gamma and ci is fixed. however, both are defined as variables. I have generated both variables by following:
>
> Woodward, G., & Anderson, H. M. (2009). Does beta react to market conditions? Estimates of “bull” and “bear” betas using a nonlinear market model with an endogenous threshold parameter. Quantitative Finance, 9(8), 913–924. doi:10.1080/14697680802595643
>
>
> In short gamma, ci, rg and moveave are variables. Complete algebraic expression that I want to solve is
> {rg*(1+exp(-gamma*(moveave-ci)))^-1} where rg is multiplied with the inverse of the expression within parenthesis. I want to estimate three parameters: rg, algebraic expression and gfc
>
> if I don't use -nl- what would be the alternatives?
> Regards
>
> David
>
>
>
> ----- Original Message -----
> From: Nick Cox <[email protected]>
> To: [email protected]
> Cc:
> Sent: Saturday, January 19, 2013 4:19:16 PM
> Subject: Re: st: Nonlinear regression syntax
>
> You have
>
> {rg*(1+exp(-gamma*(moveave-ci)))^-1}
>
> That will make no sense to -nl-. The most basic syntax for braces { }
> is that braces must enclose parameter names only. There are other
> possibilities but they do not cover your syntax.
>
> {rg}*(1+exp(-gamma*(moveave-ci)))^-1
>
> would make sense if and only if the names
>
> gamma
> moveave
> ci
>
> are names of variables (or possibly names of known scalars).
>
> You need to tell us what your model is, distinguishing variables,
> known scalars if any and parameters to be estimated.
>
> Nick
>
> On Sat, Jan 19, 2013 at 12:39 PM, David Ashcraft
> <[email protected]> wrote:
>
>> rg, algebraic expression and gfc are parameters to be estimated and that's why I used braces {}. gamma and ci are constants. in the first line: rg and moveave are variables where moveave is the quarterly moving average of rg.
>>
>> You mentioned that a brace is omitted. I do not see the omitted brace. Can you please point out the missing brace in the following?
>>
>> nl (rx={rg}+{rg*(1+exp(-gamma*(moveave-ci)))^-1}+{gfc})
>
> Nick Cox <[email protected]>
>
>> Did you type _exactly_ the first line? If "rg" is a parameter to be
>> estimated, then a brace "}" has been omitted. Is "gamma" really a
>> variable as implied by your syntax?
>>
>> In general, there seems confusion here over algebraic conventions and
>> Stata rules. In algebra you can use braces { } using similar rules to
>> parentheses () and brackets []: i.e. they are all delimiters and must
>> just match and nest logically. But in -nl- expressions braces {} have
>> a special meaning to indicate parameters to be estimated and makes no
>> sense otherwise.
>>
>> Nick
>>
>> On Sat, Jan 19, 2013 at 11:12 AM, David Ashcraft
>> <[email protected]> wrote:
>>> I want to run the following model as a non-linear regression:
>>>
>>> nl (rx={rg}+{rg*(1+exp(-gamma*(moveave-ci)))^-1}+{gfc})
>>>
>>> where rx is dependent variable. when I run this model Stata gives the  error code: r(480); starting values invalid or some RHS variables have missing values
>>>
>>>
>>> As a second option, I solved the non-linear function outside the equation by having a new variable fm={rg*(1+exp(-gamma*(moveave-ci)))^-1} and run again:
>>>
>>> nl (rx={rg}+{fm}+{gfc})
>>>
>>> Now I get the results with omitted values for fm.
>>>
>>> I don't know where is my mistake. Any help will be greatly appreciated.

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


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