Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R具有潜在警告/错误的全局优化问题和tryCatch的使用

R具有潜在警告/错误的全局优化问题和tryCatch的使用
EN

Stack Overflow用户
提问于 2021-08-31 21:55:42
回答 1查看 54关注 0票数 1

简单地说,我有一个函数f(x, t2),我想找出x的值,使f(x, t2)相对于t2的积分最大化。选择粒子群算法进行优化。可执行代码如下所示

代码语言:javascript
运行
AI代码解释
复制
library(pso)
xl=0; xu=2000; n=1; t2l=100; t2u=2000; t1=1
g<-function(x, t2) t1*x/(t2+x)
h<-function(z) 1/z^n
gdot<-function(x, t2){
  c(x/(t2+x),-t1*x/(t2+x)^2)
}
logdetHinv<-function(dp, dw, t2){
  gmat=mapply(function(x) gdot(x,t2),dp)
  D0=gmat%*%diag(dw)%*%t(gmat)
  D1=gmat%*%diag(1/h(g(dp,t2)))%*%diag(dw)%*%t(gmat)
  2*log(det(D1))-log(det(D0))
}
obj<-function(x){
  dp=x[1:2]; dw=c(x[3],1-x[3])
  fitness_value=-integrate(Vectorize(function(t2) logdetHinv(dp, dw, t2)*1/(t2u-t2l)), t2l, t2u)$value
  return(ifelse(dw[2]>0, fitness_value, fitness_value+1e3))
}

x <- psoptim(rep(1,3), fn = obj, lower = c(rep(xl,2),0.1), upper = c(rep(xu,2), 0.9))$par
x

因为全局优化涉及一些随机过程,所以它有时会报告正确的结果

代码语言:javascript
运行
AI代码解释
复制
> x
[1] 2000.0000  754.4146    0.5000

其他时候它会报告错误

代码语言:javascript
运行
AI代码解释
复制
Error in integrate(Vectorize(function(t2) logdetHinv(dp, dw, t2) * 1/(t2u -  : 
  non-finite function value
In addition: There were 11 warnings (use warnings() to see them)
> warnings()
Warning messages:
1: In log(det(D1)) : NaNs produced
2: In log(det(D0)) : NaNs produced
3: In log(det(D1)) : NaNs produced
4: In log(det(D0)) : NaNs produced

我假设该算法尝试对logdetHinv中的一些负值进行记录,这将返回NaN并显示一条警告消息,而不是错误,最终导致integrate中出现错误。

我想要避免这样的值,可能是使用tryCatch,比如如果在函数logdetHinv中有警告,它返回一个非常小的值,但不是NaN,所以它不会在integrate中导致错误,并且psoptim在最大化目标函数(最小化-integrate(logdetHinv))时不太可能选择这样的值。在如此复杂的情况下,我对tryCatch并不熟悉。我应该把tryCatch放在哪里?谢谢。

此外,我想知道R中是否有一些调试技术可以让我知道在这种情况下是什么随机值(D0/D1)导致了错误。我猜它在log中是一些负值,但它不应该是负值,因为log中是一个正定矩阵的行列式。在回溯模式下,在browse中,如果我键入D0,将找不到对象'D0‘。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-31 22:33:19

在这种情况下,我不会使用tryCatch,因为它在测试中通常比在主代码中更合适。为什么不简单地测试函数中的行列式呢?像这样的东西应该是有效的:

代码语言:javascript
运行
AI代码解释
复制
logdetHinv<-function(dp, dw, t2){
    gmat=mapply(function(x) gdot(x,t2),dp)
    D0=gmat%*%diag(dw)%*%t(gmat)
    D1=gmat%*%diag(1/h(g(dp,t2)))%*%diag(dw)%*%t(gmat)
    detD1 <- max(0.01, det(D1))
    detD0 <- max(0.01, det(D0)) 
    2*log(detD1)-log(detD0)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69008454

复制
相关文章
Android从零撸美团(一) - 统一管理 Gradle 依赖 提取到单独文件中
从今天开始带大家一起从零开始撸一个美团Android版App。 【从零撸美团】这个专题将持续更新,用以详细记录分享开发过程,欢迎关注。
solocoder
2022/04/06
8540
Android从零撸美团(一) - 统一管理 Gradle 依赖 提取到单独文件中
Android中R文件ID值
前端时间在学习 Qigsaw 相关的源码,思考到一个问题。动态加载的feature 包里的 资源id 是否会与主包中的 资源id 冲突。因为主包的 apk 文件不一定是和加载的feature 包是一起打包生成的,feature 包是可以进行升级的。查看 Qigsaw编译脚本对 old.apk 进行增量编译 feature 的时候也没有发现对 R文件 做特殊的处理。
静默加载
2021/01/11
2.8K0
Android中R文件ID值
实用:如何将aop中的pointcut值从配置文件中读取
改造老项目,须要加一个aop来拦截所的web Controller请求做一些处理,由于老项目比较多,且包的命名也不统一,又不想每个项目都copy一份相同的代码,这样会导致后以后升级很麻烦,不利于维护。于是我们想做成一个统一的jar包来给各项目引用,这样每个项目只须要引用该jar,然后配置对应的切面值就可以了。
Bug开发工程师
2019/12/09
24.4K1
gin 框架将路由文件单独处理
首先,我们新建一个 routers 文件夹,这里面放置路由文件,包含一个总的router.go
句小芒
2022/12/29
7010
gin 框架将路由文件单独处理
R语言技巧:读csv格式的文件
最近Rsudio更新https://www.rstudio.com/products/rstudio/download/了,对我们常用的几种文件格式都作用了封装,直接点击按钮就可以对文件读取啦,感觉好强大好神奇的说。下面来一个个的给出代码!
努力在北京混出人样
2019/02/18
1K0
Java中的读文件,文件的创建,写文件
大家好,我是 Vic,今天给大家带来Java中的读文件,文件的创建,写文件的概述,希望你们喜欢
达达前端
2019/07/03
2K0
Java中的读文件,文件的创建,写文件
R中重复值、缺失值及空格值的处理
1、R中重复值的处理 unique函数作用:把数据结构中,行相同的数据去除。 #导入CSV数据 data <- read.csv('1.csv', fileEncoding = "UTF-8", stringsAsFactors = FALSE); #对重复数据去重 new_data <- unique(data) 重复值处理函数:unique,用于清洗数据中的重复值。 “dplyr”包中的distinct() 函数更强大: distinct(df,V1,V2) 根据V1和V2两个条件来进行去重 uniq
Erin
2018/01/09
8.5K0
porm文件中的build标签
执行build任务时,如果没有指定目标,将使用的默认值。
全栈程序员站长
2022/07/04
1.3K0
将序列分解为单独的变量
python中,任何序列或可迭代的对象都可以通过一个简单的赋值操作来分解为单独的变量。前提是要求变量的总数和结构要与序列相吻合 #_*_coding:utf8_*_ p = (4, 5) x, y = p print(x) # 4 print(y) # 5 data = ['GuoJing', 30, ('杨过', '小龙女')] name, age, xialv = data print(name) # GuoJing print(xialv) # ('杨过', '小龙女') name, age, (
章鱼喵
2018/06/27
9410
Python 用OPEN读文件报错 ,路径以及r
Python 中 ‘unicodeescape’ codec can’t decode bytes in position XXX: trun错误解决方案 今天在运用Python pillow模块处理图片时遇到一个错误 SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape 刚开始以为是图片名字有中文,不识别,于是在pyth
学到老
2018/03/19
8400
Python 用OPEN读文件报错 ,路径以及r
Python 中 ‘unicodeescape’ codec can’t decode bytes in position XXX: trun错误解决方案 今天在运用Python pillow模块处理图片时遇到一个错误 SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape 刚开始以为是图片名字有中文,不识别,于是在python文件的头部加上 -- coding:utf-8 -
学到老
2019/02/14
6800
「R」从gtf文件中抽取基因id和name
参考文章http://www.bioinfo-scrounger.com/archives/342计算FPKM值,发现计算完每个基因下所有外显子的总长度后,记录的都是ENSEMBL gene id,而我需要的是symbol。奇怪的是GenomicFeatures既然把GTF文件读取进去了还抽取基因id了,但它就是不提供抽gene symbol的功能。
王诗翔呀
2020/07/03
4.9K2
Python 用OPEN读文件报错 ,路径以及r
但是加完这个还是报错,然后我就把图片的中文去掉还成英文,然后报错,一脸懵逼呀。后来在stackoverflow 上找到了类似的错误,原来是图片路径写的 有问题,错误代码如下
学到老
2019/02/14
1.1K0
JS中的Map如何根据已知的key获取到对应的value值
JS中的Map如何根据已知的key获取到对应的value值 JS中的Map如何根据已知的key获取到对应的value值?别说话,直接上代码: var paramMap = new Map(); paramMap.set(a,b); var bb = paramMap.get(a); 详情请看:https://www.ohyn.cn/article/27
一诺千金
2020/04/25
20K0
从mysql获取到从redis获取 示例
1.因采集是每分钟写入一次数据库,故redis每分钟读取一次数据库最新信息,读取脚本如下:
葫芦
2019/04/13
2.5K0
从mysql获取到从redis获取 示例
Typecho制作单独Tag标签聚合页面 调用所有标签方式
一般我们在自己制作或者选择的其他人Typecho主题的时候,都会默认单篇文章会有调用单篇文章的标签Tag,且可能在侧栏或者底部会调用部分热门的Tag。不过我们有些朋友希望需要将所有的Tags聚合到一个页面,这里就需要独立制作一个标签模板页面。
老蒋
2021/12/24
1.2K0
获取HTML网页中option标签元素的值
在进行表单元素的操作时,难免会遇到对option元素的挑选,下面的示例代码能够很好的获取到你option元素选择的值,如果要传递给后端,可通过ajax或者其他方式传递即可。 示例代码
呆呆
2021/10/09
7.8K0
Stata | 删除文件夹下所有文件
在数据整理过程中,有时会生成一些临时的文件,数据整理完之后往往需要将其删除。本文就介绍下如何用 Stata 删除路径下的所有文件。
PyStaData
2020/07/21
5K0
Python 用OPEN读文件报错 ,路径以及r
Python 中 ‘unicodeescape’ codec can’t decode bytes in position XXX: trun错误解决方案 背景描述 今天在运用Python pillow模块处理图片时遇到一个错误 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape 刚开始以为是图片名字有中文,不识别,于是在pyth
学到老
2018/03/16
1.1K0
python将获取到的数据保存到文本
1.代码中json_str为获取到的json数据,数据类型为dic(不直接使用con的原因是它不能设置ensure_ascii和indent的值)
句小芒
2022/12/29
1.1K0

相似问题

在Stata中,如何从单独的csv文件添加变量标签?

13

R中将值标签读取到spss文件中

12

将数据抓取到Stata中

30

将文件中的数据读取到单独的Int值中

40

将库提取到单独的文件中

113
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档