Я хотел бы получить прогнозируемые значения на основе модели, которую я подгоняю к обучающему набору данных. Я делал это раньше, но теперь у меня есть фактор группировки, и это меня отталкивает. Я хочу прогнозировать биомассу на основе населения для каждой среды.
library(tidyverse)
fit_mods<-df %>%
group_by(environ) %>%
do(model = lm(biomass ~ poly(population, 2), data = .))
В конечном итоге я хочу выяснить, у какой популяции биомасса самая большая. Обычно я делал бы это, создавая сетку и запуская модель для моих новых значений и находя максимальное значение, но я не знаю, как это сделать с группировкой. Обычный способ:
min_pop <- min(df$population)
max_pop <- max(df$population)
grid_pop <- expand.grid(new = (seq(from = min_pop,
to = max_pop,
length.out = 1000)),
environ = c("A", "B"))
#This is what I did with ungrouped data, but doesn't work now.
pred_pop <- predict(object = fit_mods,
newdata = grid_pop,
interval = "predict")
Вот некоторые фиктивные данные:
df <- as.data.frame(list(environ = c("a", "a", "a", "a", "a", "b", "b", "b", "b", "b"),
population = c(2, 3, 4, 5, 6, 3, 4, 5, 6, 7),
biomass = c(1, 2.2, 3.5, 4.1, 3.8, 2.5, 3.6, 4.3, 5.2, 5.1)), class = "data.frame")