Estou tentando ajustar uma linha + curva exponencial para alguns dados. Para começar, tentei fazer isso em alguns dados artificiais. A função é:
nls()
função de R, obtenho o temido erro " matriz de gradiente singular nas estimativas de parâmetros iniciais ", mesmo se eu usar os mesmos parâmetros que usei para gerar os dados em primeiro lugar.Eu tentei os diferentes algoritmos, diferentes valores iniciais e tentei usar
optim
para minimizar a soma residual dos quadrados, tudo sem sucesso. Eu li que uma possível razão para isso pode ser uma super parametrização da fórmula, mas não acho que seja (é?) Alguém tem alguma sugestão para esse problema? Ou isso é apenas um modelo estranho?
Um pequeno exemplo:
#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)
Obrigado!