Impor Data

library(readxl)
# Baca file Excel
data <- read_excel("C:/Users/ASUS/Downloads/Copy of Assignment Data Analyst MSIB Batch 7.xlsx")

# Tampilkan beberapa baris pertama dari dataset
head(data)
## # A tibble: 6 × 7
##   `ga:sourceMedium` `ga:pageTitle`     `ga:users` `ga:bounceRate` `ga:pageviews`
##   <chr>             <chr>                   <dbl>           <dbl>          <dbl>
## 1 facebook / cpc    Bikin Lambe Turah…      13736           19.3           83593
## 2 facebook / cpc    Heboh! Kiki Farel…      15909           62.3           74032
## 3 facebook / cpc    Tak Sesuai Harapa…       7748           30.9           54657
## 4 facebook / cpc    Antar 'Tuyul', 7 …      43893            6.97          47924
## 5 facebook / cpc    Melihat Kantor Pe…      41155           11.6           44072
## 6 facebook / cpc    2 Pelajar di Yogy…      28334           82.7           30570
## # ℹ 2 more variables: `ga:pageviewsPerSession` <dbl>, `ga:avgTimeOnPage` <dbl>
# Lihat struktur data
str(data)
## tibble [156 × 7] (S3: tbl_df/tbl/data.frame)
##  $ ga:sourceMedium       : chr [1:156] "facebook / cpc" "facebook / cpc" "facebook / cpc" "facebook / cpc" ...
##  $ ga:pageTitle          : chr [1:156] "Bikin Lambe Turah Diomelin, Nih Si Seksi yang Lengket-lengket sama Gading" "Heboh! Kiki Farel Transfer Uang Jajan Rp 1 Juta ke Selebgram Mimi Peri" "Tak Sesuai Harapan, Barang Belanja Online Ini Bikin Ngakak" "Antar 'Tuyul', 7 Pengemudi Grab Dibekuk" ...
##  $ ga:users              : num [1:156] 13736 15909 7748 43893 41155 ...
##  $ ga:bounceRate         : num [1:156] 19.27 62.3 30.93 6.97 11.63 ...
##  $ ga:pageviews          : num [1:156] 83593 74032 54657 47924 44072 ...
##  $ ga:pageviewsPerSession: num [1:156] 6.04 4.61 6.95 1.11 43.81 ...
##  $ ga:avgTimeOnPage      : num [1:156] 21.79 16.33 21.43 5.06 180.94 ...
# Ringkasan deskriptif dari data
summary(data)
##  ga:sourceMedium    ga:pageTitle          ga:users     ga:bounceRate   
##  Length:156         Length:156         Min.   :    9   Min.   :  0.00  
##  Class :character   Class :character   1st Qu.:  108   1st Qu.:  0.00  
##  Mode  :character   Mode  :character   Median :  233   Median : 17.07  
##                                        Mean   : 1996   Mean   : 31.93  
##                                        3rd Qu.:  458   3rd Qu.: 62.40  
##                                        Max.   :43893   Max.   :100.00  
##                                        NA's   :1       NA's   :1       
##   ga:pageviews   ga:pageviewsPerSession ga:avgTimeOnPage 
##  Min.   :  215   Min.   :  0.000        Min.   :  2.815  
##  1st Qu.:  287   1st Qu.:  0.000        1st Qu.: 16.948  
##  Median :  431   Median :  2.354        Median : 44.721  
##  Mean   : 3607   Mean   : 16.204        Mean   : 75.428  
##  3rd Qu.:  826   3rd Qu.: 22.194        3rd Qu.:109.393  
##  Max.   :83593   Max.   :268.833        Max.   :449.897  
##  NA's   :1       NA's   :1              NA's   :1

Dari data tersebut, bisa diperoleh beberapa poin, yaitu : 1. Kunjungan pengguna banyak bersumber dari iklan Facebook yang berbayar. Hal tersebut menandakan bahwa Faceboook cenderung efektif dalam menarik pengunjung halaman jika dilihat secara keseluruhan. 2. Halaman dengan judul “Melihat Kantor layanan Grab Driver Center” memiliki rata-rata waktu tertinggi keterlibatan pengunjung halaman tersebut dan sesi per halamannya. Hal itu menunjukkan bahwa minat dari pengguna terhadap isi halaman tersebut sangat kuat. 3. Halaman dengan judul “Antar ‘Tuyul’, 7 Pengemudi Grab Dibekuk”, memiliki tingkat bounce rate yang sangat rendah (7%). Hal ini menunjukkan bahwa pengguna tidak hanya meninggalkan halaman tersebut segera setelah masuk, tetapi kemungkinan besar terlibat dengan konten sehingga menjelajahi lebih banyak halaman di situs.

Data yang numerik

# Mengambil kolom yang hanya bertipe numerik
data_num <- data[, sapply(data, is.numeric)]

# Menampilkan data frame yang hanya berisi kolom numerik
print(data_num)
## # A tibble: 156 × 5
##    `ga:users` `ga:bounceRate` `ga:pageviews` `ga:pageviewsPerSession`
##         <dbl>           <dbl>          <dbl>                    <dbl>
##  1      13736           19.3           83593                     6.04
##  2      15909           62.3           74032                     4.61
##  3       7748           30.9           54657                     6.95
##  4      43893            6.97          47924                     1.11
##  5      41155           11.6           44072                    43.8 
##  6      28334           82.7           30570                     1.08
##  7      22885           81.6           24941                     1.09
##  8       5180           12.7           24097                     4.74
##  9      23208           95.4           23989                     1.04
## 10      21116           88.1           22642                     1.08
## # ℹ 146 more rows
## # ℹ 1 more variable: `ga:avgTimeOnPage` <dbl>

Plot sebaran nilai dari masing-masing variabel

par(mfrow = c(1, 5))

# Membuat boxplot
boxplot(data_num$`ga:users`, main = "Boxplot Users", ylab = "Nilai", col = "red")
boxplot(data_num$`ga:bounceRate`, main = "Boxplot Bounce Rate", ylab = "Nilai", col = "lightgreen")
boxplot(data_num$`ga:pageviews`, main = "Boxplot Page Views", ylab = "Nilai", col = "yellow")
boxplot(data_num$`ga:pageviewsPerSession`, main = "Boxplot Page Avg Views per Session", ylab = "Nilai", col = "orange")
boxplot(data_num$`ga:avgTimeOnPage`, main = "Boxplot Avg Time on Page", ylab = "Nilai", col = "lightblue")

Dari visualisasi diatas, terlihat bahwa sebaran nilai pengguna, jumlah banyaknya halaman dilihat, dan rata-rata sesi pengunjung halaman mempunyai sebaran nilai yang lumayan besar, sehingga terlihat banyak pencilan pada boxplotnya. Selain itu, sebaran nilai bounce rate berkisar antara 0 hingga 100 dan rata-rata waktu yang dihabiskan dalam halaman tersebut berkisar antara 0 hingga nilai sekitar 200.

Melihat korelasi antar variabel

# Menghapus nilai NA
data_num.1 <- na.omit(data_num)
df <- as.data.frame(data_num.1)

# Memuat paket corrplot
library(corrplot)
## corrplot 0.92 loaded
# Menghitung matriks korelasi
cor_matrix <- cor(df)

# Membuat heatmap menggunakan corrplot
corrplot(cor_matrix, method = "color", 
         col = colorRampPalette(c("blue", "white", "red"))(200),
         addCoef.col = "black", # Menambahkan nilai korelasi
         tl.col = "black", tl.srt = 45, # Rotasi label sumbu
         title = "Heatmap Matriks Korelasi")

Dari visualisasi korelasi diatas, terlihat bahwa hubungan terkuat berada diantara jumlah pengunjung dengan jumlah banyaknya halaman tersebut dibuka. Hal itu tentu saja selaras karena semakin sering halaman dibuka maka berarti jumlah pengguna yang membuka halaman tersebut semakin banyak. Disamping itu, lamanya sesi dalam melihat suatu halaman tidak mempunyai hubungan yang besar terhadap variabel lainnya.

Proporsi Nilai Bounce Rate

# Data
High <- sum(data_num.1$`ga:bounceRate` > 50)
Low <- sum(data_num.1$`ga:bounceRate` <= 50)
proporsi <- c(High, Low)
labels <- c("High Bounce Rate", "Low Bounce Rate")

# Menghitung persentase
persentase <- round(proporsi / sum(proporsi) * 100, 1)
labels <- paste(labels, persentase, "%", sep = " ")

# Membuat pie chart
colors <- c('yellow', 'orange')
pie(proporsi, labels = labels, main = "Identify pages with high or low bounce rates", col = colors)

Dari pie chart diatas, terlihat bahwa judul artikel yang termasuk dalam data yang dianalisis lebih banyak yang memiliki tingkat bounce rate yang rendah. Hal itu berarti sebagian besar pengunjung merasa bahwa sudah banyak halaman yang memenuhi kebutuhan pengunjung dalam mencari informasi atau berita terbaru.