我最近正在尝试优化代码,并且遇到以下问题:
我定义了损失函数,但是要计算它,必须使用其他软件包来获取损失函数中的成分;
我无法明确写下这些组件的表达式;
我已经检查了一些优化包,例如blackbox
,dfoptim
等...,但是找不到可用的包;
之前,我使用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
是我们感兴趣的估计向量。
我花了很多时间在上面,希望有人能帮助我:)