No entiendo por qué no puedo tener una función nls para estos datos. Lo he intentado con muchos valores de inicio diferentes y siempre tengo el mismo error.¿Cómo encontrar buenos valores de inicio para la función nls?
Esto es lo que he estado haciendo:
expFct2 = function (x, a, b,c)
{
a*(1-exp(-x/b)) + c
}
vec_x <- c(77.87,87.76,68.6,66.29)
vec_y <- c(1,1,0.8,0.6)
dt <- data.frame(vec_x=vec_x,vec_y=vec_y)
ggplot(data = dt,aes(x = vec_x, y = vec_y)) + geom_point() +
geom_smooth(data=dt, method="nls", formula=y~expFct2(x, a, b, c),
se=F, start=list(a=1, b=75, c=-5)
tengo siempre este error:
Error in method(formula, data = data, weights = weight, ...) :
singular gradient
Con esto obtengo b .lin1 .lin2 3.351e + 00 1.006e + 00 -1.589e + 08 y cuando calculo a y c, tengo: nls (vec_y ~ expFct2 (vec_x, a, b, c), start = list (a = 1.589e + 08, b = 75, c = -158899999), control = nls.control (maxiter = 200)) Tengo este error: Error en nlsModel (fórmula, mf, inicio, wts): matriz de gradiente singular en las estimaciones de parámetros iniciales. No entiendo por qué – Tali
Normalmente, cuando se ejecuta una optimización no lineal, los parámetros deben tener aproximadamente el mismo rango de magnitud. Han agregado una muestra de ejecución que muestra el problema. Transforme sus parámetros para que esto no suceda. La ventaja del enfoque 'plinear' es que es relativamente claro cómo transformar a la linealidad y ahora que vemos lo que da, sabemos que tenemos que transformar nuestros parámetros más allá y cuáles. Vincent ya ha demostrado cómo hacerlo. –
Gracias, ahora entiendo – Tali