Variablentransformation ("numerisch", bzw. diskret)

Mitglied seit
04.10.2006
Beiträge
643
Reaktionen
0
Ort
München
Aloha, mächtiges MPC&C!

Hat von euch schonmal jemand mit der Variablentransformation bei Dichtefunktionen gearbeitet, wenn das zugrundeliegende problem später diskret geschätzt wird?


Ich schätze derzeit Dichtefunktionen über eine Variable [X] -- 'zukünftiger Preis' -- und möchte diese Dichte nun in eine Dichte für die Variable [R] -- 'Rendite' -- transformieren. Sagen wir, der heutige Preis ist Z.

Dann sei also R=ln(X/Z), bzw. X=Z*exp(R)

g(R)dR=f(X)dX
g(R) = f(X) * |dX/dR|
g(R) = f(X) * Z*exp(R)
g(R) = f(X)*X

wobei natürlich nun X eine Funktion von R wäre. Mit stetigen Funktionen klappt das auch wunderbar.

Doch was mache ich, wenn ich eine stetige funktion approximiere, also sagen wir mal, dass X=[1,2,3....,500] ist?

Ich erhalte dann dichten G(R), die sich nicht mehr zu 1 aufaddieren, und wenn ich g(R) mit den differenzen in R multipliziere und aufaddiere, kommt natürlich in summe auch kein 1.000 mehr raus, sondern etwa 1.004 o.Ä.

Lange Rede, kurzer Sinn: Habt Ihr praktische Tipps, wie ich stetige Dichten diskret auf einem relativ 'feinen' grid approximiere, und dann darauf trotzdem variablentransformationen durchführen kann, die sinn ergeben?

Ich bin für jede hilfe dankbar!
Viele Grüße
X
 
Mitglied seit
23.11.2004
Beiträge
1.142
Reaktionen
8
Ich würd ehrlich gesagt einfach hinterher noch mal normieren. Das wäre zumindest eine einfache und praktische Lösung.
 

FORYOUITERRA

TROLL
Mitglied seit
22.07.2002
Beiträge
4.578
Reaktionen
389
Website
www.frauentag.de
was sesslor meinte ist natürlich okay. dichten müssten nur >=0 sein und integrierbar sein, alles andere ist normierung.

dennoch, kannst du mir das ein wenig genauer erklären was du da machst? werde aus dem eingangstext noch nicht schlau.
wie schätzt du zur zeit die dichtefunktionen für X? ich nehme an, du hast irgendein sample x_1,...,x_n vorliegen. warum kannst du es nicht r_1,...,r_n transformieren und dann daraus direkt die dichte für R schätzen? dass sich das zeugs nicht zu 1 aufaddiert spricht dafür, dass du irgendein verfahren anwendest, was ich nicht kenne oder nutzen. (wobei 1.004 sich so anhört, als ob du einfach nur mit 1/n summieren musst statt 1/(n-1) ;)


einmal diskretisiert kommst du ansonsten leider m.E. ohne zusätzliche annahmen nicht mehr wirklich zurück um diese komplette an jedem punkt zu schätzen: dir fehlen informationen zwischen den lücken und das eben auch asymptotisch => dichteschätzung kann nicht konsistent sein. allerdings ist das nur ein praktisches problem bei dir, also irrelevant für deine eigentliche arbeit.
that beeing said: klar ist, dass du in der praxis in so einem fall DEUTLICH oversmoothen musst, also keine automatische bandbreitenwahl anwenden kannst.

nach sesslor ist die zweitnaheliegenste lösung einfach die daten wieder zu entdiskretisieren, indem du sie gleichverteilt jitterst: genau das macht dir dann ein normales histogramm (als spezialfall eines "kerndichteschätzters" ist aber auch das nicht asymptotisch okay).
dein problem ist ja nicht die transformierung an sich sondern "nur" die schätzung der eigentlich stetigen dichtefunktion nach diskretisierung der daten.

edit2: hab gerade keine lust mich ins uninetz einzuwählen und nachzuschauen, aber das hier hört sich nach titel genau nach dem an, was du dir anschauen solltest: http://www.tandfonline.com/doi/abs/10.1080/03610928508828980?journalCode=lsta20
http://www.uow.edu.au/~mwand/publicns/Hall96.pdf
http://www.sciencedirect.com/science/article/pii/S0167947312000989

edit3: die bdde funktion aus dem r-package bda scheint ganz gut zu funktionieren. sie baut auf dem paper auf sciencedirect auf. ist definitiv genau das was du suchst.
 
Zuletzt bearbeitet:
Mitglied seit
04.10.2006
Beiträge
643
Reaktionen
0
Ort
München
Hi sesslor, danke für den Tipp: Das hatte ich auch schon probiert, ich war mir aber nicht sicher wie 'korrekt' dieser ansatz ist, er scheint mir etwas ad hoc (da z.B. die lokalen Gewichte dR unteschiedlich sind, bzw. waren)

Hi FORYOUITERRA, auch dir erstmal vielen Dank! Ich versuche einmal mein problem zu beschreiben. Vorher möchte ich aber noch sagen, dass ich eigentlich vom Kerndichteschätzer weg will, da mir dieser vorher aus anderen Gründen kopfschmerzen bereitet hatte...

Also mein Beispiel etwas detaillierter:

Ich parametrisiere eine aus Optionspreisen gewonnene Dichtefunktion q(X) an allen möglichen zukünftigen Zuständen X=0 ...B , mit B=irgendein Cutoff. Mein grid auf dem ich diese Schätzung vornehme ist also 0,1,2,3...B-2,B-1,B. Dieses kann ich so fein wählen wie ich möchte, aber dX=1 macht aus verschiedenen Gründen Sinn (Stabilität, Speicherbelegung...)

Diese gewonnenen Punkte g(X) entstammen dann einer Funktion, die eine Dichte an jedem punkt C angibt. Durch meine "günstige" wahl von dX=1 habe ich auch das resultat, dass sum(q)=1 gilt, sonst halt sum(q)*dX=1

wenn ich jetzt aber renditen, also R=log(X/Z) bestimme, dann gilt natürlich nicht mehr dR=1 oder gar dR=constant, sondern ich erhalte unterschiedliche distanzen auf der neuen R-Achse über die ich integriere.

Mein zweiter Ansatz ist nun, die Dichte auf X zu parametrisieren, also mit dX=1, und anschließend die gewonnene Dichtefunktion, die ich ja tatsächlich parametrisiert habe, einfach mit der transformation von R nach X zu bestücken, also:

1. schätze die dichte von X, g(X|PARAM).
2. verwende die PARAM aus 1. und setze dR=c, R=[LOW:dR:HIGH]', und dann bestimme ich die Dichte q(R) als q(R)=g(Z*exp(R)|param).
3. meine neue Dichte kann ich dann wie von SESSLOR vorgeschlagen wirklich normieren, da die 'gewichte' dR ja an jeder stelle konstant sind.

ich glaube, dass das soweit klapp(en könn)t(e)....
 

FORYOUITERRA

TROLL
Mitglied seit
22.07.2002
Beiträge
4.578
Reaktionen
389
Website
www.frauentag.de
okay, nochmal für die ganz langsamen unter uns:

sei G die verteilungsfunktion von R = ln(X/Z) und F die Verteilungsfunktion von X.

dann gilt, wie du oben schon angemerkt hast,
G(r) = P(R <= r) = P(X <= exp(r)*Z) = F(exp(r)*Z)

also g(r) = f(exp(r)*Z) *exp(r)*Z
----------
soweit so gut. dein problem ist jedoch, soweit ich es nun richtig verstehe, dass du die dichte funktion f nur über das grid X ausliest, was du jedoch beliebig dicht werden lassen kannst (warum machst du es dann nicht?)

allerdings hast du die dichte f von X parametrisiert, und kannst die parameter schätzen. was in meinem vokabular gleichbedeutend ist, dass du die komplette dichte von X kennst und somit auch die dichte von R.

also, ich verstehs immernoch nicht so ganz, nun noch weniger als gestern.
 
Mitglied seit
23.11.2004
Beiträge
1.142
Reaktionen
8
Ich dachte mir schon fast, dass mein Tipp recht trivial ist, aber man weiß ja nie. Vom Bauchgefühl her würde ich sagen, mach dir nicht zu viele Gedanken und normier nach. Am Schluss ist das eh nur Numerik und nicht 100% exakt.

Ach ja, zu deiner letzten Lösung: da dürfte dir jetzt der Jacobi-Term fehlen.

edit: war an xornado, FORYOUITERRA hat ja ähnliches angemerkt.
 
Mitglied seit
04.10.2006
Beiträge
643
Reaktionen
0
Ort
München
Hi FYI, du hast schon recht - einen anderen weg als die komplette dichte zweimal auszurechnen - einmal zum kalibrieren auf X, einmal für die 'gesuchte' dichte auf R - scheint es wirklich nciht zu geben, wenn ich genaue ergebnisse will...Danke für Deinen Input!

@sesslor: kannst du mir kurz sagen, was du mit JACOBI-TERM meinst? Ich bin leider nicht vom Fach...Danke Dir!
 
Mitglied seit
23.11.2004
Beiträge
1.142
Reaktionen
8
Sorry, mit Jacobiterm (hatte das von Jacobi-Determinante abgeleitet, aber das scheint kein gängiger Begriff zu sein) meinte ich die Ableitung dX/dR = Z*exp(R). Das hattest du in Beitrag #4 vergessen.
 
Mitglied seit
21.08.2010
Beiträge
7.583
Reaktionen
836
ich habe den kram bis hier nur überflogen, aber es gibt zum diskretisieren einer stetigen verteilung über einen bestimmten träger in ein grid einen algorithmus. gibt es auch schon fertig als matlab-implementation und ist in der ökonomischen modellierung (vwl/makro) durchaus gängig. nennt sich Tauchen Algorithmus. Bitte, gern geschehen.
 
Oben