r - nls 无法拟合指数曲线来完美数据
问题描述
我试图使用函数将指数模型拟合到一些预先计算的数据nls
中r
。但是,计算并完全适合我的模型的数据不能由 nls 拟合,而它适用于稍微偏离的数据。现在我想知道,如果我做错了什么......
这是一个不起作用的示例代码:
times <- c(0,10,20,30,40,50,60)
A3 <- data.frame(time=times, intensity=c(0))
# calculating some optimal data:
A3$intensity <- 200*exp(-0.022*A3$time)
# do the fitting:
nls(data=A3, formula=intensity~200*exp(b * time), start=c(b=-0.022))
如您所见,我将完全相同的公式传递给我用来计算数据的 nls。此外,我将确切的系数传递给 nls。它仍然无法将数据拟合到模型中......但它告诉我超过了迭代次数(即 50 次)。
但是,如果我操纵我的数据以使强度稍微偏离,它就会突然起作用。
A3p1 <- A3
#increasing the intensities by 1
A3p1$intensity <- A3p1$intensity + 1
nls(data=A3p1, formula=intensity~200*exp(b * time), start=c(b=-0.022))
在这种情况下,它正在工作,甚至返回一个足够接近的系数:-0.02167
谁能解释我,为什么会发生这种情况以及我需要如何调整我的代码以获得正确的结果?
解决方案
推荐阅读
- c# - ScrapySharp 表单提交导致 System.AggregateException
- c# - 为什么将数据导出到 Excel 时日期格式会发生变化?
- python-3.x - Python中的闭包 - 执行内部函数?
- c# - 左上原点的 OpenTK 正交投影
- amp-html - 如何在 amp 电子邮件中收集和存储动态数据?
- shell - 输出到文件时shell换行的问题
- wordpress - 从 htaccess 重写规则中排除页面
- python - Python:如何缩短熊猫列中的整数?
- mysql - 我需要更改 mysql 查询中的选定值
- c++ - C++ 初始化 char[] 和 char 后,char 显示在 char[]