Anggota Kelompok

  1. Aqila Hana Winanggoro (164221010)
  2. Sinta Dian Monica (164221018)
  3. Firman Hasibuan (164221051)
  4. Giovanni Eki Pamungkas (164221090)
  5. Devina Salsabila (164221115)

Data

Sumber data yang digunakan dalam penelitian ini adalah data sekunder yang berjudul “Global Video Game Sales” yang diperoleh melalui website kaggle (https://www.kaggle.com/datasets/thedevastator/global-video-game-sales).

na14 <- c(1.4, 1.18, 2.26, 0.56, 0.9, 0.46, 0.72, 0.58, 0.17, 0.14, 0.08)
eu14 <- c(1.86, 1.96, 0.89, 0.89, 0.53, 0.62, 0.45, 0.38, 0.33, 0.26, 0.05)
jp14 <- c(0.11, 0.08, 0, 0.1, 0, 0.06, 0.01, 0, 0, 0, 0)

na15 <- c(0.8, 0.61, 0.1, 0, 0.06, 0.05, 0.04, 0.06, 0.05, 0.05, 0.03, 0, 0, 0)
eu15 <- c(1.92,0.56, 0.08, 0.08, 0.01, 0.01, 0.02, 0, 0.01, 0, 0, 0.03, 0.02, 0.02)
jp15 <- c(0.06, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

na16 <- c(0.59, 0.46, 0.03, 0.04, 0.02, 0.01, 0.02, 0, 0, 0)
eu16 <- c(1.16, 0.32, 0.24, 0.09, 0.06, 0.05, 0.03, 0.04, 0.01, 0.01)
jp16 <- c(0.06, 0, 0, 0, 0.01, 0.01, 0, 0.01, 0, 0)

EDA

Statistika Deskriptif

Ukuran Pemusatan Data

Tahun 2014

# Tahun 2014
# Mean 
mean_value_14 <- c(mean(na14), mean(eu14), mean(jp14))
# Median
median_value_14 <- c(median(na14), median(eu14), median(jp14))
# Modus
library(DescTools)
## Warning: package 'DescTools' was built under R version 4.2.3
mode_value_14 <- c(Mode(na14), Mode(eu14), Mode(jp14))
# Tabel
result_table_14 <- data.frame(Variabel = c("America Utara", "Uni Eropa", "Jepang"),
                               Mean = mean_value_14,
                               Median = median_value_14,
                               Modus = mode_value_14)
result_table_14
##        Variabel       Mean Median Modus
## 1 America Utara 0.76818182   0.58    NA
## 2     Uni Eropa 0.74727273   0.53  0.89
## 3        Jepang 0.03272727   0.00  0.00

Tahun 2015

# Tahun 2015
# Mean 
mean_value_15 <- c(mean(na15), mean(eu15), mean(jp15))
# Median
median_value_15 <- c(median(na15), median(eu15), median(jp15))
# Modus
library(DescTools)
mode_value_15 <- c(Mode(na15), Mode(eu15), Mode(jp15))

Tahun 2016

# Tahun 2016
# Mean 
mean_value_16 <- c(mean(na16), mean(eu16), mean(jp16))
# Median
median_value_16 <- c(median(na16), median(eu16), median(jp16))
# Modus
library(DescTools)
mode_value_16 <- c(Mode(na16), Mode(eu16), Mode(jp16))
# Tabel
result_table_16 <- data.frame(Variabel = c("America Utara", "Uni Eropa", "Jepang"),
                               Mean = mean_value_16,
                               Median = median_value_16,
                               Modus = mode_value_16)

result_table_16
##        Variabel  Mean Median Modus
## 1 America Utara 0.117  0.020  0.00
## 2     Uni Eropa 0.201  0.055  0.01
## 3        Jepang 0.009  0.000  0.00

Ukuran Penyebaran Data

Tahun 2014

# Range
range_value <- diff(range(na14))
range_value1 <- diff(range(eu14))
range_value2 <- diff(range(jp14))
# Variansi
variance_value <- c(var(na14), var(eu14), var(jp14))
# Standar Deviasi
sd_value <- c(sd(na14), sd(eu14), sd(jp14))
# IQR
IQR_value <- c(IQR(na14), IQR(eu14), IQR(jp14))
# Hasil
result_table <- data.frame(
  Variabel = c("America Utara", "Uni Eropa", "Jepang"),
  Range = c(range_value, range_value1, range_value2),
  Variance = variance_value,
  SD = sd_value,
  IQR = IQR_value
)
print(result_table)
##        Variabel Range    Variance         SD   IQR
## 1 America Utara  2.18 0.421376364 0.64913509 0.725
## 2     Uni Eropa  1.91 0.393401818 0.62721752 0.535
## 3        Jepang  0.11 0.002041818 0.04518648 0.070

Tahun 2015

# Range
range_value <- diff(range(na15))
range_value1 <- diff(range(eu15))
range_value2 <- diff(range(jp15))
# Variansi
variance_value <- c(var(na15), var(eu15), var(jp15))
# Standar Deviasi
sd_value <- c(sd(na15), sd(eu15), sd(jp15))
# IQR
IQR_value <- c(IQR(na15), IQR(eu15), IQR(jp15))
# Hasil
result_table <- data.frame(
  Variabel = c("America Utara", "Uni Eropa", "Jepang"),
  Range = c(range_value, range_value1, range_value2),
  Variance = variance_value,
  SD = sd_value,
  IQR = IQR_value
)
print(result_table)
##        Variabel Range     Variance         SD    IQR
## 1 America Utara  0.80 0.0611412088 0.24726748 0.0525
## 2     Uni Eropa  1.92 0.2670065934 0.51672681 0.0575
## 3        Jepang  0.06 0.0002571429 0.01603567 0.0000

Tahun 2016

# Range
range_value <- diff(range(na16))
range_value1 <- diff(range(eu16))
range_value2 <- diff(range(jp16))
# Variansi
variance_value <- c(var(na16), var(eu16), var(jp16))
# Standar Deviasi
sd_value <- c(sd(na16), sd(eu16), sd(jp16))
# IQR
IQR_value <- c(IQR(na16), IQR(eu16), IQR(jp16))
# Hasil
result_table <- data.frame(
  Variabel = c("America Utara", "Uni Eropa", "Jepang"),
  Range = c(range_value, range_value1, range_value2),
  Variance = variance_value,
  SD = sd_value,
  IQR = IQR_value
)
print(result_table)
##        Variabel Range     Variance         SD   IQR
## 1 America Utara  0.59 0.0473566667 0.21761587 0.035
## 2     Uni Eropa  1.15 0.1242766667 0.35252896 0.170
## 3        Jepang  0.06 0.0003433333 0.01852926 0.010

Uji Distribusi Normal

Tahun 2014

var1 <- shapiro.test(na14)
var2 <- shapiro.test(eu14)
var3 <- shapiro.test(jp14)

result_table <- data.frame(
  Variabel = c("America Utara", "Uni Eropa", "Jepang"),
  P_value = c(var1$p.value, var2$p.value, var3$p.value)
)
print(result_table)
##        Variabel     P_value
## 1 America Utara 0.156454367
## 2     Uni Eropa 0.026498342
## 3        Jepang 0.001158698

Tahun 2015

var1 <- shapiro.test(na15)
var2 <- shapiro.test(eu15)
var3 <- shapiro.test(jp15)

result_table <- data.frame(
  Variabel = c("America Utara", "Uni Eropa", "Jepang"),
  P_value = c(var1$p.value, var2$p.value, var3$p.value)
)
print(result_table)
##        Variabel      P_value
## 1 America Utara 1.562250e-05
## 2     Uni Eropa 1.924450e-06
## 3        Jepang 2.189847e-07

Tahun 2016

var1 <- shapiro.test(na16)
var2 <- shapiro.test(eu16)
var3 <- shapiro.test(jp16)

result_table <- data.frame(
  Variabel = c("America Utara", "Uni Eropa", "Jepang"),
  P_value = c(var1$p.value, var2$p.value, var3$p.value)
)
print(result_table)
##        Variabel      P_value
## 1 America Utara 4.040853e-05
## 2     Uni Eropa 4.367530e-05
## 3        Jepang 1.273186e-05

Detekni Outlier (Data Pencilan)

Tahun 2014

data <- data.frame(
  Region = rep(c("Amerika Utara", "Uni Eropa", "Jepang"), each = 11),
  Value = c(na14, eu14, jp14))
boxplot(Value ~ Region, data = data, col = c("#006666", "#003333", "#336666"), main = "Boxplot Data Tahun 2014", ylab = "Values", xlab = "Region")
grid()

Tahun 2015

data <- data.frame(
  Region = rep(c("Amerika Utara", "Uni Eropa", "Jepang"), each = 14),
  Value = c(na15, eu15, jp15))
boxplot(Value ~ Region, data = data, col = c("#006666", "#003333", "#336666"), main = "Boxplot Data Tahun 2015", ylab = "Values", xlab = "Region")
grid()

Tahun 2016

data <- data.frame(
  Region = rep(c("Amerika Utara", "Uni Eropa", "Jepang"), each = 10),
  Value = c(na16, eu16, jp16))
boxplot(Value ~ Region, data = data, col = c("#006666", "#003333", "#336666"), main = "Boxplot Data Tahun 2016", ylab = "Values", xlab = "Region")
grid()

Visualisasi

Tahun 2014

# Line Plot Data Tahun 2014
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)

all_values <- data.frame(
  Value = c(na14, eu14, jp14),
  Region = factor(rep(c("Amerika Utara", "Uni Eropa", "Jepang"), each = 11))
)

all_values <- all_values %>%
  group_by(Region) %>%
  mutate(Data_Point = row_number()) %>%
  ungroup()

ggplot(all_values, aes(x = Data_Point, y = Value, group = Region, color = Region)) +
  geom_line() +
  geom_point(size = 2) +
  labs(title = "Perbandingan Penjualan Video Game tahun 2014",
       y = "Nilai",
       x = "Data Point") +
  theme_minimal()

Tahun 2015

# Line Plot Data Tahun 2015
library(dplyr)
library(ggplot2)

all_values <- data.frame(
  Value = c(na15, eu15, jp15),
  Region = factor(rep(c("Amerika Utara", "Uni Eropa", "Jepang"), each = 14))
)

all_values <- all_values %>%
  group_by(Region) %>%
  mutate(Data_Point = row_number()) %>%
  ungroup()

ggplot(all_values, aes(x = Data_Point, y = Value, group = Region, color = Region)) +
  geom_line() +
  geom_point(size = 2) +
  labs(title = "Perbandingan Penjualan Video Game tahun 2015",
       y = "Nilai",
       x = "Data Point") +
  theme_minimal()

Tahun 2016

# Line Plot 2016
library(dplyr)
library(ggplot2)

all_values <- data.frame(
  Value = c(na16, eu16, jp16),
  Region = factor(rep(c("Amerika Utara", "Uni Eropa", "Jepang"), each = 10))
)

all_values <- all_values %>%
  group_by(Region) %>%
  mutate(Data_Point = row_number()) %>%
  ungroup()

ggplot(all_values, aes(x = Data_Point, y = Value, group = Region, color = Region)) +
  geom_line() +
  geom_point(size = 2) +
  labs(title = "Perbandingan Penjualan Video Game tahun 2016",
       y = "Nilai",
       x = "Data Point") +
theme_minimal()

### Uni Eropa 2014-2016

eu_sum14 <- sum(eu14)
eu_sum15 <- sum(eu15)
eu_sum16 <- sum(eu16)

all_values <- data.frame(
  Value = c(eu_sum14, eu_sum15, eu_sum16),
  Region = factor(rep(c("Tahun 2014", "Tahun 2015", "Tahun 2016"), each = 1))
)

ggplot(all_values, aes(x = Region, y = Value, fill = Region)) +
  geom_bar(stat = "identity", position = "dodge", alpha = 0.7) +
  labs(title = "Perbandingan Total Penjualan Wilayah Uni Eropa tahun 2014-2016",
       y = "Total Penjualan",
       x = "Tahun") +
  theme_minimal()

Uji Independen

Uji Kruskal-Wallis

kruskal.test(list(eu14, eu15, eu16))
## 
##  Kruskal-Wallis rank sum test
## 
## data:  list(eu14, eu15, eu16)
## Kruskal-Wallis chi-squared = 13.885, df = 2, p-value = 0.000966

Uji Perbandingan Berganda

# Data
# Keterangan :
# kel1 : Uni Eropa tahun 2015
# kel2 : Uni Eropa tahun 2016
# kel3 : Uni Eropa tahun 2014
kel1 <- eu15
kel2 <- eu16
kel3 <- eu14

Di-Ranking

# Menggabungkan semua data menjadi satu vektor
data <- c(kel1, kel2, kel3)

# Mengurutkan data dan memberikan peringkat
ranking <- rank(data)

new_k1 <- ranking[1:14]

new_k2 <- ranking[15:24]

new_k3 <- ranking[25:35]

Hasil Ranking

# Menampilkan hasil
print(new_k1)
##  [1] 34.0 28.0 18.5 18.5  6.0  6.0 10.0  2.0  6.0  2.0  2.0 12.5 10.0 10.0
cat("Jumlah nilai perangkingan kelompok 1:", sum(new_k1), "\n")
## Jumlah nilai perangkingan kelompok 1: 165.5
# Menampilkan hasil
print(new_k2)
##  [1] 32.0 23.0 21.0 20.0 17.0 15.5 12.5 14.0  6.0  6.0
cat("Jumlah nilai perangkingan kelompok 2:", sum(new_k2), "\n")
## Jumlah nilai perangkingan kelompok 2: 167
# Menampilkan hasil
print(new_k3)
##  [1] 33.0 35.0 30.5 30.5 27.0 29.0 26.0 25.0 24.0 22.0 15.5
cat("Jumlah nilai perangkingan kelompok 3:", sum(new_k3), "\n")
## Jumlah nilai perangkingan kelompok 3: 297.5

Panjang Data

n <- length(data)
cat("Jumlah Data:", n)
## Jumlah Data: 35

Z-Score

alpha_baru <- function(alpha, k) {
  alpha_baru <- alpha/(k*(k-1))
}

alpha_awal = 0.1
alpha_akhir = alpha_baru(alpha_awal, 3)
z_score <- function(alpha) {
  z_score <- qnorm(1 - alpha, lower.tail = TRUE)
  z_score <- round(z_score, digit = 3)
  return(z_score)
}

z_score1 <- z_score(alpha_akhir)
cat("Z Score =", z_score1, "\n")
## Z Score = 2.128

Nilai Mutlak

mutlak <- function(var1, var2) {
  rata_rata_var1 <- mean(var1)
  rata_rata_var2 <- mean(var2)
  
  hasil_mutlak <- abs(rata_rata_var1 - rata_rata_var2)

  cat("Nilai Mutlak:", hasil_mutlak, "\n")
  
  return(hasil_mutlak)
}

Kel 1&2

mutlak12 <- mutlak(new_k1, new_k2)
## Nilai Mutlak: 4.878571

Kel 1&3

mutlak13 <- mutlak(new_k1,new_k3)
## Nilai Mutlak: 15.22403

Kel 2&3

mutlak23 <- mutlak(new_k2, new_k3)
## Nilai Mutlak: 10.34545

Uji Perbandingan Berganda

uji_perbandingan_berganda <- function(z_score, n, var1, var2) {
  # Menghitung panjang variabel
  panjang_var1 <- length(var1)
  panjang_var2 <- length(var2)

  # Memastikan panjang_var1 dan panjang_var2 tidak nol
  if (panjang_var1 == 0 | panjang_var2 == 0) {
    cat("Panjang variabel tidak boleh nol.\n")
    return(NULL)
  }

  # Menghitung hasil uji
  hasil_uji <- z_score * sqrt((n * (n + 1) / 12) * ((1 / panjang_var1) + (1 / panjang_var2)))

  # Menampilkan nilai-nilai di dalam fungsi
  cat("Hasil Uji:", hasil_uji, "\n")
  
  return(hasil_uji)
}

Kel 1&2

uji12 <- uji_perbandingan_berganda(z_score1, n, new_k1, new_k2)
## Hasil Uji: 9.028339
if (mutlak12 > uji12) {
  print("Tolak H0: Median total penjualan video game pada wilayah Uni Eropa tahun 2015 dan tahun 2016 berbeda secara signifikan, pada tahun 2015 cenderung memiliki total penjualan video game lebih rendah daripada pada tahun 2016")
} else {
  print("Gagal Tolak H0: Tidak dapat menyimpulkan bahwa populasi-populasi yang diwakili oleh sampel wilayah Uni Eropa tahun 2015 dan sampel tahun 2016 berbeda dalam hal median total penjualan video game.")
}
## [1] "Gagal Tolak H0: Tidak dapat menyimpulkan bahwa populasi-populasi yang diwakili oleh sampel wilayah Uni Eropa tahun 2015 dan sampel tahun 2016 berbeda dalam hal median total penjualan video game."

Kel 1&3

uji13 <- uji_perbandingan_berganda(z_score1, n, new_k1, new_k3)
## Hasil Uji: 8.785691
if (mutlak13 > uji13) {
  print("Tolak H0: Median total penjualan video game di wilayah Uni Eropa tahun 2015 dan tahun 2014 berbeda secara signifikan, pada tahun 2015 cenderung memiliki total penjualan video game lebih rendah daripada tahun 2014.")
} else {
  print("Gagal Tolak H0: Tidak dapat menyimpulkan bahwa populasi-populasi yang diwakili oleh sampel wilayah Uni Eropa tahun 2015 dan sampel tahun 2014 berbeda dalam hal median total penjualan video game.")
}
## [1] "Tolak H0: Median total penjualan video game di wilayah Uni Eropa tahun 2015 dan tahun 2014 berbeda secara signifikan, pada tahun 2015 cenderung memiliki total penjualan video game lebih rendah daripada tahun 2014."

Kel 2&3

uji23 <- uji_perbandingan_berganda(z_score1, n, new_k2, new_k3)
## Hasil Uji: 9.527514
if (mutlak23 > uji23) {
  print("Tolak H0: Median total penjualan video game di wilayah Uni Eropa tahun 2016 dan tahun 2014 berbeda secara signifikan, pada tahun 2016 cenderung memiliki total penjualan video game lebih rendah daripada tahun 2014.")
} else {
  print("Gagal Tolak H0: Tidak dapat menyimpulkan bahwa populasi-populasi yang diwakili oleh sampel wilayah Uni Eropa tahun 2016 dan sampel tahun 2014 berbeda dalam hal median total penjualan video game.")
}
## [1] "Tolak H0: Median total penjualan video game di wilayah Uni Eropa tahun 2016 dan tahun 2014 berbeda secara signifikan, pada tahun 2016 cenderung memiliki total penjualan video game lebih rendah daripada tahun 2014."

Uji Johnkheere-Terpstra

library(clinfun)
## Warning: package 'clinfun' was built under R version 4.2.3
hasil <-c(eu16, eu15, eu14)
hasil_nama <-c(rep(1,10), rep(2,14), rep(3,11))
jonckheere.test(hasil, hasil_nama, alternative = "increasing")
## Warning in jonckheere.test(hasil, hasil_nama, alternative = "increasing"): Sample size > 100 or data with ties 
##  p-value based on normal approximation. Specify nperm for permutation p-value
## 
##  Jonckheere-Terpstra test
## 
## data:  
## JT = 274, p-value = 0.01436
## alternative hypothesis: increasing

Uji Dependen

Uji Friedman

# Data
friedman <- matrix(c(
   0.06,    0.59,   1.16,
   0,   0.46,   0.32,
   0,   0.03,   0.24,
   0,   0.04,   0.09,
   0.01, 0.02,  0.06,
   0.01,    0.01,   0.05,
   0,   0.02,   0.03,
   0.01,    0,  0.04,
   0,   0,  0.01,
   0,   0,  0.01
), ncol = 3, byrow = TRUE, dimnames = list(1:10, c("Jepang", "Amerika Utara", "Uni Eropa")))
print(friedman)
##    Jepang Amerika Utara Uni Eropa
## 1    0.06          0.59      1.16
## 2    0.00          0.46      0.32
## 3    0.00          0.03      0.24
## 4    0.00          0.04      0.09
## 5    0.01          0.02      0.06
## 6    0.01          0.01      0.05
## 7    0.00          0.02      0.03
## 8    0.01          0.00      0.04
## 9    0.00          0.00      0.01
## 10   0.00          0.00      0.01
# Analisis
friedman.test(friedman)
## 
##  Friedman rank sum test
## 
## data:  friedman
## Friedman chi-squared = 15.081, df = 2, p-value = 0.0005311

Uji Page

# Import Library
library(DescTools)

# Data
page <- matrix(
  c(
    0.06,   0.59,   1.16,
    0,  0.46,   0.32,
    0,  0.03,   0.24,
    0,  0.04,   0.09,
    0.01,   0.02,   0.06,
    0.01,   0.01,   0.05,
    0,  0.02,   0.03,
    0.01,   0,  0.04,
    0,  0,  0.01,
    0,  0,  0.01
  ),
  ncol = 3,
  byrow = TRUE,
  dimnames = list(1:10, 1:3)
)
print(page)
##       1    2    3
## 1  0.06 0.59 1.16
## 2  0.00 0.46 0.32
## 3  0.00 0.03 0.24
## 4  0.00 0.04 0.09
## 5  0.01 0.02 0.06
## 6  0.01 0.01 0.05
## 7  0.00 0.02 0.03
## 8  0.01 0.00 0.04
## 9  0.00 0.00 0.01
## 10 0.00 0.00 0.01
# Analisis
PageTest(page)
## 
##  Page test for ordered alternatives
## 
## data:  page
## L = 136.5, p-value = 1.953e-05

Uji Asosiasi

Uji Korelasi Amerika Utara dan Uni Eropa

cor.test(na16, eu16, method="kendall", alternative = "greater")
## Warning in cor.test.default(na16, eu16, method = "kendall", alternative =
## "greater"): Cannot compute exact p-value with ties
## 
##  Kendall's rank correlation tau
## 
## data:  na16 and eu16
## z = 3.2028, p-value = 0.0006806
## alternative hypothesis: true tau is greater than 0
## sample estimates:
##       tau 
## 0.8240428

Uji Korelasi Amerika Utara dan Jepang

cor.test(na16, jp16, method="kendall", alternative = "greater")
## Warning in cor.test.default(na16, jp16, method = "kendall", alternative =
## "greater"): Cannot compute exact p-value with ties
## 
##  Kendall's rank correlation tau
## 
## data:  na16 and jp16
## z = 0.21076, p-value = 0.4165
## alternative hypothesis: true tau is greater than 0
## sample estimates:
##        tau 
## 0.06011131

Uji Korelasi Uni Eropa dan Jepang

cor.test(eu16, jp16, method="kendall", alternative = "greater")
## Warning in cor.test.default(eu16, jp16, method = "kendall", alternative =
## "greater"): Cannot compute exact p-value with ties
## 
##  Kendall's rank correlation tau
## 
## data:  eu16 and jp16
## z = 0.93628, p-value = 0.1746
## alternative hypothesis: true tau is greater than 0
## sample estimates:
##       tau 
## 0.2611165