我试图将模型子集拟合到嵌套的数据框中。虽然我看过许多将相同模型拟合到不同数据组的示例,但我还没有遇到一个将不同模型拟合到组织为嵌套数据框的数据集的示例。
例如,我从R For Data Science的“Many Models”部分中取了代码。在这里,目标是将相同的模型拟合到不同的国家(组)中。我希望能够扩展这个想法,并将多个不同的竞争模型拟合到不同的国家(组)中。理想情况下,每个竞争模型都将作为嵌套数据框中的新列存储。
感谢您的帮助!
例如,我从R For Data Science的“Many Models”部分中取了代码。在这里,目标是将相同的模型拟合到不同的国家(组)中。我希望能够扩展这个想法,并将多个不同的竞争模型拟合到不同的国家(组)中。理想情况下,每个竞争模型都将作为嵌套数据框中的新列存储。
感谢您的帮助!
# Example code
library(dplyr)
library(ggplot2)
library(modelr)
library(purrr)
library(tidyr)
library(gapminder)
# Create nested data
by_country <- gapminder %>%
group_by(country, continent) %>%
nest()
# Model 1
country_model <- function(df) {
lm(lifeExp ~ year, data = df)
}
# Map model 1 to the data
by_country <- by_country %>%
mutate(model = map(data, country_model))
# Model 2
country_model2 <- function(df) {
lm(lifeExp ~ year + gdpPercap, data = df)
}
# Map Model 2 to the data
by_country <- by_country %>%
mutate(model2 = map(data, country_model2))
更新 为了澄清我的问题,我知道可以手动调用每个模型的变异来完成这个任务。我认为我想要的是更加灵活的东西,几乎类似于下面的代码。然而,这些函数不是"runif"、"rnorm"和"rpois",而是对模型函数的调用。比如说"country_model"和"country_model2"。希望这有些帮助。
# Example code
sim <- dplyr::frame_data(
~f, ~params,
"runif", list(min = -1, max = -1),
"rnorm", list(sd = 5),
"rpois", list(lambda = 10)
)
sim %>% dplyr::mutate(
samples = invoke_map(f, params, n = 10)
)
mutate
中吗?即mutate(model = map(data, country_model), model2 = map(data, country_model2))
。 - aosmith