r - 从 nlsModel 对象求解特定 x 值
问题描述
我通过将SSasymp
函数传递给R 来拟合模型nls()
:
fit <- nls(y ~ SSasymp(log10(x), yf, y0, log_alpha), data = df)
我想找到这条曲线与直线的交点y = 0.1
。即,这两个功能相遇的地方:
但是,当我运行时:
xVal <- predict(fit,list(y = 0.1))
我得到一个包含 56 个值的向量,以及 、 和 的值,而不是单个xyf
值: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), 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()
或类似的功能来消除对所有这些代数的需求!
解决方案
如果你有估计,不应该这样的工作吗?
x[which(SSasymp(log10(x), yf, y0, log_alpha) == 0.1)]
推荐阅读
- ios - 从Background(home)返回时iOS崩溃
- java - Appium 没有启动正确的应用程序
- unix - 删除以 – 开头的文件夹(短划线)
- visual-studio-code - 如何隐藏部分 UI?
- spring - Spring Traverson 和 OAuth2RestTemplate
- excel - 使用输入框作为密码框选择工作表 VBA EXCEL
- google-cloud-platform - 如何在 Compute Engine Google Cloud 中使用 96 个 CPU?
- swift - 在 Swiftui 中是否有一种简单的方法可以通过捏合来放大图像?
- php - 有人可以帮我将此 sql 查询转换为 laravel db 查询吗?
- julia - Julia Plotly 不显示带有子图的图