Statalist The Stata Listserver


[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

RE: st: Fitting the logistic curve to a time-series


From   "Nick Cox" <n.j.cox@durham.ac.uk>
To   <statalist@hsphsun2.harvard.edu>
Subject   RE: st: Fitting the logistic curve to a time-series
Date   Fri, 21 Jul 2006 11:44:50 +0100

An alternative is to pass your -q- through -logit()- and 
feed the thus-transformed response to -regress-. 

. gen logit_q = logit(q) 
. twoway connected logit_q year 
. regress logit_q year
. predict logit_q_hat 
. gen q_hat = invlogit(logit_q_hat) 

The error assumptions are naturally different, but 
if the model is any good, that should not matter 
too much. 

This doesn't fix the asymptote, but the by-product of 
being able to check for linearity on the logit scale 
could be useful.

Yet another alternative, even simpler, is 

-glm, link(logit) family(gaussian)-

even though a glance at the help for -glm- might lead
you to suppose that this combination was not allowed. 

I read in your data, did

. glm q year, link(logit) family(gaussian) 

and followed with 

. regplot, bands(200) 

where -regplot- comes from -modeldiag- (-search 
modeldiag- for download information). 

The error assumptions are different again, but 
I make the same assertion. 

The graph shows that your data all seem to fall
on the accelerating part of the curve: the asymptote
can not be glimpsed, let alone touched. 

Those interested in the history of ideas might know
that Berkson played with logistic curves before he 
came up with what we now know as logit models. He 
was not the first to do that either. 

Nick 
n.j.cox@durham.ac.uk 

Maarten buis
 
> --- Serguei Kaniovski asked:
> > How can I fit the logistic curve to a time-series "q" so that 
> > I can control the asymptotes, i.e. I what the fitted curve to 
> > level out at the value of q=0.04?
> 
> Serguei:
> You can do that with the -nl- command which estimates a nonlinear
> least squares model. See the example below. You don't have to fix
> the minimum and maximum, you can also estimate them. Even if you
> want to fix them this may be useful as a model to compare with
> for e.g. a likelihood ratio test, BIC and AIC, or just graphically,
> as is also shown in the example below.
> 
> The parameter in my example called {min} is the lower asymptote, 
> {max} is the higher asymptote, {b1} is the slope, and {b2} is the
> year where the curve is halfway between {min} and {max}.
> 
> HTH,
> Maarten
> 
> 
> *---------------begin example----------------
> set more off
> capture drop _all
> input year	q
> 1981	.01102246
> 1982	.01127048
> 1983	.01152055
> 1984	.0118841
> 1985	.01211535
> 1986	.01247724
> 1987	.0129496
> 1988	.01321121
> 1989	.01319597
> 1990	.01362598
> 1991	.014358
> 1992	.01417304
> 1993	.01437101
> 1994	.01509818
> 1995	.01539195
> 1996	.01586584
> 1997	.01686939
> 1998	.01767208
> 1999	.01880662
> 2000	.01914837
> 2001	.02034989
> 2002	.02122596
> 2003	.02201964
> 2004	.02243478
> 2005	.02346839
> 2006	.02428688
> end
> 
> twoway line q year 
> 
> nl ( q = .04/(1+exp(-{b1}*(year-{b2=2000}))) )
> est store const
> predict qconst
> label var qconst "min and max constrained"
> 
> nl ( q = {min=0} + {max=.04}/(1+exp(-{b1}*(year-{b2=2000}))) )
> nl log4: q year
> est store minmax
> predict qminmax
> label var qminmax "min and max not constrained"
> 
> twoway line q qconst qminmax year
> /* The graph shows that the unconstrained
>    model fits better */
> 
> lrtest const minmax
> /* hypothesis that min = 0 and
>    max = .4 is rejected */
> 
> est stats const minmax
> /* AIC and BIC also show that the
>    unconstrained model fits better */
> *----------------end example ----------------

*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   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   |   What's new   |   Site index