Pendahuluan

Dataset ini berisi informasi tentang preferensi pendengar musik di berbagai platform streaming. Kita akan melakukan eksplorasi untuk memahami pola-pola menarik dalam dataset ini.

Import Library dan Dataset

# Load library
library(dplyr)
library(ggplot2)

# Baca dataset
df <- read.csv("C:/Users/Putera Ramadhan/Downloads/Global_Music_Streaming_Listener_Preferences.csv")

Struktur Data

# Lihat struktur data
str(df)
## 'data.frame':    5000 obs. of  12 variables:
##  $ User_ID                                 : chr  "U1000" "U1001" "U1002" "U1003" ...
##  $ Age                                     : int  34 24 49 55 13 25 49 32 25 37 ...
##  $ Country                                 : chr  "Japan" "Germany" "Germany" "Australia" ...
##  $ Streaming.Platform                      : chr  "Tidal" "Deezer" "Deezer" "YouTube" ...
##  $ Top.Genre                               : chr  "Reggae" "Country" "Pop" "Reggae" ...
##  $ Minutes.Streamed.Per.Day                : int  295 86 363 348 30 536 547 98 526 514 ...
##  $ Number.of.Songs.Liked                   : int  138 388 368 349 328 243 70 448 27 299 ...
##  $ Most.Played.Artist                      : chr  "Adele" "Ed Sheeran" "Post Malone" "Dua Lipa" ...
##  $ Subscription.Type                       : chr  "Free" "Premium" "Premium" "Premium" ...
##  $ Listening.Time..Morning.Afternoon.Night.: chr  "Afternoon" "Night" "Afternoon" "Morning" ...
##  $ Discover.Weekly.Engagement....          : num  47.4 12.1 47.2 31.3 30.7 ...
##  $ Repeat.Song.Rate....                    : num  16.7 69.2 67.4 76.5 43.4 ...
# Lihat ringkasan statistik
summary(df)
##    User_ID               Age          Country          Streaming.Platform
##  Length:5000        Min.   :13.00   Length:5000        Length:5000       
##  Class :character   1st Qu.:25.00   Class :character   Class :character  
##  Mode  :character   Median :37.00   Mode  :character   Mode  :character  
##                     Mean   :36.66                                        
##                     3rd Qu.:49.00                                        
##                     Max.   :60.00                                        
##   Top.Genre         Minutes.Streamed.Per.Day Number.of.Songs.Liked
##  Length:5000        Min.   : 10.0            Min.   :  1.0        
##  Class :character   1st Qu.:161.0            1st Qu.:126.0        
##  Mode  :character   Median :316.0            Median :254.0        
##                     Mean   :309.2            Mean   :253.5        
##                     3rd Qu.:457.2            3rd Qu.:382.0        
##                     Max.   :600.0            Max.   :500.0        
##  Most.Played.Artist Subscription.Type  Listening.Time..Morning.Afternoon.Night.
##  Length:5000        Length:5000        Length:5000                             
##  Class :character   Class :character   Class :character                        
##  Mode  :character   Mode  :character   Mode  :character                        
##                                                                                
##                                                                                
##                                                                                
##  Discover.Weekly.Engagement.... Repeat.Song.Rate....
##  Min.   :10.02                  Min.   : 5.00       
##  1st Qu.:30.15                  1st Qu.:24.20       
##  Median :50.42                  Median :41.96       
##  Mean   :50.30                  Mean   :42.39       
##  3rd Qu.:70.34                  3rd Qu.:60.74       
##  Max.   :89.99                  Max.   :79.99
# Lihat beberapa baris pertama
head(df)
##   User_ID Age     Country Streaming.Platform Top.Genre Minutes.Streamed.Per.Day
## 1   U1000  34       Japan              Tidal    Reggae                      295
## 2   U1001  24     Germany             Deezer   Country                       86
## 3   U1002  49     Germany             Deezer       Pop                      363
## 4   U1003  55   Australia            YouTube    Reggae                      348
## 5   U1004  13     Germany       Amazon Music    Reggae                       30
## 6   U1005  25 South Korea            Spotify       EDM                      536
##   Number.of.Songs.Liked Most.Played.Artist Subscription.Type
## 1                   138              Adele              Free
## 2                   388         Ed Sheeran           Premium
## 3                   368        Post Malone           Premium
## 4                   349           Dua Lipa           Premium
## 5                   328              Adele              Free
## 6                   243         The Weeknd           Premium
##   Listening.Time..Morning.Afternoon.Night. Discover.Weekly.Engagement....
## 1                                Afternoon                          47.42
## 2                                    Night                          12.06
## 3                                Afternoon                          47.19
## 4                                  Morning                          31.27
## 5                                    Night                          30.68
## 6                                Afternoon                          70.26
##   Repeat.Song.Rate....
## 1                16.74
## 2                69.25
## 3                67.38
## 4                76.51
## 5                43.41
## 6                27.79

Memeriksa Missing Value

# Cek missing value
colSums(is.na(df))
##                                  User_ID 
##                                        0 
##                                      Age 
##                                        0 
##                                  Country 
##                                        0 
##                       Streaming.Platform 
##                                        0 
##                                Top.Genre 
##                                        0 
##                 Minutes.Streamed.Per.Day 
##                                        0 
##                    Number.of.Songs.Liked 
##                                        0 
##                       Most.Played.Artist 
##                                        0 
##                        Subscription.Type 
##                                        0 
## Listening.Time..Morning.Afternoon.Night. 
##                                        0 
##           Discover.Weekly.Engagement.... 
##                                        0 
##                     Repeat.Song.Rate.... 
##                                        0

Distribusi Umur Pendengar Musik

ggplot(df, aes(x = Age)) +
  geom_histogram(binwidth = 3, fill = "steelblue", color = "black", alpha = 0.7) +
  labs(
    title = "Distribusi Usia Pendengar Musik",
    x = "Usia",
    y = "Jumlah Pendengar"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.text = element_text(color = "black"),
    axis.title = element_text(face = "bold")
  )

Dari histogram Distribusi Usia Pendengar Musik, dapat diambil insight bahwa Pendengar musik melalui layanan streaming tersebar di berbagai kelompok usia, tetapi lebih banyak didominasi oleh usia 20-50 tahun. Usia sangat muda dan lebih tua cenderung memiliki jumlah pendengar lebih sedikit, kemungkinan karena perbedaan dalam pola konsumsi musik dan akses terhadap platform digital.

Platform Streaming yang Paling Banyak Digunakan

df %>%
  count(Streaming.Platform, sort = TRUE) %>%
  ggplot(aes(x = reorder(Streaming.Platform, n), y = n, fill = Streaming.Platform)) +
  geom_bar(stat = "identity", show.legend = FALSE) +
  coord_flip() +
  theme_minimal() +
  labs(title = "Popularitas Platform Streaming", x = "Platform", y = "Jumlah Pengguna") +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.text = element_text(color = "black"),
    axis.title = element_text(face = "bold")
  )

Dari grafik Popularitas Platform Streaming, dapat diambil insight bahwa penggunaan platform streaming musik cukup merata tanpa ada dominasi yang signifikan oleh satu platform tertentu. Meskipun ada sedikit perbedaan dalam jumlah pengguna, semua platform tampak memiliki basis pengguna yang kuat. Hal ini menunjukkan bahwa preferensi pendengar musik terhadap platform streaming cukup beragam, kemungkinan dipengaruhi oleh faktor seperti fitur yang ditawarkan, ketersediaan lagu, harga langganan, dan kebiasaan pengguna.

Genre Musik yang Paling Disukai

df %>%
  count(Top.Genre, sort = TRUE) %>%
  ggplot(aes(x = reorder(Top.Genre, n), y = n, fill = Top.Genre)) +
  geom_bar(stat = "identity", show.legend = FALSE) +
  coord_flip() +
  theme_minimal() +
  labs(title = "Popularitas Genre Musik", x = "Genre", y = "Jumlah Pendengar") +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.text = element_text(color = "black"),
    axis.title = element_text(face = "bold")
  )

Dari grafik popularitas genre musik, dapat diambil insight bahwa tidak ada genre yang secara signifikan lebih dominan dibandingkan yang lain, menunjukkan bahwa preferensi musik pendengar cukup beragam. Genre seperti Reggae, Jazz, EDM, dan Rock berada di peringkat teratas, yang mengindikasikan bahwa musik dengan ritme yang khas dan variasi instrumental yang kaya cukup populer.

Selain itu, genre Pop dan Classical juga memiliki banyak pendengar, menandakan bahwa ada keseimbangan antara musik mainstream yang mudah dinikmati dan musik klasik yang lebih niche. Keberagaman ini menunjukkan bahwa faktor seperti usia, budaya, dan kebiasaan mendengarkan memengaruhi preferensi musik seseorang.

Waktu Mendengarkan Musik vs. Langganan

ggplot(df, aes(x = Subscription.Type, y = Minutes.Streamed.Per.Day, fill = Subscription.Type)) +
  geom_boxplot() +
  theme_minimal() +
  labs(title = "Waktu Streaming Berdasarkan Jenis Langganan",
       x = "Jenis Langganan",
       y = "Menit Streaming Per Hari") +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.text = element_text(color = "black"),
    axis.title = element_text(face = "bold")
  )

Boxplot menunjukkan bahwa tidak ada perbedaan signifikan dalam total waktu streaming antara pengguna Free dan Premium, dengan median dan variasi yang hampir sama di kedua kelompok. Hal ini mengindikasikan bahwa meskipun pengguna Premium memiliki akses tanpa iklan dan fitur tambahan, mereka tidak selalu menghabiskan lebih banyak waktu untuk mendengarkan musik dibandingkan pengguna Free. Variasi waktu streaming yang serupa juga menunjukkan bahwa faktor lain, seperti kebiasaan mendengarkan dan keterbatasan waktu pribadi, mungkin lebih berpengaruh dibandingkan jenis langganan. Dengan demikian, perbedaan langganan tampaknya lebih memengaruhi pengalaman pengguna daripada durasi mendengarkan musik.

Pola Waktu Mendengarkan Musik

df %>%
  count(Listening.Time..Morning.Afternoon.Night., sort = TRUE) %>%
  ggplot(aes(x = reorder(Listening.Time..Morning.Afternoon.Night., n),
             y = n,
             fill = Listening.Time..Morning.Afternoon.Night.)) +
  geom_bar(stat = "identity", show.legend = FALSE) +
  coord_flip() +
  theme_minimal() +
  labs(title = "Kapan Pendengar Mendengarkan Musik?", x = "Waktu", y = "Jumlah Pendengar") +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.text = element_text(color = "black"),
    axis.title = element_text(face = "bold")
  )

Diagram menunjukkan bahwa waktu mendengarkan musik tersebar merata di berbagai periode, dengan jumlah pendengar yang hampir sama pada pagi (Morning), siang (Afternoon), dan malam (Night). Hal ini mengindikasikan bahwa tidak ada preferensi waktu yang dominan dalam kebiasaan mendengarkan musik, sehingga musik dikonsumsi secara fleksibel sesuai dengan aktivitas dan rutinitas individu.

Hubungan antara Usia dan Preferensi Genre Musik

ggplot(df, aes(x = Age, fill = Top.Genre)) +
  geom_density(alpha = 0.6) +
  labs(title = "Hubungan Usia dan Genre Musik Favorit",
       x = "Usia",
       y = "Kepadatan",
       fill = "Genre Musik") +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.text = element_text(color = "black"),
    axis.title = element_text(face = "bold")
  ) +
  facet_wrap(~Top.Genre, scales = "free_y")  # Membuat panel terpisah untuk setiap genre musik

Dari visualisasi distribusi usia berdasarkan genre musik favorit, bisa dilihat bahwa beberapa genre memiliki preferensi usia yang lebih menonjol dibandingkan yang lain. Misalnya, Hip-Hop dan R&B lebih banyak diminati oleh usia muda (di bawah 40 tahun), sementara genre seperti Classical dan Jazz memiliki distribusi yang lebih merata atau cenderung lebih populer di usia lebih tua. Genre seperti EDM dan Pop juga cenderung populer di kalangan muda, sedangkan Rock dan Metal memiliki penyebaran usia yang lebih luas tanpa dominasi yang jelas. Ini menunjukkan bahwa preferensi musik dapat dipengaruhi oleh faktor usia, dengan genre tertentu lebih disukai oleh kelompok usia tertentu.

Perbedaan Preferensi Genre Berdasarkan Jenis Langganan

df %>%
  count(Subscription.Type, Top.Genre) %>%
  ggplot(aes(x = Top.Genre, y = n, fill = Subscription.Type)) +
  geom_bar(stat = "identity", position = "dodge") +
  coord_flip() +
  labs(title = "Perbedaan Preferensi Genre Berdasarkan Jenis Langganan",
       x = "Genre Musik", y = "Jumlah Pendengar") +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.text = element_text(color = "black"),
    axis.title = element_text(face = "bold")
  )

Dari grafik Perbedaan Preferensi Genre Berdasarkan Jenis Langganan, terlihat bahwa perbedaan jumlah pendengar antara pengguna Premium dan Free cenderung tidak terlalu signifikan, menunjukkan bahwa preferensi musik tidak banyak dipengaruhi oleh jenis langganan. Namun, beberapa genre seperti Jazz dan EDM lebih populer di kalangan pengguna Premium, yang mungkin mengindikasikan bahwa mereka mencari pengalaman musik yang lebih eksklusif atau berkualitas tinggi. Sebaliknya, Reggae dan Pop memiliki lebih banyak pendengar Free, menunjukkan bahwa genre ini lebih diminati oleh pendengar kasual. Sementara itu, Rock memiliki distribusi yang paling seimbang antara pengguna Free dan Premium, menandakan bahwa popularitasnya tidak bergantung pada jenis langganan. Insight tambahan yang bisa dieksplorasi lebih lanjut termasuk hubungan antara preferensi genre dengan usia atau demografi, serta apakah pengguna Premium lebih aktif dalam Discover Weekly Engagement dan memiliki Repeat Song Rate yang lebih tinggi.

Perbedaan Durasi Streaming Berdasarkan Platform

ggplot(df, aes(x = Streaming.Platform, y = Minutes.Streamed.Per.Day, fill = Streaming.Platform)) +
  geom_boxplot() +
  coord_flip() +
  labs(title = "Durasi Streaming Berdasarkan Platform",
       x = "Platform Streaming", y = "Menit Streaming Per Hari") +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    axis.text = element_text(color = "black"),
    axis.title = element_text(face = "bold")
  )

Dari grafik Durasi Streaming Berdasarkan Platform, terlihat bahwa durasi streaming harian cukup merata di berbagai platform, dengan median yang hampir sama di semua kategori. YouTube dan Tidal memiliki distribusi durasi streaming yang lebih luas, yang menunjukkan adanya variasi signifikan dalam kebiasaan pengguna, dengan beberapa mendengarkan dalam durasi yang sangat lama. Sementara itu, Amazon Music dan Apple Music memiliki distribusi yang lebih terkonsentrasi, yang mungkin menandakan pola penggunaan yang lebih konsisten di antara para penggunanya. Spotify dan Deezer menunjukkan pola yang seimbang, dengan variabilitas yang tidak terlalu ekstrem dibandingkan YouTube atau Tidal. Hal ini bisa mengindikasikan bahwa Spotify tetap menjadi pilihan utama dengan penggunaan yang stabil, sementara platform seperti YouTube lebih sering digunakan baik untuk sesi singkat maupun panjang. Insight lebih lanjut bisa didapat dengan melihat hubungan antara durasi streaming dengan genre musik yang paling sering diputar atau karakteristik demografi pengguna tiap platform.