R’da Shiny Üzerinde Binom Olasılık Dağılım Simülasyonu: Binomial Probability Distribution Simulation on Shiny in R

Bu çalışma kapsamında bugün R’da yazıp Shiny üzerinde yayınladığım kesikli olasılık dağılımlarından biri olan Binom olasılık dağılım simülasyonunun geliştirilmesinde kullandığım R kodları bütünleşik olarak paylaşılarak konu hakkında farkındalık oluşturulması amaçlanmıştır. Simülasyonda ayrıca üretilen veriyi csv formatında indirebilirsiniz de.

Geliştirdiğim uygulamaya aşağıdaki linkten ulaşabilirsiniz.

https://buluttevfik.shinyapps.io/bdagilim/

Faydalı olması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Not:

  •  Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.
  •  It can not be cited or copied without referencing.

Kütüphaneler ve R Kodları

library(shinydashboard)
library(shinydashboardPlus)
library(shiny)
library(ggthemes)
library(tibble)
library(ggplot2)
library(pastecs)
library(psych)
library(shinyWidgets)
library(shinyjs)
library(ggpubr)
library(shinyFeedback)
library(shinyalert)
library(shinyvalidate)
library(dplyr)
ui <- dashboardPage(
    dashboardHeader(title = "Gösterge Paneli"),
    dashboardSidebar(),
    dashboardBody(
        
        tags$head(tags$style(HTML(
            '.myClass { 
        font-size: 24px;
        line-height: 50px;
        text-align: center;
        font-family: "Georgia", Times, "Times New Roman", serif;
        padding: 0 15px;
        overflow: hidden;
        color: white;
        font-weight: bold;
      }
    '))),
        tags$script(HTML('
      $(document).ready(function() {
        $("header").find("nav").append(\'<span class="myClass"> Binom Olasılık Dağılım Simülasyonu </span>\');
      })
     ')),
        helpText(em(strong("Developed by Tevfik Bulut")), align = "left", style = "color:red; font-size: 12pt;font-family: Charm"),
        helpText("Olasılık teorisinde adını İsviçreli matematikçi Jacob Bernoulli’den alan Bernoulli dağılımı, bir denemenin iki sonucu (başarılı- başarısız, evet-hayır) olması durumunda kullanılan kesikli bir olasılık dağılımıdır.", strong("Binom dağılımı ise n kez tekrarlanan Bernoulli deneylerinden oluşmaktadır."), "Bernoulli dağılımında deney bir kez yapılarak başarılı olma/olmama durumu ile ilgilenirken binom dağılımı rastgele deney aynı koşullar altında n kez tekrarlanır. Diğer bir ifadeyle, eğer deney birden fazla ve bağımsız olarak tekrarlanılıp ve başarılı olma durumu ile ilgilenilirse o zaman Bernoulli dağılımının özel bir durumu olan Binom dağılımının kullanılması gerekmektedir. Eğer binom dağılımında denemelerin sayısı sonsuzsa Poisson dağılımına evrilir. Binom dağılımında kullanılan parametreler Tablo 1’de verilmiştir. Binom dağılımında n denemelerin sayısı göstermek üzere n>1’den büyük iken Bernoulli dağılımında n=1’dir.",style = "font-size: 14pt;font-family: Charm"),
        fluidRow(
            box(title = strong("Grafik"),status = "primary", solidHeader = TRUE,
                collapsible = TRUE,plotOutput("plot1", height = 475)),
            box(
                title = strong("Kontrol Parametreleri"),status = "primary", solidHeader = TRUE,
                collapsible = TRUE,
                sliderInput(inputId="s", label="Değerler sabiti (set.seed)",min=0, max=1000, value = 0),
                sliderInput("n", "Gözlemlerin sayısı (n):", 1, 1000, 50),
                sliderInput("size", "Denemelerin sayısı (s)", 1, 1000, 50),
                sliderInput("prob", "Başarı olasılığı (p)", 0.01, 1, 0.01),
                useShinyalert(),
                actionButton(inputId = "cal" ,width =270 ,label =  helpText(strong("Uygula"),style = "color:white;font-family: Georgia"),style='padding:6px; font-size:110%', class="btn-primary btn-lg active"),
                
                downloadBttn("veri", label=helpText(strong("İndir"),style = "color:white;font-family: Georgia"),style="stretch",block = F, color="primary", size="sm")),
            
        )
    )
)

server <- shinyServer(function(input, output, session) {
    iv <- InputValidator$new()
    
    iv$add_rule("prob", sv_gt(0,  message_fmt = "Başarı olasılığını 0'dan büyük olarak belirleyiniz!"))
    
    iv$enable()
    
    cast <- eventReactive(input$cal,{
        set.seed(input$s)
        n=input$n
        size = input$size
        prob =input$prob
        y=tibble(Sayi=rbinom(n,size,prob))
        y
    })
    
    output$plot1 <- renderPlot({
        m=ggplot(cast(), aes(x=Sayi)) + 
            geom_histogram(aes(y=..density..),bins=100,binwidth=.3, fill="red")+
            theme_hc()+
            ggtitle(paste("Binom Olasılık Dağılımı"," (p=",round(input$prob,2),", ","n=",input$n,", ","s=",input$size,")", sep=""))+
            xlab("Denemelerin Sayısı")+
            ylab("Olasılık")+
            theme(plot.title = element_text(hjust = 0.5, size=25, face="bold"))+
            theme(axis.text=element_text(size=15))+
            theme(axis.title.x = element_text(size=18, colour="black", face="bold"))+
            theme(axis.title.y = element_text(size=18, colour="black", face="bold"))
        m
    })
    
    
    observeEvent(input$cal, {

        shinyalert(title = "Her şey yolunda gözüküyor", type = "success")
    })
    
    
    
    output$veri <- downloadHandler(
        filename = function() {
            paste("veri", ".csv", sep = "")
        },
        content = function(file) {
            write.csv(cast(), file, row.names = FALSE)
        }
    )
    
})

shinyApp(ui, server)


Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s