寻找均方误差?

Finding Mean Squared Error?

我生成了一个线性数据集,并使用 lm() 将模型拟合到该数据集。我现在正在尝试使用 mse()

查找 MSE

我知道 MSE 的公式,但我正在尝试使用此函数。这样做的正确方法是什么?我看过文档,但我要么很笨,要么只是为那些真正知道自己在做什么的人措辞。

library(hydroGOF)

x.linear <- seq(0, 200, by=1) # x data
error.linear <- rnorm(n=length(x.linear), mean=0, sd=1) # Error (0, 1)
y.linear <- x.linear + error.linear  # y data

training.data <- data.frame(x.linear, y.linear)
training.model <- lm(training.data)
training.mse <- mse(training.model, training.data)

plot(training.data)

mse() 需要两个数据框。我不确定如何从 lm() 中获取数据框。我是否在为我的数据找到合适的 MSE 的正确轨道上?

试试这个:

mean((training.data - predict(training.model))^2)
#[1] 0.4467098

您也可以使用下面提到的非常干净的代码来获得均方误差

install.packages("Metrics")
library(Metrics)
mse(actual, predicted)

第一个数据集是实际数据集:training.data 第二个参数是你会预测的那个:

pd <- predict(training.model , training.data) mse(training.data$,pd)

看来你还没有做预测所以先根据你的模型预测数据然后计算mse

您可以使用 lm 模型输出的 残差 组件以这种方式找到 mse :

mse = mean(training.model$residuals^2)

注意:如果您来自其他程序(例如 SAS) 他们使用残差的总和和自由度得到平均值。如果您想更准确地估计误差,我建议您也这样做。

mse = sum(training.model$residuals^2)/training.model$df.residual

我在试图弄清楚为什么 R 中的 mean(my_model$residuals^2)SAS 中的 MSE 不同时发现了这一点。