Define x_j to use for the analytic derivatives of the variance-covariance matrix. x_j is derived based on the provided utility functions and design candidate using base model.matrix to automatically handle alternative specific attributes and interaction terms
define_x_j(utility, design_candidate)
The list x_j
We can extract the attribute names for each utility function to allow us
to place the correct restrictions on the design candidate. Specifically, we
restrict all levels of unavailable attributes to zero for alternatives where
they do not feature. This is to ensure that we do not give weight when
deriving the variance-covariance matrix using derive_vcov
.
Furthermore, the Xs are "sorted" using the order of the candidate set, which
ensures that when we calculate the sum of the probabilities times X, the
correct columns are added together. See derive_vcov
.