如何强制 r optim 运行更多迭代?

2024-01-31

R Optim 比我想要的更早停止迭代。我使用 method="L-BFGS-B" (因为我需要不同参数的不同界限)。我知道我可以通过“control”>“maxit”设置最大迭代次数,但 optim 没有达到最大值。我想“control”>“pgtol”和/或“factr”应该有帮助,但显然它们没有。

我使用 Excel 求解器插件进行了相同的优化,因此我知道 R 过早停止迭代。

这是我的示例数据和代码:

dsg <- as.data.frame(cbind(c(0:47)
             ,c(0.402469136,0.368944099,0.375477721,0.391121435,0.36741817,0.366685299,0.373907486,0.409429755,0.383399692,0.412436098,0.389864409,0.411901702,0.379012346,0.383269431,0.372778178,0.397308798,0.407005188,0.396770412,0.378525076,0.38084766,0.378051956,0.376836815,0.351144888,0.387655975,0.415815896,0.39851447,0.384345349,0.40061633,0.370402697,0.373590499,0.379474943,0.378865913,0.382395269,0.365808609,0.383106843,0.35946353,0.361037542,0.36077482,0.384418935,0.362583824,0.385405581,0.348344335,0.358934922,0.379079876,0.391434446,0.354347971,0.361197833,0.372232682)
             ,c(0.114814815,0.118012422,0.132153971,0.137563457,0.113412879,0.113819587,0.117105297,0.117003116,0.132768529,0.114580427,0.120072809,0.116621127,0.124691358,0.118103399,0.130523309,0.13783449,0.114587233,0.10441059,0.113704754,0.109561299,0.108298377,0.118025013,0.125106438,0.106440408,0.107985517,0.127293523,0.130639958,0.113993233,0.111258799,0.113139383,0.114220436,0.094720217,0.094661712,0.119814534,0.100816305,0.10081601,0.092889949,0.100408522,0.090772039,0.090377762,0.084900005,0.092355162,0.112520582,0.097859676,0.087209055,0.1041137,0.112856553,0.090746204)
             ,c(9.18031601,11.09227687,9.83844379,9.64580639,10.22514748,10.23337748,10.40043161,11.42924699,13.81486345,14.13952435,13.61129849,10.83903702,6.88640782,9.04216056,12.02954886,10.72787232,9.4425759,11.13168511,10.81846319,7.78656007,9.72518025,13.7847261,12.33280119,9.26193982,9.44348187,9.84196161,11.74926408,12.84258627,11.7028168,10.15912189,9.40823422,10.91680175,13.23648902,16.4693486,14.21047788,9.13496124,7.57774394,8.51722165,11.76416064,10.1919151,11.73247567,9.81560667,8.74626473,8.28651636,12.22919798,14.78829048,12.31028928,7.84778185)
             ,c(32.81570128,31.82592469,38.98876493,36.76658375,38.44461603,25.63108488,24.05370986,29.96483401,35.41164119,38.10191701,40.08138389,40.88474396,30.11146104,28.32714529,38.10802983,33.06030547,30.26582152,30.81661426,19.32980669,22.1124164,39.01648731,36.54290113,42.37598936,37.80545142,35.41146597,38.03598825,44.00978984,39.49187432,42.19555313,46.46831371,28.62873468,29.05176428,53.9939235,54.82043874,46.26856583,46.39431442,39.83112353,40.50502621,39.48027012,37.93228955,42.59635965,35.06031045,30.37208461,28.13106896,38.42397418,38.90616994,42.98276083,39.79207105)
             ,c(3470.0,3927.0,4996.8,3148.7,3882.4,4579.9,4191.0,4328.4,4059.6,3667.6,4074.3,4220.0,3698.0,3660.2,4717.6,3687.2,4259.2,4098.1,4297.1,4321.0,3761.5,3586.7,3952.5,3630.0,3803.1,3863.9,4457.1,4280.6,4083.1,4443.2,4534.8,4510.7,3839.3,4408.0,4404.3,3633.3,4153.2,4129.3,4648.0,4947.3,5136.5,4491.6,5758.0,5423.6,5177.8,5312.8,5241.7,4551.9)
             ))
vs <- names(dsg)[1:5]
cr <- names(dsg)[6]
attach(dsg)

#a linear regression
minL.RSS <- function(par) {
  Zws <- par[1] 
  for(u in 1:length(vs)) {
    Zws <- Zws + par[u+1] * (get(vs[u]) ^ 1)
  }
  Zws <- (Zws - get(cr))^2
  sum(Zws)
}

#same linear regression adding an exponent
minE.RSS <- function(par) {
  Zws <- par[1] 
  for(u in 1:length(vs)) {
    Zws <- Zws + par[u+1] * (get(vs[u]) ^ par[u+1+length(vs)])
  }
  Zws <- (Zws - get(cr))^2
  sum(Zws)
}

#running optim for the simple regression
resultL <- optim(par = c(0,rep(0,length(vs))), fn = minL.RSS,
                 method="L-BFGS-B"
                 , lower = c(0,-Inf,0,-Inf,-Inf,-Inf)
                 , upper = c(Inf,rep(c(Inf),length(vs)))
                 , control = list(maxit = 4000)
)
resultL

#running optim for the regression with exponent, using the parameter start values found with the model before - but they dont change (but should)
resultE <- optim(par = c(resultL$par[1],resultL$par[2:(length(vs)+1)],rep(1,length(vs))), fn = minE.RSS,
                 method="L-BFGS-B"
                 , lower = c(0,-Inf,0,-Inf,-Inf,-Inf,rep(c(0.1),length(vs)))
                 , upper = c(Inf,rep(c(Inf),length(vs)),rep(c(1),length(vs)))
                 , control = list(maxit = 4000, pgtol = 1e-100)
)
resultE

#using initial parameter values I received from same formula with Excel solver Add-In - the result is getting better=smaller
resultX <- optim(par = c(0,31,0,3500,2860,-31,1,1,1,0.17,1), fn = minE.RSS,
                 method="L-BFGS-B"
                 , lower = c(0,-Inf,0,-Inf,-Inf,-Inf,rep(c(0.1),length(vs)))
                 , upper = c(Inf,rep(c(Inf),length(vs)),rep(c(1),length(vs)))
                 , control = list(maxit = 4000, pgtol = 1e-100)
)
resultX


detach(dsg)

结果X$值 [1]8109259

结果L$值 [1]8175660

结果E$值 [1]8175660

我尝试使用非常小和非常大的值(1e100 / 1e-100)的 pgtol 和factr,但 resultE 并不比 resultL 更好。我从 Excel 求解器插件知道有一个更好的解决方案 (resultX)。

如何强制 optim 运行更多迭代和/或找到与 Excel 求解器插件一样好的解决方案?


这好像是factr, ndeps and maxit在你的情况下受到限制。你可以非常接近resultX$value当你这样做时:

resultE2 <- optim(par = c(resultL$par[1],resultL$par[2:(length(vs)+1)],rep(1,length(vs))), fn = minE.RSS,
      method="L-BFGS-B"
      , lower = c(0,-Inf,0,-Inf,-Inf,-Inf,rep(c(0.1),length(vs)))
      , upper = c(Inf,rep(c(Inf),length(vs)),rep(c(1),length(vs)))
      , control = list(maxit = 1e4, pgtol = 0, ndeps = rep(1e-6, 11), factr=0))
resultE2$value
[1] 8109250
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制 r optim 运行更多迭代? 的相关文章

  • 在R闪亮中,如何在UI端使用在SERVER端计算的值?

    在我的 R闪亮应用程序中 我想调整我的高度d3heatmap 见包装d3热图 https cran r project org web packages d3heatmap index html 作为我的数据框行数的函数 有一个论点heig
  • 枚举所有可能的二元组星座

    我正在寻找一种方法来枚举 n 个成员的所有可能的两人组星座 例如 对于 n 4 个成员 以下 3 个独特的组星座是可能的 请注意 组内成员的顺序和组顺序都不重要 1 2 3 4 1 3 2 4 1 4 2 3 例如 对于 n 6 个成员 可
  • R 未获取用户库

    我有一个带 R 3 6 0 的 Fedora 30 系统 用户库设置在Renviron就像这个 R LIBS USER R LIBS USER R x86 64 redhat linux gnu library 3 6 事实上 它出现在交互
  • 使用 fread 导入数据后所有列均作为字符

    我导入了一个 CSV 文件 包含文本列和数字列 x lt fread myfile csv header TRUE verbose T na strings c null null 但导入后 当我运行summary x 时 所有列都被视为字
  • CSS 选择器在哪个方向进行验证?

    我记得不久前在网上看过一个视频 是雅虎工程师的演讲 他在视频中提到浏览器从右到左读取 CSS 选择器 而不是从左到右 意义 body header links a实际上会拉出页面上的所有锚点 过滤那些具有类父级的锚点links有一个班级的家
  • R Shiny UI 子选项复选框?

    我有一个基本的 RShiny 应用程序 它有一个反应式复选框 它根据复选框中选择的数据 df 列 绘制时间序列数据 我当前的代码生成一个带有复选框输入的 UI 如下所示 Load R packages library shiny libra
  • R:构建二阶转移矩阵和得分序列

    其他问题 有另一个问题 https stackoverflow com questions 29728436 fit and evaluate a second order transition matrix markov process
  • 如何在 R 中创建循环来生成随机样本列表?

    我正在尝试创建一个循环来创建一系列包含随机样本的对象 如下所示 sample lt ceiling runif 9 min 0 max 20 这是圆形制服的示例 但它可以替换为普通 泊松或任何您想要的 因此 我构建了一个循环来自动生成各种生
  • 通过 rpy 将 SPSS 文件(.sav)导入 pandas 时如何保留标签?

    我正在寻找使用 SPSS 文件 sav pandas 在没有 SPSS 程序的情况下 典型文件转换为 csv 后的样子如下 在调查前两行的含义时 我不知道 SPSS 似乎第一行包含Labels 而第二行包含VarNames 当我将文件带入
  • R(或替代方案?)中的高(或非常高)阶多项式回归

    我想对 R 中的一组数据进行 非常 高阶回归拟合 但是poly 函数的阶数极限为 25 对于此应用程序 我需要的订单范围为 100 到 120 model lt lm noisy y poly q 50 Error in poly q 50
  • 使用开源闪亮服务器时,我的图标不会显示在我的应用程序的浏览器选项卡上

    我一直在尝试找到一种方法将 ico 与托管在开源闪亮服务器上的闪亮应用程序的快捷方式关联起来 最终 我希望 ico 显示为我的应用程序快捷方式的图形 而且 我希望用户在创建应用程序的快捷方式时显示 可用此图标 听起来很简单 但事实证明这是一
  • 不理解..密度的行为

    在下面的数据框中 我预计密度的 y 轴值为 0 6 和 0 4 但它们是 1 0 我觉得我使用的方式显然缺少一些非常基本的东西 密度 但是我的大脑冻结了 我将如何使用 密度 获得所需的行为 任何帮助将不胜感激 df lt data fram
  • 使用cowplot包的多重图的中心X轴标签

    我有一个多图图形 由 2x2 配置中的 4 个图组成 我使用 cowplot 包和plot grid函数使用下面的代码排列了绘图 plot grid p1 p2 p3 p4 align vh vjust 1 scale 1 其中 p1 p4
  • 确定 R 中的组是否重复某个值

    我有一个包含许多列和行的数据 我想通过创建新的逻辑变量来确定某个组的值是否重复 相同 所以我的数据如下所示 v0 lt c 1 2 3 4 5 6 7 8 9 v1 lt c a b a c e c b b e v2 lt c R NA R
  • 使用 ape 包在 R 中进行标签和色叶树状图(系统发育)

    继上一篇文章之后 r 中的标签和彩色叶树状图 https stackoverflow com questions 18802519 label and color leaf dendrogram in r 我有一个后续问题 我的问题与提到的
  • 如何导入 .tsv 文件

    我需要读取一个表 tsvR 中的文件 test lt read table file drug info tsv Error in scan file what nmax sep dec quote skip nlines na strin
  • 从频率表生成 data.frame

    我在 2 4 数组中有包含 500 个观察值的合成数据 datax array c 120 181 50 43 41 33 24 8 dim c 2 4 dimnames datax list gender c male female pu
  • 通过删除连续的重复项来减少字符串长度

    我有一个包含 2 个字段的 R 数据框 ID WORD 1 AAAAABBBBB 2 ABCAAABBBDDD 3 我想通过仅保留字母而不是重复中的重复项来简化具有重复字母的单词 e g AAAAABBBBB应该给我AB and ABCAA
  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • Python:如果满足条件,则循环遍历一个字典并在新字典中创建键/值对

    我想将一个字典的值与第二个字典的值进行比较 如果值满足特定条件 我想创建第三个字典 其中的键和值对将根据匹配情况而变化 这是一个显示我的问题的人为示例 编辑 对所有返回感到抱歉 但堆栈溢出无法识别单个返回 并且在一行上运行 3 4 行 使代

随机推荐

  • 获取 Git 中远程分支的总数

    如何获取 Git 中远程分支的总数 为了获取所有远程分支 我在下面执行此语句 但我无法获取这些分支的计数 总数 我试过 count 但它不起作用 git branch r 我怎样才能得到这些的数量 就像是 git branch r wc l
  • Number.prototype.toLocaleString() 和 Intl.NumberFormat.prototype.format 之间有什么关系?

    我们正在尝试在我们的应用程序中使用本地化支持并查看toLocaleString 我们还看了Intl NumberFormat及其格式化方法 他们有什么关系吗 使用哪一个更好 来自 MDN 文档Number prototype toLocal
  • 删除行中重复的字符串

    出现以下问题 我有数据框 data1 其中包含多个条目的变量 data1 lt data frame v1 c test test bird bird bird car 现在我想删除每行中的重复条目 结果应该是这样的 data1 final
  • 在 Jquery 日期选择器中禁用 Next

    有没有其他方法可以让用户选择下个月 我已经完成了一些线程 但我不想通过使用本中指示的步骤功能来禁用下一个和上一个按钮link https stackoverflow com questions 3501808 jquery datepick
  • 如何通过 xcode 4.2 故事板正确使用模态视图控制器

    我想知道如何正确使用故事板以模态方式放置视图控制器 就我个人而言 我更喜欢与 xibs 合作 但故事板似乎越来越受欢迎 并且将成为未来的发展方向 我通常以模态方式放置视图控制器的方式是这样的 假设我们有 ViewControllerA 简称
  • Laravel 自定义身份验证过滤器

    我已在控制器中使用 Route Intended 将标准身份验证过滤器添加到多个路由 假设登录成功 过滤器 php Route filter auth function if Auth guest return Redirect guest
  • TreeMap<> 操作的时间复杂度:get() 和 subMap()

    基于这篇文章 TreeMap 操作的时间复杂度 subMap headMap tailMap https stackoverflow com questions 14290751 time complexity of treemap ope
  • “函数式编程”的含义很明确,但是“函数式语言”有明确的含义吗?

    我非常清楚函数式和命令式之间的区别编程技术 但是现在有一种普遍的趋势是谈论 函数式语言 这确实让我感到困惑 当然 像 Haskell 这样的一些语言是更热情好客但即使是前者也可以进行 I O 它只是将其保留在贫民窟中 你可以用 C 语言编写
  • 以编程方式将证书导入 IIS?

    我有一个 SSL pem 证书 我想将其与 MSI 中的 Web 应用程序一起分发 必须在客户端计算机上运行 然后 我需要将其导入 导入到某些凭据存储中 并告诉我的站点绑定使用它 但我怎样才能在代码中做到这一点呢 我发现了 Microsof
  • “case_when”函数中“~”后面的条件项

    我想在后面加上一个条件项 in a case when功能 我的例子 df df lt structure list x c a a a b b b c c c a a a y 1 12 class data frame row names
  • 在 Evernote API 中设置 NoteFilter

    我已经像这样设置了我的 Python 页面 摘录 import evernote edam userstore constants as UserStoreConstants import evernote edam type ttypes
  • 指向匿名结构的 C 指针

    有没有办法获取指向匿名结构的指针 如果没有匿名结构 我可以编写以下内容 struct a int z struct b int y struct a x 这工作正常 但我只使用struct a within struct b用它来污染全局命
  • 正则表达式搜索 C++

    include
  • 将列添加到 SQL 查询结果

    我正在 SSRS 中整理一份报告 该数据集由 MS SQL 服务器的 SQL 查询填充 它使用 Union All 查询几个相似的表 问题是存在一些信息丢失 不同的表对应不同的工作地点 但这些表中没有一列包含该地点的名称 识别站点的唯一方法
  • Vue中,template、render、VNode是什么关系?

    在开发vue项目的过程中 遇到一些疑问template render VNode 阅读文档后https v2 vuejs org v2 guide syntax html https v2 vuejs org v2 guide syntax
  • 如何从 Yahoo! 抓取关键统计数据使用 R 进行财务? [复制]

    这个问题在这里已经有答案了 不幸的是 我还不是一个经验丰富的爬虫 然而 我需要使用 R 从雅虎财经抓取多只股票的关键统计数据 我对使用 rvest 包中的 read html html nodes 和 html text 直接从 html
  • 内嵌文本 - 带填充的背景颜色

    我需要制作一个背景颜色不是块的标题 只有文本背景是彩色的 Here is an image of what I have to archieve 这是我到目前为止所得到的 http jsbin com tiwuquze 1 edit htt
  • Textmate 中的自动完成

    有时我会观看有人使用文本伴侣的屏幕截图 我是一名 Rails 开发人员 所以这些是 Rails 屏幕截图 他们会输入如下内容 def 例如 并且 end 会自动出现在下面 我确实启用了 Rails 捆绑包 为什么我没有发生这种情况 Than
  • 使用 R 绘制二次回归线

    我对 R 很陌生 而且对 R 也很陌生plotly 我正在尝试绘制二次 即二次多项式 回归线 一旦一些价格与年份 以及相同的价格与某些整数列表 可以相同 比方说分数 本例中的数据是 price c 995 675 690 600 612 7
  • 如何强制 r optim 运行更多迭代?

    R Optim 比我想要的更早停止迭代 我使用 method L BFGS B 因为我需要不同参数的不同界限 我知道我可以通过 control gt maxit 设置最大迭代次数 但 optim 没有达到最大值 我想 control gt