|
|
Spaltennamenausgabe & Percentile (Für jede Hilfe dankba |
|
Barg |

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.06.2011, 20:42
Titel: Spaltennamenausgabe & Percentile (Für jede Hilfe dankba
|
 |
|
 |
|
Hallo Leute
Ich bin ein absoluter Frischling und bräuchte für meine Arbeit dringend Eure Hilfe.
Es geht darum:
Ich habe 2 Files;
1. Schritt:
Im 1. File habe ich PtB-Ratios von verschiedenen Unternehmen. Jede Spalte steht für ein Unternehmen (zum Bsp. Roche, Bucher usw.) und jede Zeile für ein bestimmtes Datum (zum Bsp. 1.1.00, 1.1.01 usw.).
Nun suche ich einen Befehl, der mir für jede Zeile diejenigen Unternehmen herausspuckt, die die tiefsten (5%-percentil) PtB-Ratios aufweisen.
(um den Spaltennamen des tiefsten Zeilenwertes herauszufinden, kann man ja diesen Befehl eingeben;
[B,I]=min(A') ,wobei A=Matrix
-->aber wie das mit percentile funktioniert, habe ich leider keine Ahnung :S)
Wenn mir da bereits jmd. helfen könnte, wäre es schon der Hammer!
2. (und letzter) Schritt
Im 2. File habe ich dann die Returns der Unternehmen. Nun wäre es natürlich auch toll, wenn mir ein bestimmter Befehl automatisch noch die Returns (der "ausgespuckten" Unternehmen von Schritt 1) angeben könnte.
Ich hoffe ich, habe mich einigermassen verständlich ausgedürckt und bin für jeden Input sehr dankbar!
Zuletzt bearbeitet von Barg am 20.06.2011, 22:36, insgesamt einmal bearbeitet
|
|
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 20.06.2011, 21:13
Titel:
|
 |
Hallo Barg,
zunächst einmal solltest du evtl. den Titel des Threads ändern. Wir glauben dir ja, dass du für Hilfe dankbar bist, aber das ist für das Thema des Threads nicht gerade aussagkräftig.
Ich habe leider keine Ahnung von Statistik...es gibt aber den Befehl
In y steht dann der perzentil Wert von 5% der Werte von A (Perzentile Wert von 5% für jede einzelne Spalte von A). So habe ich die Doku von Matlab zu dem Befehl verstanden. Diese wäre dann also die Bedingung für die Abfragung nach den Firmen. Alles was kleiner als y ist, speicherst du dir ab.
Du müsstest dann schon mal den genauen Aufbau deiner Matrix posten (was steht in welcher Spalte).
|
|
|
Barg |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.06.2011, 22:59
Titel:
|
 |
|
 |
|
Danke DSP für deine Inputs!
Mit dem Befehl, den Du mir gegeben hast, kann ich zwar tatsächlich die Spalten- sowie Zeilenpercentile ausgeben lassen, jedoch ist es noch nicht ganz, was ich brauche.
Zur Illustration, was ich vorher gemeint habe, mache ich am besten ein kleines Bsp:
Ich habe folgende Matrix:
A =
20 30 40 50
15 20 44 55
33 66 55 99
wobei jede Spalte für eine best. Firma steht und jede Zeile für eine best. Periode (z.Bsp: Firma 1 hat die Werte 20,15,33, wobei der Wert 20 am 1.1.2000 der Wert 15 am 1.1.2001 und der Wert 33 am 1.1.2002 erzielt wird.).
Nun möchte ich für jede Periode (also Zeile) diejenigen Firmennamen haben, die die (z.Bsp.) 50%-grössten Werte besitzen.
Für die erste Zeile wären das die Werte 40 und 50, weshalb mir dann Matlab, wennmöglich, die Firmannamen, also Firma "3" und Firma "4", herausspucken sollte.
Das wäre mal der 1. Schritt und ich glaube, wir sollten es mal bei diesem belassen
Wäre super, wenn jmd. ne Lösung kennt.
PS. Titel geändert, hast natürlich Recht
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 21.06.2011, 11:10
Titel:
|
 |
Die Profis können das sicherlich etwas einfacher/eleganter schreiben, aber es sollte deine Suche erfüllen
Alle Werte größer 0 sind dann die gesuchten Firmen
Ergebnis bei Matrix A :
Firmen_index =
3 4 0 0
3 4 0 0
2 4 0 0
|
|
|
Barg |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.06.2011, 17:12
Titel:
|
 |
|
 |
|
Boah danke viel viel Mal DSP!!!!
Mit meinen Anfänger-"Künste" wär ich ja nie drauf gekommen. Super von Dir!
Vielleicht kannst du mir ja noch mit dem 2. (=letzten) Schritt helfen:
Wenn wir vom vorherigen Bsp. ausgehen, haben wir ja nun die gesuchten Firmen ausfindig machen können. Jetzt müssen aber noch die dazugehörigen Renditen "zusammengezählt" werden.
Dazu habe ich folgende Rendite-Matrix:
R=
0.2 0.6 0.5 0.1
0.3 0.4 0.7 0.3
0.1 0.8 0.2 0.2
Und wieder steht hier die 1. Spalte für die Firma 1 und die 1. Zeile für Periode 1 (Bsp.: Firma 1 erzielte in Periode 1 eine Rendite von 0.2, in Periode 2 eine Rendite von 0.3 und in Periode 3 eine Rendite von0.1)
Wie gesagt, haben wir ja im 1. Schritt herausgefunden, dass wir in Periode 1 die 3. und 4. Firma, in Periode 2 wieder die 3. und 4. und in Periode 3 die 2. und 4. Firma nehmen;
nun müssen aber noch die einzelnen Renditen zusammengezählt werden, weshalb folgender Vektor, welcher die Portfoliorendite angibt, als Ergebnis herauskommen sollte:
PF_R=
0.6 % 0.5+0.1
1 % 0.7+0.3
1 % 0.8+0.2
-->in Periode 1 haben wir eine kummulierte Rendite von 0.6 (da die 3. Firma eine Rendite von 0.5 und die 4. Firma eine Rendite von 0.1 erzielt hat), in Periode 2 eine k. R. von 1 und ebenfalls in Periode 2 eine k. R. von 1.
Eine Möglichkeit, die ich mit überlegt habe, wäre folgende:
Zunächst müssten wir die "Lösungs" -Matrix des 1. Schrittes
Firmen_index =
3 4 0 0
3 4 0 0
2 4 0 0
in einer solchen umwandeln:
Firmen_index2 =
0 0 3 4
0 0 3 4
0 2 0 4
--> die Lösung wäre zwar im Prinzip immer noch diesselbe, ausser, dass nun die 3. Firma auch in der 3. Spalte steht, die 4. Firma in der 4. Spalte usw.
Wenn wir dann diese Matrix noch folgendermassen verändern könnten:
S=
0 0 1 1
0 0 1 1
0 1 0 1
-->nun steht nicht mehr wie in der "Firmen_index"-Matrix direkt der Name der Firmen (1, 2, 3, 4) die wir ausgesucht haben, sondern die ausgesuchten Firmen können nur indirekt abgelesen werden:
Die 1. Spalte steht für Firma 1:wenn in Periode 1 eine "0" steht, heisst es, dass sie uns in Periode 1 nicht interessiert, wenn aber eine "1" steht, heisst es, dass sie uns intressiert usw.
-->alles ist gleich geblieben (wir haben in periode 1 immer noch die 3. und die 4. Firma usw.), einfach alles halt einbisschen anders dargestellt.
Wenn wir das eben machen könnten, dann könnten wir die Rendite-Matrix (R) ganz eifach mit der transponierten neuen Matrix (S') multiplizieren und wir hätten unsere Portfoliorendite (da die Rendite der Firmen, die uns nicht interessieren mit "0" multipliziert werden und diejenigen, die uns interessieren mit "1"-->genau das, was wir wollen)
R x S' = PF_R
Wie gesagt ist nur eine Idee und da ich nicht so Ahnung habe, lass ich mich gerne auch eines besseren behleren
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 21.06.2011, 17:49
Titel:
|
 |
ufff...das war für mich von Hinten durch die Brust ins Auge
Das zählt dir jetzt die Renditen, der jeweiligen Periode wie in deinem Bsp. angegeben, zusammen.
|
|
|
_Peter_ |

Moderator
|
 |
Beiträge: 537
|
 |
|
 |
Anmeldedatum: 08.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.10, 2010a
|
 |
|
|
 |
|
Verfasst am: 21.06.2011, 18:02
Titel:
|
 |
Hallo,
anbei ein kürzerer Vorschlag:
_________________
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?
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 21.06.2011, 18:06
Titel:
|
 |
Und so macht's der Profi...irgendwie etwas beschämend wenn man dagegen meinen umständlichen Code sieht
Ich komme halt eigentlich aus der C und Assembler Ecke und kenne viele Matlabbefehle nicht. Aber gut zu wissen...ich weiß ja jetzt was deine Zeilen machen sollen
|
|
|
Barg |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.06.2011, 19:28
Titel:
|
 |
Boah ihr seid ja der HAMMER!!!
Danke viel viel Mals!!!
viele Grüsse Barg
|
|
|
_Peter_ |

Moderator
|
 |
Beiträge: 537
|
 |
|
 |
Anmeldedatum: 08.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.10, 2010a
|
 |
|
|
 |
|
Verfasst am: 22.06.2011, 10:09
Titel:
|
 |
DSP hat Folgendes geschrieben: |
Und so macht's der Profi...irgendwie etwas beschämend wenn man dagegen meinen umständlichen Code sieht  |
Mach dir da mal keinen Kopf... wir haben alle irgendwann mal angefangen... kommt Zeit, kommt Rat...
p.s.: Ich würde ja fast drauf wetten, dass Jan, Harald oder Sco das immernoch einen Tick besser hinkriegen!
_________________
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?
|
|
|
Barg |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.07.2011, 16:08
Titel:
|
 |
|
 |
|
Sali miteinander
Und wieder bin ich auf einer kleinen Hürde gestossen :S
Es geht immernoch um den gleichen Befehl, genauer gesagt, um Zeile 6 (krit = prctile(A(i, ,[50]) und 10 (if (A(i,k) <= krit));
1. Gibt es eine Möglichkeit, dass ein gewisser Wert (z.B 1000) in der Perzentilwertberechnung in Zeile 6 nicht berücksichtigt wird?
Also zum Bsp:
In einer Zeile haben wir folgende Werte
5, 2, 3, 1000, 8, 1000
Wird der Wert 1000 berücksichtigt, beträgt der Perzentilwert von 50%-->6,5.
Wird der Wert 1000 nicht berücksichtigt, beträgt der Perzentilwert von 50%-->4, was eben gewünscht wäre.
2. Und ist es noch möglich eine weitere Wenn-Fkt. in Zeile 10 einzubauen, die mir folgendes gibt (gehen wir von obiger Zahlenfolge aus: 5, 2, 3, 8 ):
wenn mehr als 3 Werte kleiner als der 50%-Perzentilwert sind, sollen alle Werte, die kleiner als dieser 50%-Perzentilwer sind, ausgegebn werden; sind jedoch, wie in diesem Bsp, nur 2 Werte kleiner, soll er mir die tiefsten 3 Werte ausgeben UNABHÄNGIG vom Perzentilwert-->hier also (da der 50%-Perzentilwert 4 beträgt) 5,2,3 obwohl eben eigentlich nur 2 und 3 kleiner als 4 sind.
Hmm, ich hoffe ihr versteht was ich meine.
besten Dank und FG BarG
|
|
|
DSP |

Forum-Meister
|
 |
Beiträge: 2.117
|
 |
|
 |
Anmeldedatum: 28.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 08.07.2011, 20:09
Titel:
|
 |
Teste es doch bitte nochmal etwas genauer...ich hoffe es ist fehlerfrei
|
|
|
Barg |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 6
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.07.2011, 03:01
Titel:
|
 |
DSP du bist es einfach! Habe es kurz an einem kleinen Bsp. ausprobiert und es hat fehlerfrei geklappt! Werde mich in den nächsten Tagen intensiver damit befassen und grössere Datenmengen testen und dann ein Feedback geben
Vielen vieln Dank für deine Hilfe, auf dich ist wirklich Verlass!
Viele grüsse
BarG
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|