【问题标题】:Mean Square Prediction Error (MSPE) on out of sample data in RR中样本数据外的均方预测误差(MSPE)
【发布时间】:2023-12-08 19:20:01
【问题描述】:

我想使用 R 计算多元线性回归的 样本外 MSPE。从我的教科书中我得到了以下 MSPE 公式

其中 表示观察i已从平均值中省略。

我尝试通过在 R 中使用以下两行来计算 MSEP

fit <- lm(CO ~ weight + nico, data = df)
mean( (df$CO - predict.lm(fit, df))^2 )

但是,我相当确定这是样本内的 MSPE。我尝试对 MSPE 进行硬编码,结果是

MSEP <- function(df){
  df <- df[, -1] # Removing "name" column
  factor <- 1/nrow(df)
  summa <- 0
  for(i in 1:nrow(df)){
    df_ny <- df[-i, ]
    fit <- lm(CO ~., data = df_ny)
    holder <- (df[i,]$CO - predict.lm(fit, df[i, ]))^2
    summa <- summa + holder
  }
  return(factor*summa)
}

这是正确的吗? R 中是否有内置函数可以用来比较我的结果?

提前致谢。

【问题讨论】:

    标签: r linear-regression prediction lm


    【解决方案1】:

    也许你可以试试这样的:

    in_sample <- data.frame(x = rnorm(100),
                            y = rnorm(100))
    out_sample <- data.frame(y = rnorm(100),
                             x = rnorm(100))
    mod <- lm(y ~ x, in_sample)
    
    mspe <- function(model, dv, data) {
      yhat <- predict(model, newdata=data)
      y <- data[[dv]]
      mean((y - yhat)^2)
    }
    
    mspe(mod, "y", out_sample)
    #> [1] 0.8247627
    

    【讨论】: