我正在尝试将线+指数曲线拟合到一些数据。首先,我尝试对一些人工数据执行此操作。该函数为: 它实际上是具有线性截面的指数曲线,以及附加的水平移位参数(m)。但是,当我使用R 函数时,即使使用的参数与最初生成数据时使用的参数相同,也会出现可怕的“ 初始参数估计时的奇异梯度矩阵 ”错误。 我尝试了不同的算法,不同的起始值并尝试使用
nls()
optim
最小化剩余平方和,无济于事。我已经读到,可能的原因可能是公式的参数设置过高,但我不认为是(是吗?)有人对此问题有建议吗?还是这只是一个尴尬的模型?
一个简短的例子:
#parameters used to generate the data
reala=-3
realb=5
realc=0.5
realr=0.7
realm=1
x=1:11 #x values - I have 11 timepoint data
#linear+exponential function
y=reala + realb*realr^(x-realm) + realc*x
#add a bit of noise to avoid zero-residual data
jitter_y = jitter(y,amount=0.2)
testdat=data.frame(x,jitter_y)
#try the regression with similar starting values to the the real parameters
linexp=nls(jitter_y~a+b*r^(x-m)+c*x, data=testdat, start=list(a=-3, b=5, c=0.5, r=0.7, m=1), trace=T)
谢谢!