2016-09-15 53 views
0

我目前正在尝试用低点数模型和绘制S形曲线。R中的S形模型

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

我使用从minpack.lmnlsLM功能。

> 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 

我没有很好地研究stats知道这是一个语法R错误还是统计失败。我做什么不好?

-Thanks

+1

你将有一个问题拟合一个模型与三个参数四个观察。 –

+0

会不会更好地使用更平坦的点? (这些点是平均值)虽然 –

+0

仍然会有4个值,但我以前的评论可能并不清楚。原始Data.frame是特定x值处y值的平均值。更多的y值会有帮助还是x值有限的问题? –

回答

0

这看起来像二项式剂量反应数据。在任何情况下,我都会提出一个更简单的模型,比如两个参数log-logistic模型,其渐近线在0和1处。许多S形模型已经在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))