No announcement yet.
  • Filter
  • Time
  • Show
Clear All
new posts

  • How to perform NLS estimation with a complex function

    Dear Stata users,

    I need to use NLS to estimate the following equation describing the so-called Bass diffusion model:

    yt = m * [ ((1 - exp (-(p+q) * t)) / (1 + q/p * exp (-(p+q) * t))) - ((1 - exp (-(p+q) * (t-1))) / (1 + q/p * exp (-(p+q) * (t-1)))) ] + ut

    where m,p, and q are parameters and t indicates time. As initial values for these parameters, I am to use those obtained with OLS applied to:

    yt = β0 + β1 x1, t-1 + β2 x2, t-1 + ϵt

    where β0 = m * p
    β1 = q - p
    β2= - q/m

    Note that m = 41302528
    p = 0.024
    q = 0.194

    To perform this NLS estimation, I tried to follow the example that was given in the Stata forum ( in order to create a program that defines my function.Then, I used the nl command and specified the initial values.

    When I run the command, I get the following message:

    verify that nlces is a function evaluator program

    Would you please help me figure out what the problem is? I am a beginner in Stata software.
    Thanks in advance.

  • #2
    This is also posted in the more appropriate location of the General Forum (rather than the Mata Forum) at

    with subsequent follow-up.
    Last edited by William Lisowski; 30 Nov 2020, 08:09.