Я строил поверх аналогичного вопроса, заданного и ответившего на SO год назад. Это относится к этому сообщению: how to merge two linear regression prediction models (each per data frame's subset) into one column of the data frameОбъединить две модели предсказания регрессии (с подмножествами кадра данных) обратно в кадр данных (один столбец)
Я буду использовать те же данные, что и там, но с новым столбцом. Я создаю данные:
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 для присоединения двух наборов предсказаний к набору данных. Но здесь функция респондента не сработала, так как предполагалось, что оба уравнения регрессии были в основном одинаковыми. Вот моя попытка (это близко к оригиналу, просто переделаны):
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, поэтому, пожалуйста, пойдите осторожно, если я не разместил точно, как предпочитает сообщество.
Wow - гениально! Я думаю, что dplyr станет моим святым граалем, когда я это выясню - спасибо! – chriseshleman
Это определенно упрощает очистку и сплит-применение-рекомбинацию; другой пакет, который очень полезен для обобщения моделей, - это метла, которая очень эффективна в сочетании с dplyr. См. Https://cran.r-project.org/web/packages/broom/vignettes/broom_and_dplyr.html –
Хороший материал. Я проверю метлу. – chriseshleman