r - 使用 quadprog 的多项式回归
问题描述
我正在尝试根据此处的示例使用 limSolve 运行多项式回归。
我的代码如下。
hr <- c(9.0, 9.5, 10.0, 10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5, 16.0,
16.5, 17.0, 17.5, 18.0, 18.5, 19.0, 19.5, 20.0, 20.5, 21.0, 21.5, 22.0, 22.5, 23.0, 23.5,
24.0, 24.5, 25.0, 25.5, 26.0, 26.5, 27.0, 27.5, 28.0, 28.5, 29.0, 29.5, 30.0, 30.5, 31.0,
31.5, 32.0, 32.5, 33.0, 33.5, 34.0, 34.5, 35.0, 35.5, 36.0, 36.5, 37.0, 37.5, 38.0, 38.5,
39.0, 39.5)
fq <- c( 305, 310, 303, 236, 266, 241, 268, 222, 235, 230, 189, 191, 193, 162, 184, 170, 145, 147, 165,
142, 155, 158, 130, 135, 122, 125, 126, 131, 117, 109, 112, 122, 104, 101, 76, 102, 97, 82,
78, 78, 62, 96, 77, 73, 71, 81, 86, 85, 81, 68, 64, 73, 69, 53, 61, 66, 54,
55, 46, 53, 48, 65)
n <- 5
# create polynomials:
for(i in 0:n) {
assign(paste0("poly", i), (hr^i))
}
library(Matrix)
library(limSolve)
A <- do.call(cbind, lapply( ls(patt="poly"), get) )
b <- fq
h <- rep(0,4)
B_c <- lsei(A = A, B = b, H = h, type=2)
dat$pred <- A%*%B_c$X
我收到以下错误消息:
Error in lsei(A = A, B = b, H = h, type = 2) :
cannot solve least squares problem - G and H not compatible
为什么会这样?我究竟做错了什么?
编辑:我使用 limSolve 而不是简单的 lm 的原因是我需要稍后对我的回归施加不等式约束。
解决方案
取出对 H 的引用解决了这个问题。像这样:
B_c <- lsei(A = A, B = b, type=2)
推荐阅读
- reference - Edge 无法访问简单的弹出参考
- mysql - mysql滚动总和累积序列化
- ios - Swift iOS ReactiveKit:调用观察者导致多次触发动作?
- java - 使用存储在外部文件中的值初始化变量
- counter - iptables:MASQUERADE 规则的数据包计数器行为
- coq - Coq - 如何在假设错误时证明 False
- javascript - 计算函数在一个组件中运行,但不在另一个组件中运行
- python - 如何将我的 NUMPY 数组导出为 CSV 或 EXCEL 文件
- typescript - 带有 TypeScript 的 Mocha:参数“id”隐式具有“任何”类型?
- mysql - 如何在 MySQL 中创建日期和价格之间的计算