AW: [mailinglist] [Python-de] Berechnung von Kovarianzmatrizen

Uwe Schmitt schmitt at num.uni-sb.de
Mit Nov 10 12:26:47 CET 2004


 

> -----Ursprüngliche Nachricht-----
> Von: python-de-bounces at python.net 
> [mailto:python-de-bounces at python.net] Im Auftrag von "Reik Börger"
> Gesendet: Mittwoch, 10. November 2004 12:14
> An: python-de at python.net
> Betreff: [mailinglist] [Python-de] Berechnung von Kovarianzmatrizen
> 
> Guten Tag,
> 
> zunächst einmal 'Hallo, ich bin der Neue'. Ich werde hier 
> öfter mal eine Frage einwerfen. Meine Programmierkenntnisse 
> sind eher rudimentär und ich benutze Python vorwiegend, um 
> mathematische Modelle zu implementieren. Und da auch gleich 
> mein erstes Problem:
> 
> Ich muss eine Kovarianzmatrix berechnen (nicht aus Daten 
> schätzen!). Für jeden Eintrag der Matrix gibt es eine Formel. 
> Ich berechne die obere rechte Hälfte der Matrix und fülle die 
> unter linke Hälfte symmetrisch auf. Nun muss diese Matrix 
> positiv semidefinit sein, da es eine Kovarianzmatrix ist. Ist 
> sie theoretisch auch, aber praktisch habe ich den Effekt, 
> dass (vermutlich) durch Rechenungenauigkeiten, Rundungsfehler 
> etc. die Matrix negative Eigenwerte bekommt. Das sollte nicht 
> sein. Wie schaffe ich es, dass die berechnete Matrix positiv 
> semidefinit wird? Das Ganze sollte auch noch schnell gehen, 
> da die Berechnung sehr oft erfolgt. Gibt es da in Python so 
> eine Art Funktion "Approximiere Matrix durch positiv 
> semidefinite Matrix"?
> 

Das ist eher eine  Frage fuer sci.math.num-analysis und
hat mit Python nichts zu tun.

Prinzipiell kannst Du deine Matrix durch eine semi-positiv-
definite Matrix approximieren. Am einfachsten in dem du
den Absolutbetrag des kleinsten negativen Eigenwertes
auf die Diagonale Deiner Matrix addierst.

Ob diese Approximation sinnvoll ist, hängt komplett
davon ab, was Du mit der Matrix machen willst.

Gruß, Uwe