我在解决非线性方程时遇到问题。 我曾尝试使用 nls 和 nlsLM 。
鉴于此示例,摘自 stats :: nls :
library(minpack.lm)
x <- -(1:100)/10
y <- 100 + 10 * exp(x / 2+40)
我正在尝试解决方程式:
y ~ Const + A * exp(B * x + C)
如果我尝试:
nlmod <- nlsLM(y ~ Const + A * exp(B * x + C),start=list(Const=100,A=10,B=.5,C=40))
我明白了:
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
如果尝试删除“C”,请使用:
nlmod <- nlsLM(y ~ Const + A * exp(B * x),start=list(Const=100,A=10,B=.5)); summary(nlmod)
我得到了一个结果......但正如我们从定义中所知,不完美:
Formula: y ~ Const + A * exp(B * x)
Parameters:
Estimate Std. Error t value Pr(>|t|)
Const 1.000e+02 1.444e+17 0 1
A 1.000e+01 3.471e+17 0 1
B 5.000e-01 3.654e+16 0 1
Residual standard error: 7.369e+17 on 97 degrees of freedom
Number of iterations to convergence: 1
Achieved convergence tolerance: 1.49e-08
我也曾尝试使用 nls ,结果几乎相同:
> nlmod <- nls(y ~ Const + A * exp(B * x+ C),start=list(Const=100,A=10,B=.5,C=40))
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
> nlmod <- nls(y ~ Const + A * exp(B * x),start=list(Const=100,A=10,B=.5)); summary(nlmod)
Error in nls(y ~ Const + A * exp(B * x), start = list(Const = 100, A = 10, :
singular gradient
感谢您的见解。