如何在R中集成(AUC)nls模型和蒙特卡罗置信区间

问题描述 投票:1回答:1

我正在尝试将非线性函数(从nls())中的非线性函数(从f解析)整合到R中的x = 0到无穷大。但是,R的积分函数需要函数(integrate(my.nls, lower = 0L, upper = Inf) )。

简而言之,我想做一些近似的事情:

my.nls

但不幸的是,predictNLS实际上是一个拟合的模型对象,而不是一个函数。我考虑使用平滑样条线进行插值,然后对结果函数进行积分。但我更喜欢使用真正的nls函数而不是近似值。此外,鉴于整合的无限性,我必须非常小心地在正方向上进行外推。

如果可能,理想的技术是能够整合nls和其他函数的结果,例如,根据传播包的as.function函数计算的模拟97.5%置信区间下的面积。

我对R很陌生,这只是我在SO上的第二篇文章,我想,所以请原谅我,如果这是一个微不足道或愚蠢的问题,或者我犯下了其他一些罪。到目前为止,function(){predict(my.nls()}### Make up some data x <- seq(from = 10, to = 1, length.out = 15)+(rnorm(15)+2) y <- seq(from = 1, to = 10, length.out = 15)+(rnorm(15)+2) ### Fit an nls model, in this case, just a plain linear one. my.nls <- nls(y~m*x+b, start = c(m=-1, b=100)) ### Get confidence intervals from propagate package, might take a couple #seconds to run. Only serves to illustrate the type of values, the #function of which, I'd like to integrate (see my.preds$summary) library(propagate) my.preds <- predictNLS(my.nls, newdata = data.frame("x" = x)) ### Integrate (totally not right, just (hopefully) illustrating #the idea of what I'd like to do) #exact.fn.auc <- integrate(my.nls, lower = 0L, upper = Inf) #upperCI.fn.auc <- integrate(predictNLS(my.nls)$summary$Sim.97.5%, lower = 0L, upper = Inf) 的不当使用并没有让我到任何地方,我将非常感谢任何帮助。

以下是一个简短的示例,可用于说明我的问题:

integrate

PS:我认识到最后两行中的语法是非常错误的,我只是试图表明如果单独计算函数所代表的值将来自何处。如果对我所得到的内容有任何疑问,请询问,我会尝试重新解释我的问题。

PPS:我很可能完全是从错误的方向开始的(虽然我必须适合的模型类型是真实的,非线性的[不像上面说明的那样],我想得到下面的区域平均函数及其置信区间在某种程度上),如果您对其他方法有任何建议,也欢迎这些。我对样条函数的问题在于,我的真模型渐近,因为它们接近y = 0,并且考虑到我要进入Inf,外推中的小像差会解决曲线下的一些非常不同的值。

r confidence-interval numerical-integration nls non-linear-regression
1个回答
1
投票

主要问题确实是integrate(function(p) predict(my.nls, data.frame(x = p)), lower = 0, upper = 10) # 102.0578 with absolute error < 1.1e-12 需要一个功能,这不是你试图提供的功能。另一个问题,至少在这个例子中,是积分在上升到Inf时是不同的。

限制注意[0,10],对于我们的第一种情况

integrate(function(p) 
  predictNLS(my.nls, newdata = data.frame(x = p), do.sim = FALSE)$summary$`Prop.97.5%`,
  lower = 0, upper = 10)
# 113.9549 with absolute error < 1.7e-06

在第二个

do.sim = FALSE

我还将nsim添加为不使用蒙特卡罗,因为这需要更长的时间,但您当然可以调整参数(例如,蒙特卡罗迭代次数qazxswpoi)。

© www.soinside.com 2019 - 2024. All rights reserved.