我不明白爲什麼我不能有這些數據的nls函數。 我已經嘗試了很多不同的起始值,而且我總是有同樣的錯誤。如何找到nls函數的良好開始值?
這是我一直在做:
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)
我一直這個錯誤:
Error in method(formula, data = data, weights = weight, ...) :
singular gradient
用這個我得到b .lin1 .lin2 3.351e + 00 1.006e + 00 -1.589e + 08當我計算a和c時,我有:nls(vec_y〜expFct2 (vec_x,a,b,c),start = list(a = 1.589e + 08,b = 75,c = -158899999),control = nls.control(maxiter = 200))我有這個錯誤:nlsModel (formula,mf,start,wts):初始參數估計的奇異梯度矩陣。我不明白爲什麼 – Tali 2012-03-19 10:20:55
通常,在運行非線性優化時,您希望參數大致處於相同的幅度範圍內。已添加示例運行顯示問題。變換你的參數,這樣不會發生。 「線性」方法的優點在於它相對清晰的如何轉換爲線性,而現在我們看到了它給我們提供的信息,我們必須進一步改進我們的參數和哪些參數。文森特已經展示瞭如何做到這一點。 – 2012-03-19 11:14:49
謝謝,我現在明白了 – Tali 2012-03-19 11:25:56