r - 使用 R 进行优化的限制
问题描述
继续这里提出的问题,我想在优化中添加一个限制:
a <- c(52.67, 46.80, 41.74, 40.45)
b <- c(1.726219351, 1.842421805, 1.790801758, 1.449997494)
rsq <- function(c) {
x <- log(a)
y <- log((c*(a/b))-1)
summary(lm(y ~ x))$r.squared
}
optimise(rsq, maximum = TRUE, interval=c(1, 1000))
优化的间隔是 1 到 1000,但是我希望间隔从哪里开始
(c*(a/b)) > 0
为了避免出现问题log
解决方案
如果 log 参数为负,则只需返回 -Inf。那么就没有必要操纵域了。
rsq <- function(c) {
x <- log(a)
tmp <- (c*(a/b))-1
if (any(tmp < 0)) -Inf else summary(lm(log(tmp) ~ x))$r.squared
}
optimise(rsq, maximum = TRUE, interval=c(1, 1000))
给予:
$maximum
[1] 1.082353
$objective
[1] 0.8093781
更新
固定的。
推荐阅读
- javascript - 反应我如何重定向主页?
- openpyxl - 如何遍历 Excel 文件和 ID 彩色单元格值
- html - 悬停时按钮不改变颜色
- cpu-architecture - 空间局部性未命中数
- xcode - Xcode 12.5 部署:上传到 App Store 时出错
- python - Pip install 与软件包的开发版本不匹配
- javascript - 使用导入模块的命名别名不适用于导出名称的点表示法?
- jquery - 如何更改 window.open() (wordpress) 的大小?
- python - Python 不创建 .txt 文件
- mysql - 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法