Why are week and weekday fixed effects not identifiable in a mlogit logit model (R)?
17:13 08 Nov 2025

I am estimating a multinomial logit model using R’s mlogit package based on scanner data (store-level purchases).

For each product category, I estimate a choice model conditional on purchase: each choice situation (chid) contains all SKUs available in the store at that week, and exactly one alternative has choice = 1.

The Panel Data looks like this:

chid product choice lprice promo week weekday
1 A 1 log(1.19) 1 12 Tuesday
1 B 0 log(0.99) 0 12 Tuesday
1 C 0 log(0.89) 0 12 Tuesday
2 A 0 log(1.29) 0 13 Monday
2 B 1 log(0.95) 0 13 Monday
2 C 0 log(0.79) 1 13 Monday

A basic model without time fixed effects runs without problems:

m1 <- mlogit(
  choice ~ lprice + promo,
  data = ml,
  shape = "long",
  alt.var = "product",
  chid.var = "chid"
)

However, when I add time fixed effects (calendar week kw and weekday weekday) in the “individual-specific” part of the formula, the model fails:

m2 <- mlogit(
  choice ~ lprice + promo | factor(week) + factor(weekday),
  data = ml
)

I consistently receive:

Singular hessian

I suspect the issue might be that week and weekday are identical for all alternatives within the same choice set, which means they may cancel out in the logit utility differences.

My questions are:

  1. Are time fixed effects (week / weekday) fundamentally not identifiable in a conditional logit model without an outside alternative, because they do not vary across alternatives within a given choice set?

  2. Is there a correct way to include time fixed effects in mlogit()?
    For example, would I need alternative-specific time interactions (e.g., product × week)?

  3. Is this a general identification problem of the conditional logit model, or am I specifying the formula incorrectly?

  4. If time fixed effects are not possible here, what is the recommended way to capture time-varying demand shocks in conditional MNL models?

r multinomial mlogit