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

R语言循环抽样回归求RMSE并存储至数据框求助

伪代码缺失的细节及修正建议

以下是你提供的伪代码中缺失的关键细节:

  • 空数据框初始化错误:R中没有emptyDataFrame{}这种语法,需要明确指定列名和数据类型来创建空数据框,比如用于存储迭代次数和对应RMSE的结构。
  • 抽样结果未赋值:sample_n抽样后没有将结果保存为新的数据集对象,后续模型无法使用抽样后的数据。
  • 模型使用原数据集而非抽样数据:lm函数依然调用原数据集df,抽样操作完全失去意义,应该传入抽样后的数据集。
  • 未生成预测值y_pred:伪代码中直接使用y_pred但没有通过模型生成预测结果的步骤。
  • RMSE计算语法错误:
    • 括号配对错误,多了一个右括号;
    • 未对残差(预测值与真实值的差)先平方再取平均,而是先取差的均值再平方,逻辑错误;
    • 未指定y是抽样数据中的真实值,直接使用原数据的y会导致计算错误。
  • 循环代码块未包裹:R的for循环需要用大括号{}将循环内的所有代码包裹起来,伪代码缺少这个结构。
  • 抽样参数n未定义:sample_n中的样本量n需要提前赋值定义。
  • 未加载依赖包:sample_n是dplyr包中的函数,需要先加载该包才能调用。
  • 未将每次计算的RMSE存入数据框:伪代码只定义了空数据框,但没有在每次循环中把计算得到的RMSE追加进去。

修正后的完整R代码示例

# 加载依赖包
library(dplyr)

# 定义参数
k <- 100  # 抽样次数
sample_size <- 500  # 每次抽样的样本量

# 初始化存储结果的数据框
rmse_df <- data.frame(iteration = integer(k), rmse_value = numeric(k))

# 循环执行抽样、建模、计算RMSE
for (i in 1:k) {
  # 抽样(有放回)
  sampled_df <- sample_n(df, size = sample_size, replace = TRUE)
  
  # 拟合线性回归模型
  model <- lm(y ~ ., data = sampled_df)
  
  # 生成预测值
  y_pred <- predict(model)
  
  # 计算RMSE
  current_rmse <- sqrt(mean((y_pred - sampled_df$y)^2))
  
  # 将结果存入数据框
  rmse_df[i, ] <- list(iteration = i, rmse_value = current_rmse)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:05:28