User Scripts

adeton

Abgleich Matrix mit
ADTEON Table Ranking Procedure
ChiSquare 100% module

Eingabedatei wie bei IPF.pl "dense" Format, wobei Untergrenze Spaltensumme gleich Obergrenze Spaltensumme sein muss.

ag_horizontal

Lese strm-Datei oder beliebig andere Datei und ordne letzte Index-Spalte AG in Ausgabedatei nebeneinander an.
Dadurch reduziert sich die Anzahl Zeilen um den Faktor 100 und man kann sehr große strm-Dateien noch in EXCEL bearbeiten.
Zurückwandeln mit ag_vertikal.pl (siehe auch dim_horizontal.pl)

ag_vertica

Lese mit Altersgruppen nebeneinander und ordne sie in Ausgabedatei untereinander an.

Umkehrprozess von ag_horizontal

assi

Experiment alternative Methodenwahl Noch moderner wäre die Methodenwahl in einen chat bot zu integrieren "hey SIKURS, mach mal ne Variantenprognose mit Zielwerten und Rückbau" ;-)

bew2pivot

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

bubble_chart

Experiment mit Google Chart Tool Bubble Chart (Blasendiagramm)

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
IDGebietskennung oder Gebietsname
LebenserwartungAttribut für die X-Achse
GeburtenrateAttribut für die Y-Achse
AggregatSchlüssel oder Name
BevölkerungAttribut für die Blasengröße

count

Zähle Sätze einer csv-Datei mit Minimalstatistik

dim_horizontal

Lese strm-Datei oder beliebig andere Datei, ändere optional die Reihenfolge der Spalten und ordne die letzte Index-Spalte in Ausgabedatei nebeneinander an.
Dadurch reduziert sich die Anzahl Zeilen (bei ag um den Faktor 100) und man kann sehr große strm-Dateien noch in EXCEL bearbeiten.
Beispiel für sinnvolle Reihenfolge Spalten
1 2 3 4 5 6 7Jahr von nach bg gg ag Wert
4 5 6 1 2 3 7bg gg ag Jahr von nach Wert
(siehe auch ag_horizontal.pl)

global_prognose

Experiment einer globalen Prognose (d.h. ohne Differenzierung nach Alter, Geschlecht und Bevölkerungsgruppen) mit Hilfe gewöhnlicher Differentialgleichungen.
Die Parameter entsprechen der Grundidee des SIKURS-Prognosebaukastens, dass Geburten, Sterbefälle und Wegzüge als Raten und die Zuzüge absolut vorgegeben werden:
B0Ausgangsbevölkerung Jahres t0 (*)
gGeburtenziffer - Anzahl Geburten pro 1000 Einwohner bezogen auf ein Jahr (*)
sSterbeziffer - Anzahl Sterbefälle pro 1000 Einwohner bezogen auf ein Jahr (*)
wAußenwegzugsziffer - Anzahl Außenwegzüge pro 1000 Einwohner bezogen auf ein Jahr (*)
ZAußenzuzug absolut pro Jahr (*)
t0Jahresbezug Ausgangsbevölkerung B0
tfEndjahr der Prognose
(*) Werte (in Deutschland) mit Dezimalkomma vorgeben !
Zuerst wird die Änderungsrate der Bevölkerung berechnet:
r = (g-s-w)/1000
Damit kann man die Differentialgleichung aufstellen:
B' = r*B + Z
mit der analytischen Lösung:
B(t) = (B0+Z/r)*er*(t-t0)-Z/r
und dem stabilen Grenzwert der Bevölkerung
Bs = -Z/r bei r < 0 für t→∞ (bzw. r > 0 für t→-∞)
In der Plot-Ausgabe werden wahlweise
  1. der Funktionsgraph der analytischen Lösung B(t)
  2. die Werte einer Näherungslösung mit der Runge-Kutta Methode
  3. der stabile Grenzwert Bs
angezeigt.
Die Skalierung der Y-Achse und die Größe der Graphik kann man vorgeben.
Die Lesbarkeit der Graphik kann man verbessern, wenn man B0 und Z in einer geeigneten Einheit (z.B. 80.8 für die Bevölkerung Deutschlands in Mio.) angibt.

Die Einzelbewegungen pro Jahr werden aus der Differenz End - Startbevölkerung rückgerechnet.

Für eine globale Prognose mit Kapazitätsgrenze siehe Verhulst (/trunk/vc/verhulst.cpp)

gompertz

Modelierung Sterberate nach Gompertz
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.
Fehlt in der Eingabedatei der Wert von Altersgruppe 30 oder ist s(30) = 0, dann kann für diese demografische Gruppe kein 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)

  1. Raten wurden für alle Altergruppen berechnet
  2. oberste Altersgruppe bedeutet "99 und mehr" und würde das Ergebnis verfälschen

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

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:

AlterParameterHinweis
0 -9s(a)exponentiell fallend (fit a*exp(b*x)+c mit Startwert a=0.1 b=-1 c=0.1)
alterativ 10 Einzelwerte vorgeben
10 -29Mittelwert(s(i))weitgehend konstant
30 -98s(30)*exp(G*(a-30))Verdopplung alle MRDT Jahre
99s(a)für 99 und älter (z.B. aus amtlicher Sterbetafel, oder m: 0,4, w: 0,3)
siehe auch Extras/Eigene Scripts/Start/weibull.pl

hello

Einfaches benutzerspezifisches Perl-Script

Indikator

Berechne Indikatoren von Dateien mit demografisch differenzierten Bevölkerungszahlen, wie z.B. Die Indikatoren beziehen sich auf Die Ausgabedateien lassen sich mit Visualisierung|Zeitreihen|X/Y-Plot mit den möglichen Zeitachsen Jahr und Altersgruppe visualisieren

info

Ausgabe von Systeminformation wie Anwendungsverzeichnis und sikurs.ini

IPF

Iterative Proportional Fitting

Folgende Beispiel-Wanderungsmatrix

1700
29,7564,87
05,38
200120Untergrenze Spaltensumme
200infObergrenze 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.

Parameter

Eingabeformat

1 = "dense" oder 2 = "sparse" siehe oben

Maximale Anzahl Iterationen (iter)

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.

Abbruchschwelle (eps)

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.

Gleichheitstoleranz (q)

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.

Protokollumfang

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

Eingabedatei

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))

lebenserwartung

Berechne Lebenserwartung (Summe(akkumulierte Überlebenswahrscheinlichkeit)+0,5) und Charakteristische Lebensdauer T nach Weibull aus einer strb-Datei
Vergleiche leicht abweichendes Verfahren in le_statis.pl

le_statis

Berechne differenzierte Lebenserwartung einer Datei mit Sterberaten (siehe STERBETAFEL 2014/2016)
Ergebnis weicht etwas vom vereinfachtgen Verfahren in lebenswerwartung.pl ab.

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
xq(x)p(x)l(x)d(x)L(x)T(x)e(x)

mikrosim

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

reorder_columns

Vertauschen von Spalten einer csv-Datei

 Beispiel:
 Eingabdatei  : 11;12;13;3,14
 Tauschbefehl : 2003;#2;#1;#4
 Ausgabedatei : 2003;12;11;3,14

scale

Skaliere alle Sätze einer Datei mit einem Faktor

treemap

Kacheldiagramm aus Basis-gem-Datei, Vergleichs-gem-Datei und reftyp mit Google Chart Tool Treemap

Dieses Kacheldiagramm visualisiert die Ebenen

  1. Untersuchungsraum
  2. Typ/Aggregat (eine wählbare Spalte aus reftyp)
    Achtung: die Schlüssel Typ/Aggregat und Gebiet müssen disjunkt sein, dies erreicht man z.B. durch den Präfix 'agg' oder 'tyg' vor Typ/Aggregat!
  3. Gebiet (Gebietskennzeichen aus reftyp)
der aktuellen Prognose.

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/2Anzahl angezeigte Ebenen
0/1Zusätzliche Hinweisebenen
können Sie Gebiet und Aggregat in einem Bild sehen.
Siehe auch
Visualisierung/Zeitreihen/Kacheldiagramm/aus gem+reftyp und
roadmap 012

treemap_csv

Kacheldiagramm (Beispiel Zensus 2011) aus einer csv-Datei z.B. 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
Snumerischer oder alphanumerischer Schlüssel für Gebiet oder Aggregat
VSchlüssel für zugehöriges Aggregat
GAttribut für Kachelgröße (z.B. Ausgangsbevölkerung)
FAttribut für Kachelfarbe (z.B. Bevölkerungs-Zu/Abnahme, Altenquotient, ...)
Die Aggregate haben keine Werte für Größe und Farbe, weil diese über die zugehörigen Gebiete aggregiert werden. Für die Aggregation des Farbattributs ist die Angabe, ob es sich um absolute oder prozentuale Änderungen handelt, notwendig.
Die Schlüssel für die Gebiete und Aggregate müssen eindeutig sein.
Aggregate können über beliebig viele Hierarchieebanen definiert werden (z.B. Ortsbezirk, Gemeinde/Stadt, Verwaltungsverband, Landkreis, Bezirk, Regierungsbezirk, Bundesland, ...)
siehe auch
Visualisierung/Zeitreihen/Kacheldiagramm/aus treemap.csv und roadmap 012

undef

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

varianten_indikator

siehe roadmap 069

weibull

Experiment mit Weibullverteilung w(t)=1-exp(-(((t-t0)/(T-t0))^b))
mit (in Worten der Zuverlässigkeitsanalyse)
w(t) = Ausfallwahrscheinlichkeit bzw. Ausfallhäufigkeit (normiert auf 1, in % mal 100)
t = Lebensdauervariable (Altersgruppe, Fahrstrecke, Einsatzdauer, Lastwechsel usw.)
T = Charakteristische Lebensdauer, bei der 63.2% der Einheiten ausgefallen sind (für t=T gilt H = 100% (1 - 1/e) = 63.2 % ).
b = Formparameter, Steigung der Ausgleichsgeraden im Weibull-Netz
t0 = ausfallfreie Zeit

Der Name der ausgewählten Datei bestimmt die Betriebsart Analyse oder Synthese

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)

zuaq_norm

Normiere eine zuaq Datei, so dass die Summen pro Typ 1 sind

zudq_norm

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