Hier ist mein Problem (fiktive Daten, um reproduzierbar zu sein):ein Gewicht Argument in einer Liste von lm Verwenden lapply
set.seed(42)
df<-data.frame("x"=rnorm(1000),"y"=rnorm(1000),"z"=rnorm(1000))
df2<-data.frame("x"=rnorm(100),"y"=rnorm(100),"z"=rnorm(100))
breaks<-c(-1000,-0.68,-0.01315,0.664,1000)
divider<-cut(df$x,breaks)
divider2<-cut(df2$x,breaks)
subDF<-by(df,INDICES=divider,data.frame)
subDF2<-by(df2,INDICES=divider2,data.frame)
reg<-lapply(subDF,lm,formula=x~.)
pre<-lapply(1:4,function(x){predict(reg[[x]],subDF2[[x]])})
lapply(1:4,function(x){summary(reg[[x]])$r.squared})
Der obige Code funktioniert gut. Was ich mache, ist folgendes: Nach den Werten von x
spalte ich df
in 4 Datenrahmen und führe eine Regression für jeden dieser Datenrahmen durch, um Werte für einen anderen Datensatz vorhersagen zu können. Die Aufteilung des Datenrahmens soll eine bessere Vorhersage ermöglichen, da der Bereich von x
einen großen Einfluss auf die tatsächlichen Daten hat.
Was ich versuche, ist, ein Gewichtungsargument für die Regression hinzuzufügen, um den neuesten Daten größere Bedeutung zu geben. Mein Gewichtungsargument lautet: weights<-0.999^seq(250,1,by=-1)
, wenn 250 Daten vorhanden sind. Mit einem Samen von 42 und den vorherigen Pausen, alle 4 Dimensionen sind 250
Wenn ich versuche, reg<-lapply(subDF,lm,formula=x~.,weights=0.999^seq(250,1,by=-1))
zu tun, ich habe diesen Fehler:
Error in eval(expr, envir, enclos) :
..2 used in an incorrect context, no ... to look in
die ziemlich merkwürdig ist als lapply
ein ...
hat Argument, hier für die formula
verwendet, aber es akzeptiert nicht die weights
.
Also ich weiß wirklich nicht, was ich tun soll, um diese Gewichte hinzuzufügen. Was muss ich in meinem Code korrigieren oder sollte ich (fast) vollständig ändern, um die Gewichte zu verwenden? Für das Beispiel und um es (vielleicht) einfacher zu machen, schneide ich die Pausen so, dass die 4 Teilmengen die gleiche Dimension haben, aber im Idealfall würde die Antwort auch dann funktionieren, wenn die 4 Teilmengen nicht die gleiche Dimension haben mit Brüchen
This Post auf CrossValidated hat ziemlich das gleiche Problem, aber ohne eine funktionierende Lösung, so dass mir nicht geholfen hat.
das ist wirklich toll! Vielleicht wird jemand wissen, was das Problem war, aber Ihre Antwort ist, was ich gesucht habe – etienne
Gern geschehen! Beachten Sie, dass Ihre aktuellen Gewichtungen auf der Reihenfolge Ihres Datenrahmens basieren. Das macht mich immer irgendwie nervös, es wäre sicherer, etwas wie 'Gewichte <- Gewichte [Reihenfolge (Datum $ Zeit, Abnehmen = T)] oder ähnliches zu machen. – Heroka