私はユーザがShiny GUIを使ってベータディストリビューション(p、q)のパラメータを調整できるようにしています。反応確率密度関数の面積を1に固定する方法を教えてください。
しかし、thetaは0から1の範囲内でなければならないため、私のコードでは、パラメータの選択に関係なく、カーブの下の領域が常に1に等しいことを基本的に保証するステップがありません。
私はこれについてどのように役立つか大いに感謝する方法について考えることができません。これを行うには
# Required packages
require(shiny)
require(ggplot2)
require(gridExtra)
# Beta plot function
betaFun <- function(p = 1.1, q = 1.1){
prior <- function(theta){
(theta^(p - 1)) * ((1 - theta)^(q - 1))
}
priorFill <- function(theta){
ifelse(prior(theta) > 0 & prior(theta) < 1, prior(theta), NA)
}
ggplot(data = data.frame(x = as.double(0)), mapping = aes(x = x)) +
stat_function(fun = prior, col = 'blue') +
stat_function(fun = priorFill, geom = "area", fill = "blue", alpha = 0.2) +
geom_segment(x = 0, y = 0, xend = 1, yend = 0, color = 'blue') +
xlim(0, 1) +
ylim(0, 1)
}
# UI
ui <- fluidPage(
titlePanel("Beta Distribution"),
sidebarLayout(
sidebarPanel(
sliderInput("pInput", "Parameter p", min = 1.1, max = 5, value = 1, step = 0.1),
sliderInput("qInput", "Parameter q", min = 1.1, max = 5, value = 1, step = 0.1)
),
mainPanel(
plotOutput("betaPlot")
)
)
)
# Server
server <- function(input, output) {
output$betaPlot <- renderPlot({
betaFun(p = input$pInput,
q = input$qInput)
})
}
# Execution
shinyApp(ui = ui, server = server)
はここに定数を取得します。私が探していたhttps://en.wikipedia.org/wiki/Beta_distribution –