Re: conf()

From: John Houck <houck_at_email.domain.hidden>
Date: Tue, 23 Sep 2008 13:19:32 -0400
On Tue, Sep 23, 2008 at 16:47 +0400, Dmitry Svinkin wrote:
> Hi!
> I get underesimated single-parameter confidence limits when I try to compute
> it by conf().
>
> I use model "grbm(1)+0.0*constant(1)+0.0*constant(2)". And as a
> fitting result I got such parameters:
>
> isis> list_par;
> grbm(1)+0.0*constant(1)+0.0*constant(2)
>  idx  param           tie-to  freeze         value         min         max
>   1  grbm(1).norm         0     1       0.03931449           0       1e+10
> #=>  constant(1).factor/integrate_band(grbm(1).alpha,grbm(1).beta,grbm(1).tem,1.,20,7000,100.,1)
>   2  grbm(1).alpha        0     0       -0.5793709          -3           2
>   3  grbm(1).beta         0     0        -3.515191         -10           1
>   4  grbm(1).tem          0     1         510.6869          50        1000  keV
> #=>  constant(2).factor/(grbm(1).alpha+2.)
>   5  constant(1).factor   0     0     5.950865e-06           0       1e+10
>   6  constant(2).factor   0     0         725.4967           0       1e+10
>
> Where integrate_band is a user defined function.
>
> Next step is to get confidence limits of  parameters. Thereto I run, for
> example, conf(2,1) to compue 68% conf limits.
>
> isis> conf(2,0);
> **** Lower confidence limit didn't converge[2]:  allow wider parameter ranges?
> -0.534332
> -0.579371
>
> Also you can see that lower confidence limit is much smaller than upper
> one. When I use grbm model without any functions in parameters all is
> ok.
>
> Can you explain, please, the root of such behavior?
>
> Thanks.
> Dmitriy

Hi Dmitriy,

There are several reasons why conf might fail to converge.

Essentially, conf is looking for a parameter value that will
cause a specific increase in chi-square.  If the underlying
model is sufficiently nonlinear or is otherwise not smoothly
varying (perhaps because of interpolation within a coarsely
spaced table), it may not be possible to compute that parameter
value to the default tolerance.  If the chi-square space is
sufficiently complicated, there might be local minima that
confuse the search for the confidence limits.

One solution might be to allow a larger convergence error,
perhaps:
   (cmin, cmax) = conf(2, 1, 0.01);

You might also consider providing narrower min/max values
for constant(1).factor and constant(2).factor.

When you define some parameters as functions of others, does
that make the initial fit more difficult?  You could test this
by freezing parameter #2 at a value relatively near the
best-fit, then fitting again, just to see how easy or hard it
is to find the new best-fit chi-square.

I'm wondering if those parameter functions introduce
significant additional nonlinearity. If that's the trouble,
maybe the optimization problem could be formulated in a
slightly different way by using a suitably defined constraint
function (see set_fit_constraint).

Thanks,
-John
----
You received this message because you are
subscribed to the isis-users list.
To unsubscribe, send a message to
isis-users-request_at_email.domain.hiddenwith the first line of the message as:
unsubscribe
Received on Tue Sep 23 2008 - 13:19:44 EDT

This archive was generated by hypermail 2.2.0 : Tue Oct 28 2008 - 15:50:37 EDT