为什么拟合数据的MSE不等于R中的偏差和方差之和?

问题描述 投票:0回答:1

我使用简单线性回归,我想找到 MSE 的分解,即偏差、方差和误差项方差的总和。我有以下代码:

n <- 100
Sigma <- 2
x <- rnorm(n, 0, 3)
y <- x + rnorm(n, 0, sqrt(Sigma))

sim_data <- data.frame(y,x)

model <- lm(y ~ x, data = sim_data)
mse1 <- mean(summary(model)$residuals^2)

fitted <- predict(model,data.frame(x))
mse2 <- mean((fitted-y)^2)

# decomposition of MSE into bias, variance and variance of error
mse3 <- mean((x-mean(fitted))^2) + var(fitted) + Sigma

mse1
mse2
相等,但
mse3
不是正确的 MSE。我在将 MSE 分解为偏差、方差和误差项方差时做错了什么?

r linear-regression variance decomposition mean-square-error
1个回答
0
投票

这可以很快解释。模型方差等于回归方差加上未解释的方差。对于你的情况:

# This is the model variance equal to var(fitted)
sum((y - mean(y))^2) / (n - 1)
# This is the regression variance
sum(((fitted - mean(y))^2)) / (n - 1)
# This is the unexplained variance
sum((y - fitted)^2) / (n - 1)
# and yes, division is by (n-1) as that is an unbiased estimator for the variance

您可以看到下面两项的总和等于上面一项的总和。

您还做错的事情是再次包含

Sigma
:这是您用来模拟数据的方差。但是,一旦您模拟了数据,您的最佳估计从数据中得出就是第三项。就好像一开始你扮演上帝并提供西格玛,但后来你必须假装不知道并从数据中得出它。 😊

© www.soinside.com 2019 - 2024. All rights reserved.