jat*_*ell 10 r function confidence-interval credible-interval
我正在尝试编写一个通用函数来计算R中二项式比例的区间估计的覆盖概率.我打算为各种置信区间方法执行此操作,例如Wald,Clopper-Pearson,用于不同先验的HPD区间.
理想情况下,我希望有一个函数,作为参数,可以采用应该用于计算间隔的方法.那么我的问题是:如何在另一个函数中包含函数作为参数?
例如,对于Exact Clopper-Pearson区间,我有以下功能:
# Coverage for Exact interval
ExactCoverage <- function(n) {
p <- seq(0,1,.001)
x <- 0:n
# value of dist
dist <- sapply(p, dbinom, size=n, x=x)
# interval
int <- Exact(x,n)
# indicator function
ind <- sapply(p, function(x) cbind(int[,1] <= x & int[,2] >= x))
list(coverage = apply(ind*dist, 2, sum), p = p)
}
Run Code Online (Sandbox Code Playgroud)
其中Exact(x,n)只是计算适当间隔的函数.我想拥有
Coverage <- function(n, FUN, ...)
...
# interval
int <- FUN(...)
Run Code Online (Sandbox Code Playgroud)
因此我有一个函数来计算覆盖概率,而不是每个区间计算方法的单独覆盖函数.有没有标准的方法来做到这一点?我一直无法找到解释.
谢谢,詹姆斯
Sve*_*ein 16
在R中,可以提供函数作为函数参数.语法与非功能对象之一匹配.
这是一个示例函数.
myfun <- function(x, FUN) {
FUN(x)
}
Run Code Online (Sandbox Code Playgroud)
此函数将函数应用于FUN对象x.
一些带有向量的例子,包括从1到10的数字:
vec <- 1:10
> myfun(vec, mean)
[1] 5.5
> myfun(vec, sum)
[1] 55
> myfun(vec, diff)
[1] 1 1 1 1 1 1 1 1 1
Run Code Online (Sandbox Code Playgroud)
这不仅限于内置函数,还适用于任何函数:
> myfun(vec, function(obj) sum(obj) / length(obj))
[1] 5.5
mymean <- function(obj){
sum(obj) / length(obj)
}
> myfun(vec, mymean)
[1] 5.5
Run Code Online (Sandbox Code Playgroud)