Last modified: 5.9.2024
Das SIKURS Modell für globale Entwicklung als Differentialgleichung:
Extras/Eigene Scripts/Start/ global_dst.pl Ableitung Input aus Verzeichnis mit Statistikdatensätzen global_makro.pl Ableitung Input aus Verzeichnis mit Makrodateien global_prognose.pl Prognose mit Input: B0 = Ausgangsbevölkerung g = Geburtenziffer (Geburten pro 1000 Einwohner) (Geburtenziffern Deutschland 2016) s = Sterbeziffer (Sterbefälle pro 1000 Einwohner) w = Außenwegzugsziffer (Außenwegzüge pro 1000 Einwohner) Z = Zuzug absolut pro Jahr r = (g-s-w)/1000 # Ratenbilanz y' = ry + Z # Differentialgleichung y(t) = (y0+Z/r)*er*t-Z/r # analytische Lösung Bs = -Z/r # stabile End-(Start-)bevölkerung bei r < 0 (r > 0) und t → ∞ Beispiel 1/2/3: 80.8 Mio. Ausgangsbevölkerung 2013 (y0) 10 Geburtenziffer g 20 Sterbeziffer s 30 Außenwegzugsziffer w 1 2 3 Beispiel 2 3.232 4 Mio. Zuzug pro Jahr Z 50 80.8 100 Mio. stabile Endbevölkerung Bs mit Annäherung von Oben und Unten
# Außenzuzugsvariantenprognose mit jeweis stabiler Endbevölkerung B0 = 82.5 # Mio Ausgangsbevölkerung g = 8.54 # Geburten pro 1000 Einwohner s = 11.04 # Sterbefälle pro 1000 Einwohner w = 19.58 # Außenwegzüge pro 1000 Einwohner r = (g-s-w)/1000 # Ratenbilanz x0 = 2022 # Ausgangsjahr array Z[4] = [ 1.5, 1.7, 1.85, 2.0 ] # Szenarien für Außenzuzug set title "B'=rB+Z B_0=82.5 g=8.54 s=11.04 w=19.58 r=(g-s-w)/1000=-0.02208" set term wxt 0 size 900,600 enhanced set ylabel 'Mio Einwohner' set xrange[2022:2121] set yrange[*:*] plot \ for [i=1:4] B(x) = (B0+(Z[i]/r))*exp(r*(x-x0))-(Z[i]/r), B(x) lt i title sprintf("Z%d=%g %g", i, Z[i], -Z[i]/r),\ for [i=1:4] l(x) = -Z[i]/r, l(x) lt i notitle pause mouseEin weiteres globales Modell ist die Logistic Equation deren Lösung bei negativer Ratenbilanz r ebenfalls gegen 0 strebt, bei positiver Ratenbilanz jedoch gegen eine Kapazitätsgrenze K.
Für Bausteinkombinationen ohne Zielwerte für Geburten, Sterbefälle oder
Zielbevölkerung startet man eine demografisch differenzierte Prognose
durch Lösung eines Systems partieller Differentialgleichungen mit
der Option ODE
Siehe
SIKURS Hauptmaske/Einwohner/Prognose/Berechnen/?/Notiz/Optionen
System von g * bg * gg * ag partiellen Differemtialgelichungen:
B(g,bg,gg,ag,t0) sei die Bevölkerung eines Gebiets g,
Bevölkerungsgruppe bg, Geschlecht gg und Altersgruppe ag zum Zeitpunkt t0.
B(g,bg,gg)'(ag,t) = f(B(g,bg,gg),ag,t) + Z(g,bg,gg,ag,t)
d.h. wir benötigen eine Funktion f, abhängig von der Bevölkerung B(g,bg,gg),
der Altersgruppe ag und vom Zeitpunkt t, zur Berechnung einer Gesamtrate.
Diese Gesamtrate setzt sich aus der Summe der Einzelraten zusammen:
!ODE 0
) entspricht dem
einschrittigen Euler Polygonzugsverfahren für Differentialgleichungen.[2018 ] Erstes Prognosejahr [2029 ] Letztes Prognosejahrersetzt durch
[ 6 ] Prognoseintervall von m Monaten [2018.06] Erster Prognoseabschnitt [2029.01] Letzer Prognoseabschnittkann man monatliche, vierteljährliche, dritteljährliche, halbjährliche, jährliche Prognoseintervalle vorgeben.
Zum Test dieser Variante wurde folgende vereinfachte Steuerung eingebaut:
Einwohner/Prognose/Berechnen Notiz !option($MONATE 6 $GEMALL 2 $ZRFN '')Dies legt eine Prognoseintervall von 6 Monaten (halbjährlich) fest,
gem.csv: 200902;001;1;1;00;123 ... 201902;732;2;2;99;31,2Die Eingabedateien muss man auf 200 "Halbjahresaltergruppen" erweitern, bei Beständen mit dem jeweils halben Bestand in den 2 Halbjahren, bei Raten auf mit der Hälfte für den Halbjahresprognoseabschnitt.
[2018 ] Erstes Prognosejahr [2037 ] Letztes PrognosejahrDies bewirkt 20 Halbjahresschritte der Prognose, d.h. bis 2 Jahreshälfte 2027.
Befehle nach der Prognose: # aggregiere gem.csv mit 6 Monaten in zr_gem.csv mit 1 Jahr my $agg = [q(substr($i,4) eq q(01)?-1:substr($i,0,4)),q($i),q($i),q($i),q(int($i/2))]; my $par = { subset => 4 }; zeitreihe('gem', 'zr_gem_1', $agg, $par);
Es wurden 3 Beispiele mit gleichen Eingabedaten aber unterschiedlicher Berechnungsmethode bereitgestellt.
.../beispiel/regtest/K3T1.ini
K3T1.ini
mit 200 Halbjahresaltergruppen und Halbjahres-Prognoseintervall.
.../beispiel/regtest/K6T1_ode.ini
zuvg1992.csv
ausdifferenziertroadmap 098 Ableitung der Sterblichkeit aus der amtl. Statistik Herr Stein behandelt den Teilaspekt: Abb. 3.2: Beispiel für einen „Überbau“ im Bevölkerungsbaum aufgrund zu niedrig gesetzter Sterberaten in den höchsten Altersklassen im Anwendungsorientierten Handbuch, Kapitel: 3.5 Übernahme amtlicher Sterberaten dort schlägt er als Sterberate für die Altersgruppe 99 vor 0,649 = 0,001 ^ (1/16). Meiner Ansicht nach ist das nicht die Sterbe- sondern die Überlebensrate, wenn nach 16 Jahren einer von tausend übrig bleiben soll, d.h. die Sterberate sollte die Differenz zu 1 sein: 0,351 = 1 - 0,001 ^ (1/16). Dies ist dann auch von den von Herrn Lindemann vorgeschlagenen Werten näher m: 0,4 w: 0,3
Merkmale aus Eingabedatei [-1 ] Wert (Vorzeichen "-" für -1 für letzte Spalte)
Alterkalssen Zusammenfassung [ grob] Altersklassen Tab. 1 [fein] Altersklassen tab. 3 [superfein]
blackbox_test
für Überprüfung SIKURS-Excel-Beispiele unter SIKURS 10.5
Aus meinen Erfahrungen mit einem ählichen Programm für die Stadt Wien sehe ich folgende Möglichkeiten:
sikurs.ini
falls sie SIKURS-Systemeinstellungen ändern wollen und<version>.ini
für eine Prognoseversion version
mit einem Texteditor
C:\sikurs\App\sikern64.exe
sikern.bat
im Eingabedatenverzeichnis der Prognose:
:: sikern.bat @echo off set w=C:/sikurs set d=C:/sikurs/beispiel/baustein/ set v=T1 %w%/App/sikern64.exe sikern -d %d% -v %v% -w %w% start %d%%v%/prot/index.htmldabei ist SIKURS im Verzeichnis
-w C:/sikurs
installiert,
und rechnet die Version -v T1
der Datei T1.ini
im Eingabedateiverzeichnis -d C:/sikurs/beispiel/baustein/
und das Prognoseprotokoll C:/sikurs/beispiel/T1/prot/index.html
reftyp.csv
aufhebenbaustein/I1K3P2T1
und !option($ZZA_B 1)
) ist.reftyp.csv
durch Clusteranalyse von Geburtenziffer, Sterbeziffer, ... auѕ dem Statistikdatensatz automatisiert werden
SELECT sum(G01::INTEGER) / count(G01) + 0.5 FROM dstbew WHERE NOT G01 = ' '; 31.600274725274726
GEBAMyyyy.csv
GA (Geburten nach Alter der Mutter) abgeleitet.gebamyyyy.csv
GA in wählbarer
Differenzierung ab
Prüfe Abweichung vom Zielwert < 0,002% (2*100*1e-05(EPS)): 1: 3445,20545779705 ≤ 3445,16480513355 ≤ 3445,20545779705 ? 0,0406527 (1,17998e-05%) unter Untergrenze 2: 729,79454220295 ≤ 730,592107437284 ≤ 731,794542202954 ? 3: 700 ≤ 700 ≤ 700 ?
Für Bausteine N1-N4 gibt es im Verzeichnis beispiel\baustein folgende Tests:
A1B1D1E2I1K1N1P1R1S1T1Y1.ini A1B1I1K1N1P2T1.ini A1B1K1N1T1.ini A1B1K4N1T1.ini A1D1E1I1K1N1T1.ini A1I1K1N1P2T1.ini A1K1N1T1.ini B1E1I1K1N1P1T1.ini B1I1K1N1P2T1.ini B1K1N1T1.ini B1K2N2T1.ini B1D1I1K3N3T1.ini B1K3N3T1.ini B1D1E1I1K4N4T1.ini B1D1I1K4N4R2T1W1.ini B1K4N4R1T1.ini B1K4N4T1.ini B1K5N4T1.ini