BayesXShinyApp

Das BayesXShinyApp R-Paket ist eine Webapp (Shiny-App) für das BayesX. Mit der Benutzeroberfläche können Statistiken von BayesX geschätzgen Modellen analysiert werden. Die App ist in der Lage die Dichte, den Mittelwert, die Varianz und andere Momente zu visualisieren. Jede erfolgreiche Interaktion mit der App wird aufgezeichnet und der Benutzer kann darauf zurückgreifen, indem er sich ein R-Skript von der App generieren lässt. Dieses Skript kann dann in der R-Konsole verwendet werden.

App

Die App kann mittels

library(BayesXShinyApp)
run_app()

gestartet werden. Die Bedienung ist selbsterklärend.

Erweiterung

Das R-Paket kann mit neuen Verteilungen modular erweitert werden, hierzu rufen wir das R/distribution.R auf. In der ersten Zeile wird ein .distribution <- list(...) erstellt, welches alle unterstützten Verteilung beinhaltet (dagum, bivnormal). Hinzufügen eines neuen Elements in .distribution(..., newdistribution = structure(list(...), class = c('distribution', 'list')) macht das Paket mit der neuen Verteilung kompatibel. Wir nennen newdistribution ein Verteilungsobjekt.

Interface

Jedes Verteilungsobjekt besitzt mindestens folgende Felder

# ersetze MOMENTNAME mit dem neuen Momentnamen
MOMENTNAME.distribution <- function(distr, ...){
  fun <- distr$moment$MOMENTNAME

  if( is.null(fun) )
    stop("no MOMENTNAME function defined for distribution")
  else
    return(fun)
}

Beispiel

Wir möchten nun ein Verteilungsobjekt cauchy definieren, da wir mit BayesX ein Modell mit cauchy Parametern (equationtypes t und s) geschätzt haben. Der Verteilungsname cauchy muss BayesX Verteilungsnamen entsprechen. Die Linkfunktion ist ìdentity und besagt dass die aus dem BayesX geschätzten (sampled) Parameter genau so in die Dichtefunktion und Momentfunktionen verwendet werden sollen. Da die cauchy Verteilung keine Momente besitzt, werden wir den Teil leer lassen. Das Verteilungsobjekt würde nun so aussehen

.distribution <- 
  list(...,
       cauchy = structure(
         list(
           # wobei 't' und 's' den equationtypes in BayesX entspricht
           density = function(t_1, s_1, ...) {
             return( dcauchy(location = t_1, scale = s_1, ...) )
           },
           class = "univariate",
           # identity
           link = function(eta) eta,
           # https://de.wikipedia.org/wiki/Cauchy-Verteilung
           moment = list()
         ), class = c("distribution", "list"))
  )


aleksandar-spasojevic/BayesXShinyApp documentation built on May 11, 2019, 11:24 p.m.