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

white noise/schock variable

 

Lisa89
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2019, 18:23     Titel: white noise/schock variable
  Antworten mit Zitat      
Hallo community,

ich habe ein model in matlab programmiert, was aus der wirtschaft kommt. Dennoch hoffe ich, dass jemand mir helfen kann.

Das ist mein code:
Code:
%Hybrid NKM under commitment
%% Step 1 define the parameters
%same Parameters as from the script
%Parameters
gam_f = 0.5
gam_b =0.5
beta= 1
gam_x = 0.2
lambda = 0.5
phi = 0.5                       % IS Parameter for interest rate
sig = 1                         % IS Parameter for interest rate
AR_par = 0.8

%% Step 2
% System is: (w;v)(+1) = A*[w;v] + [ 1;0;0;0;0]*eps
A11= [AR_par 0 0;0 0 0; 0 0 0];
A12= [ 0 0; 1 0; 0 1];
A21 =[ 0 -gam_f/(beta^2*gam_b) 0; -1/(beta*gam_f) 0 -gam_b/gam_f];   %Klammern nicht vergessen
A22 =[ 1/(beta^2*gam_b) gam_x/(beta^2*lambda*gam_b); -gam_x/(beta*gam_f) 1/(beta*gam_f)];

A = [ [A11 A12] ; [A21 A22] ]

%% Step 3
% using the Schur Decomposition to solve the state equations
% solve the system
disp('Schur decomposition')
 [Z, T] = schur(A, 'complex')
  disp('reorder eigenvalues in increasing order along the principal diagonal')
 [Z T] = ordschur(Z,T, 1:5)

 if abs(sum(sum(Z*T*Z'-A))) > 0.0001 && sum(sum(Z'*Z-eye(lenght(Z)))) > 0.0001
disp('Error in Schur decomposition')
end

 disp('check Blanchard-Kahn')
 abs_diag_T = abs(diag(T))'
 

%% Calculating the solution time path for nu, x and pi using the following law of motion:
% z(+1) = E[z(+1)] + Z_11^-1 * [1;0;0] * eps
T_11 = T(1:3,1:3)
Z_11 = Z(1:3,1:3)
Z_21 = Z(4:5,1:3)
T=1000000;
z_solution= zeros(3,T);                     % zeros because we have variables in  i with t-1
w_solution= zeros(3,T);                     % zeros because we have variables in i with t-1
w_solution(:,1)=[ 1; 0; 0];    %initial jump
z_solution(:,1)=inv(Z_11)* w_solution(: ,1);%initial jump
v_solution= zeros(2,T);
i_solution= zeros(1,T);           % nominal interest rate: IS umgestellt nach der Variable i.Hier liegt anscheinend das Problem.
for t= 2:T
z_solution(:,t)= T_11* z_solution(: ,t-1 );
w_solution(:,t)= Z_11 * z_solution(:,t);
v_solution(:,t)= Z_21 *inv(Z_11)* w_solution(:,t);
end
for t= 1:T-1
    i_solution(:,t) =((1- phi)*v_solution(1,t+1)+phi*w_solution(2,t)-w_solution(2,t+1))*sig+ v_solution(2,t+1); % Jump in 1 anstatt 2. umgestellte IS-Kurve.
end;

%% plots
t=0: 20;
w_solution = real(w_solution);
v_solution = real(v_solution);
i_solution = real(i_solution);

figure
subplot(4,2,1);  hold on;
plot(t,  w_solution(2,t+2), 'k-', 'LineWidth',2)
xlabel(' t '); ylabel (' x '); title(' output gap ')
axis([0 20 -4 2])
set(gca,'XTickLabel',{'0','5','10','15','20'})
box on

subplot(4,2,2); hold on;
plot(t, w_solution(3,t+2),  'k-',  'LineWidth',2)
xlabel(' t ');  ylabel(' \pi '); title('inflation')
axis([0 20 -0.5 1.5])
set(gca,'XTickLabel',{'0','5','10','15','20'})
box on

subplot(4,2,3); hold on;
plot(t, i_solution(t+1),'k-','Linewidth',2)
xlabel('t'); ylabel('i'); title('nominal interest rate')
axis([0 20 -1 3])
set(gca,'XTickLabel',{'0','5','10','15','20'})
box on

subplot(4,2,4); hold on;
plot(t, w_solution(1,t+1),'k-','Linewidth',2)
xlabel('t'); ylabel('nu'); title('Shock process')
box on

 
%data = struct('v_solution',[1,T;2,T]);
%T=1000000;
%w_pi = 0.5 ;  
%w_x = 0.25;
%[ LossVal,vol_pi, vol_x ] = Loss_fun( data,w_pi, w_x )

w_pi = 0.5 ;  
w_x = 0.25;
LossVal = w_pi * var(v_solution(2,:)) + w_x * var(v_solution(1,:))

 


es geht um die schock variable vt, die in der w_solution enthalten ist. In diesem Model tritt der Schock nur in einer Periode auf aber ich möchte das Model so simulieren, dass der Schock in jeder periode auftritt. Wie könnte ich das machen?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.08.2019, 18:36     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
es geht um die schock variable vt, die in der w_solution enthalten ist.

Der Code ist recht länglich, aber eine Variable vt sehe ich nicht.

Zitat:
nur in einer Periode

Was entspricht einer Periode? Eine t-Iteration?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Lisa89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2019, 18:52     Titel:
  Antworten mit Zitat      
Zitat:
Der Code ist recht länglich, aber eine Variable vt sehe ich nicht.


die variable vt ist in dem Vektor w_solution enthalten.

Der Vektor sieht wie folgt aus: wt=[ vt xt pi ],
wt=[ 1 0 0]

Zitat:
Was entspricht einer Periode? Eine t-Iteration?


ja, genau
Private Nachricht senden Benutzer-Profile anzeigen
 
Lisa89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2019, 19:06     Titel:
  Antworten mit Zitat      
Ich würde sagen, dass muss in dem Teil
Zitat:
%% Calculating the solution time path for nu, x and pi using the following law of motion:

eingebaut werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.08.2019, 19:27     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Der Vektor sieht wie folgt aus: wt=[ vt xt pi ],
wt=[ 1 0 0]

In dem Code ist auch kein wt enthalten.

Wenn du schon sehr länglichen Code postest, dann doch bitte auch den wirklich relevanten Teil.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Lisa89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2019, 19:31     Titel:
  Antworten mit Zitat      
Sorry ich meine in der w_solution ist der Schock enthalten. Es ist das erste Element aus dem Vektor
Code:
w_solution= zeros(3,T);               % zeros because we have variables in i with t-1
w_solution(:,1)=[ 1; 0; 0];    %initial jump
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

dann ist ja nur noch die Frage der Theorie, wie dieser Schock in den nächsten Schritten angewendet werden muss: Addition, Multiplikation, was ganz anderes? Das musst aber halt dann du wissen...

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Lisa89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2019, 09:35     Titel:
  Antworten mit Zitat      
Hallo Harald,

laut Theorie besteht das ganze System aus drei Gleichungen, die in Matlab in die Matrix Form übertragen wird . Der Schockparameter vt ist in einer Gleichung enthalten.

pi = gamma_f*pi(+1) + gamma_b*pi(-1) + gamma_x*x + vt

Der schock wird per Addition in die das System eingefügt
Private Nachricht senden Benutzer-Profile anzeigen
 
Lisa89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2019, 09:37     Titel:
  Antworten mit Zitat      
So wie mein Code programmiert ist, passiert der Schock in Periode 1 und ist dann durch den AR=0.8 Parameter nur noch beständig.
Ich habe das gleiche Model auch in Dynare programmiert und dort wird das schon in der Varianz berücksichtigt, dass der Schock in jeder Periode auftritt. Aber hier in meinem Matlab code finde ich überhaupt keinen Ansatzpunkt, wie ich das einbauen könnte..
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 - 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.