Ich schreibe meine Diplomarbeit, und ich möchte die optimale Modellspezifikation für eine Logit-Regression mit einer multinomial verteilten abhängigen Variablen finden. Y hat drei Ergebnisse, und ich möchte ein Prognosemodell mit 2 Variablen erstellen - eine verzögerte und differenzierte Spot-Rate Zeitreihe und eine Zeitreihe der geschätzten realisierten Volatilität.Iterative Regressionen in SAS 9.4 mit PROC LOGIT und Zeitreihendaten
Mein erster Gedanke war, dass ich eine Schleife erstellen, die jede Spezifikation durchläuft, und den AIC-Wert ausgibt, dann kann ich zurückverfolgen und das optimale Modell finden.
Das funktioniert, aber es gibt einen Haken. Ich möchte den Kassakurs wie folgt betrachten (Beispiel): Spot_t - Spot_t-n (n könnte 21 sein). Dies eröffnet für eine ganze Menge Spezifikationen. In meiner Versuchsregression habe ich jeweils 12 Variablen mit jeweils 21 Tagen * Anzahl der Variablen enthalten. Dies gab ein gutes Modell, aber ich denke, ich brauche einen besseren iterativen Prozess.
Wenn ich mein Modell auf 12 Variablen/Lags für jede Variable beschränken, sprechen wir von 24 Loops. Innerhalb dieser Schleifen wird es viele der gleichen Iterationen geben, was meiner Meinung nach zeitraubend und albern ist. Vielleicht gibt es eine Möglichkeit, dieses Problem zu umgehen.
Ich bin nicht gewohnt, in SAS zu codieren. Ich habe anständige Erfahrung in VBA.
Mein Code ist in unten beschnitten, und wenn Sie irgendeine Idee haben, wie man das anders macht, würde ich es wirklich schätzen! ist es möglich, mit Arrays oder so etwas zu tun Vielleicht - aber ich bin nicht zu SAS-Programmierung verwendet, vielleicht könnten Sie etwas Licht auf, wie all dies zu tun :)
%macro Selectvariables;
%let y = 0;
%let z = 2;
%do a = 1 %to &z;
%do b = 1 %to &z;
%do c = 1 %to &z;
%do d = 1 %to &z;
%do e = 1 %to &z;
%do f = 1 %to &z;
%do g = 1 %to &z;
%do h = 1 %to &z;
%do i = 1 %to &z;
%do j = 1 %to &z;
%do k = 1 %to &z;
%do l = 1 %to &z;
%do m = 1 %to &z;
%do n = 1 %to &z;
%do o = 1 %to &z;
%do p = 1 %to &z;
%do q = 1 %to &z;
%do r = 1 %to &z;
%do s = 1 %to &z;
%do t = 1 %to &z;
%do u = 1 %to &z;
%do v = 1 %to &z;
%do w = 1 %to &z;
%do x = 1 %to &z;
%let First_Spot_var = Spotlag_&a;
%let Second_Spot_var = Spotlag_&b;
%let Third_Spot_var = Spotlag_&c;
%let Fourth_Spot_var = Spotlag_&d;
%let Fifth_Spot_var = Spotlag_&e;
%let Sixth_Spot_var = Spotlag_&f;
%let Seventh_Spot_var = Spotlag_&g;
%let Eighth_Spot_var = Spotlag_&h;
%let Nine_Spot_var = Spotlag_&i;
%let Tenth_Spot_var = Spotlag_&j;
%let Eleventh_Spot_var = Spotlag_&k;
%let Twelveth_Spot_var = Spotlag_&l;
%let First_vol_var = vollag_&m;
%let Second_vol_var = vollag_&n;
%let Third_vol_var = vollag_&o;
%let Fourth_vol_var = vollag_&p;
%let Fifth_vol_var = vollag_&q;
%let Sixth_vol_var = vollag_&r;
%let Seventh_vol_var = vollag_&s;
%let Eighth_vol_var = vollag_&t;
%let Nine_vol_var = vollag_&u;
%let Tenth_vol_var = vollag_&v;
%let Eleventh_vol_var = vollag_&w;
%let Twelveth_vol_var = vollag_&x;
%let Name = Model_&y;
proc Logistic data=CurrencyData;
&Name.: model Y1_Optimal_Strategy_3M = &First_Spot_var &Second_Spot_var &Third_Spot_var &Fourth_Spot_var &Fifth_Spot_var &Sixth_Spot_var &Seventh_Spot_var &Eighth_Spot_var &Nine_Spot_var &Tenth_Spot_var &Eleventh_Spot_var &Twelveth_Spot_var &First_vol_var &Second_vol_var &Third_vol_var &Fourth_vol_var &Fifth_vol_var &Sixth_vol_var &Seventh_vol_var &Eighth_vol_var &Nine_vol_var &Tenth_vol_var &Eleventh_vol_var &Twelveth_vol_var;
ods output FitStatistics=AIC_&Name(where=(criterion="AIC"));
run;
%let y = %Eval(&y+1);
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
%end;
data AllAIC;
set AIC_: INDSNAME=modelVars;
dsname = scan(modelVars, 2);
run;
proc sort data=AllAIC out=allAIC_Sorted;
by InterceptAndCovariates;
run;
proc Print; run;
%mend;
Sorry für den verrückten breiten Code . Hoffe, du kannst mir helfen. Vielleicht verkompliziere ich das Problem. :)
Vielen Dank. Mit freundlichen Grüßen, Christian
EDIT: Ich habe z = 2
nur für Testzwecke gesetzt. Idealerweise wäre dies wesentlich höher.
Sie sind also eine schrittweise Regression was darauf hindeutet? Vielleicht könnte ich dann einen Weg finden, 12 Variablen zu integrieren, aber mit unterschiedlichen Verzögerungen. Ich habe eine Schleife, die bereits 800 neue Spalten mit Verzögerungen der Variablen zuweist. – Christian