如何使用nls估算参数?

时间:2014-08-18 00:17:54

标签: r simulation data-fitting

我想估算emax模型的e50 e0 emax 方程式为Y = E0 +((DOSE * EMAX)/(DOSE + ED50)) 我想使用默认算法 如何估算E0 EMAX和E50?

我发现示例代码是:

args(nls)
function (formula, data = parent.frame(), start, control = nls.control(),
algorithm = c("default", "plinear", "port"), trace = FALSE,
subset, weights, na.action, model = FALSE, lower = -Inf,
upper = Inf, ...)
NULL

由于

1 个答案:

答案 0 :(得分:1)

您的示例数据似乎没有名字,所以我假装我没有看到它。制作一个名为dose的矢量,其中包含您的剂量信息,以及一个名为Y的矢量,其中包含Y变量。显然它们应该是相同的长度。我只是使用rnorm()作为我的例子。然后用一些合理的起始值调用nls。我会突然挑选一些。

> dose <- rnorm(400)
> Y <- rnorm(400)
> nls(formula=Y~e0+((dose*emax)/(dose+ed50)),start=c(e0=1,emax=10,ed50=2))
Nonlinear regression model
  model: Y ~ e0 + ((dose * emax)/(dose + ed50))
   data: parent.frame()
      e0     emax     ed50 
0.036105 0.005475 1.991276 
 residual sum-of-squares: 373.8

Number of iterations to convergence: 21 
Achieved convergence tolerance: 9.759e-06