| mnl_bhhh_parallel | R Documentation |
Computes the weighted outer product of per-individual scores
\sum_i w_i\, s_i s_i^\top for the Multinomial Logit model. The
per-individual score s_i is the (positive) gradient of individual
i's log-likelihood contribution and is weight-free; the supplied
weights enter only as the leading multiplier. Passing
weights = w yields the ordinary weighted BHHH/OPG information; passing
weights = w^2 yields the sandwich meat
B = \sum_i w_i^2 s_i s_i^\top used for robust (WESML) inference.
mnl_bhhh_parallel(
theta,
X,
alt_idx,
choice_idx,
M,
weights,
use_asc = TRUE,
include_outside_option = FALSE
)
theta |
K + J - 1 or K + J vector with model parameters |
X |
sum(M) x K design matrix with covariates. Stacks M[i] x K matrices for individual i. |
alt_idx |
sum(M) x 1 vector with indices of alternatives within each choice set; 1-based indexing |
choice_idx |
N x 1 vector with indices of chosen alternatives; 1-based indexing relative to X; 0 is used if include_outside_option=True |
M |
N x 1 vector with number of alternatives for each individual |
weights |
N x 1 vector with weights for each observation |
use_asc |
whether to use alternative-specific constants |
include_outside_option |
whether to include outside option normalized to 0 (if so, the outside option is not included in the data) |
A symmetric positive-semidefinite information matrix
\sum_i w_i\, s_i s_i^\top (same sign convention as the negated Hessian).
library(data.table)
set.seed(42)
N <- 50; J <- 3
dt <- data.table(id = rep(1:N, each = J), alt = rep(1:J, N))
dt[, `:=`(x1 = rnorm(.N), x2 = rnorm(.N))]
dt[, choice := 0L]
dt[, choice := sample(c(1L, rep(0L, J - 1))), by = id]
fit <- run_mnlogit(dt, "id", "alt", "choice", c("x1", "x2"))
B <- choicer:::mnl_bhhh_parallel(coef(fit), fit$data$X, fit$data$alt_idx,
fit$data$choice_idx, fit$data$M, fit$data$weights)
dim(B)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.