Hitung dan plot rerata musiman
Pada latihan sebelumnya Anda menggunakan endpoints() dan period.apply() untuk dengan cepat menghitung rerata menang/kalah Boston Red Sox pada akhir setiap musim. Namun bagaimana jika Anda perlu mengetahui rerata kumulatif sepanjang setiap musim? Baik ahli statistik maupun penggemar olahraga sering mengandalkan rerata ini untuk membandingkan suatu tim dengan para pesaingnya.
Untuk menghitung rerata kumulatif di tiap musim, Anda perlu kembali ke rumus split-lapply-rbind yang dipraktikkan di Bab Tiga. Pertama, Anda akan membagi data berdasarkan musim, lalu menerapkan fungsi mean kumulatif pada kolom win_loss di setiap musim, kemudian menggabungkan kembali nilainya menjadi sebuah objek xts.
Fungsi kustom cummean(), yang menghasilkan jumlah kumulatif dan membaginya dengan jumlah nilai yang disertakan dalam penjumlahan, telah disediakan untuk Anda. Data redsox_xts, termasuk kolom win_loss, tersedia di workspace Anda.
Latihan ini adalah bagian dari kursus
Studi Kasus: Menganalisis Data Deret Waktu Kota di R
Petunjuk latihan
- Gunakan
split()untuk memecah dataredsox_xtsberdasarkan musim (dalam hal ini,years). Simpan sebagairedsox_seasons. - Gunakan
lapply()untuk menghitung mean kumulatif untuk setiap musim. Untuk latihan ini, fungsicummean()telah dirancang untuk menghitung jumlah (menggunakancumsum()) dan membaginya dengan jumlah entri dalam penjumlahan (menggunakanseq_along()). Simpan data ini keredsox_ytd. - Gunakan
do.call()denganrbinduntuk mengonversi keluaran list Anda menjadi satu objek xts (redsox_winloss) yang memuat rerata menang/kalah sepanjang setiap musim. - Gunakan
plot.xts()untuk melihat rerata menang/kalah kumulatif selama musim2013. Biarkan argumenylimsebagaimana adanya pada kode yang sudah disiapkan.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Split redsox_xts win_loss data into years
redsox_seasons <- split(___$___, f = "___")
# Use lapply to calculate the cumulative mean for each season
redsox_ytd <- lapply(___, cummean)
# Use do.call to rbind the results
redsox_winloss <- do.call(___, ___)
# Plot the win_loss average for the 2013 season
plot.xts(___["___"], ylim = c(0, 1))