【发布时间】:2023-11-15 07:00:02
【问题描述】:
我正在尝试将以下函数 y(x)=a*( 1 + (x^2)/(b^2) )^t 拟合到一组特定的数据,其中,a、b 和 t是要通过拟合来确定的常数。
我尝试以下方法,例如
len <- 24
x = runif(len)
y = x^3 + runif(len, min = -0.1, max = 0.1)
plot(x, y)
s <- seq(from = 0, to = 1, length = 50)
lines(s, s^3, lty = 2)
df <- data.frame(x, y)
m <- nls(y~a*( 1 + (x^2)/(b^2) )^t, data = df, start = list(a=1,t=0, b=1), trace = T)
> Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
谁能帮我把这个函数设置到这些点上,即使拟合变差,重要的是要拟合这个函数,即她在数据上运行
谢谢大家
【问题讨论】:
-
更改
start值。 -
这有助于但不能解决问题:
m <- nls(y~exp(loga)*( 1 + (x^2)/(b^2) )^t, data = df, start=list(loga=0,b=0.5,t=2),trace=TRUE, control=nls.control(maxiter=10000,minFactor=1e-8)). -
尝试将函数更改为 y = (a + b x^2)^t。
标签: r curve-fitting data-fitting