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

Problem mit Sortierung eines Datensatzes

 

Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.07.2012, 20:09     Titel:
  Antworten mit Zitat      
Hallo,

probier mal das:

Code:
alldates = unique(fullData(:,2));
% PD-Matrix vorbelegen
PDs = nan(numel(IDs), numel(alldates));
% PD-Matrix befüllen
for I=1:numel(IDs)
    partData = fullData(fullData(:,1) == IDs(I),:);
    [have, where] = ismember(partData(:,2), alldates);
    PDs(I,where) = partData(have, 9);
end


Ist nun wohl nicht laufzeitoptimal aber liefert, glaube ich, was du haben willst. Solltest du zumindest stichprobenartig selbst überprüfen.

Die Zeilen von PDs gehören nun zu IDs, die Spalten zu alldates. Analysiert wurde die 9. Spalte des Originaldatensatzes, weil das PD zu sein scheint.

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


matlabbrig
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 17.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2012, 21:31     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank schon mal, ich werde es mir gleich angucken! Smile

Grüße


Soooo... Die Idee dahinter ist auf jeden Fall völlig richtig, nur eins irritiert mich ein wenig: Außer in Zeile 1 von "PDs" sind alle Einträge NaNs Question

Ansonsten bin ich noch am Überlegen ob ich die ersten 250 Ergebnisse pro Unternehmen rauswerfe, da die PDs aus methodologischen Gründen 1 Jahr nach den anderen Daten beginnen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.07.2012, 22:43     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Außer in Zeile 1 von "PDs" sind alle Einträge NaNs

Wenn ich das laufen lasse nicht. Vielleicht etwas mehr scrollen?

Eine kleine Nachverarbeitung, um alle Spalten zu eliminieren, in denen ausschließlich NaN stehen:

Code:
allnan = all(isnan(PDs));
alldates(allnan) = [];
PDs(:, allnan) = [];
 

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbrig
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 17.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2012, 22:47     Titel:
  Antworten mit Zitat      
Ich habe wirklich alles durchgescrollt *grübel*
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.07.2012, 23:12     Titel:
  Antworten mit Zitat      
Hallo,

ich meine, nur ein paar Zeilen an dein Skript angehängt zu haben. Stelle auch sicher, dass du mit dem hochgeladenen Datensatz arbeitest.

Grüße,
Harald

test.m
 Beschreibung:

Download
 Dateiname:  test.m
 Dateigröße:  1.63 KB
 Heruntergeladen:  278 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbrig
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 17.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2012, 23:33     Titel:
  Antworten mit Zitat      
Hmm, jetzt klappt's, warum auch immer Very Happy Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.07.2012, 08:59     Titel:
  Antworten mit Zitat      
Hallo,

ich frage mich eher, warum es vorher nicht geklappt hat Wink Aber passt ja nun. Ich setze das Thema daher mal auf beantwortet.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbrig
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 17.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.07.2012, 09:05     Titel:
  Antworten mit Zitat      
Hatte deinen Code in ein Testscript von mir eingefügt wo ich testweise was rausgelöscht hatte. Mea Culpa Very Happy Jetzt muss ich das Ganze noch mit den (noch zu bestimmenden) Asset Returns machen, aber das kriege ich jetzt dann alleine hin.

Danke nochmal Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbrig
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 17.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2012, 12:39     Titel:
  Antworten mit Zitat      
Hallo liebe Leute, ich melde mich nochmal mit einer Frage zum Thema Daten sortieren. Ich habe meinen ursprünglichen Datensatz mal auf 4 akut benötigte Spalten verkleinert, das .mat-File und mein Code befindet sich im Anhang.

Im angehängten Datensatz geht es bei meinem akuten Problem um Spalte 3. Es sind hier Renditen der Daten in Spalte 3 zu bestimmen - soweit kein Problem.

Nun ist es aber so, dass aus methodologischen Gründen die Beobachtungen 1 bis 249 irrelevant sind, da die Daten aus Spalte 4 die ersten 250 Beobachtungen als Input benötigten. Später sollen Spalte 3 und 4 zusammen verarbeitet werden, daher sollen auch in Spalte 3 die ersten 250 Beobachtungen ignoriert werden.

Mein Problem dabei ist, dass die Daten aller Unternehmen pro Kategorie (Spalte) einfach untereinander stehen. Ich bräuchte ein wenig Hilfe dabei wie ich für jedes Unternehmen die ersten 250 Beobachtungen rauswerfe, die Rendite der restlichen Beobachtungen bestimme und zu guter Letzt alle so berechneten Renditen in eine "Unternehmen x Renditebeobachtung - Matrix" bekomme.

Genau so wie in meinem Code die Matrix PDs erzeugt wird, nur eben mit dem Zwischenschritt der Elimination der ersten 250 Werte pro Unternehmen.

Hoffe ihr blickt noch durch und könnt mir helfen Very Happy Smile

Daten und Code.rar
 Beschreibung:

Download
 Dateiname:  Daten und Code.rar
 Dateigröße:  4.3 MB
 Heruntergeladen:  423 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbrig
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 17.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.11.2012, 18:41     Titel:
  Antworten mit Zitat      
So, auch hier hätte ich noch eine Frage:


Ich habe einen Datensatz der m Unternehmen und n Tage in einer n x m - Matrix enthält.
Dieser Datensatz enthält eine ganze Menge NaN-Einträge. Wie ich es schaffe ALLE NaNs durch Null oder was auch immer zu ersetzen weiß ich. In diesem speziellen Fall muss ich allerdings pro Spalte alle NaNs durch Null ersetzen, die nach der ersten wirklichen Zahl in dieser Spalte auftreten, da NaNs vor dieser ersten Zahl einfach bedeuten dass zu diesem Zeitpunkt noch keine Daten verfügbar waren.
Leider beginnen die Zahlen in jeder Spalte in teils stark abweichenden Zeilen, und ich komme nicht drauf wie ich das automatisiert lösen kann Question

Hat irgendjemand eine Idee?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.11.2012, 21:36     Titel:
  Antworten mit Zitat      
Hallo,

erster Hinweis:
Code:


Was soll denn mit den NaN passieren, die vor der ersten "wirklichen Zahl" stehen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbrig
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 17.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.11.2012, 21:49     Titel:
  Antworten mit Zitat      
Es geht darum dass NaNs zwischen den Daten z.B. für einen Feiertag, und damit eine geschlossene Börse, stehen, während eine Sequenz von 2-300 NaNs vor den ersten Daten fehlende Daten bedeutet. Die Daten kommen anschließend in die MC-Simulation aus dem anderen Thread, die mit NaNs nicht umgehen kann. Ich würde ja die ersten XYZ Zeilen einfach abschneiden, aber leider müsste ich das ja dann bis zum Beginn der kürzesten Datenreihe machen, was viele Informationen bei den anderen wegfallen lassen würde. Bringt somit auch nix... Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.11.2012, 22:12     Titel:
  Antworten mit Zitat      
Hallo,

meine Frage hast du dadurch nun nicht beantwortet.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbrig
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 17.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.11.2012, 22:16     Titel:
  Antworten mit Zitat      
Ich weiß es selbst nicht so recht... Eigentlich gibt es keine andere Lösung als alle NaNs durch Nullen zu ersetzen. Oder ich bringe meiner MC-Simulation bei mit NaNs umzugehen.
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbrig
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 17.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2012, 18:17     Titel:
  Antworten mit Zitat      
So, ich mal wieder Wink

Ich habe jetzt folgendes (Programmier-)Problem:

Wie schaffe ich es, bei bis um die 500 Zeilen versetzten Daten automatisch immer nur die Spalten in die weitere Berechnung eingehen zu lassen, in denen gerade Zahlen stehen?

Es soll mit einem rolling window cov(Spalten die Zahlen enthalten) berechnet werden.
Jede Datenspalte beginnt mit NaNs, nur eben unterschiedlich vielen. Ich habe mir eine kleine for-Schleife geschrieben die mir für alle Spalten ausgibt in welcher Zeile die erste Zahl nach den NaNs steht. Nur wenn es darum geht Matlab beizubringen "berechne ab der ersten Zahl im Datensatz cov() für alle Spalten die zum betreffenden Zeitpunkt bereits eine Zahl enthalten", da stehe ich leider komplett auf dem Schlauch Confused

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3  Weiter

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 - 2025 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.