首页 > 解决方案 > constrOptim() 错误:初始值不在可行域内部

问题描述

我对 R 完全陌生,我正在尝试使用不等式约束(最大似然估计)优化函数我有 7 个参数:mu, alpha, gamma, beta, lambda_0, lamda_1, lamda_2 不等式约束如下:

  alpha >=0;
    alpha + gamma/2 + beta <=1;
    lambda_1 >= 0;
    lambda_1 + lambda_2 <=1.

我写了以下代码:

#logreturn
y <- diff(log(daten$close_price)) * 100 
# initial values 
para <- c(0.02, 0.007, 0.14, 0.85, 0.01, 0.05, 0.93)
A <- matrix(c(0, 1, 0, 0, 0, 0, 0,
              0, -1, -0.5, -1, 0, 0, 0,
              0, 0, 0, 0, 0, 1, 0,
              0, 0, 0, 0, 0, -1, -1),
            4, 7, byrow = T)
b <- c(0, 1, 0, 1)
constrOptim(theta = para,
            f = garch_loglik,
            ui = A,
            grad = NULL,
            ci= b,
            y = y,
            m = 63)

错误是

constrOptim(theta = para, f = garch_loglik, ui = A, grad = NULL, : 初始值不在可行域内部

我知道ui %*% theta - ci >= 0为了优化工作。因此,当我将 A 写为一个矩阵时, ui %*% theta - ci >= 0条件成立并且函数有效。然而,我的约束显然没有得到满足。

标签: roptimizationmle

解决方案


推荐阅读