Estoy tratando de ajustar una línea + curva exponencial a algunos datos. Como comienzo, intenté hacer esto con algunos datos artificiales. La función es: Es efectivamente una curva exponencial con una sección lineal, así como un parámetro de desplazamiento horizontal adicional ( m ). Sin embargo, cuando uso la función de R obtengo el temido error " matriz de gradiente singular en las estimaciones iniciales de parámetros ", incluso si uso los mismos parámetros que usé para generar los datos en primer lugar. He probado diferentes algoritmos, diferentes valores iniciales y he intentado usar
nls()
optim
para minimizar la suma residual de cuadrados, todo en vano. He leído que una posible razón para esto podría ser una sobre-parametrización de la fórmula, pero no creo que sea (¿es así?) ¿Alguien tiene una sugerencia para este problema? ¿O es solo un modelo incómodo?
Un breve ejemplo:
#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)
¡Gracias!