Я немного не в себе ... У меня есть эти данные:
d <- data.frame(matrix(data = c(1,1.5,6,2,11,2.5,16,3,26,4,46,5,66,6,86,7,126,8,176,9,276,10,426,11,626,12,876,13,1176,14,1551,15,2026,16,2676,17,3451,18,4351,19,5451,20,6801,21,8501,22,10701,23),
byrow = TRUE,
ncol = 2
)
)
names(d) <- c('x','y')
выглядит так:
plot(x = d$x,
y = d$y,
pch = 19,
col = 'grey50',
bty = 'n'
)
Теперь я хочу описать отношения между X и Y в виде формулы. Поэтому я пробую функцию nls
. Как это:
fit <- nls(y ~ a * x ^ b,
start = list(a = 1,
b = 1),
data = d
)
lines(d$x,
predict(fit),
col = 'red',
lty = 2
)
Как видите, линия почти подходит! И вот где я застрял. Что-то подсказывает мне, что есть идеальная посадка. Но я не знаю, куда идти отсюда. Альтернативные начальные значения, похоже, ничего не меняют. Я получил совет использовать lm(log(y) ~ log(x), data = d)
в качестве начальных параметров. Но нет любви:
fit <- nls(y ~ a * x ^ b,
start = list(a = exp(0.3120),
b = 0.3883),
data = d
)
lines(d$x,
predict(fit),
col = 'blue',
lty = 2
)
Я пробовал несколько других формул, но на самом деле я просто стреляю в темноте:
nls(y ~ a * x / (b + x), data = d)
nls(y ~ a + ((x * b) / (x + c)), start = c(a = 1, b = 10, c = 1), data = d
Итак, есть предложения о том, как двигаться вперед?