Ограниченная оптимизация с запаздывающей регрессией
Я пытаюсь закодировать проблему выпуклой оптимизации, используя CVXR
пакет в R, и я изо всех сил пытаюсь переформулировать целевую функцию в нечто выпуклое, если, на самом деле, это возможно сделать.
Вот как выглядит моя математическая постановка задачи. Прошу прощения за то, что я смешиваю матрицу и регулярные обозначения, но в приведенной ниже F - матрица возвратов.
Таким образом, это в основном фактор-ориентир, заключенный в оптимизацию наименьших квадратов с ограничением. Я надеюсь, что это можно сделать как задачу выпуклой оптимизации, потому что я минимизирую сумму квадратов ошибок во внешней функции, но внутренние бета-версии оказались проблематичными до сих пор.
Вот воспроизводимая попытка кодирования этого:
library(CVXR)
# number of inner beta variables
IB <- 4
# number of outer beta variables
OB <- 3
n <- 102
Y <- rnorm(n-2,mean=1,sd=2)
# F Matrix
F.mat <- matrix(rnorm(n * IB),ncol=IB)
# establish variables for optimization
InnerBetas <- Variable(IB)
OuterBetas <- Variable(OB)
# Set up objective function
OB_IB.obj <- Minimize(sum((Y - (OuterBetas[1] * (F.mat %*% InnerBetas)[1:100] +
OuterBetas[2] * (F.mat %*% InnerBetas)[2:101] +
OuterBetas[3] * (F.mat %*% InnerBetas)[3:102]))^2))
#> Error in OuterBetas[1] * (F.mat %*% InnerBetas)[1:100]:
#> Cannot multiply elementwise AFFINE and AFFINE
Это работает, если я вставляю числа для внутренних или внешних бета-версий и оптимизирую для других, но вы увидите, когда я попытаюсь сформулировать эту целевую функцию, я получу вышеуказанную ошибку. Есть ли способ сформулировать это так, чтобы оно было выпуклым?