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

Likelihood-Funktion Surface Plot

 

quantfinance
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 23.05.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2012, 21:25     Titel: Likelihood-Funktion Surface Plot
  Antworten mit Zitat      
Hallo,

ich sitze schon den ganzen Tag an folgendem Problem. Ich hoffe ihr habt Tipps wie ich weiterkomme.

Ich habe zwei Vektoren alpha und beta, die beide Werte von 0, 0.1, 0.2,... bis 1 enthalten. Mit einer Funktion wird nun ein Grid für verschiedene Kombinationen von alpha und beta erzeugt, woraus eine weitere Dimension entsteht. Das Ziel ist nicht nur das Minimum zu finden, sondern auch eine Aussage über die Eindeutigkeit des Minimums zu treffen. Dafür hätte ich gern einen 2D Graph (ähnlich zu contourf), der die Werte der dritten Dimension in Abhängigkeit der anderen beiden zeigt.

Die angehängte Datei LogLike.bmp zeigt, wie die Grafik aussehen soll. Ich hänge auch den Code an, der das beste zeigt, was ich produzieren konnte und schicke das Datenfile, falls es jemand probieren möchte diesen Graph zu replizieren.

Ich sage schon mal Vielen Dank. Es würde mir wirklich sehr weiterhelfen, wenn ihr mir Hinweise geben könntet.


Code:

clear all; close all;

final=xlsread('finaldata.xls')

std_e = std(final);

save_ll = zeros(200,200);
ai = 1;

for alphai = 0.01:0.01:1
    bi = 1;
    for betai = 0.01:0.01:(1-alphai-0.005)
        const = std_e^2*(1-alphai-betai);
        save_ll(ai,bi) = garchlikelihood([const;alphai;betai] , final , 1 , 1, 1, std_e);
        bi = bi+1;
    end
    ai = ai+1;
end

contourf(save_ll)

%%%%%%%%%%%%%%%%%%%%%%%%
% bis hierhin ist nur der Problemteil des Codes
%%%%%%%%%%%%%%%%%%%%%%%%

function [LLF, grad, hessian, h, scores, robustse] = garchlikelihood(parameters , data , p , q,  m, stdEstimate)
% PURPOSE:
%     Likelihood and analytic derivatives for garchpq
%
% USAGE:
%     [LLF, grad, hessian, h, scores, robustse] = garchlikelihood(parameters , data , p , q, m, stdEstimate)
%
%
% INPUTS:
%     parameters:   A vector of GARCH process aprams of the form [constant, arch, garch]
%     data:         A set of zero mean residuals
%     p:            The lag order length for ARCH
%     q:            The lag order length for GARCH
%     m:            The max of p and q
%     stdEstimate:  The sample standard deviation of the data
%
%
% OUTPUTS:
%     LLF:          Minus 1 times the log likelihood
%     grad:         The analytic gradient at the parameters
%     hessian:      The analytical hessian at the parameters
%     h:            The time series of conditional variances implied by the parameters and the data
%     scores:       A matrix, T x #params of the individual scores
%     robustse:     Quasi-ML Robust Standard Errors(Bollweslev Wooldridge)
%
%
% COMMENTS:
%     This is a helper function for garchpq
%
%
% Author: Kevin Sheppard
% kevin.sheppard@economics.ox.ac.uk
% Revision: 2    Date: 12/31/2001
   
parameters(find(parameters <= 0)) = realmin;

if isempty(q)
    m=p;
else
    m  =  max(p,q);  
end
T           =  size(data,1);                    
h=garchcore(data,parameters,stdEstimate^2,p,q,m,T);

t    = (m + 1):T;
h=h(t);
LLF  =  0.5 * (sum(log(h)) + sum((data(t).^2)./h)  +  (T - m)*log(2*pi));

if nargout >= 2
%    keyboard
    h  =  [ones(m,1)*data(1)^2 ; h];
    garchp=parameters(2+p:1+p+q);
    [d,e,f]=garchgrad(garchp,p,q,data,h,m,T,stdEstimate);
    Base=(((data.^2)./h)-1)./(2*h);
    Base=repmat(Base,1,(1+p+q));
    gradsum=Base.*[d';e';f']';
    dht=[d';e';f']';
    grad=-sum(gradsum(t,:))';
end

if nargout >= 3
    scores=gradsum(t,:);
    hessian=zeros(1+p+q);
    for i=t
        hessian=hessian+(dht(i,:)'*dht(i,:))*(data(i)^2/(2*h(i)^3));
    end
    Tau=T-m;
    A=hessian/Tau;
    Bscores=scores-repmat(mean(scores),Tau,1);
    B=(Bscores'*Bscores)/Tau;
    robustse=(A^-1)*B*(A^-1)*(T^-1);
    h=h(t);  
end
 


finaldata.xls
 Beschreibung:
Daten

Download
 Dateiname:  finaldata.xls
 Dateigröße:  96 KB
 Heruntergeladen:  350 mal
LogLike.JPG
 Beschreibung:
Grafik

Download
 Dateiname:  LogLike.JPG
 Dateigröße:  914.23 KB
 Heruntergeladen:  434 mal
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



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.