1
指数拟合我有这样其中R
DF
x y
7.3006667 -0.14383333
-0.8983333 0.02133333
2.7953333 -0.07466667
的数据集,我希望像Y = A *(EXP(BX)),以适应一个指数函数。
这是我尝试和错误,我得到
f <- function(x,a,b) {a * exp(b * x)}
st <- coef(nls(log(y) ~ log(f(x, a, b)), df, start = c(a = 1, b = -1)))
Error in qr.qty(QR, resid) : NA/NaN/Inf in foreign function call (arg 5)
In addition: Warning messages:
1: In log(y) : NaNs produced
2: In log(y) : NaNs produced
fit <- nls(y ~ f(x, a, b), data = df, start = list(a = st[1], b = st[2]))
Error in nls(y ~ exp(a + b * x), data = df, start = list(a = st[1], :
singular gradient
我相信这与该日志不为负数定义,但我不知道如何解决这个事实的事。
听起来像你有一个模型/数据不兼容问题,而不是编程或模型收敛问题。 – davechilders
如果'a'为正数,那么右侧永远不会等于负数'y',如果'a'为负数,那么右侧永远不会等于正数'y',因此此模型似乎与数据不一致正如你的数据集中的y值一样。此外,由于“y”的某些组成部分是负数,所以不能取“y”的对数。建议你尝试一个不同的模型,如果这确实是你的数据。 –
@ G.Grothendieck问题是,我不明白我可以使用哪种模型来模拟指数。 – user3036416