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 on April 23, and its replacement, is already up and running.

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

st: RE: Curve fitting with nl log4, how to put constraints on parameters

From   Nick Cox <>
To   "''" <>
Subject   st: RE: Curve fitting with nl log4, how to put constraints on parameters
Date   Mon, 14 Nov 2011 17:46:37 +0000

If something must be positive, its logarithm can still be negative. So exp(log(positive)) will always be positive. 


Whether imposing a constraint is valid is more complicated question. There are two opposite truths, which are both correct. 

1. If a model is appropriate, you should not need to force it. Constraints that are natural will be obeyed automatically.

2. Allowing impossible parameter values in model fitting is just silly. You should specify the rules for your model fit as an expression of what makes sense (and of what does not).  


Jennyfer Wolf

I am trying to do curve fitting for survey estimates over time with
the nl:log4... command (y = b0 + b1/(1 + exp(-b2*(x-b3))).
This logistic function seems to me to be the most realistic shape to
describe the data.

However, in some cases (e.g. when I only have survey estimates that
are quite linear over time but the last estimate is going a bit down)
I would need to constraint b2 that it cannot become negative (if not I
get a curve which is strongly declining which is very unlikely to be
true and is not supported by my data). I wrote the formula (instead of
log4) so I could try to get only positive values for b2 with for
example "invlogit({lnb2})

1. Would this be a valid thing to do?

However, when I try the two commands which I thought should give me
the same results:

nl log4:[VARNAME] [VARNAME] if country=="maldives"


nl ([VARNAME]={b0}+{b1}/(1+exp(-{
b2}*([VARNAME]-{b3}))) if country=="maldives")

I get different estimates (e.g. if I use the second formula I only get
a value for b0).

2. Could you give me advise on how to do curve fitting by using this
function with the constraint that the b2 does not get negative?

*   For searches and help try:

© Copyright 1996–2016 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index