私は1年前に同様の質問をして回答しました。 これはこの投稿に関連しています:how to merge two linear regression prediction models (each per data frame's subset) into one column of the data frame2つの回帰予測モデル(データフレームのサブセット付き)をデータフレーム(1つの列)に戻します。
私はそこで使用されているのと同じデータを使用しますが、新しい列を使用します。 私はデータ作成:条件を区別するために、データの2つのサブセットを使用して、オオカミの
dat = read.table(text = " cats birds wolfs snakes trees
0 3 8 7 2
1 3 8 7 3
1 1 2 3 2
0 1 2 3 1
0 1 2 3 2
1 6 1 1 3
0 6 1 1 1
1 6 1 1 1 " ,header = TRUE)
モデル番号を。方程式はサブセットごとに異なります。
f0 = lm(wolfs~snakes,data = dat,subset=dat$cats==0)
f1 = lm(wolfs~snakes + trees,data = dat,subset=dat$cats==1)
各サブセットのオオカミの数を予測します。
f0_predict = predict(f0,data = dat,subset=dat$cats==1,type='response')
f1_predict = predict(f1,data = dat,subset=dat$cats==0,type='response')
は、次に(再び、2015ポストごとに)私は猫の変数でデータを分割します。
dat.l = split(dat, dat$cats)
dat.l
...ここではちょっと難しいです。 2015年の記事では、lapplyを使用して2組の予測をデータセットに添付することを提案しました。しかし、ここでは、回帰方程式が本質的に同じであると仮定したため、回答者の関数は機能しませんでした。ここに私の試みは(それだけで微調整し、オリジナルに近いです)です:
dat.l = lapply(dat.l, function(x){
mod =
ifelse(dat$cats==0,lm(wolfs~snakes,data=x),lm(wolfs~snakes+trees,data=x))
x$full_prediction = predict(mod,data=x,type='response')
return(x)
})
unsplit(dat.l, dat$cats)
手順の最後のカップルについての任意のアイデア?私はまだS.O.に比較的新しいです、そしてRとの中間ですので、私がコミュニティが好むように正確に投稿していないならば、穏やかに行ってください。
うわー - 華麗!私はdplyrが私がそれを理解したら、私の聖なる墓になると思う - ありがとう! – chriseshleman
これは間違いなくクリーニングと分割適用再結合アプリケーションを非常に簡単にします。モデルを要約するのに非常に便利なもう一つのパッケージは箒です。これはdplyrと組み合わせると非常に強力です。参照:https://cran.r-project.org/web/packages/broom/vignettes/broom_and_dplyr.html –
良いもの。私はほうきをチェックします。 – chriseshleman