从nlsModel对象求解特定的x值

问题描述

我通过向SSasymp传递nls()函数来在R中拟合模型:

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

我想找到该曲线与线y = 0.1的交点。也就是说,这两个功能相遇之处:

Intersection of decay function with line y=0.1

但是,当我跑步时:

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

我得到了一个由56个值组成的向量,而不是yfy0log_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),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()或类似的函数来消除对所有这些代数的需要!

解决方法

如果您有估算值,这样的工作应该行吗?

!=