set title "Entwicklung und Prognose der SARS-CoV-2 Fallzahlen für Deutschland\n{/*0.9 Datenquelle: https://hgis.uw.edu/virus/}\n{/*0.9Parameterschätzung: eigene Rechnung}" # Datum verarbeiten set timefmt "%d.%m.%Y" # wird später für Skalierung benötigt stats 'Fallzahlen_DE.txt' using 3 # fit-Funktion unlimited, exponentiell exponentiell(x) = a_exp * exp( b_exp * x) + c_exp # Schätzwerte für fit a_exp = 150 b_exp = 0.15 c_exp = -1000 fit exponentiell(x) "Fallzahlen_DE.txt" every::::32 using 1:3 via a_exp, b_exp, c_exp # fit-Funktion linear, nur für die letzten 7 Tage # Anstieg entspricht dem Mittelwert der letzten 7 Tage linear_letzte_7(x) = a_lin * x + b_lin # Schätzwerte für fit a_lin = 2000 b_lin = 30000 fit linear_letzte_7(x) "Fallzahlen_DE.txt" every::STATS_records-7 using 1:3 via a_lin, b_lin # fit-Funktion logistisch # https://de.wikipedia.org/wiki/Logistische_Funktion logistisch(x) = beta_0 / ( 1 + beta_1 * exp( -beta_2 * x)) # Schätzwerte für fit beta_0 = 150000 # Maximum beta_1 = 600 # X-Offset beta_2 = 0.2 # Anstieg fit logistisch(x) "Fallzahlen_DE.txt" using 1:3 via beta_0, beta_1, beta_2 # Grenzwert einzeichnen set arrow beta_0 from graph 0.33,first beta_0 to graph 1,first beta_0 nohead lc rgb "blue" # fit-Funktion Glockenkurve # https://de.wikipedia.org/wiki/Normalverteilung glocke(x) = scale / sqrt( 2 * pi * sigma ** 2) * exp( - ( x ** k - mu) ** 2 / ( 2 * sigma ** 2)) # Schätzwerte für fit scale = 15000 sigma = 1.1 mu = 2.1 k = 0.1 fit glocke(x) "Fallzahlen_DE.txt" using 1:4 via sigma, mu, scale, k # fit-Funktion linear, nur für die letzten 7 Tage # Abfall entspricht dem Mittelwert der letzten 7 Tage down_letzte_7(x) = a_down * x + b_down # Schätzwerte für fit a_down = -1800 b_down = 170000 fit down_letzte_7(x) "Fallzahlen_DE.txt" every::STATS_records-7 using 1:4 via a_down, b_down # Anstiege angeben set label 1 sprintf("{/Symbol D}=%d", a_lin) at STATS_records-1, linear_letzte_7(STATS_records)*1.1 left set label 2 sprintf("{/Symbol D}=%d", a_down) at STATS_records-1, down_letzte_7(STATS_records-1)*1.1 left # y-Skalierung anpassen, bei logscale yrange [10:... #set logscale y set yrange [0:1.3*beta_0] # x-Skalierung anpassen, immer 7 Tage im Vorraus set xrange[:STATS_records+7] set grid # Legende set key inside top left box set xtics rotate ("24.2.2020" 3, "2.3.2020" 10, "9.3.2020" 17, "16.3.2020" 24, \ "23.3.2020" 31, "30.3.2020" 38, "6.4.2020" 45, "13.4.2020" 52, \ "20.4.2020" 59, "27.4.2020" 66, "4.5.2020" 73) #set xtics 172800 rotate by 90 offset 0,-2 timedate plot "Fallzahlen_DE.txt" using 1:3 with points title "kumuliert", \ exponentiell(x) lc rgb "red" title "exponentiell", \ linear_letzte_7(x) lc rgb "magenta" title "7-Tage-AVG", \ logistisch(x) lc rgb "blue" title "logistisch", \ "Fallzahlen_DE.txt" using 1:4 with points pointtype 2 title "akut", \ glocke(x) lc rgb "green" title "akut (fit)", \ [43:] down_letzte_7(x) lc rgb "green" title "akut (7-Tage-AVG)" pause -1