【发布时间】:2020-12-24 03:21:35
【问题描述】:
我正在尝试基于子集(组)构建多个模型并生成它们的拟合。换句话说,考虑到我在下面的尝试,我正在尝试构建特定于国家/地区的模型。不幸的是,在我的尝试中,我只能考虑整个数据集来构建模型,而不是将其限制在数据集中的国家组中。你能帮我解决这个问题吗?
在第一种情况下,我正在做某种交叉验证来生成预测。在第二种情况下,我不是。我的两次尝试似乎都失败了。
library(modelr)
install.packages("gapminder")
library(gapminder)
data(gapminder)
#CASE 1
model1 <- lm(lifeExp ~ pop, data = gapminder)
model2 <- lm(lifeExp ~ pop + gdpPercap, data = gapminder)
models <- list(fit_model1 = model1,fit_model2 = model2)
gapminder %>% group_by(continent, country) %>%
bind_cols(
map(1:nrow(gapminder), function(i) {
map_dfc(models, function(model) {
training <- gapminder[-i, ]
fit <- lm(model, data = training)
validation <- gapminder[i, ]
predict(fit, newdata = validation)
})
}) %>%
bind_rows()
)
#CASE 2
model1 <- lm(lifeExp ~ pop, data = gapminder)
model2 <- lm(lifeExp ~ pop + gdpPercap, data = gapminder)
models <- list(fit_model1 = model1,fit_model2 = model2)
for (m in names(models)) {
gapminder[[m]] <- predict(models[[m]], gapminder %>% group_by(continent, country) )
}
【问题讨论】:
标签: r group-by regression