-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHessian.R
More file actions
21 lines (21 loc) · 743 Bytes
/
Hessian.R
File metadata and controls
21 lines (21 loc) · 743 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Hessian
#
# @param par Numeric vector with parametervalues.
# @param des A design matrix in which each row is a profile.
# @param covar The covariance matrix.
# @param n.alts The number of alternatives in each choice set.
# @return the hessian matrix
Hessian <- function(par, des, covar, n.alts) {
# utility
des <- as.matrix(des)
u <- des %*% diag(par)
u <- .rowSums(u, m = nrow(des), n = length(par))
# probability
expu <- exp(u)
p <- expu / rep(rowsum(expu, rep(seq(1, nrow(des) / n.alts, 1), each = n.alts)), each = n.alts)
# information matrix
info <- crossprod(des * p, des) - crossprod(rowsum(des * p, rep(seq(1, nrow(des) / n.alts, 1), each = n.alts)))
# hessian
hess <- (-info - solve(covar))
return(hess)
}