如何将置信带拟合到 R 中的自定义函数?

How do I fit confidence bands to a custom function in R?

我刚开始使用 R,正在努力为我定义的函数添加置信区间。我看过很多线性模型的例子,我知道 ggplot2 可以为某些函数做到这一点。然而,事实证明,将波段与我的自定义函数相匹配是很棘手的。下面我有数据和我的功能:

data<-matrix(c(0.08, 0.1, 0.12, 0.13, 0.49, 0.11, 0.12, 0.15, 0.22, 0.47, 7, 8 , 9, 21, 30, 3, 8, 13, 15, 17),ncol=2)
mycurve<-function(x){a+(b*log(x))}
plot(data)
curve(mycurve,add=T)

这是一个示例,但除了这个之外,我还有一些数据集和自定义曲线函数需要执行此操作。 如果有人可以建议使用 plotggplot(例如,可能使用 geom_ribbon?)来执行此操作,我将不胜感激。我花了很长时间搜索 Whosebug,但还没有找到解决方案。如果有的话,也许你可以指给我看...

提前致谢!

编辑:抱歉,我忘记为 ab 添加参数。他们是:

a<-31
b<-9

编辑 2:我尝试了@Ben Bolker 和@Marcin Kosinski 的建议来使用 geom_smooth 并将其与我的自定义曲线一起绘制:

data<-as.data.frame(data) #So that ggplot can use it ggplot(data,aes(V1,V2))+geom_smooth(method="lm",formula=y~1+log(x))+ geom_point()+stat_function(fun=mycurve,color="red")

结果是:

红色曲线是我需要使用的自定义函数。所以我的问题是我需要 geom_smooth 才能使用该函数(或产生相同结果的替代方法)。

感谢到目前为止的帮助!

Edit3:协方差矩阵为:

29.3897 14.5805<br> 14.5805 8.01302

你有没有看过geom_smooth?

data<-matrix(c(0.08, 0.1, 0.12, 0.13, 0.49, 0.11, 0.12, 0.15, 0.22, 0.47, 7, 8 , 9, 21, 30, 3, 8, 13, 15, 17),ncol=2)
library(ggplot2)
qplot(data[,1], data[,2])+geom_smooth()

你还没说a和b是从哪里来的。目前尚不清楚您是否在做任何对置信带有意义的统计。如果 a 和 b 是 fixed/known 常数,则不需要置信带,或者置信带宽度为 0,与预测线相同。

如果 a 和 b 是某个参数的估计值,则可能存在置信带,但正确的值取决于 a 和 b 的计算方式。