--- title: "R Laboratuvarı 5: Bayes ve güvenilirlik" format: html execute: echo: true warning: false --- ```{r} source("../../code/r/bookstats.R") prevalence <- 0.01 sensitivity <- 0.95 specificity <- 0.98 components <- data.frame( bilesen = c("Gerçek alarm", "Yanlış alarm", "Toplam alarm", "Alarm sonrası kusur"), olasilik = c( sensitivity * prevalence, (1 - specificity) * (1 - prevalence), sensitivity * prevalence + (1 - specificity) * (1 - prevalence), posterior_defect(prevalence, sensitivity, specificity) ) ) knitr::kable(components, digits = 4, caption = "Bayes hesabının bileşenleri") ``` ## Birden fazla test için odds güncellemesi ~~~{r} posterior_after_positive_tests <- function(prior, sensitivity, specificity, positive_tests) { stopifnot(prior > 0, prior < 1, sensitivity > 0, sensitivity <= 1) stopifnot(specificity >= 0, specificity < 1, positive_tests >= 1) prior_odds <- prior / (1 - prior) likelihood_ratio <- sensitivity / (1 - specificity) posterior_odds <- prior_odds * likelihood_ratio^positive_tests posterior_odds / (1 + posterior_odds) } base_rates <- c(0.001, 0.005, 0.01, 0.05, 0.10) updates <- data.frame( temel_oran = base_rates, iki_alarm_sonrasi = vapply( base_rates, posterior_after_positive_tests, numeric(1), sensitivity = 0.95, specificity = 0.98, positive_tests = 2 ) ) stopifnot(all.equal(updates$iki_alarm_sonrasi[3], 0.9579662456, tolerance = 1e-9)) knitr::kable(updates, digits = 4, caption = "Temel oran ve iki alarm sonrası Bayes güncellemesi") ~~~ İki alarm sütunu, test sonuçlarının gerçek durum verildiğinde koşullu bağımsız olduğu varsayımıyla geçerlidir. ```{r} reliability_table <- data.frame( yapilandirma = c("Seri: 0.98 ve 0.97", "Paralel: 0.98 ve 0.98"), guvenilirlik = c( series_reliability(c(0.98, 0.97)), parallel_reliability(c(0.98, 0.98)) ) ) knitr::kable(reliability_table, digits = 4, caption = "Sistem güvenilirliği") ```