Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Fachkräfte:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Transformation unkorrelierter Variablen

 

Towely
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 04.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2019, 11:51     Titel: Transformation unkorrelierter Variablen
  Antworten mit Zitat      
Hallo,

Ich beschäftige mich zur Zeit mit Wahrscheinlichkeitsberechnungen und bin auf den Ausdruck Korrelationskoeffizient gestoßen der, so wie ich das verstanden habe, den Grad des linearen Zusammenhangs zwischen zwei oder mehreren Variablen darstellt.
Meine Frage ist nun wie ich zwei zufälligen nicht korrelierte Datensätzen, mit gleichem Mittelwert und gleicher Standardabweichung (z.B. zwei zufällige Kräfte, die auf ein Bauteil wirken) so berechnen lassen kann, dass sie mit einem Korrelationskoeffizienten von z.B. 0,40 korreliert berechnet werden?


Ich hoffe die Frage ist verständlich gestellt und danke im Vorraus. Unten die codes der Kräfte.

Code:

M=10000;
mu=1;
sigma=0.2;
roh=0.4  %Korrelationskoeffizient
F1=normrnd(mu,sigma,M,1);
F2=normrnd(mu,sigma,M,1);
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 19.396
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 07.01.2019, 13:00     Titel:
  Antworten mit Zitat      
Hallo,

schau mal hier:
https://de.mathworks.com/matlabcent.....rrelated-random-variables
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
 
Towely
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 04.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2019, 13:43     Titel:
  Antworten mit Zitat      
Da habe ich mich auch schon durchgekämpft, aber hätte gehofft es gibt eine einfachere Lösung für mein Beispiel weil ich nicht ganz verstehe warum das nur über eine Matrix gehen soll? Sad
So wie ich das verstanden habe, sollte ich ja Werte für die beiden Kräfte rausbekommen die zwar zufällig sind aber eben einen Zusammenhang von diesem Korrelationskoeffizienten haben?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 19.396
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 07.01.2019, 15:28     Titel:
  Antworten mit Zitat      
Hallo,

man kann aber allgemein nur unkorrelierte Zufallszahlen erzeugen und die Korrelation nachträglich einbauen.
Eine Alternative kann copurnd sein. Da werden aber gleichverteilte Zufallszahlen erzeugt und nachträglich zurücktransformiert.

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
 
Towely
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 04.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2019, 16:04     Titel:
  Antworten mit Zitat      
Hallo,

Die Korrelation nachträglich einbauen wäre eh mein Ziel. Ich habe jetzt im Netz noch ein Beispiel gefunden bei dem ich aber leider nicht so ganz durchblicke und das bei mir auch nichtmal funktioniert :/ Matlab streikt schon bei folgendem Befehl
"u = stdnormal_rnd(2, M);"
Vlt kommt mit dieser "Hilfe" jemand drauf, obwohl das so aussieht als müsste man sich mit diesem Thema sehr gut auskennen xD
Ich schreibs mal rein und hoffe auf Hilfe Very Happy

LG

Code:
%% Eingabe der normalverteilten und korrelierten Kräfte F1 und F2 [kN]
mu_F=625; %Mittelwert Kräfte [kN]
sigma_F=230; %Standardabweichung der Kräfte [kN]
rho_12=0.4; %Korrelationskoeffizient beider Kräfte

% Korrelation im Standard Gauss Raum
V = sigma_F/mu_F;
rhop = rho_12*V/sqrt(log(V^2+1)); %rho'

% Cholesky Faktorisierung für Transformation
correlation = [1, rhop; rhop, 1];
L = chol(correlation);

% Simulation des unabhängigen Standard Gauss Raums
u = stdnormal_rnd(2, M);

% Transformation zu korreliertem Standard Gauss Raum
v = L'*u; %L' = untere Dreiecksmatrix

% Transformation der ersten Variablen F1 in Originalraum
F1=v(1,:);
s1 = sqrt(log((sigma_F/mu_F)^2+1));
m1 = mu_F*exp(-s1^2/2);
m1*exp(F1*s1);

% Transformation der zweiten Variablen F2 in den Originalraum
F2=v(2,:);
F2 = F2*sigma_F + mu_F;
Mittelwert_F1=mean(F1) %Mittelwerte der Kräfte F1 und F2 [kN] Mittelwert_F2=mean(F2)

% Plot der Kraftverteilung im Originalraum
figure;
plot(F1, F2, "*");
xlabel ('F1 [kN]');
ylabel('F2 [kN]');
title('Verteilung der Kräfte F1 und F2 [kN]','fontsize', 14)
Private Nachricht senden Benutzer-Profile anzeigen
 
Towely
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 04.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2019, 18:02     Titel:
  Antworten mit Zitat      
Hab eine Möglichkeit Gefunden!
Danke nochmal für die Antworten Wink

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 19.396
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 07.01.2019, 23:30     Titel:
  Antworten mit Zitat      
Hallo,

wenn du eine Möglichkeit findest, poste sie bitte auch.
Dann haben auch Leute was davon, die später noch auf den Thread stoßen.

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
 
Towely
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 04.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2019, 10:50     Titel:
  Antworten mit Zitat      
Es funktioniert wie in dem Code den ich geschickt habe, nur muss man in der Zeile der Simulation des unabhängigen Standard Gauss Raum den Code ändern zu u = randn(2, M);
Warum man das so kompliziert machen muss weiß ich noch nicht aber ich bekomme für mein anderes Beispiel sinnvolle Ergebnisse.

Grüße
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
.



goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2019 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.