首页 > 解决方案 > 从 nlsModel 对象求解特定 x 值

问题描述

我通过将SSasymp函数传递给R 来拟合模型nls()

fit <- nls(y ~ SSasymp(log10(x), yf, y0, log_alpha), data = df)

我想找到这条曲线与直线的交点y = 0.1。即,这两个功能相遇的地方:

衰变函数与线 y=0.1 的交点

但是,当我运行时:

xVal <- predict(fit,list(y = 0.1))

我得到一个包含 56 个值的向量,以及 、 和 的值,而不是单个xyf值:y0log_alpha

> str(xVal)
 num [1:56] 0.609 0.585 0.538 0.509 0.494 ...
 - attr(*, "gradient")= num [1:56, 1:3] 0.108 0.14 0.204 0.244 0.265 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : NULL
  .. ..$ : chr [1:3] "yf" "y0" "log_alpha"

我可以得到模型参数的估计值:

> summary(fit)

Formula: y ~ SSasymp(log10(x), yf, y0, log_alpha)

Parameters:
          Estimate Std. Error t value Pr(>|t|)    
yf        -0.04421    0.01398  -3.164  0.00258 ** 
y0         0.68735    0.01175  58.519  < 2e-16 ***
log_alpha -1.80647    0.05352 -33.753  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

并且可以在手动求解 x 后将它们插入:

x = ((Asym - R0)/(Asym - 0.1))^(exp(-lrc)*log(10))

但是我想知道是否有一种方法可以使用predict()或类似的功能来消除对所有这些代数的需求!

标签: requation-solvingnls

解决方案


如果你有估计,不应该这样的工作吗?

x[which(SSasymp(log10(x), yf, y0, log_alpha) == 0.1)]


推荐阅读