首页 > 解决方案 > 使用 dplyr 分组的残差数据帧计算的均方误差

问题描述

所以我有一个残差数据框:

ID    A    B    C     D 
1    .2 23.3  2.3  4.32
2   2.3  2.4    0     1
3  23.3  1.3   23  3.44
2  34.2   33 56.5  76.5
1   0.3 76.4  3.2  78.5

*大约有200个变量

我将如何使用它计算均方误差 (MSE) ID

所以基本上,每个人的 MSEID是目标。

标签: rdplyrmse

解决方案


library(tidyverse)
df_example %>%
  group_by(ID) %>%
  summarize(across(everything(), ~sum(.x^2)/n()))

这使:

# A tibble: 3 x 5
     ID       A       B       C      D
  <int>   <dbl>   <dbl>   <dbl>  <dbl>
1     1   0.065 3190.      7.76 3090. 
2     2 587.     547.   1596.   2927. 
3     3 543.       1.69  529      11.8

请注意,与@Bruno 的解决方案相比,这给出了不同的结果。不过,它确实给出了与 Neeraj 的解决方案相同的结果。

我理解 TO 的方式是,他的输入已经是残差,在这种情况下,我只需要对它们中的每一个求平方,创建每个 ID(以及每列)的总和,然后除以每个 ID 的观察值。

列“A”和 ID 2 的一个示例:

  • 残差为 2.3 和 34.2
  • 平方残差为 5.29 和 1169.64
  • 残差平方和为 1174.93
  • MSE 是残差平方和除以 2 = 587.465

那是对的吗?


推荐阅读