2017-09-05 3 views
0

So würde Ich mag ein 50 x 50-Kovarianzmatrix für eine Zufallsvariable X die folgenden Bedingungen gegeben erzeugen:Wie generiert man eine zufällige Kovarianzmatrix in Python?

10mal
  1. eine Varianz größer als die
  2. die Parameter X nur leicht korreliert sind andere

Gibt es eine Möglichkeit, dies in Python/R usw. zu tun? Oder gibt es eine Kovarianzmatrix, von der Sie denken, dass sie diese Anforderungen erfüllen könnte?

Vielen Dank für Ihre Hilfe!

+0

Wie viele Instanzen einer solchen Kovarianzmatrix benötigen Sie? Brauchst du nur einen? Oder müssen Sie viele Instanzen generieren? Ist die "Zufälligkeit" wichtig - können Sie einfach eine geeignete Matrix erstellen oder müssen Sie diese auswerten? Danke für die zusätzlichen Informationen. –

+0

Danke für Ihre Antwort! Ich brauche nur eine Kovarianzmatrix, und der Zufälligkeitsteil ist nicht wichtig - es würde nur eine geeignete Matrix genügen. – tattybojangler

Antwort

2

OK, Sie brauchen nur eine Matrix und Zufälligkeit ist nicht wichtig. Hier ist eine Möglichkeit, eine Matrix gemäß Ihrer Beschreibung zu erstellen. Beginnen Sie mit einer Identitätsmatrix 50 mal 50. Weisen Sie 10 dem ersten (oben links) Element zu. Weisen Sie eine kleine Zahl (ich weiß nicht, was für Ihr Problem angemessen ist, vielleicht 0,1? 0,01? Es liegt an Ihnen) zu allen anderen Elementen. Nimm nun diese Matrix und quadriere sie (d. H. Berechne Transponieren (X). X, wobei X deine Matrix ist). Presto! Sie haben die Eigenwerte quadriert, so dass Sie jetzt eine Kovarianzmatrix haben.

Wenn das kleine Element klein genug ist, ist X bereits positiv definit. Aber Quadrieren garantiert es (vorausgesetzt, es gibt keine Null-Eigenwerte, die Sie durch Berechnung der Determinante verifizieren können - wenn die Determinante ungleich Null ist, dann gibt es keine Null-Eigenwerte).

Ich nehme an, Sie können Python-Funktionen für diese Operationen finden.

+0

Danke! Ich werde es versuchen! – tattybojangler

Verwandte Themen