Soy un novato en R. Studio. Estoy tratando de ajustar una curva sigmoidea para estos datos.

x <- c(0, 0.19, 0.3, 0.4, 0.52, 0.65, 0.78, 0.9, 1, 1.5, 2, 3)
y <- c(0, 0.001131392946767, 0.001429213070191, 0.001695405556196, 0.008619063174144, 0.00970100252551, 0.014973553352495, 0.022978522580874, 0.038357458205673, 0.045039437163441, 0.052570608708667, 0.050651474312204)

Incluso después de leer mucho en línea, todavía no sé cómo configurar la adaptación.

fit <- nls(y~max(y)*x^n/k^n+x^n, start=list(n=4, k=1))

Cuando ejecuto el ajuste, me da un error de gradiente singular. ¿Alguien puede ayudar? :(

r nls
0
matgirl 27 ago. 2020 a las 13:26

1 respuesta

La mejor respuesta

Utilice un modelo de arranque automático:

plot(y ~ x)

help("SSlogis")
fit <- nls(y ~ SSlogis(x, Asym, xmid, scal), data = data.frame(x, y))
summary(fit)

curve(predict(fit, newdata = data.frame(x = x)), add = TRUE)

enter image description here

Su modelo propuesto parece problemático porque no se ajusta a la asíntota superior. Su propuesta de usar max(y) no tiene en cuenta las incertidumbres de una manera sensata. También sospecho que puede perder un paréntesis en la fórmula.

0
Roland 27 ago. 2020 a las 10:47