WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Multivariate Zufallsvariablen - mvnrd

 

SadikuA
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 21.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2020, 14:53     Titel: Multivariate Zufallsvariablen - mvnrd
  Antworten mit Zitat      
Hallo, und zwar möchte ich multivariable Daten generieren, welche untereinander Kovarianzen besitzen.

Matlab stellt dafür die Funktion

Code:
%

mvnrnd(mu,sigma,n)

 


Bei Sigma handelt es sich um die Kovarianzmatrix, mu stellt den Mittelwertvektor da, und n sagt, wie viele Paare es sein sollen.

In einem Muster von Matlab selbst stellen sie folgenden Programmcode zur Verfügung:

Code:
%

n = 100;
sigma = [0.2 0.1 0.2 0.3 0.4 0.1 0.2 0.2 0.1 0.1]';
mu = [1.2 4.5 8.5 5.4 6.3 2.3 5.3 5.2 2.2 6.4 ]';


SigmaDep = sigma.^2 .* eye(10)
ZDep = mvnrnd(mu, SigmaDep, n);


dabei muss es sich bei der Kovarianzmatrix SigmaDep um eine semidefinite Matrix handeln, also es darf nur die Diagonale mit Werten besetzt sein. In der Mathematik heißt es jedoch dass über der Diagonalen die Kovarianzen definiert werden, diese müssen kleiner oder größer 0 sein, dann gibt es eine Kovarianz. Diese Einheitsmatrix besitzt jedoch bis auf der Diagonalen nur Nullen. Das würde ja heißen dass es keine Kovarianzen und somit keine Abhänigkeiten von Variablen gibt. Ich darf auch keine Werte eintragen da es sonst heißt im Fehler dass die Matrix positiv semidefinit sein soll.

Ich hoffe mir kann hier jemand bei diesem Widerspruch helfen.

Beste Grüße

SigmaDep.PNG
 Beschreibung:

Download
 Dateiname:  SigmaDep.PNG
 Dateigröße:  4.89 KB
 Heruntergeladen:  207 mal
math_kovarianzmatrix.PNG
 Beschreibung:

Download
 Dateiname:  math_kovarianzmatrix.PNG
 Dateigröße:  14.65 KB
 Heruntergeladen:  208 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.01.2020, 16:53     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
dabei muss es sich bei der Kovarianzmatrix SigmaDep um eine semidefinite Matrix handeln, also es darf nur die Diagonale mit Werten besetzt sein.

Das ist ein Fehlschluss. Nur weil es in einem Beispiel so ist, heißt das nicht, dass es immer so sein muss.

Ein Gegenbeispiel, dass es durchaus anders sein kann, findest du in der Doku:
Code:
mu = [2 3];
sigma = [1 1.5; 1.5 3];
rng('default')  % For reproducibility
R = mvnrnd(mu,sigma,100);


Zitat:
Ich darf auch keine Werte eintragen da es sonst heißt im Fehler dass die Matrix positiv semidefinit sein soll.

Dann gib doch bitte ein konkretes Beispiel an, in dem eine nicht-diagonale, positiv semidefinite Matrix eine Fehlermeldung erzeugt.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
SadikuA
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 21.01.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2020, 17:33     Titel:
  Antworten mit Zitat      
Folgenderweise sieht mein Code aus:

Code:
%

n = 100;
s = [0.2 0.1 0.2 0.3 0.4 0.1 0.2 0.2 0.1 0.1]'; %Standardabweichung
mu = [1.2 4.5 8.5 5.4 6.3 2.3 5.3 5.2 2.2 6.4 ]'; %Mittelwert

sigma = [    
 %  X1     X2     X3     X4     X5     X6     X7     X8     X9     X10
    s(1)^2 0      0      0.4   0      0      0      0      0      0;  
    0    s(2)^2   0      0      0      0      0      0      0      0;
    0      0      s(3)^2 0      0      0      0      0      0      0;
    0.4   0      0      s(4)^2 0      0      0      0      0      0;
    0      0      0      0      s(5)^2 0      0      0      0      0;
    0      0      0      0      0      s(6)^2 0      0      0      0;
    0      0      0      0      0      0      s(7)^2 0      0      0;
    0      0      0      0      0      0      0      s(8)^2 0      0;
    0      0      0      0      0      0      0      0      s(9)^2 0;
    0      0      0      0      0      0      0      0      0      s(10)^2;];

ZDep = mvnrnd(mu, sigma, n);


ich bekomme folgende Fehlermeldung:

Error using mvnrnd (line 112)
SIGMA must be a symmetric positive semi-definite matrix.

Error in copulademo (line 31)
ZDep = mvnrnd(mu, sigma, n);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.01.2020, 17:50     Titel:
  Antworten mit Zitat      
Hallo,

weil diese Matrix halt nicht positiv semidefinit ist:
eig(sigma) liefert einen negativen Eigenwert.

Wenn du statt 0.4 mal 0.05 einträgst, liefert eig(sigma) nur positive Ergebnisse, und dann klappt das auch mit mvnrnd.

Warum?
https://matheguru.com/stochastik/ko.....varianz_und_Korrelation-1
Die Korrelation ist maximal 1, also
cov(X,Y) <= sqrt(var(X)*var(Y)), in deinem Fall = 0.06

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.