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);
};
};
}; };}; }