Read-only mirror of https://github.com/StataBS/Steuerstatistik — Kanton Basel-Stadt. Issues & pull requests at the source.
  • R 94%
  • Batchfile 6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-24 13:07:38 +02:00
data Refactor database schema references and improve folder structure for saving results 2026-05-26 17:00:48 +02:00
functions Remove unused functions and scripts: delete Webtabellen.R, steckbrief.R, and webtable_dumm.bat 2026-08-24 13:07:38 +02:00
output Add gitkeep 2026-02-19 16:29:54 +01:00
.gitignore Update .gitignore, enhance README, and add configuration files 2026-08-24 11:11:03 +02:00
generate_plausibility_interactive.r Refactor database schema references and improve folder structure for saving results 2026-05-26 17:00:48 +02:00
LICENSE Add MIT License to the project 2026-08-20 11:46:14 +02:00
README.md Update .gitignore, enhance README, and add configuration files 2026-08-24 11:11:03 +02:00
run_indicators.bat Update .gitignore, enhance README, and add configuration files 2026-08-24 11:11:03 +02:00
run_indicators_interactive.R Refactor database schema references and improve folder structure for saving results 2026-05-26 17:00:48 +02:00
run_plausibility.bat Refactor database schema references and improve folder structure for saving results 2026-05-26 17:00:48 +02:00
webtable_interactive.R Add new functions to calculate web tables 2025-05-13 11:58:25 +02:00

Steuerstatistik Basel-Stadt

Ein vollständiges R-basiertes Auswertungssystem zur automatisierten Berechnung steuerstatistischer Indikatoren sowie zur Durchführung von Plausibilitätsprüfungen für Steuergrundaggregate des Kantons Basel-Stadt.

Das Projekt wurde so aufgebaut, dass es sowohl von fachlichen Anwendern ohne R-Kenntnisse per Batch-Datei als auch von Entwicklern direkt in RStudio genutzt werden kann.


📌 Projektüberblick

Das System besteht aktuell aus zwei zentralen Modulen.

📊 Steuerindikatoren

Automatisierte Berechnung und Export einer Vielzahl steuerstatistischer Indikatoren (id_XXXX.tsv).

Die Indikatoren umfassen unter anderem:

  • Entwicklung von Steuererträgen
  • Einkommens- und Vermögenskennzahlen
  • Wohnviertelvergleiche
  • Veranlagungsanzahlen
  • Klassenverteilungen
  • Quellensteuerindikatoren
  • langfristige Zeitreihenanalysen

Alle Ergebnisse werden als .tsv-Dateien exportiert.

🔍 Plausibilisierungsmodul

Automatisierte Erstellung von Excel-Dateien zur fachlichen Plausibilisierung der Steuergrundaggregate:

  • Reineinkommen
  • Einkommen steuerbar
  • Einkommenssteuerbetrag
  • Reinvermögen
  • Vermögen steuerbar
  • Vermögenssteuerbetrag

Das Modul erstellt zwei zentrale Ausgabedateien:

Prozentuale Abweichungsanalyse zwischen mehreren Jahren

  • automatische Prozentvergleichsblöcke
  • farbliche Hervorhebung aller Abweichungen oberhalb einer Toleranzschwelle
  • integrierte Konsolenreports über auffällige Veränderungen

Grundaggregate je Jahr

  • vollständige Tabellenstapel aller verwendeten Jahresgrunddaten
  • Einkommen und Vermögen getrennt dargestellt

📁 Projektstruktur

Steuerstatistik/
│
├── functions/                               # Alle Funktionsdateien
├── Output/                                  # Automatisch erzeugte Ergebnisdateien
├── run_indicators_interactive.R             # Entwickler-Testskript Indikatoren
├── generate_plausibility_interactive.R      # Entwickler-Testskript Plausibilisierung
├── run_indicators.bat                       # Benutzerstart Indikatoren
├── run_plausibility.bat                     # Benutzerstart Plausibilisierung
└── README.md

💾 Ergebnisablage

Alle erzeugten Dateien werden automatisch in einer gemeinsamen Monatsstruktur gespeichert:

Output/YYYY/MM/

Dadurch werden sämtliche Berechnungsläufe chronologisch sauber archiviert.


▶️ Nutzung des Projekts

👤 Nutzung für Fachanwender (ohne RStudio)

Das Projekt kann vollständig über Batch-Dateien per Doppelklick ausgeführt werden.

Indikatoren starten

run_indicators.bat

Benutzereingaben:

  • gewünschtes Steuerjahr
  • gewünschte Indikator-ID(s)

Beispiel:

2023
6901,6902,6906

Plausibilisierung starten

run_plausibility.bat

Benutzereingaben:

  • mehrere Vergleichsjahre (mindestens zwei)
  • Toleranzschwelle in Prozent

Beispiel:

2020,2021,2022
10

👨‍💻 Nutzung für Entwickler (RStudio / Debugging)

Für Entwickler stehen interaktive Testskripte zur Verfügung.

Diese ermöglichen:

  • schnelles Debugging einzelner Module
  • direkte Anpassung der Eingabeparameter im Skript
  • Ausführung ohne Batch-Datei
  • einfachere Fehlersuche in RStudio

⚙️ Automatische Rscript-Erkennung

Beide Batch-Dateien wurden so erweitert, dass Rscript.exe automatisch gesucht wird.

Dadurch muss der Pfad zu R nicht mehr manuell in der Batch-Datei eingetragen werden.

Zusätzlich wird das Projektverzeichnis automatisch relativ zur Batch-Datei erkannt.

Das bedeutet:

  • das Projekt kann an einen beliebigen Speicherort verschoben werden
  • die Batch-Dateien bleiben trotzdem lauffähig

🛠️ Voraussetzungen

Vor der ersten Nutzung müssen folgende Punkte eingerichtet werden.

1. R installieren

Benötigt wird eine lokale Installation von:

  • R
  • Rscript.exe

2. Datenbankverbindung konfigurieren

Vor der ersten Nutzung muss die Vorlagedatei angepasst werden:

functions/config.txt

Diese Datei muss kopiert oder umbenannt werden zu:

functions/config.R

In config.R müssen anschliessend die projektspezifischen Einstellungen gepflegt werden, insbesondere:

  • server = Name oder Adresse des Datenbankservers
  • database = Name der verwendeten Datenbank

3. Erforderliche R-Packages

Die benötigten Pakete werden über bootstrap_packages.R automatisch geladen bzw. installiert.


🧪 Entwicklerhinweise

Neue Indikatoren hinzufügen

Neue Indikatoren werden als einzelne Dateien im Ordner functions/ abgelegt:

id_XXXX.R

Zusätzlich muss die neue ID in functions/calculate_indicator.R in den Vektor valid_indicator_ids aufgenommen werden.

Erst danach kann die neue ID über die Batch-Datei oder über run_indicators_interactive.R ausgewählt und ausgeführt werden.


📈 Verfügbare Steuerindikatoren

Aktuell stehen folgende steuerstatistische Indikatoren zur Verfügung:

ID Beschreibung
6897 Entwicklung des Ertrags aus Steuern
6899 Summe von Reineinkommen, Reinvermögen sowie Einkommen- und Vermögenssteuer (Indexreihe über 10 Jahre)
6900 Mittelwert und Median des Reineinkommens sowie Summe der Einkommenssteuer (Zeitreihe über 10 Jahre)
6901 Mittelwert des Reineinkommens nach Wohnviertel (10 Jahres-Vergleich)
6902 Median des Reineinkommens nach Wohnviertel (10 Jahres-Vergleich)
6903 Mittelwert und Median des Reinvermögens sowie Summe der Vermögenssteuer (Zeitreihe über 10 Jahre)
6904 Mittelwert des Reinvermögens nach Wohnviertel (10 Jahres-Vergleich)
6905 Median des Reinvermögens nach Wohnviertel (10 Jahres-Vergleich)
6906 Einkommen- und Vermögenssteuer sowie Anzahl Veranlagungen nach Wohnviertel (10 Jahres-Vergleich)
6907 Einkommenssteuer nach Einkommensklassen
6908 Vermögenssteuer nach Vermögensklassen
6909 Gesamtertrag aus Einkommen- und Vermögenssteuer nach Wohnviertel inkl. Vergleich mit Basel-Stadt
6911 Quellensteuerertrag und Anzahl Veranlagungen nach Wohnviertel (10 Jahres-Vergleich)
6912 Quellensteuerertrag und Anzahl Veranlagungen nach Bezugskategorie (10 Jahres-Vergleich)
6980 Gesamtsteuerertrag (Einkommen + Vermögen) pro Wohnviertel
6981 Ertrag aus Grundstück-, Kapital- und Gewinnsteuern (Zeitreihe über 10 Jahre)
6982 Gesamtsteuerertrag nach Steuerbetragsklassen
6983 Gesamtsteuerertrag inkl. satzbestimmendem Gewinn nach Steuerbetragsklassen

🌍 Open-Source Nutzung ohne produktive Datenbank

Dieses Repository wurde so aufgebaut, dass der vollständige Projektcode öffentlich bereitgestellt werden kann, ohne Zugriff auf produktive Steuerdaten zu benötigen.

Für Demonstrations-, Test- und Entwicklungszwecke können lokale SQLite-Beispieldatenbanken verwendet werden.

Enthaltene Beispieldatenbanken

Im Ordner data/ können folgende SQLite-Dateien abgelegt werden:

data/
├── sas.sqlite
├── sasqst.sqlite
└── JurP.sqlite

Diese Datenbanken enthalten ausschliesslich synthetische bzw. fiktive Daten, orientieren sich jedoch an der Struktur der produktiven Umgebung.

Dadurch können:

  • Batch-Dateien getestet werden
  • Indikatoren berechnet werden
  • Plausibilisierungstabellen erzeugt werden
  • Entwickler das Projekt lokal ausführen
  • externe Nutzer den gesamten Workflow nachvollziehen

Umfang der Beispieldaten

Die bereitgestellten SQLite-Datenbanken enthalten vollständig synthetische Daten für die Steuerjahre 2013 bis 2024.

Damit stehen insgesamt 12 Steuerjahre für Tests zur Verfügung. Dies ermöglicht insbesondere auch das Testen von Indikatoren mit mehrjährigen Zeitreihen und 10-Jahres-Vergleichen.

Die enthaltenen Werte sind vollständig fiktiv und dienen ausschliesslich zu Demonstrations-, Test- und Entwicklungszwecken.

Anpassung von config.R

Für die Nutzung der SQLite-Beispieldatenbanken kann functions/config.R beispielsweise wie folgt konfiguriert werden:

library(DBI)
library(RSQLite)

global_path <- "Output"

db_mode <- "sqlite"

sqlite_sas <- "data/sas.sqlite"
sqlite_sasqst <- "data/sasqst.sqlite"
sqlite_jurp <- "data/JurP.sqlite"

Die produktive SQL-Server-Umgebung bleibt dadurch unverändert.
Für Open-Source-Nutzung müssen ausschliesslich config.R angepasst werden.