データに3つの線形モデルを適用し、それぞれの残差を抽出したいと思います。私は維持したい複数のモデル式をデータのグループに適用する
を::dplyrとpurrrの組み合わせを使用して、各モデルについて、同じ手順を適用する方法がある場合、私は疑問に思って
- 各モデル
augment
ためlm
オブジェクト各モデルの出力- 各モデルの残差
はここを分析する作業例です10セット:
library(dplyr)
library(tidyr)
library(purrr)
library(broom)
library(ggplot2)
ここでは、私は私のLMため
f1 = hwy ~ cyl
f2 = hwy ~ displ
f3 = hwy ~ cyl + displ
lin_mod = function(formula) {
function(data) {
lm(formula, data = data)
}
}
を使用する三つの異なる式があるこれは、私は、単一の式の残差を抽出する方法である:
mpg %>%
group_by(manufacturer) %>%
nest() %>%
mutate(model = map(data, lin_mod(f1)),
aug = map(model, augment),
res = map(aug, ".resid"))
しかし、このテクニックは、多くのコードを書き直すので、すべての数式でそれを行うのが悪い方法です。
mpg %>%
group_by(manufacturer) %>%
nest() %>%
mutate(model1 = map(data, lin_mod(f1)),
aug1 = map(model1, augment),
res1 = map(aug1, ".resid"),
model2 = map(data, lin_mod(f2)),
aug2 = map(model2, augment),
res2 = map(aug2, ".resid"),
model3 = map(data, lin_mod(f3)),
aug3 = map(model3, augment),
res3 = map(aug3, ".resid"))
この関数をどのようにして各式にエレガントに適用できますか?私はmutate_all、または数式をリストに入れて何らかの形で役立つかもしれないと思っていましたが、残念ながら私は立ち往生しています。