我刚刚在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)
这是一个例子,但除了这个之外,我还需要更多数据集和自定义曲线函数。
如果有人可以使用plot
或ggplot
(例如,可能使用geom_ribbon
?)建议一种方法,我将不胜感激。我花了很长时间搜索stackoverflow,但还没有找到解决方案。如果有的话,或许你可以指点我......
提前致谢!
修改:抱歉,我忘记添加a
和b
的参数。他们是:
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
14.5805 8.01302
答案 0 :(得分:2)
你还没有说过a和b的来源。目前尚不清楚你正在做任何有关哪些信心带有意义的统计数据。如果a和b是固定/已知常数,则不需要置信带,或者置信带的宽度为0且与预测线相同。
如果a和b是某些参数的估计值,则存在置信带的可能性,但正确的值取决于a和b的计算方式。
答案 1 :(得分:0)
你有没有见过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()