uwesterr / CoronaPredict

With AdMOS develop a shiny app to predict corona progress
1 stars 2 forks source link

Einfügen Confidenzintervall (CI) mit z.B. 90% Abdeckung #32

Closed thomasgneiting closed 4 years ago

thomasgneiting commented 4 years ago

Input von Matthias Havemann um zu zeigen, wie groß die Bandbreite der Vorhersage ist. Fabian: Bei mir ist es 35 Jahre her dass ich so was in der 12. Klasse Gymnasium gemacht habe.

uwesterr commented 4 years ago

R0 und n0 nom min und max Berechnung wie folgt

startDate <-  as.Date('2020-03-01')
lmModel <- lmModelGermany
  calcR0ConN0Conf <- function(lmModel, startDate) {
    n0_erfasst_conf <- lmModel %>% predict(data.frame(MeldeDate =startDate), interval = "confidence", level = 0.95)
    n0_erfasst_nom_min_max <- 10^n0_erfasst_conf %>% as_tibble() %>% set_names("n0_erfasst_nom", "n0_erfasst_min", "n0_erfasst_max")
    R0_nom <- 10^lmModel[["coefficients"]][["MeldeDate"]]
    R0_min_max <- 10^confint(lmModel, level = .95)
    R0_conf_nom_min_max <- tibble(R0_nom = R0_nom, R0_min = R0_min_max[[2]], R0_max = R0_min_max[[4]] )
    return(list(n0_erfasst_nom_min_max, R0_conf_nom_min_max))
  }

  calcR0ConN0Conf_res  <- calcR0ConN0Conf(lmModelGermany, startDate)
n0_erfasst_nom_min_max <- calcR0ConN0Conf_res[[1]]
R0_conf_nom_min_max <- calcR0ConN0Conf_res[[2]]

Screenshot 2020-04-02 at 12 46 53

danach Rechenkern mit

durchführen

uwesterr commented 4 years ago

aufruf Rechenkern mit nom, min und max werten für R0 und n0, dann dataframes join und für die Darstellung verfügbar machen

    dfRoNo <- r0_no_erfasstDf()[[1]]
    n0_erfasst_nom_min_max <- r0_no_erfasstDf()[[2]]
    R0_conf_nom_min_max <- r0_no_erfasstDf()[[3]]

    rechenDf_nom <- cbind(dfRoNo,n0_erfasst=n0_erfasst_nom_min_max$n0_erfasst_nom, R0 =R0_conf_nom_min_max$R0_nom)
    df_nom <-  Rechenkern(rechenDf_nom,input)

    rechenDf_min <- cbind(dfRoNo,n0_erfasst=n0_erfasst_nom_min_max$n0_erfasst_min, R0 =R0_conf_nom_min_max$R0_min)
    df_min <-  Rechenkern(rechenDf_min,input)

    rechenDf_max <- cbind(dfRoNo,n0_erfasst=n0_erfasst_nom_min_max$n0_erfasst_max, R0 =R0_conf_nom_min_max$R0_max)
    df_max <-  Rechenkern(rechenDf_max,input)

    df <- left_join(df_nom, df_min, by = "Tag", suffix = c("", "_min"))
    df <- left_join(df, df_max, by = "Tag", suffix = c("", "_max"))
uwesterr commented 4 years ago

mit commit https://github.com/uwesterr/CoronaPredict/commit/9b6463523178bd0e1f88a0614c5752a724bf32cc hat fabian eine andere CI Methode implementiert

uwesterr commented 4 years ago

kumulierte werte müssen noch implementiert werden tooltips müssen noch angepasst werden

m-hav commented 4 years ago

Hier ist noch ein Bug mit der Berechnung der CIs (ich hab es leider immer noch nicht geschafft eure Formel zu prüfen, sorry...): image

Konfiguration für diesen Bug: https://covid19.admos.de/shiny/myNewApp/?_state_id_=564b9160bbb3fe1e

m-hav commented 4 years ago

Ähnlich hier für Gießen mit Standardeinstellungen: image

Die realen Zahlen sind im Moment mindestens 400% höher als in diesem Modell...

uwesterr commented 4 years ago

die Berechnung der Krankenhaus wird erst dann aussagefähig wenn wir reale Daten zum modellieren haben, auf den input warten wir noch...