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

 

matlabbrig
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 17.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2012, 16:54     Titel: Problem mit Sortierung eines Datensatzes
  Antworten mit Zitat      
Hallo liebes Forum,

ich bin neu hier und habe gleich einige Fragen. Embarassed

Folgender Sachverhalt: Ich habe einen Datensatz voller Zeitreihen. Es handelt sich dabei um einige Unternehmen, für die ich über einige Jahre hinweg einige Daten in verschiedenen Kategorien vorliegen habe.

Spalte 1 beinhaltet dabei die Firmen-ID, also 1, 2...x. Dummerweise sind in dem Datensatz alle Daten pro Unternehmen und Kategorie in einer Spalte von mehreren 100.000 Zeilen Länge einfach untereinander abgelegt, und es sind auch viele NaNs dabei.

Was ich vorhabe: Ich brauche eine Matrix, die mir den entsprechenden Wert einer Kategorie, zB Aktienkurs, pro Unternehmen (Spalte) und Tag (Zeile) angibt:

Tag 1 Tag 2 Tag 3...
U1 Kurs 1 Kurs 2 Kurs 3...

U2

U3

Leider sind die Zeitreihen pro Unternehmen auch unterschiedlich lang, sodass ich die längste Zeitreihe als Maßstab für die Matrixbreite nehmen will. Ich habe vor mir eine Matrix voller NaNs zu basteln die die Dimensionen [Anzahl Unternehmen x Anzahl Tage längster Zeitreihe] hat, und diese dann wie oben beschrieben mit den Daten auffüllen zu lassen. Somit würde bei nicht vorhandenen Daten in der Zielmatrix ein NaN stehenbleiben.

Kann mir irgendjemand sagen wie genau er das anpacken würde? Ich verheddere mich bisher bei allen Ansätzen irgendwann in Zählschleifen usw... Embarassed Crying or Very sad
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: 17.06.2012, 18:16     Titel:
  Antworten mit Zitat      
Hallo,

ich zumindest blicke hier nicht durch.

Ein kleiner Beispieldatensatz, anhanddessen ersichtlich ist, was du hast und was du willst, könnte helfen.

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: 17.06.2012, 19:09     Titel:
  Antworten mit Zitat      
Das dachte ich mir Smile


Also: mein Datensatz sieht grob wie folgt aus:

ID---Beobachtungsanzahl--Aktienkurs .... PD...

1------------1-----------------100------------0.010
1------------2-----------------101------------0.011
1------------3-----------------100------------0.012
.
.
.
2------------3000-------------50-------------0.20
2------------3001-------------55------------ 0.18
.
.
.

Es befinden sich also zB alle Aktienkurse aller Unternehmen in der Spalte Aktienkurs, zB 2999 für U1, dann wechselt die ID auf Unternehmen 2, die Beobachtungsanzahl geht aber nahtlos weiter. Pro Unternehmen liegen unterschiedlich viele Beobachtungszeitpunkte vor.

Ich brauche einen Weg, dies in eine Matrix zu überführen, die die Spalte PD enthält, sowie die Anzahl der Beobachtungszeitpunkte, allerdings ab 1 beginnend und synchron für alle Unternehmen:

ID-------Tag 1-------Tag 2---------Tag 3-------Tag n

1-------- 0.10--------0.11-----------0.12---------PDn(U1)

2---------0.20--------0.18-------------------------PDn(U2)

3
.
.
.
n----------------------------------------------------PDn(Un)


Ist es vielleicht ein wenig klarer geworden?
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: 17.06.2012, 20:17     Titel:
  Antworten mit Zitat      
Hallo,

wie liegt der Datensatz gegenwärtig vor? Excel, TXT, oder schon in MATLAB importiert?
Unterscheiden sich nur die Endpunkte der Beobachtungen, oder gibt es Lücken bzw. unterschiedliche Startpunkte? Falls letzteres, wie kann die Zuordnung von bespielsweise 3001 zu 1 erfolgen?

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: 17.06.2012, 20:21     Titel:
  Antworten mit Zitat      
Er ist schon importiert, Lücken gibt es reichlich in Form von NaNs. Die einzige Möglichkeit der zeitlichen Zuordnung ist die Unternehmens-ID, also jeweils bei der ersten Beobachtung des nächsten Unternehmens die neuen Daten holen...


Grüße
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: 17.06.2012, 20:28     Titel:
  Antworten mit Zitat      
Hallo,

das beantwortet noch nicht meine Frage. Du sagst ja, du hast unterschiedlich viele Beobachtungspunkte pro Unternehmen. Wie sollen die Datenpunkte dann zu gleichen Zeitpunkten zugeordnet werden?

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: 18.06.2012, 12:32     Titel:
  Antworten mit Zitat      
Ich stelle mir das so vor: Gehen wir der Einfachheit halber mal von zwei Unternehmen aus, U1 mit 3000 Beobachtungen, U2 mit 2500.

Jetzt würde ich also eine 3000x2-Matrix voller NaNs erzeugen, in deren erste Zeile dann die 3000 Beobachtungen von U1 geschrieben werden. In die zweite Zeile kommen die 2500 Beobachtungen von U2, auch einfach beginnend in Spalte 1. Die 500 Werte die U2 weniger hat als U1 bleiben in der Zielmatrix als NaNs bestehen.
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 18.06.2012, 12:55     Titel:
  Antworten mit Zitat      
Und da ist das Problem, auf welches Harald dich hinweisen möchte.
Woher weiß man wo die NaN's stehen bleiben? Am Anfang der Zeile nacheinander? Am Ende der Zeile nacheinander? Zwischendrin immer wieder verteilt?

Woher weiß man wann die Beobachtungspunkte aufgenommen wurden? Oder gehst du davon aus, dass alle Zeitgleich gestartet sind und alle im gleichen regelmäßigen Abstand (täglich) aufgenommen wurden? Dann wäre die Frage zu klären, warum du unterschiedlich viele Punkte hast...
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabbrig
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 17.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2012, 13:34     Titel:
  Antworten mit Zitat      
Oha, die E-Mail-Benachrichtigung über deine Antwort, _Peter_, ist wohl im Nirwana verschwunden, deswegen gucke ich erst jetzt wieder hier rein Shocked Embarassed Sorry.

Naja, es gibt im ganzen Datensatz eine Variable die - rein technisch gesehen - für alle Unternehmen gleich ist, nämlich der Zinssatz.

Problem: Idiotischerweise startet die Zeitreihe bei Tag 1, U1 nicht mit einem Kalenderdatum, der Zahl 1 oder sonst etwas sinnvollem, sondern mit 730636 und zählt dann über alle Tage und alle Unternehmen einfach hoch, allerdings mit Lücken. (siehe Bild)

Da ich nicht weiß ob das Startdatum für alle gleich ist, war meine Idee den Zinssatz zu verwenden, um dort das Maximum pro Zeitreihe einer Bank zu finden (es gibt einen einzigen Maximalwert der sich nicht wiederholt innerhalb einer Zeitreihe), und anhand dieses Wertes die Zeitreihen zueinander zu justieren.

Haltet ihr das für sinnvoll, und ist es ohne maximalen Aufwand möglich? Wenn ja, wie?

Danke

matlab.jpg
 Beschreibung:
Ausschnitt Datensatz

Download
 Dateiname:  matlab.jpg
 Dateigröße:  217.22 KB
 Heruntergeladen:  400 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: 01.07.2012, 15:54     Titel:
  Antworten mit Zitat      
Nachtrag: So sehen z.B. die Zins-Zeitreihen der ersten 3 Unternehmen aus:

euribor.jpg
 Beschreibung:

Download
 Dateiname:  euribor.jpg
 Dateigröße:  66.64 KB
 Heruntergeladen:  392 mal
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: 01.07.2012, 18:51     Titel:
  Antworten mit Zitat      
Hallo,

in MATLAB werden Datumsangaben oft numerisch als Tage gezählt von 1.1.0 dargestellt. Das finde ich persönlich sehr sinnvoll, und ich würde stark vermuten, dass diese Zahlen bei dir genau diese Bedeutung haben:
Code:


Verwunderlich wäre es allerdings, wenn sich diese Zahlen tatsächlich im Laufe der Daten bei verschiedenen Unternehmen nicht wiederholen.

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: 01.07.2012, 19:24     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

in MATLAB werden Datumsangaben oft numerisch als Tage gezählt von 1.1.0 dargestellt. Das finde ich persönlich sehr sinnvoll, und ich würde stark vermuten, dass diese Zahlen bei dir genau diese Bedeutung haben:
Code:


Verwunderlich wäre es allerdings, wenn sich diese Zahlen tatsächlich im Laufe der Daten bei verschiedenen Unternehmen nicht wiederholen.

Grüße,
Harald



Hallo Harald,

darauf bin ich vorhin schon von selbst gekommen, hatte meinen Post eigentlich auch editiert Question Shocked Danke aber trotzdem Smile

Die Daten als String vorliegen zu haben hilft mir allerdings bei einer "automatisierten" Sortierung auch net wirklich weiter... 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: 01.07.2012, 23:00     Titel:
  Antworten mit Zitat      
Hallo,

ich würde die Datumsangaben zum Sortieren auch nicht in Strings umwandeln, im Gegenteil.

Ein aussagekräftiger Beispieldatensatz (wie von heute, 13:34, aber von drei Unternehmen --- es müssen ja nicht jeweils die ganzen Daten sein) würde helfen. Vor allem bitte den Datensatz als .mat zur Verfügung stellen, sonst kann man das nicht testen.

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: 01.07.2012, 23:22     Titel:
  Antworten mit Zitat      
So, habe das Ganze der Einfachheit halber mal auf Dropbox hochgeladen:



https://www.dropbox.com/s/t5o7gkas5400rnj/Datensatz.rar

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.07.2012, 17:20     Titel:
  Antworten mit Zitat      
Hallo matlabbrig,

Nun ist das RAR-Format nicht besondern weit verbreitet, aber die meisten Unpacker können das dennoch handhaben. Allerdings ist an meiner Arbeitsstelle aus Datenschutzgründen der Zugriff auf DropBox verboten.

Der Thread ist schon ziemlich lang und ich verstehe das eigentliche Problem immer noch nicht und komme an Beispieldaten nicht heran.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 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.