Nếu bạn có các giá trị “thực tế” \(t = (t_1, \dots, t_n)\) và các giá trị “dự đoán” \(y = (y_1, \dots, y_n)\), thì Root Mean Square Error được định nghĩa là:
\[ \text{RMSE}_{t,y} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (t_i - y_i)^2 } \]
Viết một pipeline trong R để tính RMSE từ một data
frame chứa các cột t và y.
Gợi ý:
1. Trước hết, tính bình phương sai số trong một biểu
thức.
2. Sau đó, tính trung bình của các giá trị bình phương
này.
3. Cuối cùng, tính căn bậc hai của kết quả.
Hàm R để tính căn bậc hai là sqrt().
set.seed(69)
df <- data.frame(
t = rnorm(100, 5, 2),
y = rnorm(100, 5, 2)
)
df # In Data Frame
## t y
## 1 5.1543307 9.4316850
## 2 5.7486311 8.1506500
## 3 4.3303722 6.7116217
## 4 3.1002221 6.6055648
## 5 3.1195798 2.7025512
## 6 7.3792462 5.2028672
## 7 7.8881870 3.3522285
## 8 3.1921065 4.6893325
## 9 2.6662892 3.7404332
## 10 1.8578534 4.0767246
## 11 4.6616471 5.3286113
## 12 5.7035067 3.6561879
## 13 2.8898998 7.3880902
## 14 5.8299880 6.5315805
## 15 2.3772512 5.0202694
## 16 5.8999533 6.4788308
## 17 3.8001261 6.3582398
## 18 4.2064732 6.5712044
## 19 5.9630731 5.1949471
## 20 4.4835311 3.9776663
## 21 9.9878011 3.8556391
## 22 4.9072463 4.7719281
## 23 3.4441616 1.8331074
## 24 2.4042922 3.8122642
## 25 4.5311624 6.3710097
## 26 5.0487200 4.1025036
## 27 6.3765583 3.1718253
## 28 8.0947442 3.3563079
## 29 2.8888628 5.4096423
## 30 6.4910107 5.6409070
## 31 5.2135796 3.4953941
## 32 1.0881620 4.3749334
## 33 0.6297090 5.7716492
## 34 4.5448006 6.1184417
## 35 7.4321698 6.4297469
## 36 4.7015516 5.3517176
## 37 7.8874035 3.6224779
## 38 2.6156090 3.8925536
## 39 4.1253260 2.8301208
## 40 4.6516392 3.9428194
## 41 5.9523483 5.5733761
## 42 5.5217035 3.9277704
## 43 9.2197258 5.8951939
## 44 6.1874668 6.1767612
## 45 5.5638921 0.4355894
## 46 6.1558088 6.7159419
## 47 5.2821107 2.8580591
## 48 2.6460845 6.4591383
## 49 4.7222522 4.5596822
## 50 4.2489271 7.0107779
## 51 6.5827638 0.9449419
## 52 5.8779277 5.3064565
## 53 5.6914884 5.9218207
## 54 4.5912989 5.4631389
## 55 1.0463363 8.8378432
## 56 3.8587135 5.0595549
## 57 3.7732974 4.9804206
## 58 6.8407553 6.4884515
## 59 3.3441183 5.3467731
## 60 6.2571605 3.9316532
## 61 5.2319460 8.4961769
## 62 2.1097943 7.6470576
## 63 8.1926114 5.7564895
## 64 5.4733589 6.5364344
## 65 6.3668866 10.3549084
## 66 6.7875537 7.6139125
## 67 5.5191594 3.3747233
## 68 4.8748254 5.9433680
## 69 7.3113686 3.6195173
## 70 6.0490698 6.3669813
## 71 3.7680992 4.9327733
## 72 3.9094596 3.3008361
## 73 4.3589092 5.6465923
## 74 4.5039181 1.9479628
## 75 4.0049301 5.7637856
## 76 2.9831671 4.2730384
## 77 4.6437321 5.3913780
## 78 3.2016722 6.6556787
## 79 4.3375155 1.1245390
## 80 6.4646925 5.7522588
## 81 4.6474633 9.1765142
## 82 0.3614482 7.5993275
## 83 5.5152047 7.3636836
## 84 3.9428680 3.4438964
## 85 4.8336821 5.6729457
## 86 3.3260546 8.0868168
## 87 3.4502002 5.1451678
## 88 4.2218518 3.8863739
## 89 7.3453951 4.9945459
## 90 4.0189632 7.1828730
## 91 3.2700171 2.0395568
## 92 3.9770775 4.9169150
## 93 8.3583847 6.4996018
## 94 4.1472762 4.6874351
## 95 6.8542145 5.8379940
## 96 6.9856706 4.7349555
## 97 3.5616564 9.3319436
## 98 3.3223184 5.8785857
## 99 2.0939917 4.9386953
## 100 4.6101658 8.4506621
rmse <- df |> (\(sus_func)(sus_func$t - sus_func$y)^2)() |> mean() |> sqrt()
rmse # In kết quả
## [1] 2.764365