將邏輯擬合到R中的少量點


2

我正在嘗試將Logistic函數適合某些數據點。每個數據"集"都有6個點,我正嘗試將其分配給單獨的邏輯功能。

以下是一些示例代碼:

x = c(60, 80, 100, 140, 160, 180)
y = c(24.0688, 26.3774, 25.1653, 15.7559, 12.4160, 15.5849)

df = data.frame(x=x, y=y)

nls(y ~ SSlogis(x, 25, 110, 100), df)

但是我得到這個錯誤:

Error in nlsModel(formula, mf, start, wts) : 
singular gradient matrix at initial parameter estimates

我不確定如何設置Asym,xmid,scal參數。我嘗試使用自己的邏輯函數的參數化公式對nls進行調用,但遇到相同的錯誤。我以為這是少量的數據點,但是我嘗試合併一些數據,但得到了相同的錯誤。

所以我的問題是:

  1. 是否有可能使物流適應這幾點?
  2. nls函數是正確的方法嗎,還是應該使用其他方法?
  3. 如何設置初始Asym,xmid和scal參數?

謝謝!

7

You are not using the SSlogis function correctly: it needs some parameters, and it will calculate the starting values by itself (that's why it is SS, i.e. self-start):

> nls(y ~ SSlogis(x, Asym, xmid, scal), df)
Nonlinear regression model
  model:  y ~ SSlogis(x, Asym, xmid, scal) 
   data:  df 
  Asym   xmid   scal 
 31.75 155.05 -60.64 
 residual sum-of-squares: 35.24

Number of iterations to convergence: 7 
Achieved convergence tolerance: 8.703e-06