|
21 | 21 | # Returns the logit fraction for mnl (homogeneous) models |
22 | 22 | getMnlLogit <- function(V, obsID) { |
23 | 23 | expV <- exp(V) |
24 | | - sumExpV <- rowsum(expV, group = obsID) |
| 24 | + sumExpV <- rowsum(expV, group = obsID, reorder = FALSE) |
25 | 25 | repTimes <- as.numeric(table(obsID)) |
26 | 26 | sumExpVMat <- matrix(rep(sumExpV, times = repTimes), ncol = 1) |
27 | 27 | logit <- expV / sumExpVMat |
@@ -90,7 +90,7 @@ getMnlHessLL <- function(pars, modelInputs) { |
90 | 90 | getMxlLogit <- function(VDraws, obsID) { |
91 | 91 | numDraws <- ncol(VDraws) |
92 | 92 | expVDraws <- exp(VDraws) |
93 | | - sumExpVDraws <- rowsum(expVDraws, group = obsID) |
| 93 | + sumExpVDraws <- rowsum(expVDraws, group = obsID, reorder = FALSE) |
94 | 94 | repTimes <- rep(as.numeric(table(obsID)), each = numDraws) |
95 | 95 | sumExpVDrawsMat <- matrix(rep(sumExpVDraws, times = repTimes), |
96 | 96 | ncol = numDraws, byrow = FALSE |
@@ -283,7 +283,7 @@ mxlNegGradLL_pref <- function(X, parSetup, obsID, choice, standardDraws, |
283 | 283 | partial_mu <- Xtemp |
284 | 284 | partial_sigma <- Xtemp * drawsMat |
285 | 285 | partial <- cbind(partial_mu, partial_sigma) |
286 | | - temp <- rowsum(logitMat * partial, group = obsID) |
| 286 | + temp <- rowsum(logitMat * partial, group = obsID, reorder = FALSE) |
287 | 287 | tempMat <- matrix(rep(temp, times = repTimes), |
288 | 288 | ncol = ncol(partial), |
289 | 289 | byrow = F |
@@ -426,7 +426,7 @@ mxlNegGradLL_wtp <- function(X, parSetup, obsID, choice, standardDraws, |
426 | 426 | partial_mu <- cbind(lambda_partial_mu, gamma_partial_mu) |
427 | 427 | partial_sigma <- cbind(lambda_partial_sigma, gamma_partial_sigma) |
428 | 428 | partial <- cbind(partial_mu, partial_sigma) |
429 | | - temp <- rowsum(logitMat * partial, group = obsID) |
| 429 | + temp <- rowsum(logitMat * partial, group = obsID, reorder = FALSE) |
430 | 430 | tempMat <- matrix(rep(temp, times = repTimes), |
431 | 431 | ncol = ncol(partial), |
432 | 432 | byrow = F |
|
0 commit comments