Ordered Logit Model with Panel Data in BIOGEME

15 views
Skip to first unread message

Ahmed Jarif

unread,
May 20, 2025, 2:10:03 AMMay 20
to Biogeme

Dear Prof. Bierlaire and BIOGEME community,

I am a M.Sc. Engg. student. I’ve designed a stated preference survey with 12 hypothetical scenarios where respondents indicate their willingness to deliver parcels (Yes / Maybe / No) under different conditions. I am using an ordered logit model in BIOGEME to analyze the data.

Objective

Estimate an ordered logit model to evaluate how compensation, parcel size, and delivery hour affect users' willingness.

Data Description

Each respondent answered 12 scenarios, and the data includes:
id, age, gender, occupation, family income, family members, earning members, travel frequency, number of stations traveled, and responses to the 12 scenarios (Yes / Maybe / No, encoded as 3 / 2 / 1).

Model Specification
  • Utility Function:
    V = asc + b_comp * comp + b_size * size + b_del_hour * del_hour

  • Coefficients and Thresholds:
    b_comp = Beta('b_comp', 0.5, None, None, 0)
    b_size = Beta('b_size', -0.5, None, None, 0)
    b_del_hour = Beta('b_del_hour', -0.5, None, None, 0)
    tau1 = Beta('tau1', 0, None, None, 0)
    diff = Beta('diff', 0, None, None, 0)
    tau2 = tau1 + diff

  • Choice Probability:
    prob = models.ordered_logit(V, [1, 2, 3], tau1)

  • Panel Data Treatment:
    database.panel("id")
    logprob = log(PanelLikelihoodTrajectory(Elem(prob, choice)))
    biogeme = bio.BIOGEME(database, logprob, removeUnusedVariables=False) biogeme.modelName = "CS ordered Logit"
    results = biogeme.estimate()
    estimationResults = results.getEstimatedParameters()

Concern

The model runs and gives qualitatively correct results (expected signs for coefficients), but I would appreciate it if someone could verify whether:

  1. My panel data structure and usage of PanelLikelihoodTrajectory is appropriate.

  2. The thresholds (tau1, tau2) are defined and passed correctly for the ordered logit model.

  3. The model correctly reflects the ordering of choices (Yes = 3, Maybe = 2, No = 1).

Any guidance or suggestions for improving this setup would be deeply appreciated.

Thank you for your time and support.

Best regards,
Ahmed Jarif
M.Sc. Engg. in Civil and Transportation Engineering
Bangladesh University of Engineering and Technology (BUET)

Reply all
Reply to author
Forward
0 new messages