You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于R语言tidy范式实现多模型的最优选择与新数据预测

解决方案:为每个国家选择最优模型并进行新数据预测

第一步:整理R平方数据,选出每个国家的最优模型

你已经算出了每个模型的R平方值,现在需要把这些数据转换成更易处理的长格式,然后为每个国家筛选出R²最高的模型:

library(tidyverse)
library(modelr)
library(gapminder)
library(broom)

# 把宽格式的R平方数据转为长格式,方便按模型分组比较
r_sq_long <- r_sq %>%
  pivot_longer(
    cols = starts_with("r.sq"),
    names_to = "model",
    values_to = "r_squared",
    # 把列名从r.sq1转换为model1,和by_country里的模型列名匹配
    names_transform = list(model = ~str_replace(., "r.sq", "model"))
  )

# 按国家分组,选出R平方最大的模型;with_ties=FALSE避免多个模型R²相同时的重复结果
best_models_meta <- r_sq_long %>%
  group_by(country, continent) %>%
  slice_max(r_squared, n = 1, with_ties = FALSE) %>%
  ungroup()

接下来,把这个最优模型的元数据和你之前的by_country数据集合并,提取出对应的模型对象:

# 合并数据并动态提取最优模型对象
by_country_with_best <- by_country %>%
  left_join(best_models_meta, by = c("country", "continent")) %>%
  # 根据model列的名称,提取对应列中的模型对象
  mutate(best_model = pmap(list(country, model), function(cntry, mod) {
    by_country %>% filter(country == cntry) %>% pull(!!sym(mod)) %>% pluck(1)
  }))

第二步:用最优模型对新数据进行预测

首先确保你的新数据结构和训练数据一致(包含year、gdpPercap、pop这些特征),下面是一个示例新数据的构造和预测流程:

# 构造示例新数据:每个国家2020年的假想数据
new_data <- gapminder %>%
  distinct(country, continent) %>%
  mutate(
    year = 2020,
    gdpPercap = runif(n(), 1000, 100000), # 随机生成GDP数据
    pop = rnorm(n(), mean = 5e6, sd = 1e7) # 随机生成人口数据
  )

# 合并数据并生成预测结果
final_predictions <- by_country_with_best %>%
  left_join(new_data, by = c("country", "continent")) %>%
  # 用map2把每个最优模型和对应的新数据传入predict函数,返回数值型预测结果
  mutate(predicted_lifeExp = map2_dbl(best_model, cur_data(), ~predict(.x, newdata = .y))) %>%
  # 保留关键结果列,方便查看
  select(country, continent, best_model_name = model, r_squared, predicted_lifeExp)

补充说明

  • 如果存在多个模型R²相同的情况,你可以调整slice_max的参数,比如设置with_ties=TRUE,后续可以选择取多个模型的平均预测值,或者根据其他指标(比如AIC)进一步筛选。
  • 若需要保留更多预测细节(比如置信区间),可以用broom::augment()函数替代predict(),它会返回包含原始数据、预测值和置信区间的完整数据集。

内容的提问来源于stack exchange,提问作者Yuriy Barvinchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 08:52:31