Я пытаюсь оптимизировать свой код в последнее время, и у меня есть одна проблема:
Я определил функцию потерь, но для ее вычисления необходимо использовать другие пакеты для получения компонентов. в функции потерь;
Я не могу записать выражение этих компонентов явно;
Я проверил некоторые пакеты оптимизации, такие как blackbox
, dfoptim
et c ... но не удалось найти один доступный;
Ранее я использовал grid search
(for
циклы) для вычисления good
оценки, но это занимает слишком много времени.
Это моя функция LOSS:
LOSS <- function(sigma) {
x11 <- seas(data, x11='')
ssm <- SSModel(data ~ SSMtrend(1, Q=list(sigma[2])) + SSMseasonal(12, sea.type = 'dummy', Q=1), H=sigma[1])
kfs <- KFS(ssm)
seasonal_x11 <- series(x11, "d10")
trend_x11 <- series(x11, "d12")
seasonal_kfs <- signal(kfs, "seasonal")$signal
trend_kfs <- signal(kfs, "trend")$signal
l <- sum((seasonal_x11-seasonal_kfs)^2) + sum((trend_x11-trend_kfs)^2) + sum((diff(trend_x11)-diff(trend_kfs))^2)
return(l)
}
Таким образом, пакеты seasonal
и KFAS
используются здесь и предполагают, что данные даны , sigma
- это вектор оценки, который нас интересует.
Я потратил на это много времени и надеюсь, что кто-нибудь мне поможет:)