Рассчитать RMSE для специальных столбцов в R - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть фрейм данных в R, например:

set.seed(10)
sample <- data_frame(Date   = c('2000-05-01','2000-05-02','2000-05-03','2000-05-04',"2000-05-05",'2000-05-06'),
                 T1 = rnorm(6),
                 T2 = rnorm(6),
                 T3 = rnorm(6),
                 T1_a  = rnorm(6),
                 T1_b = rnorm(6), 
                 T1_c = rnorm(6), 
                 T2_a  = rnorm(6),
                 T2_b = rnorm(6), 
                 T2_c = rnorm(6), 
                 T3_a  = rnorm(6),
                 T3_b = rnorm(6), 
                 T3_c = rnorm(6))

Я хочу вычислить среднеквадратичную ошибку, используя пакет MLmetrics, например:

library(MLmetrics)
RMSE_T1_a = RMSE(sample$T1, sample$T1_a)
RMSE_T1_b = RMSE(sample$T1, sample$T1_b)
RMSE_T1_c = RMSE(sample$T1, sample$T1_c)

RMSE_T2_a = RMSE(sample$T2, sample$T2_a)
RMSE_T2_b = RMSE(sample$T2, sample$T2_b)
RMSE_T2_c = RMSE(sample$T2, sample$T2_c)

RMSE_T3_a = RMSE(sample$T3, sample$T3_a)
RMSE_T3_b = RMSE(sample$T3, sample$T3_b)
RMSE_T3_c = RMSE(sample$T3, sample$T3_c)

В конце я хочу поместить все эти RMSE в фрейм данных.

Есть ли более быстрый способ сделать все это сразу?

1 Ответ

1 голос
/ 18 апреля 2019

Одним из способов является использование пакета dplyr следующим образом:

library(dplyr)
rmsedata <- sample %>%
  summarise_at(vars(matches("T1_")), ~RMSE(T1, .x)) %>%
  bind_cols(sample %>%summarise_at(vars(matches("T2_")), ~RMSE(T2, .x))) %>%
  bind_cols(sample %>%summarise_at(vars(matches("T3_")), ~RMSE(T3, .x)))

      T1_a      T1_b    T1_c     T2_a      T2_b      T2_c      T3_a     T3_b     T3_c
1 1.391521 0.6828504 1.61983 1.195112 0.8101942 0.8953161 0.7983381 1.396028 1.171313

Один небольшой совет: не называйте свою выборку данных: есть функция R, которая называется sample, и именование вашей выборки данных также может привести к путанице:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...