User Scripts |
Eingabedatei wie bei IPF.pl "dense" Format, wobei Untergrenze Spaltensumme gleich Obergrenze Spaltensumme sein muss.
Lese mit Altersgruppen nebeneinander und ordne sie in Ausgabedatei untereinander an.
Umkehrprozess von ag_horizontal
Lese Datei bew, bewagg, bewgem (aber nicht bewgemagg) und ordne nebeneinander liegende Bewegungsspalten in Ausgabdatei mit neuer Spalte Bewegungsart untereinander an.
Diese Anordung eignet sich für Pivot-Tabellen oder z.B. Visualisierung/Zeitreihen/Histogramm
Der Benutzer erstellt eine CSV-Datei (z.B. mit Daten aus dem Tool Indikatoren)
"Korrelation Lebenserwartung mit Geburtenrate" ID ; "Lebenserwartung"; "Geburtenrate"; "Aggregat"; "Bevölkerung" 101; 80,41 ; 1,48 ; Ost ; 3728 102; 81,59 ; 1,62 ; Ost ; 4356 103; 79,65 ; 1,53 ; Ost ; 2873 201; 76,44 ; 1,92 ; West ; 1743 202; 74,71 ; 2,31 ; West ; 2165
ID | Gebietskennung oder Gebietsname |
---|---|
Lebenserwartung | Attribut für die X-Achse |
Geburtenrate | Attribut für die Y-Achse |
Aggregat | Schlüssel oder Name |
Bevölkerung | Attribut für die Blasengröße |
Zähle Sätze einer csv-Datei mit Minimalstatistik
1 2 3 4 5 6 7 | Jahr von nach bg gg ag Wert |
4 5 6 1 2 3 7 | bg gg ag Jahr von nach Wert |
B0 | Ausgangsbevölkerung Jahres t0 (*) |
---|---|
g | Geburtenziffer - Anzahl Geburten pro 1000 Einwohner bezogen auf ein Jahr (*) |
s | Sterbeziffer - Anzahl Sterbefälle pro 1000 Einwohner bezogen auf ein Jahr (*) |
w | Außenwegzugsziffer - Anzahl Außenwegzüge pro 1000 Einwohner bezogen auf ein Jahr (*) |
Z | Außenzuzug absolut pro Jahr (*) |
t0 | Jahresbezug Ausgangsbevölkerung B0 |
tf | Endjahr der Prognose |
Die Einzelbewegungen pro Jahr werden aus der Differenz End - Startbevölkerung rückgerechnet.
s(a) = s(30)*exp(G*(a-30)) | 30 ≤ a < 99 mit s(a) : Sterberate Alter a G : Gompertz Sterbekoeffizient (~0,08) MRDT = log(2)/G: mortility rate doubling time (~7-9 Jahre)Wenn in der Eingabedatei Altersgruppen fehlen, werden diese Altersgruppen bei der Berechnung des Sterbekoeffizienten
G
nicht berücksichtigt,
d.h. die Berechnung liefert das gleiche Ergebnis, wie wenn die fehlende
Sterberate der Altergruppe den Wert der Gompertz Formel an dieser
Altergruppe hätte.
Wenn die Eingabedatei Sterberaten mit dem Wert 0 enthält, werden diese
bei der Berechnung berücksichtigt und reduzieren den Wert G
.
Wurde die Sterberate der Eingabedatei als Quotient Sterbefälle/Bestand
berechnet, sollte bei 0 Sterbefällen:
bei 0 Bestand keine Sterberate, bei positivem Bestand Sterberate 0
vorgegeben werden.G
berechnet werden.
Der Sterbekoeffizent G
wird mittels Ausgleichsrechnung an die
Sterberaten der Altersgruppen 30 bis (99 -ignore) angeglichen.
Sinnvolle Werte für ignore (ignoriere oberste Altersgruppe)
Mit den Werten s(30)
und G
können Sie die
Eingabedatei durch folgende idealisierte (geglättete) strb
-Datei
ersetzen:
strb2017.csv: #! expand(1) #tys;bg;gg;ag;Rate 1;1;1;00;0,0123 1;1;1;01;0,00145 ... 1;1;1;29;0,0001632 1;1;1;30..98;0,0001*exp(0,0872*($4-30)) 1;1;1;99;0,4 ...mit
0,0001
sei s(30)
(Sterberate der Altergruppe 30)
und 0,0872
sei G
(Gompertz Sterbekoefizient)
(zur MRDT 7,9401267
).#! expand(1)
bewirkt, dass die Eingabedatei
strb2017.csv
bei der Prognose in das Prognose-Unterverzeichnis
expandiert wird, d.h. alle berechneten Sterberaten der Altersgruppen
30 bis 98 enthält.
Als Plausibilitätskontrolle kann man prüfen, ob
G ~ 0.08
ist
MRDT
im Intervall 7-9 Jahre liegt
Mit dieser Methode könnte man eine Glättung und Extrapolation der 100 Parameter (s(0) .. s(99)) der Sterberaten durch Reduktion auf 8 Parameter durchführen:
Alter | Parameter | Hinweis | |
---|---|---|---|
0 - | 9 | s(a) | exponentiell fallend (fit a*exp(b*x)+c mit Startwert a=0.1 b=-1 c=0.1) alterativ 10 Einzelwerte vorgeben |
10 - | 29 | Mittelwert(s(i)) | weitgehend konstant |
30 - | 98 | s(30)*exp(G*(a-30)) | Verdopplung alle MRDT Jahre |
99 | s(a) | für 99 und älter (z.B. aus amtlicher Sterbetafel, oder m: 0,4, w: 0,3) |
Einfaches benutzerspezifisches Perl-Script
Folgende Beispiel-Wanderungsmatrix
170 | 0 | |
29,75 | 64,87 | |
0 | 5,38 | |
200 | 120 | Untergrenze Spaltensumme |
---|---|---|
200 | inf | Obergrenze Spaltensumme |
kann als csv-Eingabedatei 2 verschiedene Formate haben:
"dense" als 2 dimensionale Matrix:
# 1 ; 2 ;# Kommentare pro Zeile
170 ; 0 ;# \
29,75; 64,87 ;# > 3 * 2 Matrix
0 ; 55,38 ;# /
200 ;120 ;# Untergrenze Spaltensumme
200 ;inf ;# Obergrenze Spaltensumme
"sparse" als 2 oder mehrdimensionale Matrix
#von;nach;bg;gg;ag;Wert
1; 1; 1; 1; 0; 170
1; 2; 1; 1; 0; 0
2; 1; 1; 1; 0; 29,75
2; 2; 1; 1; 0; 64,87
3; 1; 1; 1; 0; 0
3; 2; 1; 1; 0; 55,38
*; 1;200;200 ;# Unter-, Obergrenze Spaltensumme 1, oder Zielwert: *;1;200
*; 2;120;inf ;# Unter-, Obergrenze Spaltensumme 2, oder Zielwert: *;2;150
1; *; 1; 1; 0; 170 ;# optionales Zeilenziel 1
2; *; 1; 1; 0; 94,62 ;# optionales Zeilenziel 2
3; *; 1; 1; 0; 55,38 ;# optionales Zeilenziel 3
Voreinstellung für Zeilenziele sind die Zeilensummen der Ausgangsmatrix. Bei Vorgabe von Zeilenzielen kann man für die Erreichung der Spaltenziele eine neutrale "Saatmatrix", z.B. aus lauter Einsen vorgeben.
Die Summe der Zeilenziele muss (bis auf Gleichheitstoleranz) zwischen der Summe der Unter- und Obergrenze Spaltensumme liegen.
Eine Obergrenze "inf" bedeutet "unendlich groß"
Die Ausgabedatei enthält die an die Spaltenziele und Zeilenziele (Zeilensumme der Ausgangsmatrix) angepasste Matrix.
Die Iteration wird abgebrochen, wenn das Maximum der absoluten Differenz der Spaltenabgleichsfaktoren zu 1 kleiner als die Abbruchschranke ist, oder die Anzahl Iterationen die Maxiamle Anzahl Iterationen erreicht.
1 = "dense" oder 2 = "sparse" siehe oben
Ist eps = 0, dann erfolgt der Abgleich mit exakt iter Iterationen, sonst ist iter (z.B. 100, 200, 1000, ...) lediglich eine Obergrenze, damit das Programm bei schlecht konditionierten Eingabedaten in keine Endlosschleife gerät.
Die Iteration bricht ab, wenn beim Zeilenabgleich
max(abs(1-f(1..r))) < eps
d.h. alle Zeilenkorrekturfaktoren fast genau 1 sind.
Sinnvolle Werte 1e-15, 5e-15, 1e-14, ... sind im Bereich der Genauigkeit von 64-Bit Gleitkommazahlen.
Wenn Summe Unter- (u) und/oder Summe Obergrenze (o) Spaltensumme gleich der Matrixsumme (m) sein sollen, so erreicht man dies bei nicht ganzzahligen Werten oft nicht exakt.
Deshalb erfolgt die Prüfung mit Gleicheitstoleranz q
min(m/u-1, o/m-1) > -q
Für Q sind Werte von 1e-15, ..., 5e-15, ..., 1e-14, ... sinnvoll.
1: Sammelmeldung
61 Iterationen, delta 6,66e-016, eps 1e-015, q 3e-15, verbose 1
2: zusätzlich Summe Matrix - Summe Untergrenze, Summe Obergrenze - Summe Matrix
Iterationsprotokoll
1 0,324657004154887
2 0,109602391611596
...
3: umfangreiches Protokoll, nur für kleine Eingabedatei geeignet
Bei einer SIKURS-Prognose mit Baustein I1/P1-4 kann man sich die Eingabedatei für den Abgleich der Binnenwanderung und Innenwanderung mit
Einwohner/Prognose/Berechen/Notiz
!option($IPF n)
n = 1: dense Format
2 = 2: sparse Format
als Datei IPF2021.csv ausgeben lassen und optional mit
Einwohner/Prognose/Berechen/Befehle/nach der Prognose
IPF 'IPF2021', 'IPF2021_ipf', { format => 2, iter => 3, eps => 0, verbose => 1 };
als Datei IPF2021_ipf.csv abgleichen lassen
Alternativ Abgleich durch
adeton.pl (ADETON Verfahren)
.../IPF/IPF.htm (mit sce (Superkompensationsexponent))
Legende
Vollendetes Alter in Jahren | Sterbe- | Überlebens- | Überlebende im Alter x | Gestorbene im Alter x bis unter x+1 | Von den Überlebenden im Alter x | Durchschnittliche Lebenserwartung im Alter x in Jahren | |
---|---|---|---|---|---|---|---|
wahrscheinlichkeit vom Alter x bis x+1 | bis zum Alter x+1 durchlebte | insgesamt noch zu durchlebende | |||||
Jahre | |||||||
x | q(x) | p(x) | l(x) | d(x) | L(x) | T(x) | e(x) |
Beispiel für die Ableitung einer GEM-Datei und REFTYP-Datei aus einem Statistikdatensatz dstbest für eine sehr kleinräumige Prognose auf Basis Haushalte durch eine ganzzahlige stochastische nicht deterministische Mikrosimulation mit der Monte-Carlo Methode.
Wählen Sie im Programm die Anzahl signifikanter Stellen s zwischen 0-7. Dies bestimmt den Umfang der REFTYP-Datei. Bei s = 0 besteht die REFTYP-Datei aus nur einem Eintrag, d.h. mit nur einem Typ Geburtenraten, Sterberaten, etc.
Beachte: In der GEM-Datei treten z.B. bei Zwilligen 2 Sätze mit gleichem Schlüssel auf. Das SIKURS-Einleseprogramm addiert diese zu einem Matrixelement mit Anzahl 2
Für eine Prognose brauchen Sie dann noch die je nach Bausteinkombination Raten, wie z.B. fruc und strb.
Bei der Prognose wählen Sie dann in der Startmaske
[1 0 ] Monte-Carlo Methode
Nach der Prognose können Sie mit Ergebnis/Zeitreihe/Start
Aggregation über
[substr(0,-13) ] Gebietskennzeichen
die Ergebnissse auf die ersten 3 Stellen von R02 hochaggregieren
Vertauschen von Spalten einer csv-Datei
Beispiel:
Eingabdatei : 11;12;13;3,14
Tauschbefehl : 2003;#2;#1;#4
Ausgabedatei : 2003;12;11;3,14
Skaliere alle Sätze einer Datei mit einem Faktor
Dieses Kacheldiagramm visualisiert die Ebenen
Die Größe einer Kachel entspricht der Bevölkerung
der Basis-gem-Datei eines Gebiets, Typs oder Aggregats.
Wenn die Namen der Basisdatei und Vergleichsdatei vor der Jahreszahl
gleich sind (z.B. gem
, dann entspricht
die Farbe der Zunahme/Abnahme der Vergleichsbevölkerung
gegenüber der Basisbevölkerung absolut oder prozentual.
Weicht der Name der Vergleichsdatei von der Basisdatei ab
(z.B. farbcode2020
), so wird das Farbattribut
(z.B. Altenquotient, Ausländeranteil, Frauenüberschuss, ...)
der Datei
farbcode.csv: #Jahr;Gebietskennzeichen;Farbattribut 2010;101;-3,14 2010;102;15,32 ...entnommen. Im Eingabefeld Änderung absolut/prozentual muss der Typ des Farbattributs angegeben werden.
Das Programm protokolliert Minimum/Maximum der Änderung der Bevölkerung bzw. des Farbattributs.
minColorValue sollte man größer als das Minimum angeben (dann bedeutet rot kleiner oder gleich minColorValue, maxColorValue sollte kleiner als das Maximum sein, dann bedeutet grün größer oder gleich maxColorValue.
mit
1/2 | Anzahl angezeigte Ebenen |
---|---|
0/1 | Zusätzliche Hinweisebenen |
treemap.csv
mit Google Chart Tool
Treemap
Der Benutzer wählt eine Kacheldiagrammbeschreibung, die nach folgendem Schema die Informationen Aggregathierarchie, Kachelgröße und Kachelfarbe bereitstellt:
treemap.csv: S ;V ;G ;F ;Kommentar UG ; ; ; ;Untersuchunsgebiet ohne Vaterknoten 1 ;UG; ; ;Aggregat 1 unter UG 2 ;UG; ; ; 11 ;1 ; ; ;11 unter 1 12 ;1 ; ; ; 21 ;2 ; ; ; 25 ;2 ; ; ; 111;11;70;-5,1;111 unter 11 mit 70 Kachelgröße und -5 Kachelfarbe 112;11;60; 7,0; 121;12;40; 3,1; 122;12;50;-8,9; 214;21;30; 6,5; 217;21;65; 9,0; 252;25;75;-2,2; 253;25;20; 4,2;Legende
S | numerischer oder alphanumerischer Schlüssel für Gebiet oder Aggregat |
---|---|
V | Schlüssel für zugehöriges Aggregat |
G | Attribut für Kachelgröße (z.B. Ausgangsbevölkerung) |
F | Attribut für Kachelfarbe (z.B. Bevölkerungs-Zu/Abnahme, Altenquotient, ...) |
Ersetze 'nan' und 'inf' mit besetztem Wert in niedriger Altersgruppe.
Dateien mit 'nan' und 'inf' entstehen bei 'SIKURS Eingabedaten berechnen'
bei Option
[1 ] undefinierte Werte
'nan': sowohl Zähler (Bewegung) als auch Nenner (Bestand) Null oder undefiniert
'inf': Zähler (Bewegung) ungleich Null und Nenner (Bestand) Null oder undefiniert
Der Name der ausgewählten Datei bestimmt die Betriebsart Analyse oder Synthese
96;0,25 # realistischer Wert 97;0,01 # zu gering, da aus zu kleiner Stichprobe berechnet 98;0 # Stichprobe ohne Sterbefall für Altersgruppe 99;1 # manuell zu hoch gesetztAusgabe der 11 Weibull-Parameter pn=0..10 pro demographischr Gruppe in
weibull_analyse.csv: #Jahr;TYS;BG;GG;A1;A2;A3;T1;b1;t1;c2;T3;b3;t3;s(99) 1992;1;1;1;9;29;99;-10,0;4,0;10;0,001;100,0;4,0;30;0,4 1992;1;1;2;9;29;99;-10,0;4,0;10;0,001;110,0;4,0;30;0,3 ...Wiederholt man die Weibull-Analyse mit mehreren strb2010.csv, strb2011.csv, ..., dann enthält
weibull_analyse.csv
bei der Option
"Datei anfügen" die Weibull-Parameter aller strb-Dateien.
weibull_synthese.csv
weibull_analyse.csv
z.B. durch
lineare Regression in die Zukunft zu extrapolieren und zusätzlich Annahmen
(Autor ist med. Laie) für die Entwicklung der Sterberaten in den Lebensphasen
weibull_synthese.csv
gelesen und
strb2019.csv: #tys;bg;gg;ag ;Weibull t T b t0 1; 1; 1; 0.. 4;weibull($4 (-235) 1,35 5) # fruh: fallende Kurve 1; 1; 1; 5..29;0,001 # mittel: konstant 1; 1; 1;30..98;weibull($4 104 5 30) # spät: steigende Kurve 1; 1; 1; 99;0,4 ...
Bei der Visualisierung der Sterberaten ist es (wie bei jeder Exponentialkurve) hilfreich eine logarithmische Skalierung für y-range zu wählen, z.B
0.00001:1 log 1e-5:1 log 2**-7:1 logscale y 2(siehe auch
set logscale
)
Mehr zur Modellierung von Sterbewahrscheinlichkeiten siehe Mehodik von Sterblichkeitsuntersuchungen oder Ausgleich von Sterbetafeln
Auswertungen mit logarithmischer Sklaierung zeigen, dass das Verfahren nicht
optimal ist, deshalb siehe
Extras/Eigene Scripts/Start/gomperts.pl (mit besseren Ergebnissen für Altersbereich 30 .. 98)
Normiere eine zuaq Datei, so dass die Summen pro Typ 1 sind
Normiere eine zudq Datei, so dass je nach Baustein K die Summen
K1: über TYA, BG, GG, AG
K2: je TYA über BG, GG, AG
K3: je TYA, BG über GG, AG
K4: je TYA, BG, GG über AG
gleich 1 sind
User Scripts |