--- On Fri, 29/1/10, Roger Harbord wrote:
Surely that depends on the size of the dataset too? If
Dan's outcome variable has thousands of successes and
thousands of failures then i'd have thought there might
be enough information to estimate the position of a
single knot in a linear spline, if not in a cubic
spline. Agree there's no built-in command to fit this (nor
user-written one AFAIK) so it would take a bit of
programming in -ml- (though you could call -mkspline- and
-logit- to do most of the work).
Some models are identified in theory but demand so much of
the data that in practice they will virtually always fail to
converge. I would classify the logistic with an unknown knot
location in this category.
Anyhow, the programming is not such a big deal. Below is the
the likelihood if you want to give it a try:
program define splogit_lf
version 8.2
args lnf xb b1 b2 k
tempvar eta
qui gen double `eta' = `xb' + `b1'*$sp + `b2'*max($sp-`k', 0)
qui replace `lnf' = ln(invlogit(`eta')) if $ML_y1 == 1
qui replace `lnf' = ln(invlogit(-`eta')) if $ML_y1 == 0
end
Here `xb' captures the control variables, `b1' the effect of
the first spline term and `b2' the effect of the second spline
term, `k' is the location of the knot. The variable that you
want to turn into a spline has to be stored before the program
in the global sp.
Alternatively, you could do a grid search, like in the example
below. You can see why this is such a hard problem, the
likelihood function appears to be bi-model and there seems
to be a considerable platteau near the global maximum.
*-------------- begin example ----------------------
sysuse nlsw88, clear
sum wage, detail
local begin = r(p5)
local end = r(p95)
local step = (`end' - `begin')/101
tempvar ll k
gen double `ll' = .
gen double `k' = .
local j = 1
forvalues i = `begin'(`step')`end' {
capture drop sp*
mkspline sp1 `i' sp2 = wage
logit union south sp*
replace `ll' = e(ll) in `j'
replace `k' = `i' in `j++'
}
twoway line `ll' `k'
*-------------------- end example ------------------
Hope this helps,
Maarten
--------------------------
Maarten L. Buis
Institut fuer Soziologie
Universitaet Tuebingen
Wilhelmstrasse 36
72074 Tuebingen
Germany
http://www.maartenbuis.nl
--------------------------
*
* 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/