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

Formel, für zufälliges Ziehen mit Zurücklegen

 

matlabanfänger123
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.11.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2022, 18:32     Titel: Formel, für zufälliges Ziehen mit Zurücklegen
  Antworten mit Zitat      
Hallo ich habe folgendes Problem:
Ich habe eine Tabelle, die für 143 verschiedene Faktoren jeweils für einen Zeitraum von 1926-2021 die monatlichen returns und weitere Informationen wiedergibt.
Das Problem ist: nicht jeder der Faktoren wurde über die gesamte Zeitspanne beobachtet. Die Faktoren sind also unterschiedlich lang.
Ich muss nun für jeden Faktor n-mal(n sei die jeweilige Länge des Faktor, es soll also so oft gezogen werden wie es Beobachtungen gibt) mit zurücklegen zufällig ziehen. Am Ende sollte dann für jeden Faktor eine zufällige Kombination der n-Beobachtungen rauskommen. Bei dem zufälligen Ziehen wird nicht nur das Datum sonder auch die dazugehörigen Daten (also die Zeile) gezogen.

Hat jemand eine Idee wie man das in eine Formal umsetzt?
Vielen Dank im Voraus!
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: 24.11.2022, 22:58     Titel:
  Antworten mit Zitat      
Hallo,

randsample sollte helfen.

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
 
matlabanfänger123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.11.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2022, 13:13     Titel:
  Antworten mit Zitat      
Danke,
aber wie setze ich die Bedingungen da durch also dass ich das für jeden Faktor durchgesetzt wird?
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: 25.11.2022, 14:44     Titel:
  Antworten mit Zitat      
Hallo,

ich würde das für jeden Faktor separat machen, z.B. in einer for-Schleife.
Eine Möglichkeit, direkt auf einer Matrix zu arbeiten, sehe ich angesichts der unterschiedlichen Längen nicht.
Falls ich die Frage nicht richtig verstanden habe, bitte konkretisieren - und am besten einen Beispieldatensatz zur Verfügung stellen, anhanddessen man den Vorschlag ausprobieren kann.

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
 
matlabanfänger123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.11.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2022, 22:10     Titel:
  Antworten mit Zitat      
Hallo Harald,
vielen Dank für die Tipps.
Ich habe jetzt das Problem wie folgt gelöst und in einen for-loop gemacht. Mein Problem ist jetzt, wie ich die Ergebnisse aus jedem einzelnen Loop-Durchgang in einer Tabelle sammeln kann. Ich habe es jetzt so versucht ( FF3AlphaTable(ii,jj)= table(linregBootFF3.(cats_FF3{jj}).Coefficients{1,1}, linregBootFF3.(cats_FF3{jj}).Coefficients{1,3}); aber da kommt bei mir ein Fehler. Hättest du eine Idee?

for ii=1:1000
rand_idx= randi(length(factor_FF3), length(factor_FF3))
rand_table= factor_FF3(rand_idx,Smile
for jj= 1:153
linregBootFF3.(cats_FF3{jj})=fitlm([factor_FF3.Mkt_RF factor_FF3.SMB factor_FF3.HML], factor_FF3.(cats_FF3{jj}));

FF3AlphaTable(ii,jj)= table(linregBootFF3.(cats_FF3{jj}).Coefficients{1,1}, linregBootFF3.(cats_FF3{jj}).Coefficients{1,3});
end
end




Vielen Dank im Voraus!
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: 25.11.2022, 22:58     Titel:
  Antworten mit Zitat      
Hallo,

bitte nutze die Code-Umgebung.
Wenn du Fehler bekommst, kopiere sie bitte hier rein.
Bitte stelle auch die beteiligten Variablen zur Verfügung.

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
 
matlabanfänger123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.11.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2022, 23:38     Titel:
  Antworten mit Zitat      
Code:
%Bootstrap
for ii=1:10
    rand_idx= randi(length(factor_FF3.Date), length(factor_FF3.Date));
    rand_table_ii= factor_FF3(rand_idx,:);
    for jj= 1:153
        linregBootFF3.(cats_FF3{jj})=fitlm([rand_table_ii.Mkt_RF rand_table_ii.SMB rand_table_ii.HML], rand_table_ii.(cats_FF3{jj}));
       
    alphaFF3= table(linregBootFF3.(cats_FF3{jj}).Coefficients{1,1}, linregBootFF3.(cats_FF3{jj}).Coefficients{1,3});
    end
end


Zitat:
Also das ist jetzt mein aktueller code. ES kommen jetzt zwar keine Fehlermeldungen mehr, aber leider werden bei der ersten Tabelle (rand_table) nicht immer eine neue Tabelle für jeden Loop erstellt. Bei dem letzten Table sollen wieder alle Daten in die gleiche Tabelle, aber auch das funktioneirt nicht.
HAst du eine Idee wie man das in den Code integrieren könnte?
VIelen Dank im Voraus!
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: 26.11.2022, 00:19     Titel:
  Antworten mit Zitat      
Hallo,

mir sind deine Fragen nicht klar.
Ich darf dich nochmal bitten, deine Variablen z.B. als .mat-Datei zu teilen. Dadurch könnte manches klarer werden.

Zitat:
aber leider werden bei der ersten Tabelle (rand_table) nicht immer eine neue Tabelle für jeden Loop erstellt.

Es gibt kein rand_table. Meinst du rand_table_ii? Das ist in jeder Iteration eine neue Variable.

Zitat:
Bei dem letzten Table sollen wieder alle Daten in die gleiche Tabelle

Was soll wohin?

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
 
matlabanfänger123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 22.11.22
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.11.2022, 00:32     Titel:
  Antworten mit Zitat      
Zitat:
Ja ich meine die Tabelle rand_table_ii . Ich will damit erreichen, dass für jeden Loop eine neue Tabelle erstellt wird, die dann im nächsten Schritt regressiert wird, aber irgendwie sammeln sich die Daten in einer Tabelle die rand_table_ii heist anstatt dass für ii jeweils die Anzahl des Loops eingesetzt wird.

Die Letzte Funktion im Loop alphaFF3=... soll wiederum die Daten von jedem einzelnen Durchgang speichern, so dass am ende in dieser Tabelle 10 mal 153 verschiedene Alpha und Tstatistiken aus den einzelnen Loops in der Tabelle alphaFF3 stehen.
Anbei schicke ich meinen Workspace mit. Ich hoffe das macht meine Frage verständlicher.
Vielen Dank!


matlab1.mat
 Beschreibung:

Download
 Dateiname:  matlab1.mat
 Dateigröße:  1.97 MB
 Heruntergeladen:  123 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: 27.11.2022, 18:53     Titel:
  Antworten mit Zitat      
Hallo,

ich habe die Datei mehrfach heruntergeladen, aber sie kann bei mir nicht eingelesen werden.

Zitat:
Ich will damit erreichen, dass für jeden Loop eine neue Tabelle erstellt wird

Dann musst du einen Index verwenden, z.B. rand_table{ii}.

Für die andere Frage bräuchte ich Daten, die ich auch einlesen kann.

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.