计算MSE:为什么这两种方式给出不同的结果?
Calculating MSE: why are these two ways giving different results?
我对 R 中 MSE 的计算有一些疑问。
我尝试了两种不同的方法,但得到了两种不同的结果。想知道找mse的正确方法是哪一个。
第一个:
model1 <- lm(data=d, x ~ y)
rmse_model1 <- mean((d - predict(model1))^2)
第二个:
mean(model1$residuals^2)
原则上,他们应该给你相同的结果。但是在第一个选项中,你应该使用d$x
。如果你只使用 d
,R 中的 回收规则 将重复 predict(model1)
两次(因为 d
有两列)并且计算也将涉及 d$y
.
注意,建议在第一个选项中包含na.rm = TRUE
到mean
,以及newdata = d
到predict
。这使您的代码对数据中的缺失值具有鲁棒性。另一方面,您无需担心第二个选项中的 NA
,因为 lm
会自动删除 NA
个案例。您可以查看此线程以了解此功能的潜在影响:.
我对 R 中 MSE 的计算有一些疑问。
我尝试了两种不同的方法,但得到了两种不同的结果。想知道找mse的正确方法是哪一个。
第一个:
model1 <- lm(data=d, x ~ y)
rmse_model1 <- mean((d - predict(model1))^2)
第二个:
mean(model1$residuals^2)
原则上,他们应该给你相同的结果。但是在第一个选项中,你应该使用d$x
。如果你只使用 d
,R 中的 回收规则 将重复 predict(model1)
两次(因为 d
有两列)并且计算也将涉及 d$y
.
注意,建议在第一个选项中包含na.rm = TRUE
到mean
,以及newdata = d
到predict
。这使您的代码对数据中的缺失值具有鲁棒性。另一方面,您无需担心第二个选项中的 NA
,因为 lm
会自动删除 NA
个案例。您可以查看此线程以了解此功能的潜在影响: