| nl_loglik_numeric_hessian | R Documentation |
Numerical Hessian of the log-likelihood via finite differences
nl_loglik_numeric_hessian(
theta,
X,
alt_idx,
choice_idx,
nest_idx,
M,
weights,
use_asc = TRUE,
include_outside_option = FALSE,
eps = 1e-06
)
theta |
(K + n_delta + n_nests) vector with model parameters.
Order: |
X |
sum(M) x K design matrix with covariates. |
alt_idx |
sum(M) x 1 vector with indices of alternatives; 1-based indexing. |
choice_idx |
N x 1 vector with indices of chosen alternatives; 0 for outside option, 1-based index relative to rows in X_i otherwise. |
nest_idx |
J x 1 vector with indices of nests for each alternative; 1-based indexing (1 to n_nests). |
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 V=0, lambda=1. |
eps |
finite difference step size |
Hessian evaluated at input arguments
library(data.table)
set.seed(42)
N <- 50; J <- 4
dt <- data.table(id = rep(1:N, each = J), alt = rep(1:J, N))
dt[, `:=`(x1 = rnorm(.N), x2 = rnorm(.N))]
dt[, nest := ifelse(alt <= 2, "A", "B")]
dt[, choice := 0L]
dt[, choice := sample(c(1L, rep(0L, J - 1))), by = id]
d <- prepare_nl_data(dt, "id", "alt", "choice", c("x1", "x2"), "nest")
K_x <- ncol(d$X); K_l <- length(unique(d$nest_idx))
theta <- c(rep(0, K_x), rep(0.5, K_l), rep(0, J - 1))
H <- choicer:::nl_loglik_numeric_hessian(theta, d$X, d$alt_idx, d$choice_idx,
d$nest_idx, d$M, d$weights)
dim(H)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.