Constraints on estimators seem to produce unexpected results

30 views
Skip to first unread message

Bart Jourquin

unread,
Sep 6, 2022, 1:40:03 AM9/6/22
to Biogeme
Dear Biogeme users,

I'm a little bit confused with the following behaviour. Let's start with a very simple set of utility function such as: 

V1 = INTERCEPT1 + B_COST * log(cost1)  + B_DURATION1 * log(duration1)

V2 = INTERCEPT2 + B_COST * log(cost2)  + B_DURATION2 * log(duration2)

V3 = INTERCEPT3 + B_COST * log(cost3)  + B_DURATION3 * log(duration3)

Obviously, a cost increase or a longer transit time is expected to reduce the probability to choose the impacted mode. Hence, B_COST and B_DURATIONx should be negative.

The strange thing is that if B_COST is defined as:

B_COST = Beta('b_cost', 0, None, None, 0) 

the estimator has the expected negative sign, but if I define it with a constraint on the upper value:

B_COST = Beta('b_cost', 0, None, 0, 0)

it sometimes happens that I obtain an "active bound" in the solution, with b_cost = 0

Did I miss something ?

Bart

Bierlaire Michel

unread,
Sep 6, 2022, 2:54:25 AM9/6/22
to bart.j...@gmail.com, Bierlaire Michel, Biogeme
The optimization algorithm is stopping as soon as a local optimum is found. Adding constraints may increase the number of local optima. 
In principle, if you start the estimation from the value of the unconstrained estimates, the specification with constraints should find the same results. 

--
You received this message because you are subscribed to the Google Groups "Biogeme" group.
To unsubscribe from this group and stop receiving emails from it, send an email to biogeme+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/biogeme/387da990-1997-415e-ad04-953f571e19e4n%40googlegroups.com.

Bart Jourquin

unread,
Sep 6, 2022, 11:25:44 AM9/6/22
to Bierlaire Michel, Biogeme
Thank you for your answer Michel.

The unconstrained estimate of B_COST for my model is -0.020030

However, if I define B_COST = Beta('b_cost', -0.020030, None, 0, 0), the estimated  b_cost = 0, with an active bound...

This is even true if I start with  B_COST = Beta('b_cost', -1, None, 0, 0)

Amazingly, with  B_COST = Beta('b_cost', -0.020030, None, None, 0), the estimated value for b_cost is -0.003315...

Note that, for all these cases, the t-test of b_cost is always poor.  Could this be (part of) the explanation? Indeed, the problem I describe here is not observed with most of my datasets (I have 10 sets, corresponding to categories of commodities)

Bierlaire Michel

unread,
Sep 6, 2022, 11:27:11 AM9/6/22
to bart.j...@gmail.com, Bierlaire Michel, Biogeme
Are the values of the log-likelihood comparable? If so, it means that the likelihood function is almost flat, and you are dealing with numerical issues. 
Reply all
Reply to author
Forward
0 new messages