5
我想使用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,所以初始参数估计不应该存在问题,因为我已经将它们定义为a = 1,b = 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)),我会得到相同的答案''我不知道如果这有帮助。 –
这很有趣。任何自动的方法来找出什么应该是a和b的起始值?___我想我可以使用好的a^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)))'一起工作。不过,我宁愿自动把它全部... – Vochmelka