R拟合双指数增长曲线

用户1142937

我正在尝试y = a1*exp(b1*x)+a2*exp(b2*x)为给定的数据集拟合形式的双指数增长曲线nls,但是我总是得到一个错误

(1)收敛失败:假收敛

(2)奇异梯度。

我关心的是如何选择启动参数。

dput(data)
structure(list(x = c(945.215200958252, 841.160401229858, 756.464001846314, 
761.525999221802, 858.50640007019, 986.62599899292, 971.313199462891, 
849.174199714661, 776.209600372315, 723.809600753784, 976.608401947022, 
984.150799865723, 918.562801513672, 806.130400238037, 669.209998245239, 
997.029203643799, 946.925600280762, 952.693200378418, 908.331200637817, 
759.581600265503), y = c(2504.35798767332, 1393.74419037031, 
801.352724934674, 594.595314570309, 545.238493983611, 3096.99909306567, 
2335.01775505392, 1090.89140859095, 640.612753846014, 515.489681719953, 
3609.04419294434, 3119.35657562002, 1458.34041207895, 679.989754325102, 
496.516167617315, 4239.49376527158, 3250.19182566731, 2025.87274302584, 
894.559293335184, 571.966366494787), c = c(2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), 
    id = 1:20), .Names = c("x", "y", "c", "id"), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15", "16", "17", "18", "19", "20")) 

以及寻找最佳初始参数的脚本

mfit=nls(y ~ a1*exp(b1*x)+a2*exp(b2*x),data,
        start=list(a1=0.125,a2=0.16,b1=0.010,b2=0.005),
        algorithm="port",trace=TRUE)

当我尝试绘制时,我手动看到的情节如下: 在此处输入图片说明

汉斯 W。

你为什么假设,这些数据应该用双指数拟合?当我们mexpfitpracma包应用到它们(x-,y-坐标)时,我们得到单个ab值:

> mexpfit(ex$x, ex$y, p0=c(0.1, 0.1), const=FALSE)
## $a0
## [1] 0
## $a
## [1] 0.4784374
## $b
## [1] 0.008983063
## $ssq
## [1] 3653990
## $iter
## [1] 12
## $errmess
## [1] "Stopped by small x-step."

这意味着简单的指数曲线比双指数曲线更好。

nls函数因其“奇异梯度”消息而臭名昭著。相反,利用其预期的更换nlxbNLSR包。

> nlsr::nlxb(y ~ a1*exp(b1*x)+a2*exp(b2*x),
             start=c(a1=0.125,a2=0.16,b1=0.010,b2=0.005), data=data)
## vn:[1] "y"  "a1" "b1" "x"  "a2" "b2"
## no weights
## nlsr object: x 
## residual sumsquares =  3653990  on  20 observations
##     after  18    Jacobian and  25 function evaluations
## name         coeff  SE  tstat  pval    gradient   JSingval
## a1        0.478215  NA     NA    NA      -457.7    8736009
## a2         12.0676  NA     NA    NA  -5.967e-15      810.1
## b1      0.00898354  NA     NA    NA     -204286  1.514e-13
## b2      -0.0575306  NA     NA    NA  -4.838e-11          0

该解与上述解具有完全相同的“平方和”,因此在给定的 x 值域中准“数字相同”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

拟合指数曲线误差

来自分类Dev

R拟合数据中的指数增长函数

来自分类Dev

曲线拟合到指数

来自分类Dev

JS指数曲线拟合

来自分类Dev

指数曲线拟合Matlab

来自分类Dev

SciPy中的指数曲线拟合

来自分类Dev

如何使用python拟合多条指数曲线

来自分类Dev

R nls指数曲线

来自分类Dev

寻找更好的曲线曲线_拟合! - 指数函数?

来自分类Dev

使用scipy curve_fit拟合指数曲线(拟合曲线与实际曲线匹配)

来自分类Dev

C#回归曲线拟合预测未来增长

来自分类Dev

使用R可视化具有轨迹/最佳拟合平均增长曲线和意大利面条图的纵向数据

来自分类Dev

R中的曲线/直线拟合

来自分类Dev

如何判断SciPy中的指数曲线拟合程度如何?

来自分类Dev

在Python中将指数曲线拟合到数值数据

来自分类Dev

如何通过指数曲线拟合数据

来自分类Dev

Python:分段多项式曲线拟合指数

来自分类Dev

如何判断SciPy中的指数曲线拟合程度如何?

来自分类Dev

双曲曲线的拟合预测_Fit-SciPy

来自分类Dev

如何使用Matlab曲线拟合工具拟合指数函数?

来自分类Dev

R中的非线性曲线拟合

来自分类Dev

使用Python将指数修正的高斯曲线拟合到数据

来自分类Dev

如何在MATLAB中将指数曲线拟合到阻尼谐波振荡数据?

来自分类Dev

如何拟合考虑不确定性的指数衰减曲线?

来自分类Dev

MATLAB-在没有工具箱的情况下拟合指数曲线

来自分类Dev

MATLAB-不带工具箱的指数曲线拟合

来自分类Dev

使用 data.table 组使用 nls 进行指数曲线拟合

来自分类Dev

R中具有标准偏差的增长曲线

来自分类Dev

R-通过我的数据点拟合平滑曲线