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

ML Schätzung für univariate GARCH

 

mcashmir
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2015, 23:43     Titel:
  Antworten mit Zitat      
Hallo nochmal,

ich glaube Harald, ich habe dich jetzt verstanden.

Code:

%Parameter estimation Initialwert für h1(1)=var(res1) und res1(1)=

function [lik]=sumll(res1)
for i=1:length(res1)
    if i<2
        sumll(i)=-(0.5*(sum(log(w1+a1*(mean(res1)^2))+b1*(var(cac))))-sum((mean(res1)^2))/(w1+a1*(mean(res1)^2)+b1*(var(cac))));
    else
        sumll(i)=-(0.5*(sum(log(w1+a1*(res1(i=1:i-1)^2))+b1*(h1(i=1:i-1))))-sum((res1(i=1:i-1)^2))/(w1+a1*(res1(i=1:i-1)^2)+b1*(h1(i=1:i-1))));
    end
end

RETURNS=xlsread('DATEN_DATASTREAM','Returns');
CAC=RETURNS(:,2);
cac=CAC.*100;
res1=cac-mean(cac)

A=[-1 0 0; 0 -1 0; 0 0 -1; 0 1 1]
b=[0;0;0;1]
[lik,fval]=fmincon(sumll,xo,A,b);

 


Würdest du mir eine Einschätzung geben?
Private Nachricht senden Benutzer-Profile anzeigen


mcashmir
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2015, 23:48     Titel:
  Antworten mit Zitat      
Zitat:
Error: File: sumll.m Line: 7 Column: 46
The expression to the left of the equals sign is not a valid target for an assignment.

Error in DCCGARCH (line 100)
[lik,fval]=fmincon(sumll,xo,A,b);


Und das spuckt er mir aus
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.06.2015, 10:26     Titel:
  Antworten mit Zitat      
Hallo,

diese Punkte sind noch nicht umgesetzt:
Zitat:
* Warum versuchst du fminsearch(sumll) ? In der Doku wird nicht zum Spaß in jedem Beispiel mit @ ein Function Handle erzeugt.
* Die Zielfunktion muss so formuliert sein, dass sie von einem Eingabeargument abhängt. Du musst also a1, b1, w1 zu einer Variablen (z.B. x) zusammenfassen und diese dann innerhalb der Funktion extrahieren - wie im Beispiel gezeigt.
...
lik soll das Ausgabeargument von sumll sein, wird aber in der Funktion nicht definiert.
lik kommt ansonsten nur im fminsearch-Aufruf vor. Dieser Aufruf muss separat erfolgen.


Die Syntax
Code:
res1(i=1:i-1)^2))

ist nicht gültig, und ich weiß auch nicht, was du damit bezweckst.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2015, 16:34     Titel:
  Antworten mit Zitat      
Hallo,

Code:
res1(i=1:i-1)^2))


war nur ein Flüchtigkeitsfehler

Zitat:
* Die Zielfunktion muss so formuliert sein, dass sie von einem Eingabeargument abhängt. Du musst also a1, b1, w1 zu einer Variablen (z.B. x) zusammenfassen und diese dann innerhalb der Funktion extrahieren - wie im Beispiel gezeigt.



So wie ich das verstehe, muss ich dann nur x0 definieren:

Code:

function [lik]=sumll(w1,a1,b1,res1,h1)

for i=1:3387;
    if i<2
        lik=-(0.5*(sum(log(w1+a1*(mean(res1(i)^2))+b1*(h1(i)))))-sum((mean(res1)^2))/(w1+a1*(mean(res1(i))^2)+b1*(h1(i))));
    else
        lik=-(0.5*(sum(log(w1+a1*(res1(1:i-1).^2))+b1*(h1(1:i-1))))-sum(res1(1:i-1).^2)/(w1+a1*(res1(i-1).^2)+b1*(h1(i-1))));
    end
end

 


und um das ganze aufzurufen:

Code:
RETURNS=xlsread('DATEN_DATASTREAM','Returns');
CAC=RETURNS(:,2);
cac=CAC.*100;
rescac=minus(cac,mean(cac));
res1=rescac';

for i=1:length(res1);
    if i<=1
        h1(i)=w1+a1*(mean(res1)^2)+b1*(var(cac));
    else
        h1(i)=w1+a1*(res1(i-1).^2)+b1*(h1(i-1));
    end
end

res1;
mean(res1);
var(res1);
A=[-1 0 0; 0 -1 0; 0 0 -1; 0 1 1];
b=[0;0;0;1];
x0=[0;0;0];

[lik,fval]=fmincon(sumll,xo,A,b);
 


Totzdem kriege ich dann eine Mitteilungen folgender Natur:

Zitat:
Error using sumll (line 6) (bzw. in der ersten Zeile mit lik=...)
Not enough input arguments.

Error in ParameterEstimation (line 19)
[lik,fval]=fmincon(sumll,xo,A,b);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

es wundert mich sehr, dass der Code überhaupt soweit durchläuft, denn w1, a1, b1 sind ja noch gar nicht definiert.

Jetzt inzwischen das dritte Mal: sowohl an fminsearch als auch an fmincon muss ein Function Handle übergeben werden. Ein solches wird mit @ erstellt.
Leider sind auch weitere Anregungen immer noch nicht oder nicht korrekt umgesetzt.

Um das etwas zu beschleunigen, ein Vorschlag:
die Funktion
Code:
function lik=sumll(inputs,res1, cac)
a1 = inputs(1);
b1 = inputs(2);
w1 = inputs(3);

h1 = zeros(size(res1));
% Berechnung von h1
% (bisher fehlerhaft)
for i=1:length(res1)
    if i < 2
        h1(i)=w1+a1*(mean(res1)^2)+b1*(var(cac));
    else
        h1(i)= w1+a1* res1(1:i).^2 + b1*h1(1:i-1); % <-- hier ist noch ein Fehler
    end
end
lik =-(0.5*(sum(log(h1)))-sum((res1.^2)./h1));
 

und der Aufruf:
Code:
RETURNS=xlsread('DATEN_DATASTREAM','Returns');
CAC=RETURNS(:,2);
cac=CAC.*100;
res1=cac-mean(cac);

A=[-1 0 0; 0 -1 0; 0 0 -1; 0 1 1];
b=[0;0;0;1];
x0 = [1; 1; 1];
[bestabw,fval]=fmincon(@(inputs) sumll(inputs, res1, cac),x0,A,b);


Soweit ich sehe, hat jeder deiner Codes bei der Berechnung von h1 ein Problem: auf der rechten Seite des Gleichheitszeichens steht ein Vektor, auf der linken ein Element. Die Zuweisung kann also nicht klappen.
Leider kann ich da nicht weiterhelfen ohne zu wissen, nach welcher Formel h1 berechnet werden muss. Da du die Formel ja kennst, kannst du aber ja vielleicht selbst die nötigen Korrekturen vornehmen.

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

Gehe zu Seite Zurück  1, 2

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.