如何将置信带拟合到 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)
这是一个示例,但除了这个之外,我还有一些数据集和自定义曲线函数需要执行此操作。
如果有人可以建议使用 plot
或 ggplot
(例如,可能使用 geom_ribbon
?)来执行此操作,我将不胜感激。我花了很长时间搜索 Whosebug,但还没有找到解决方案。如果有的话,也许你可以指给我看...
提前致谢!
编辑:抱歉,我忘记为 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<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 的计算方式。
我刚开始使用 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
?)来执行此操作,我将不胜感激。我花了很长时间搜索 Whosebug,但还没有找到解决方案。如果有的话,也许你可以指给我看...
提前致谢!
编辑:抱歉,我忘记为 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<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 的计算方式。