背景:
我有一条曲线,其 Y 值由下面的小 R 函数产生(注释整齐)。如果你运行我的整个 R 代码,你会看到我的曲线(但请记住,它是一个函数,所以如果我更改参数值,我可以得到不同的曲线):
问题:
显然,可以确定/假设许多区间将覆盖/占据该曲线下总面积的 95%。但是使用, optimize()
,我怎样才能找到这些许多可能的 95% 间隔中的最短(以 x 值单位) ?那么这个最短 95% 区间的两端对应的 x 值是多少?
注意:像我这样的单峰曲线最短间隔的想法是有道理的。实际上,最短的将是趋向于高度(y 值)较大的中间的那个,因此对于预期的间隔覆盖/取 95,x 值不需要太大曲线下总面积的百分比。
这是我的 R 代码(请运行整个代码):
ppp <- function(f, N, df1, df2, petasq, alpha, beta) {
pp <- function(petasq) dbeta(petasq, alpha, beta)
ll <- function(petasq) df(f, df1, df2, (petasq * N) / (1 - petasq) )
marg <- integrate(function(x) pp(x)*ll(x), 0, 1)[[1]]
po <- function(x) pp(x)*ll(x) / marg
return(po(petasq) )
}
## @@@ END OF MY R FUNCTION.
# Now I use my function above to get the y-values for my plot:
petasq <- seq(0, 1, by = .0001) ## These are X-values for my plot
f <- 30 # a function needed argument
df1 <- 3 # a function needed argument
df2 <- 108 # a function needed argument
N <- 120 # a function needed argument
alpha = 5 # a function needed argument
beta = 4 # a function needed argument
## Now use the ppp() function to get the Y-values for the X-value range above:
y.values <- ppp(f, N, df1, df2, petasq, alpha, beta)
## Finally plot petasq (as X-values) against the Y.values:
plot(petasq, y.values, ty="l", lwd = 3 )