From 78292a27e7206501ac7d9e80c7c53befdefc1224 Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Thu, 23 May 2024 22:06:54 +1000 Subject: [PATCH] fix factor level ordering with >10 factors in trend_formula components --- R/get_linear_predictors.R | 4 +++- R/marginaleffects.mvgam.R | 4 +++- R/residuals.mvgam.R | 2 +- src/mvgam.dll | Bin 1091584 -> 1091584 bytes 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/R/get_linear_predictors.R b/R/get_linear_predictors.R index 3840f14c..d8a391d1 100644 --- a/R/get_linear_predictors.R +++ b/R/get_linear_predictors.R @@ -86,7 +86,9 @@ trend_Xp_matrix = function(newdata, trend_map, series = 'all', trend_indicators[i] <- trend_map$trend[which(as.character(trend_map$series) == as.character(trend_test$series[i]))] } - trend_indicators <- as.factor(paste0('trend', trend_indicators)) + trend_indicators <- factor(paste0('trend', trend_indicators), + levels = paste0('trend', + unique(trend_map$trend))) trend_test$series <- trend_indicators trend_test$y <- NULL diff --git a/R/marginaleffects.mvgam.R b/R/marginaleffects.mvgam.R index 08ef3df2..8b7abc4d 100644 --- a/R/marginaleffects.mvgam.R +++ b/R/marginaleffects.mvgam.R @@ -127,7 +127,9 @@ get_data.mvgam = function (x, source = "environment", verbose = TRUE, ...) { trend_indicators[i] <- x$trend_map$trend[which(x$trend_map$series == orig_dat$series[i])] } - trend_indicators <- as.factor(paste0('trend', trend_indicators)) + trend_indicators <- factor(paste0('trend', trend_indicators), + levels = paste0('trend', + unique(x$trend_map$trend))) # Trend-level data, before any slicing that took place trend_level_data <- data.frame(trend_series = trend_indicators, diff --git a/R/residuals.mvgam.R b/R/residuals.mvgam.R index 6c7e78ff..5e02945e 100644 --- a/R/residuals.mvgam.R +++ b/R/residuals.mvgam.R @@ -48,7 +48,7 @@ residuals.mvgam <- function(object, time = object$obs_data$index..time..index) series_numeric <- as.numeric(orig_order$series) - time_numeric <- orig_order$time + time_numeric <- match(orig_order$time, unique(orig_order$time)) # Build a matrix to return residuals in this order resid_matrix <- matrix(NA, nrow = NROW(orig_order), diff --git a/src/mvgam.dll b/src/mvgam.dll index 4899c9f87b14a8ddd3a7a0538688b08beb485b02..aac8c35c9aab300a251fa99f8d44442a075cf8da 100644 GIT binary patch delta 81 zcmWm5yA42K0EN-;d%uk#w$LI5unfgbBpU1@8bj#6Np#}$XL_3HX|}~2^{}tKxx;cs hSi%-YIKma4@I@d(5s6qNA{Cj)Pl~Gj`{j4VJATp{Ba;9C delta 81 zcmV-X0IvUl&_aOFLXe09@`go`i%kP)zz~7kh1&sz+X98#1BKfJh1&&%+XjW(2Zh@R nh1&^*+X{u-3x(SZh1(5<+YW`>54GD6DN6(KhDEmrOc427A;2Y8