R语言使用for循环基于系数估计与实际值实现回归预测计算
R 回归预测值计算实现
前置注意事项
你当前的values数据框列顺序和estimates非截距项的系数顺序不匹配,直接计算会导致结果错误,需要先按系数名称对齐列顺序:
estimates非截距项顺序:sd_rgdpg → TRADE → OPEN → DISSIM → SIZE → TF → INFL → INT → NIIP- 你构造的
values列顺序:sd_rgdpg → DISSIM → TRADE → SIZE → OPEN → TF → INFL → INT → NIIP
1. for 循环实现代码
# 提取非截距项系数 coef_no_intercept <- estimates[-1] # 按系数名称对齐values的列顺序 values_aligned <- values[, names(coef_no_intercept)] # 初始化预测值向量 y_pred <- numeric(nrow(values_aligned)) # 提取截距项 intercept_val <- estimates[["(Intercept)"]] # 循环计算每一行样本的预测值 for (row_idx in 1:nrow(values_aligned)) { # 初始值为截距项 pred_tmp <- intercept_val # 累加每个变量的系数*取值 for (col_idx in 1:length(coef_no_intercept)) { pred_tmp <- pred_tmp + coef_no_intercept[[col_idx]] * values_aligned[row_idx, col_idx] } y_pred[row_idx] <- pred_tmp }
运行后y_pred就是你需要的21个预测值。
2. 更高效的向量化实现(无需循环)
R原生支持矩阵运算,一行代码即可完成计算,效率远高于嵌套for循环:
y_pred <- estimates[["(Intercept)"]] + as.matrix(values_aligned) %*% estimates[-1]
其中%*%是矩阵乘法运算符,会自动完成每行变量与对应系数的相乘求和操作。
内容的提问来源于stack exchange,提问作者Melody
相关产品推荐
相关产品推荐

