を呼び出しているlapply LMのリストに重み引数を使用します。は、(再現可能にするために架空のデータ)私の問題をここで
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})
上記のコードは正常に動作します。私がやっていることは、x
の値に従って、を4つのデータフレームに分割し、それらのデータフレームごとに回帰を実行して、他のデータセットの値を予測できるようにします。データフレームの分割は、x
の範囲が実際のデータに大きな影響を及ぼすため、より良い予測を可能にすることです。
私がやっているのは、最新のデータをより重視するために回帰の重み引数を追加することです。私の重みの議論は:weights<-0.999^seq(250,1,by=-1)
もし250のデータがあれば。
Error in eval(expr, envir, enclos) :
..2 used in an incorrect context, no ... to look in
lapply
が...
を持っているとして、非常に奇妙である:42のシードと前の休憩では、4次元のすべては、私がreg<-lapply(subDF,lm,formula=x~.,weights=0.999^seq(250,1,by=-1))
をしようとすると、私はこのエラーを得た250
ですここではformula
に使用されていますが、weights
は受け付けていません。
だから私は本当にそれらの重量を追加するために何をすべきか分かりません。私のコードではどうすればよいですか?あるいは、私はウェイトを使用できるように(ほとんど)変更する必要がありますか?
この例では、(おそらく)簡単にするために、4つのサブセットが同じ次元を持つように分割を切りますが、4つのサブセットが同じ次元でない場合でも答えが理想的ですbreaks<-c(-1000,-0.75,0,0.75,1000)
のブレークあり)
CrossValidatedの投稿は全く同じ問題を抱えていますが、私の役に立たなかったような解決策はありません。
これは本当に素晴らしいです!誰かが問題の内容を知っているかもしれませんが、あなたの答えは私が探していたものです – etienne
あなたは大歓迎です!現在の重みは、データフレームの順序に基づいていることに注意してください。それはいつも私をちょっと神経質にさせます、 'weights < - weights [order(data $ time、decline = T)]またはそれに類するものを行う方が安全かもしれません。 – Heroka