全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2134 3
2021-03-14
捕获.PNG
这幅图是plot(as.numeric(ts(afew_sca$`United States`)), type="l")

为了求面积我试了用:
f = approxfun(x = 1:434, y = as.numeric(ts(afew_sca$`United States`)))
integrate(f,lower = 1+1e-05,upper = 434-1e-05,subdivisions = 1000)
但是报错
Error in integrate(f, lower = 1 + 1e-05, upper = 434 - 1e-05, subdivisions = 1000) : roundoff error was detected


去掉subdivisions = 1000:
f = approxfun(x = 1:434, y = as.numeric(ts(afew_sca$`United States`)))
integrate(f,lower = 1+1e-05,upper = 434-1e-05)

又有报错
Error in integrate(f, lower = 1 + 1e-05, upper = 434 - 1e-05) : maximum number of subdivisions reached


求大神指点!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-3-14 22:41:27
你试试把subdivisions这个参数增大一些 ,比如1900,不行的话再大一些。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-15 15:51:43
llb_321 发表于 2021-3-14 22:41
你试试把subdivisions这个参数增大一些 ,比如1900,不行的话再大一些。
设置成十万了还是有这个报错:
Error in integrate(f, lower = 2, upper = 433, subdivisions = 1e+06) : roundoff error was detected

想请教一下您求这种面积还有其他方法吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-15 16:12:05
用随机数测试了一下,没遇到roundoff error舍入误差的问题。猜还是原数据导致,但究竟何故不清楚。
approxfun本质是插值处理,所以你第二次报错是subdivisions太小导致的。

使用integrate()最简单。其他方法,可以写个循环,解相邻两个数据之间的面积,再累加在一起,其实还是定积分的概念,只不过可以验证一下是否还会报错。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群