找到平均误差?

时间:2016-09-27 18:37:33

标签: r statistics mse mean-square-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?

4 个答案:

答案 0 :(得分:9)

试试这个:

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

答案 1 :(得分:4)

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

from oscar.defaults import *

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

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

似乎你还没有做过预测,所以首先根据你的模型预测数据,然后计算mse

答案 2 :(得分:3)

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

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

答案 3 :(得分:0)

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

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

我在尝试找出为什么mean(my_model$residuals^2)在R中不同于 SAS 中的 MSE 时发现了这一点。