R中的S形建模

时间:2016-09-15 16:12:43

标签: r regression non-linear-regression

我目前正在尝试建模并绘制具有少量点的S形曲线。

>myExperiment
 V1  N mean  
0.1  9 0.9 
  1  9 0.8 
 10  9 0.1 
  5  9 0.2 

我正在使用nlsLM包中的minpack.lm函数。

> nlsLM(mean2 ~ -a/(1 + exp(-b * (v1-o))))
Nonlinear regression model
  model: mean2 ~ -a/(1 + exp(-b * (v1 - o)))
   data: parent.frame()
     a      b      o 
-1.452 -0.451  1.292 
 residual sum-of-squares: 0.007017

Number of iterations to convergence: 27 
Achieved convergence tolerance: 1.49e-08
Warning message:
In nlsLM(mean2 ~ -a/(1 + exp(-b * (v1 - o)))) :
  No starting values specified for some parameters.
Initializing ‘a’, ‘b’, ‘o’ to '1.'.
Consider specifying 'start' or using a selfStart model

使用这些起始值我收到此错误。

> nls(mean~-a/(1 + exp(-b * (v1-o))), start=list(a=-1.452, b=-0.451, o=1.292))
Error in nls(mean ~ -a/(1 + exp(-b * (v1 - o))), start = list(a = -1.452,  : 
  step factor 0.000488281 reduced below 'minFactor' of 0.000976562

我在统计数据方面的研究不足以知道这是语法R错误还是统计数据失败。我做得不好?

-Thanks

1 个答案:

答案 0 :(得分:0)

这看起来像二项式剂量反应数据。在任何情况下,我都会提出一个更简单的模型,比如两个参数的log-logistic模型,在0和1处有渐近线。很多sigmoidal模型都在drc包中编码。

myExperiment = read.table(header = TRUE, text = 
" V1  N mean  
0.1  9 0.9 
  1  9 0.8 
 10  9 0.1 
  5  9 0.2")

library(drc)

m.ll2 <- drm(mean ~ V1,
  data = myExperiment,
  type = "binomial", 
  fct = LL.2(),
  weights = N)

plot(m.ll2, ylim = c(0, 1))