Was ist eine Interpolation von Daten?

Interpolation ist eine Methode, um aus einer Reihe von strukturierten Daten möglichst aussagekräftige Informationen zu gewinnen. In der Informatik wie auch in der Mathematik kommen interpolierte Daten in unterschiedlichsten Anwendungen zum Einsatz.

Mit Hilfe der Interpolation lassen sich Messwerte als Punktwerte in einen Kurvenverlauf zu bestimmen, der dem tatsächlichen Verlauf des Graphen am nächsten kommt. Dabei wird kein neuer Wert ermittelt, sondern der bereits bekannte Datenwert verwendet, um den tatsächlichen Wert anhand der gespeicherten Werte abzuschätzen.

Wozu brauche ich eine Interpolation von Ausdrücken?

In anderem Zusammenhang wird die Interpolationsmethode auch in der Semantik von Programmiersprachen genutzt. Hierbei wird die Syntax einer Programmiersprache bei der Interpolation eines Ausdrucks in der Sprache genutzt.

Was ist eine String Interpolation?

Eine Interpolation einer Zeichenfolge ist in der Informatik eine Alternative zur Erstellung von verketteten Zeichenfolgen.

Interpolation und syntaktischer Zucker

In Programmiersprachen wie C# wird die String Interpolation auch als syntakischer Zucker bezeichnet.

Als syntaktischer Zucker werden in der Programmierung Syntaxerweiterungen in Programmiersprachen bezeichnet, die der Vereinfachung von Schreibweisen in Programmen dienen. Solche syntaktischen Erweiterungen sind alternative Schreibweisen, die als solche aber nicht die Ausdrucksstärke und Funktionalität der Programmiersprache erweitern.

Java und der Diamant-Operator als Beispiel für syntaktischen Zucker

Ein Beispiel für syntaktischen Zucker in Java ist der so genannte „Diamant-Operator“ <>. Dieser Operator wurde mit der Java-Version 7 eingeführt. Dabei leitet der Programmoperator den generischen Typ des zu erstellenden Objekts anhand der Typangabe der Referenz zu.

Java-Programme werden somit durch die Nutzung des Diamond-Operators leichter lesbar:

Statt:

List<HashMap<String, Point>> list = new ArrayList<HashMap<String, Point>>();

brauchen Java-Programmierer nur die leicht lesbare Kurzform:

List<HashMap<String, Point>> list = new ArrayList<>();

um eine Array-Liste mit der Ausprägung

ArrayList<HashMap<String, Point>>

erstellen.

 

Warum sollte ich bei der Programmierung einen Ausdruck  interpolieren?

Wenn Du bei der Programmierung eine Zeichenfolge interpolierst, dann nutzt Du damit direkt eine leicht lesbare Syntax. Somit ist Deine Syntax für andere Programmierer*innen auf einen Blick leichter verständlich und komfortabel anzuwenden.

Beim Erstellen formatierter Zeichenfolgen solltest Du folgendes beachten:

  • Erstelle Zeichenfolgen mit einer Mischung aus Literalen, Konstanten und Variablen.
  • Verkette Elemente ohne den Verkettungsoperator „+“ zu verwenden.
  • Erzeuge mehrzeilige Zeichenfolgen.
  • Formatiere länderspezifische Informationen klar erkennbar.
// String concatenation: 
set decision to Greeting + ", " + 'Salutation Title' + " " + the last name of Person + "!" ; 

// String interpolation: 
set decision to `{ Greeting }, { 'Salutation Title' }{ the last name of Person } !` ; 

// Beides Methoden erzeugen einen identischen output, hier im Beispiel also: Good morning Mr. Adams!

Beim Programmieren solltest Du also entsprechende Coding-Guidelines als allgemein-gültige Regeln beachten.

Wozu interpolieren Informatiker?

Daten zu interpolieren ist eine Option um bei einer begrenzten Anzahl von Datenpunkten den Wert einer Variablen über ein kontinuierliches räumliches Feld zu schätzen.

Ein Beispiel für einen Wert, der über ein zufälliges räumliches Feld variiert, könnte die durchschnittliche monatliche Ozonkonzentration in einer Stadt oder die Verfügbarkeit von gesunden Lebensmitteln in verschiedenen Stadtteilen sein. Die Interpolationsmethode des Kriging unterscheidet sich von einfacheren Methoden wie der abstandsgewichteten Interpolation, der linearen Regression oder den Gauß’schen Zerfällen dadurch, dass es die räumliche Korrelation zwischen den Stichprobenpunkten zur Interpolation der Werte im räumlichen Feld nutzt: Die Interpolation basiert auf der räumlichen Anordnung der empirischen Beobachtungen und nicht auf einem angenommenen Modell der räumlichen Verteilung. Kriging erzeugt auch Schätzungen der Unsicherheit, die jeden interpolierten Wert umgibt.

Wie kann ich Daten interpolieren?

Im Allgemeinen werden die Kriging-Gewichte so berechnet, dass Punkte, die sich in der Nähe des interessierenden Ortes befinden, stärker gewichtet werden als Punkte, die weiter entfernt sind. Die Clusterbildung von Punkten wird ebenfalls berücksichtigt, so dass Punktcluster weniger stark gewichtet werden (sie enthalten weniger Informationen als einzelne Punkte). Dies trägt dazu bei, Verzerrungen in den Vorhersagen zu verringern.

Der Kriging-Prädiktor ist ein „optimaler linearer Prädiktor“ und ein exakter Interpolator, was bedeutet, dass jeder interpolierte Wert so berechnet wird, dass der Vorhersagefehler für diesen Punkt minimiert wird. Der Wert, der aus dem Kriging-Prozess für einen beliebigen, tatsächlich abgetasteten Ort erzeugt wird, ist gleich dem beobachteten Wert an diesem Punkt, und alle interpolierten Werte sind die besten linearen unvoreingenommenen Prädiktoren (BLUPs).

Kriging ist im Allgemeinen nicht effektiver als einfachere Interpolationsmethoden, wenn die räumliche Autokorrelation zwischen den erfassten Datenpunkten gering ist (d. h. wenn die Werte im Raum nicht kovariieren). Liegt jedoch zumindest eine mäßige räumliche Autokorrelation vor, kann das Kriging eine hilfreiche Methode sein, um die räumliche Variabilität zu erhalten, die bei Verwendung einer einfacheren Methode verloren ginge (für ein Beispiel siehe Auchincloss 2007, unten).

Kriging kann als ein zweistufiger Prozess verstanden werden: Zunächst wird die räumliche Kovarianzstruktur der beprobten Punkte durch Anpassung eines Variogramms bestimmt, und anschließend werden aus dieser Kovarianzstruktur abgeleitete Gewichte verwendet, um Werte für nicht beprobte Punkte oder Blöcke im gesamten räumlichen Feld zu interpolieren. Übersetzt mit www.DeepL.com/Translator (kostenlose Version)

Welche Arten von Interpolation gibt es?

Klassische Interpolationsverfahren sind:

  • Lineare Interpolation
  • Höhergradige Polynome
  • Schrittweise Interpolation
  • Trigonometrische Interpolation
  • Logarithmische Interpolation.
  • Gaußprozess-Regression (Kriging)

Interpolations-Beispiele in der Praxis

Eine der häufigsten Anwendungen von Interpolation ist die Berechnung von Vorhersagen für Zukunftswerte auf Basis historischer Daten. So kann anhand von Temperaturverläufen mit Daten aus dem Vorjahr bestimmt werden, wie warm es in diesem Jahr wahrscheinlich sein wird.

Auch in der Medizin-Informatik kann Interpolation hilfreich sein. So lässt sich beispielsweise anhand von Laborwerten abschätzen, welche Dosierung einer bestimmten Arznei für einen Patienten am besten ist.

Grenzen der Dateninterpolation

Da die Gewichte des Kriging-Interpolators vom modellierten Variogramm abhängen, reagiert das Kriging sehr empfindlich auf eine falsche Spezifizierung des Variogramm-Modells.

Ebenso können die Annahmen des Kriging-Modells (z. B. die der Stationarität zweiter Ordnung) im Zusammenhang mit vielen Umweltexpositionen schwer zu erfüllen sein.

Daher wurden einige neuere Methoden – etwa die Bayes’sche Ansätze – entwickelt, die versuchen, diese Hindernisse zu überwinden.

Im Allgemeinen kann die Genauigkeit der Interpolation insbesondere begrenzt sein, wenn die Zahl der Stichprobenbeobachtungen gering ist, die Daten räumlich begrenzt sind oder die Daten tatsächlich nicht ausreichend räumlich korreliert sind. In solchen Fällen ist es schwierig, ein Stichprobenvariogramm zu erstellen, und alternative Methoden können passendere Vorhersagen ermöglichen. Deshalb ist es immer empfehlenswert zu prüfen und sich in mehreren Iterationen prototypisch dem idealen Verfahren zu nähern.