Предыстория:
У меня есть кривая, значения Y которой получены моей небольшой R-функцией ниже (аккуратно аннотированной). Если вы запустите весь мой код R, вы увидите мою кривую (но помните, что это функция, поэтому, если бы я изменил значения аргументов, я мог бы получить другую кривую):
Вопрос:
Очевидно, можно определить/предполагать множество интервалов, которые охватывают/занимают 95% всей площади под этой кривой. Но как с помощью optimize()
найти САМЫЙ КРАТЧАЙШИЙ (в единицах x-значения) из множества возможных 95% интервалов? Какими тогда будут соответствующие значения x для двух концов этого кратчайшего 95-процентного интервала?
Примечание. Идея кратчайшего интервала для одномодальной кривой, такой как моя, имеет смысл. На самом деле самым коротким будет тот, который имеет тенденцию быть ближе к середине, где высота (значение y) больше, поэтому значение x не обязательно должно быть таким большим, чтобы предполагаемый интервал покрывал / занимал 95 % от общей площади под кривой.
Вот мой код 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 )