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

含不同变换变量的多元线性回归模型预测精度评估咨询

含逆变换自变量的对数线性模型:逆变换与预测精度分析

一、逆变换得到原始因变量Y的预测值

你的模型是对log(Y)做线性回归,自变量中的1/X3属于输入变换,预测时只需将新的X3值代入计算1/X3即可,无需对自变量做逆变换。核心是对因变量的预测值做逆变换:

  1. 先通过拟合好的模型得到log(Y)的预测值Ŷ_log:
    # 假设拟合好的模型命名为lm_model
    Ŷ_log <- predict(lm_model)
    
  2. 对Ŷ_log做指数逆变换,得到原始Y的预测值Ŷ:
    Ŷ <- exp(Ŷ_log)
    
  3. 偏差修正(可选):指数变换会引入均值偏差(若误差项ε服从正态分布),可利用残差标准差σ修正预测值:
    sigma <- summary(lm_model)$sigma
    Ŷ_corrected <- exp(Ŷ_log + sigma^2 / 2)
    

二、预测精度分析方法

原模型的R²=0.924是针对log(Y)的拟合优度,不能直接反映原始Y的预测效果,建议从以下维度分析:

  • 残差诊断:计算原始Y与预测值Ŷ的残差(Y - Ŷ)或相对残差((Y-Ŷ)/Y),绘制残差散点图(残差 vs 预测值)、QQ图,检查是否存在异方差、非正态性或异常点——小数据集下可视化诊断更直观。
  • 误差指标:针对原始Y计算:
    • MAE(平均绝对误差):mean(abs(Y - Ŷ))
    • RMSE(均方根误差):sqrt(mean((Y - Ŷ)^2))
    • 原始Y的R²:1 - sum((Y - Ŷ)^2)/sum((Y - mean(Y))^2)
  • 小数据集的泛化误差估计:由于样本量小,不建议拆分训练/测试集,改用**留一交叉验证(LOOCV)**评估模型泛化能力:
    # 实现LOOCV计算RMSE
    loocv_rmse <- function(model, data) {
      n <- nrow(data)
      rmse_vec <- numeric(n)
      for(i in 1:n) {
        train_data <- data[-i, ]
        test_data <- data[i, ]
        temp_model <- update(model, data = train_data)
        y_log_pred <- predict(temp_model, newdata = test_data)
        y_pred <- exp(y_log_pred)
        rmse_vec[i] <- (test_data$Y - y_pred)^2
      }
      sqrt(mean(rmse_vec))
    }
    # 调用函数
    loocv_result <- loocv_rmse(lm_model, your_data_frame)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:07:59