gpt4 book ai didi

r - 在 R 中使用 nls() 进行曲线拟合

转载 作者:行者123 更新时间:2023-12-02 01:13:37 24 4
gpt4 key购买 nike

我有一些数据可以将曲线拟合到某个公式。

为此,我使用了 nls 函数,如下所示:

fitmodel <- nls(y ~ a+b/(1+exp(-((x-c)/d))),
data = combined,
start=list(a=200,b=2000, c=80, d=10.99),
trace=TRUE)

这有效,但会发出警告

“1:在 min(x) 中:没有非缺失的 min 参数;返回 Inf
2:在 max(x) 中:没有非缺失的 max 参数;返回-Inf”

当我在绘图中使用确定的参数绘制函数时,它根本不适合,如下所示:
jpw <- coef(fitmodel)

logfit <- function(x,jpw) {jpw[1] + jpw[2]/(1+exp(-((x-jpw[3])/jpw[4])))
}

points(logfit(x, jpw),type='l')

bad fit

我的 friend 试图将这些数据放入另一个程序中。它找到相同的参数,另一个程序绘制的函数与数据完美契合。
此外,手动查找使曲线很好地跟随数据的参数非常容易。

我哪里搞砸了?我是初学者,所以这可能是愚蠢的。

先感谢您!

已编辑: Data file

最佳答案

你的问题是你的绘图,你只给点一个值,所以它使用它作为 y,默认为一个值是 x 轴上的一个单位(如果你看看你的原始图,你可以看到它结束在 439,这是您拥有的点数)。

你也可以通过用 x 绘图来解决这个问题:

plot(combined$V1~combined$V3)
points(x,logfit(x,jpw), type = 'l')

enter image description here

关于r - 在 R 中使用 nls() 进行曲线拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43720288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com