Я хочу использовать y=a^(b^x)
, чтобы соответствовать приведенным ниже данным,
y <- c(1.0385, 1.0195, 1.0176, 1.0100, 1.0090, 1.0079, 1.0068, 1.0099, 1.0038)
x <- c(3,4,5,6,7,8,9,10,11)
data <- data.frame(x,y)
Когда я использую нелинейную процедуру наименьших квадратов,
f <- function(x,a,b) {a^(b^x)}
(m <- nls(y ~ f(x,a,b), data = data, start = c(a=1, b=0.5)))
он выдает ошибку: матрица сингулярного градиента при начальных оценках параметров. Результат примерно равен a = 1,1466, b = 0,6415, поэтому проблем с начальными оценками параметров быть не должно, поскольку я определил их как а = 1, б = 0,5.
Читал в других темах, что кривую доработать удобно. Я думал о чем-то вроде log y=log a *(b^x)
, но не знаю, что делать со спецификацией функций. Любая идея?
(m <- nls(y ~ f(x,a,b), data = data, start = c(a=0.9, b=0.6)))
, я не получаю сообщения об ошибке. Я получаю тот же ответ, если использую:(m <- nls(y ~ f(x,a,b), data = data, start = c(a=1.2, b=0.4)))
Не знаю, поможет ли это. - person Mark Miller   schedule 17.02.2014a^b^3 = 1.0385
, то естьa^b = 1.0385^(1/3) = 1.01267
, который действителен дляa= 1.01267
иb=1
. Это также работает с(m <- nls(y ~ f(x,a,b), data = data, start = c(a=1.01267, b=1.0)))
. Тем не менее, я бы предпочел, чтобы все это происходило автоматически ... - person Vochmelka   schedule 17.02.2014