首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Quadprog对系数的范围/限制进行线性模型的约束

使用Quadprog对系数的范围/限制进行线性模型的约束
EN

Stack Overflow用户
提问于 2018-08-31 04:41:51
回答 1查看 170关注 0票数 0

我正在做一些实验,我当然知道为什么很少需要约束系数,但这里开始。

在下面的数据中,我使用了quadprog来求解一个线性模型。请注意,X1只是一个截取。

代码语言:javascript
复制
X1 <- 1
X2 <- c(4.374, 2.3708, -7.3033, 12.0803, -0.4098, 53.0631, 13.1304, 7.3617, 16.6252, 27.3394)
X3 <- c(2.6423, 2.6284, 36.9398, 15.9278, 18.3124, 54.5039, 3.764, 19.0552, 25.4906, 13.0112)
X4 <- c(4.381, 3.144, 9.506, 15.329, 21.008, 38.091, 22.399, 13.223, 17.419, 19.87)
X <- as.matrix(cbind(X1,X2,X3,X4))
Y <- as.matrix(c(37.7,27.48,24.08,25.97,16.65,73.77,45.10,53.35,61.95,71.15))
M1 <- solve.QP(t(X) %*% X, t(Y) %*% X, matrix(0, 4, 0), c())$solution

挑战是使某些系数受到约束。我知道我应该修改Amet和bvac参数(根据Linear regression with constraints on the coefficients)。但是,我不确定如何设置它,以便满足以下限制。

输出为1 37.3468790 1.2872473 -0.0177749 -0.5988443,其中预测值将拟合X1、X2、X3和X4的值。

约束(受制于)…

代码语言:javascript
复制
X2 <= .899

0 <= X3 <= .500

0 <= X4 <= .334
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-31 07:57:21

只是为了澄清一下:你给出了一个期望的输出,其中的值将被预测为符合X1,X2,X3和X4的值。。我假设您指的是 estimated (not Not)参数值。

rstan中建模数据时,实现受约束的参数非常简单。rstanStan的R接口,而后者又是一种用于统计贝叶斯推理的概率编程语言。

下面是一个基于您提供的示例数据的示例。

  1. 首先,让我们定义一下我们的模型。请注意,我们根据您的需求对参数beta2beta3beta4进行了约束。

model <-“data { int n;//观察数int k;//参数矩阵n,k X的数;//数据向量y;//响应}参数{ beta1;// X1无约束real beta2;// X2 <= .899 real beta3;// 0 <= X3 <= 0.5 real beta4;// 0 <= X4 <= 0.334实σ;//残差}模型{ //似然y~正态(beta1* X,1+ beta2 * X,2+ beta3 * X,3+ beta4 * X,4,sigma);}“

  • 接下来,我们将模型拟合到您的样本数据中。

库(Rstan) rstan_options(auto_write = TRUE)选项(mc.cores= parallel::detectCores()) df <- cbind.data.frame(Y,X) fit <- stan( model_code =模型,数据=列表(n= nrow(df),k= ncol(df,-1),X= df,-1,y= df,1))

  • 最后,让我们以一种整齐的方式打印参数估计

书库(扫把)整齐(适合,conf.int = TRUE) ## A tibble: 5 x 5# term estimate std.error conf.low conf.high #1 beta1 29.2 6.53 16.9 42.8 #2 beta2 0.609 0.234 0.0149 0.889 #3 beta3 0.207 0.138 0.00909 0.479 #4 beta4 0.164 0.0954 0.00780 .326 #5 sigma 16.2 5.16 9.42 29.1

我们还可以绘制包括CI在内的参数估计。

请注意,参数估计与施加的约束是一致的。

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

https://stackoverflow.com/questions/52105064

复制
相关文章

相似问题

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