2016-09-15 55 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))