首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中施加限制的非线性看似不相关回归(SUR)

R中施加限制的非线性看似不相关回归(SUR)
EN

Stack Overflow用户
提问于 2020-02-10 22:30:33
回答 1查看 557关注 0票数 3

我正在用R中的5个方程来估计一个非线性的看似不相关的回归(SUR)模型,并且我正在systemfit软件包上工作。一切都很顺利,直到它需要对我的方程式设置一些限制。使用软件包systemfit,函数nlsystemfit() it适用于非线性方程。但选项/参数restrict.matrix不允许用于nlsystemfit() (它适用于函数systemfit()中的线性方程)。

一个简化的例子是(我认为在这里显示数据是不相关的):

代码语言:javascript
复制
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))

到目前为止,这个估计工作得很好。但现在,我需要设置以下约束:

代码语言:javascript
复制
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个非线性方程和更多的参数。

任何人都可以指导我,关于如何在R中执行具有约束的非线性SUR估计?

在此之前非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-12 02:26:49

经过几个小时的研究和一些人的困扰,我意识到我的问题的答案是相当明显的(对于更有经验的人,而不是我)。所以我回答我的问题是为了帮助其他和我处于同样地位的人。

不需要在systemfit包中提供选项/参数来单独设置约束。为什么?由于方程定义中允许的灵活性(因为它是一个非线性系统),我们可以在同一系统中施加约束。例如,如果我需要设置

代码语言:javascript
复制
c1 + c2 + c3 = -1

我将用- 1 - c1 - c2替换c3。通常,这将使我们在整个系统中少计算一个方程。然后,在获得估计系数之后,我们只需要使用相同的公式恢复这些值;在我的示例中(使用估计的c1c2):

代码语言:javascript
复制
c3 = - 1 - c1 - c2

我希望这能帮助到一些人。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60152530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档