问题描述
我通过向SSasymp
传递nls()
函数来在R中拟合模型:
fit <- nls(y ~ SSasymp(log10(x),yf,y0,log_alpha),data = df)
我想找到该曲线与线y = 0.1
的交点。也就是说,这两个功能相遇之处:
但是,当我跑步时:
xVal <- predict(fit,list(y = 0.1))
我得到了一个由56个值组成的向量,而不是yf
,y0
和log_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()
或类似的函数来消除对所有这些代数的需要!
解决方法
如果您有估算值,这样的工作应该行吗?
!=