Schleife für Suche nach optimalem Regressionsmodell ist langsam
Verfasst: Mi Sep 27, 2017 3:14 pm
Liebes Forum,
ich suche nach einer optimalen Regression, welche den niedrigsten BIC hat (siehe Code). Dabei möchte ich also nach der besten Regression suchen, die y erklären soll und dazu Daten mit bestimmten lags nehmen soll (z.B. data_lag_1). a,b,c und d sind dann die Anzahl an möglichen Daten - a bis d also vier mögliche Zeitreihen zur Erklärung von y (z.B. data_lag_2, data_lag_3, data_lag_7, data_lag_12). Es kann also auch sein, dass a=1, b=1, c=1 und d=1 und y damit am besten aus fix und data_lag_0 erklärt werden kann. Nun habe ich das Problem, dass ich eigentlich lieber noch mehr Zeitreihen einbauen würde um y zu erklären (e,f,g...), aber muss leider feststellen, dass schon die Hinzunahme der Möglichkeit d zeitlich unglaublich lange dauert - vor allem im Vergleich zu nur drei (a,b,c) unabhängigen Variablen. Ich weiss aber nicht, wie ich den Prozess schneller machen könnte. Habt Ihr dazu Ideen? Es sieht so aus, dass R von hinten anfängt und zuerst drei unabhängige Variablen auf 1 lässt und nur die vierte von 1 bis 13 einsetzt - so ist ja auch die Schleife aufgebaut. Dann kommt die zweite unabhängige Variable, bis es bei der vierten unglaublich lange dauert. Für eine Suche nach der optimalen Regression bestimmt eine Minute - was ich komisch finde. Habt Ihr dazu Ideen? Das das so lange dauert ist ziemlich schlecht. Eventuell kann man das besser codieren?
ich suche nach einer optimalen Regression, welche den niedrigsten BIC hat (siehe Code). Dabei möchte ich also nach der besten Regression suchen, die y erklären soll und dazu Daten mit bestimmten lags nehmen soll (z.B. data_lag_1). a,b,c und d sind dann die Anzahl an möglichen Daten - a bis d also vier mögliche Zeitreihen zur Erklärung von y (z.B. data_lag_2, data_lag_3, data_lag_7, data_lag_12). Es kann also auch sein, dass a=1, b=1, c=1 und d=1 und y damit am besten aus fix und data_lag_0 erklärt werden kann. Nun habe ich das Problem, dass ich eigentlich lieber noch mehr Zeitreihen einbauen würde um y zu erklären (e,f,g...), aber muss leider feststellen, dass schon die Hinzunahme der Möglichkeit d zeitlich unglaublich lange dauert - vor allem im Vergleich zu nur drei (a,b,c) unabhängigen Variablen. Ich weiss aber nicht, wie ich den Prozess schneller machen könnte. Habt Ihr dazu Ideen? Es sieht so aus, dass R von hinten anfängt und zuerst drei unabhängige Variablen auf 1 lässt und nur die vierte von 1 bis 13 einsetzt - so ist ja auch die Schleife aufgebaut. Dann kommt die zweite unabhängige Variable, bis es bei der vierten unglaublich lange dauert. Für eine Suche nach der optimalen Regression bestimmt eine Minute - was ich komisch finde. Habt Ihr dazu Ideen? Das das so lange dauert ist ziemlich schlecht. Eventuell kann man das besser codieren?
Code: Alles auswählen
mat[1,]<-data_lag_0
mat[2,]<-data_lag_1
mat[3,]<-data_lag_2
mat[4,]<-data_lag_3
mat[5,]<-data_lag_4
mat[6,]<-data_lag_5
mat[7,]<-data_lag_6
mat[8,]<-data_lag_7
mat[9,]<-data_lag_8
mat[10,]<-data_lag_9
mat[11,]<-data_lag_10
mat[12,]<-data_lag_11
mat[13,]<-data_lag_12
a<-1
b<-1
c=1
d=1
wertBIC = 10000000 # Startwert
for (i in 1:reps) {
for (a in 1:13) {
for (b in 1:13) {
for (c in 1:13) {
for (d in 1:13) {
#for (e in 1:13) {
# for (f in 1:13) {
# for (g in 1:13) {
test = lm(y[,i] ~ fix + mat[a,] + mat[b,] + mat[c,] + mat[d,]) #+ mat[e,]+ mat[f,] + mat[g,])
wert1_neu<-BIC(test);
if (wert1_neu < wertBIC){
wertBIC<-wert1_neu;
werta<-a;
wertb<-b;
wertc<-c;
wertd<-d;
print(wertBIC);
print(werta);
print(wertb);
print(wertc);
print(wertd);
print(i);
};
};
}; };}; }