Нелинейные, казалось бы, не связанные регрессии (SUR) в R, накладывающие ограничения - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь оценить нелинейную модель кажущихся несвязанными регрессий (SUR) с 5 уравнениями в R, и я работал над пакетом systemfit. Все идет хорошо, пока не нужно установить некоторые ограничения для моих уравнений. используя пакет systemfit, функция nlsystemfit() работает для нелинейных уравнений. Но опция / параметр restrict.matrix недопустима для nlsystemfit() (работает для линейных уравнений в функции systemfit()).

Упрощенный пример (я думаю, что данные здесь не имеют значения):

EQ_1 <- Y1 ~ (c1 - x)*Q + c11*G11 + c12*G12 + c13*G13
EQ_2 <- Y2 ~ (c2 - x)*Q + c21*G11 + c22*G12 + c23*G13
EQ_3 <- Y3 ~ (c3 - x)*Q + c31*G11 + c32*G12 + c33*G13


start.values <- c(c1 = 0,c2= 0,c3 = 0,
                  c11 = 0,c12 = 0,c13 = 0,
                  c21 = 0,c22 = 0,c23 = 0,
                  c31 = 0,c32 = 0,c33 = 0)

model <- list(EQ_1 ,EQ_2 ,EQ_3)

model.sur <- nlsystemfit(method = "SUR",
                         eqns = model,
                         startvals = start.values,
                         data = as.data.frame(dat))

Оценка пока работает отлично. Но теперь мне нужно установить следующие ограничения:

Rest_1 <- c11 + c12 + c13 = 0
Rest_2 <- c21 + c22 + c23 = 0
Rest_3 <- c31 + c32 + c33 = 0

Rest_4 <- c1 + c2 + c3 = -1

Очевидно, что модель здесь линейна с 3 уравнениями, но это потому, что я пытаюсь упростить идею. Но текущая модель имеет 5 нелинейных уравнений и больше параметров.

Кто-нибудь может мне помочь, пожалуйста, о том, как выполнить нелинейную оценку SUR с ограничениями в R?

Большое спасибо в заранее.

1 Ответ

1 голос
/ 11 февраля 2020

После нескольких часов исследований и беспокойства некоторых людей я понял, что ответ на мой вопрос совершенно очевиден (для более опытных людей, а не для меня). Поэтому я отвечаю на мой вопрос, чтобы помочь другим в том же положении, что и у меня.

Нет необходимости указывать опцию / параметр в пакете systemfit для отдельной установки ограничений. Почему? Поскольку гибкость, допускаемая в определениях уравнений (поскольку это нелинейная система), мы можем наложить ограничения в той же системе. Например, если мне нужно установить

c1 + c2 + c3 = -1

, я заменю c3 на - 1 - c1 - c2. Это приведет нас к вычислению, в общем, одного уравнения меньше во всей системе. Затем, после получения оценочных коэффициентов, нам нужно только восстановить значения по той же формуле; В моем примере (с использованием оценочных значений c1 и c2):

c3 = - 1 - c1 - c2

Я надеюсь, что это может кому-то помочь.

...