1
我试图拟合以下函数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。 –