1 PENDAHULUAN

1.1 Latar Belakang

Industri smartphone di Indonesia mengalami pertumbuhan pesat dengan persaingan yang sangat dinamis. Berbagai brand internasional dan lokal berlomba-lomba merebut pangsa pasar dengan strategi positioning yang berbeda-beda. Memahami persepsi konsumen terhadap berbagai brand menjadi krusial untuk merancang strategi pemasaran yang efektif.

Multi-Dimensional Scaling (MDS) merupakan teknik analisis multivariat yang powerful untuk memvisualisasikan struktur kompleks dari data kedekatan (proximity data) dalam ruang dimensi rendah. Teknik ini memungkinkan peneliti untuk mengidentifikasi posisi relatif objek berdasarkan kesamaan atau perbedaan, mengungkap dimensi-dimensi laten yang mendasari persepsi konsumen, menemukan pola clustering dan segmentasi pasar, serta memberikan insight strategis untuk positioning dan diferensiasi brand.

1.2 Konsep Multi-Dimensional Scaling

MDS adalah sekelompok teknik statistik yang mentransformasikan penilaian kedekatan (proximity) antar n objek menjadi representasi geometris dalam ruang p-dimensi (biasanya p=2 atau 3). Tujuan utama MDS adalah menemukan konfigurasi titik-titik dalam ruang berdimensi rendah sedemikian rupa sehingga jarak antar titik sesuai dengan dissimilarity data asli.

1.2.1 Prinsip Dasar MDS

Misalkan kita memiliki matriks dissimilarity D dengan elemen d(ij) yang merepresentasikan ketidaksamaan antara objek i dan j. MDS mencari konfigurasi X yang meminimalkan fungsi stress:

STRESS = sqrt(sum((d_ij - d_hat_ij)^2) / sum(d_ij^2))

dimana d(ij) adalah dissimilarity observasi dan d-hat(ij) adalah jarak dalam konfigurasi MDS.

1.2.2 Jenis-jenis MDS

  1. Metric MDS (Classical MDS): Mengasumsikan data berskala interval atau rasio. Menggunakan eigenvalue decomposition untuk mendapatkan koordinat.

  2. Non-metric MDS: Hanya mempertahankan urutan (ranking) dari dissimilarity. Lebih fleksibel dan robust terhadap transformasi monoton.

1.2.3 Kriteria Evaluasi

STRESS Value: Mengukur seberapa baik fit model MDS - STRESS < 0.05: Excellent fit - STRESS < 0.10: Good fit
- STRESS < 0.20: Fair fit - STRESS > 0.20: Poor fit

R-squared: Proporsi varians yang dijelaskan oleh model Variance Accounted For (VAF): Proporsi varians yang direpresentasikan oleh dimensi MDS

1.3 Tujuan Penelitian

Penelitian ini bertujuan untuk:

  1. Memetakan posisi perseptual 10 brand smartphone populer di Indonesia dalam ruang 2 dimensi
  2. Mengidentifikasi dan menginterpretasi dimensi-dimensi laten yang membedakan brand-brand tersebut
  3. Mengevaluasi kualitas pemetaan menggunakan STRESS value, R-squared, dan Shepard diagram
  4. Melakukan segmentasi brand berdasarkan similarity menggunakan hierarchical clustering
  5. Menganalisis struktur kompetisi dan market gap untuk strategic insight
  6. Memberikan rekomendasi positioning berdasarkan temuan analisis

2 DATA DAN METODOLOGI

2.1 Pembangkitan Data

Data penelitian ini dibangkitkan untuk mensimulasikan hasil survei persepsi konsumen terhadap 10 brand smartphone berdasarkan 7 atribut kunci.

set.seed(20241216)

brands <- c("Samsung", "Apple", "Xiaomi", "Oppo", "Vivo", 
            "Realme", "Infinix", "Tecno", "Nokia", "Asus")

attributes <- c("Harga_Terjangkau", "Kualitas_Kamera", "Performa_Prosesor",
                "Desain_Elegan", "Daya_Tahan_Baterai", "Brand_Prestige", 
                "Value_for_Money")

# Profil brand berdasarkan positioning pasar
samsung <- c(5, 9, 9, 8, 8, 9, 7)
apple <- c(2, 9, 10, 10, 7, 10, 4)
xiaomi <- c(9, 8, 8, 7, 8, 6, 10)
oppo <- c(6, 9, 7, 8, 7, 7, 7)
vivo <- c(6, 9, 7, 8, 7, 7, 7)
realme <- c(9, 7, 8, 7, 9, 6, 9)
infinix <- c(10, 6, 6, 6, 10, 5, 9)
tecno <- c(10, 6, 6, 6, 9, 5, 9)
nokia <- c(7, 7, 7, 6, 9, 6, 7)
asus <- c(6, 7, 10, 7, 8, 7, 8)

data_mean <- rbind(samsung, apple, xiaomi, oppo, vivo, 
                   realme, infinix, tecno, nokia, asus)

# Tambahkan noise realistis
data_matrix <- data_mean + matrix(rnorm(70, 0, 0.3), nrow = 10, ncol = 7)
data_matrix <- pmax(pmin(data_matrix, 10), 1)

rownames(data_matrix) <- brands
colnames(data_matrix) <- attributes

df <- as.data.frame(data_matrix)

kable(round(df, 2), 
      caption = "Data Rating Persepsi Konsumen terhadap Brand Smartphone (Skala 1-10)") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"), 
                full_width = FALSE) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#FFB6C1") %>%
  column_spec(1, bold = TRUE, color = "#D5587C", background = "#FFF5F7")
Data Rating Persepsi Konsumen terhadap Brand Smartphone (Skala 1-10)
Harga_Terjangkau Kualitas_Kamera Performa_Prosesor Desain_Elegan Daya_Tahan_Baterai Brand_Prestige Value_for_Money
Samsung 5.17 8.43 8.73 8.01 7.29 9.29 6.84
Apple 1.60 9.18 9.87 9.83 7.35 9.68 4.26
Xiaomi 8.87 7.88 8.05 6.61 8.01 6.12 10.00
Oppo 5.78 8.40 7.08 7.84 7.86 6.94 6.97
Vivo 5.19 8.68 7.10 7.86 7.49 7.35 6.97
Realme 8.91 7.15 7.82 6.41 9.28 5.98 9.18
Infinix 10.00 6.19 6.62 6.12 10.00 4.78 8.88
Tecno 10.00 6.21 5.88 5.75 9.14 4.68 9.13
Nokia 6.88 7.05 7.10 5.99 8.82 6.22 6.78
Asus 5.76 6.63 9.44 7.32 8.15 6.91 8.08

2.2 Deskripsi Variabel

Dataset terdiri dari 10 brand smartphone yang dinilai berdasarkan 7 atribut dengan skala 1-10:

  1. Harga_Terjangkau: Persepsi keterjangkauan harga relatif terhadap fitur
  2. Kualitas_Kamera: Kualitas hasil foto, video, dan fitur kamera
  3. Performa_Prosesor: Kecepatan processing, multitasking, dan gaming
  4. Desain_Elegan: Estetika, build quality, dan premium feel
  5. Daya_Tahan_Baterai: Kapasitas baterai dan efisiensi power management
  6. Brand_Prestige: Citra brand, status symbol, dan brand recognition
  7. Value_for_Money: Perceived value dibanding harga

2.3 Statistik Deskriptif

desc_stats <- data.frame(
  Atribut = attributes,
  Mean = colMeans(df),
  Median = apply(df, 2, median),
  SD = apply(df, 2, sd),
  Min = apply(df, 2, min),
  Max = apply(df, 2, max)
)

kable(desc_stats, digits = 2,
      caption = "Statistik Deskriptif Atribut Smartphone") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#FFB6C1")
Statistik Deskriptif Atribut Smartphone
Atribut Mean Median SD Min Max
Harga_Terjangkau Harga_Terjangkau 6.82 6.33 2.66 1.60 10.00
Kualitas_Kamera Kualitas_Kamera 7.58 7.51 1.07 6.19 9.18
Performa_Prosesor Performa_Prosesor 7.77 7.46 1.27 5.88 9.87
Desain_Elegan Desain_Elegan 7.17 6.96 1.25 5.75 9.83
Daya_Tahan_Baterai Daya_Tahan_Baterai 8.34 8.08 0.92 7.29 10.00
Brand_Prestige Brand_Prestige 6.79 6.56 1.66 4.68 9.68
Value_for_Money Value_for_Money 7.71 7.53 1.68 4.26 10.00
brand_stats <- data.frame(
  Brand = brands,
  Mean_Rating = rowMeans(df),
  SD = apply(df, 1, sd)
) %>% arrange(desc(Mean_Rating)) %>%
  mutate(Rank = row_number())

kable(brand_stats, digits = 2,
      caption = "Rating Rata-Rata dan Ranking Brand") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#FFB6C1") %>%
  row_spec(1, bold = TRUE, background = "#FFE8EE") %>%
  column_spec(1, bold = TRUE, color = "#D5587C")
Rating Rata-Rata dan Ranking Brand
Brand Mean_Rating SD Rank
Xiaomi Xiaomi 7.93 1.31 1
Realme Realme 7.82 1.36 2
Samsung Samsung 7.68 1.38 3
Infinix Infinix 7.51 2.09 4
Asus Asus 7.47 1.20 5
Apple Apple 7.40 3.26 6
Oppo Oppo 7.27 0.86 7
Tecno Tecno 7.26 2.10 8
Vivo Vivo 7.24 1.07 9
Nokia Nokia 6.98 0.91 10

3 EXPLORATORY DATA ANALYSIS

3.1 Visualisasi Distribusi Rating

df_long <- df %>%
  mutate(Brand = rownames(df)) %>%
  pivot_longer(cols = -Brand, names_to = "Atribut", values_to = "Rating")

ggplot(df_long, aes(x = reorder(Atribut, Rating, FUN = median), 
                    y = Rating, fill = Atribut)) +
  geom_boxplot(alpha = 0.8, outlier.color = "#D5587C") +
  stat_summary(fun = mean, geom = "point", shape = 23, size = 3, 
               fill = "white", color = "#D5587C") +
  scale_fill_brewer(palette = "RdPu") +
  coord_flip() +
  labs(title = "Distribusi Rating per Atribut Smartphone",
       subtitle = "Diamond = Mean, Box = IQR",
       x = "Atribut", y = "Rating (1-10)") +
  theme_minimal() +
  theme(
    legend.position = "none",
    plot.title = element_text(hjust = 0.5, face = "bold", color = "#D5587C", size = 14),
    plot.subtitle = element_text(hjust = 0.5, color = "#D5587C", size = 10),
    panel.background = element_rect(fill = "#FFF5F7", color = NA)
  )

Daya tahan baterai dan performa prosesor memperoleh median tinggi dengan sebaran relatif sempit, yang mengindikasikan tingkat kepuasan pengguna yang konsisten dan pengalaman penggunaan yang stabil lintas responden. Kualitas kamera juga dinilai baik, meskipun tidak tampil sebagai faktor pembeda utama karena variasi penilaiannya masih moderat.

Sebaliknya, atribut yang bersifat perseptual memperlihatkan heterogenitas penilaian yang lebih besar. Harga terjangkau dan value for money memiliki rentang rating paling lebar, menandakan perbedaan ekspektasi pengguna terhadap kesesuaian harga dan manfaat yang diterima. Brand prestige memperoleh median paling rendah dibandingkan atribut lain, menunjukkan bahwa citra merek belum sepenuhnya dipersepsikan kuat atau premium oleh mayoritas pengguna. Secara keseluruhan, temuan ini mengindikasikan bahwa kepuasan konsumen lebih didorong oleh kinerja nyata produk dibandingkan oleh persepsi nilai dan citra merek, sehingga peningkatan strategi harga dan positioning merek menjadi area kunci untuk memperkuat kepuasan secara menyeluruh.

3.2 Heatmap Profil Brand

df_melt <- melt(as.matrix(df))

ggplot(df_melt, aes(x = Var2, y = Var1, fill = value)) +
  geom_tile(color = "white", size = 0.5) +
  scale_fill_gradient2(
    low = "#FFF0F3", 
    mid = "#FFB6C1", 
    high = "#D5587C",
    midpoint = median(df_melt$value),
    name = "Rating"
  ) +
  geom_text(aes(label = round(value, 1)), 
            color = "black", size = 3, fontface = "bold") +
  labs(title = "Heatmap Rating Brand per Atribut",
       x = "Atribut", y = "Brand") +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 45, hjust = 1),
    plot.title = element_text(hjust = 0.5, face = "bold", color = "#D5587C", size = 14),
    panel.background = element_rect(fill = "#FFF5F7", color = NA)
  )

Heatmap menunjukkan bahwa keunggulan tiap brand bersifat spesifik pada atribut tertentu. Infinix dan Xiaomi menonjol pada harga terjangkau dan value for money, mencerminkan positioning kuat di segmen value-driven, sementara Apple dan Samsung unggul pada performa, kamera, dan daya tahan, tetapi relatif lemah pada persepsi harga. Oppo, Vivo, dan Realme berada di posisi menengah dan seimbang tanpa dominasi ekstrem, sedangkan brand seperti Tecno dan Nokia menunjukkan performa atribut yang cenderung moderat. Secara keseluruhan, pola ini menegaskan adanya segmentasi pasar yang jelas, di mana kompetisi tidak terjadi secara menyeluruh, melainkan pada atribut yang selaras dengan strategi dan target konsumen masing-masing brand.

3.3 Profil Radar Chart Top Brands

top5_brands <- brand_stats$Brand[1:5]
df_top5 <- df[top5_brands, ]

df_radar <- rbind(
  rep(10, 7),
  rep(1, 7),
  df_top5
)

colors_border <- c("#8B1538", "#D5587C", "#E88CA7", "#FFB6C1", "#FFC0CB")
colors_fill <- paste0(colors_border, "30")

par(mar = c(1, 1, 4, 1), bg = "#FFF5F7")
radarchart(
  df_radar, 
  axistype = 1,
  pcol = colors_border,
  pfcol = colors_fill,
  plwd = 2.5,
  plty = 1,
  cglcol = "grey70", 
  cglty = 1,
  axislabcol = "#D5587C",
  caxislabels = c("2", "4", "6", "8", "10"),
  vlcex = 0.85,
  title = "Profil 5 Brand Smartphone Teratas",
  cex.main = 1.3,
  col.main = "#D5587C"
)

legend(
  x = 1.3, y = 1.3, 
  legend = top5_brands,
  col = colors_border,
  lty = 1, lwd = 2.5,
  cex = 0.85,
  bty = "n",
  text.col = "#D5587C"
)

Radar chart memperlihatkan diferensiasi yang jelas antar lima brand teratas. Xiaomi dan Infinix kuat pada harga terjangkau dan value for money, menegaskan fokus pada efisiensi biaya, namun relatif lebih lemah pada brand prestige. Samsung dan Asus menunjukkan profil yang lebih seimbang, dengan keunggulan pada performa prosesor dan kualitas kamera, mencerminkan orientasi pada kualitas dan keandalan produk. Realme berada di posisi transisi dengan performa cukup merata, tetapi tidak mendominasi pada satu atribut spesifik. Secara keseluruhan, visual ini menegaskan bahwa keunggulan kompetitif masing-masing brand dibangun melalui kombinasi atribut yang berbeda, bukan keunggulan menyeluruh di semua dimensi.

3.4 Korelasi Antar Atribut

cor_attributes <- cor(df)

corrplot(
  cor_attributes, 
  method = "color",
  type = "upper",
  col = colorRampPalette(c("#FFF5F7", "#FFB6C1", "#D5587C"))(100),
  tl.col = "#D5587C",
  tl.srt = 45,
  tl.cex = 0.9,
  addCoef.col = "black",
  number.cex = 0.8,
  title = "Matriks Korelasi Antar Atribut",
  mar = c(0, 0, 3, 0)
)

Matriks korelasi menunjukkan adanya trade-off yang kuat antara harga dan kualitas. Harga terjangkau berkorelasi negatif sangat kuat dengan kualitas kamera, performa, desain, dan brand prestige, tetapi positif kuat dengan value for money, menegaskan bahwa smartphone murah dinilai bernilai karena efisiensi biaya, bukan keunggulan atribut premium. Di sisi lain, kualitas kamera, performa prosesor, desain elegan, dan brand prestige saling berkorelasi positif tinggi, membentuk satu klaster atribut “premium experience”. Daya tahan baterai relatif lebih netral, mampu menjembatani kedua klaster, sehingga menjadi atribut penting yang diapresiasi lintas segmen harga.

4 ANALISIS MULTI-DIMENSIONAL SCALING

4.1 Perhitungan Matriks Jarak

dist_matrix <- dist(df, method = "euclidean")
dist_mat <- as.matrix(dist_matrix)

kable(round(dist_mat, 2), 
      caption = "Matriks Jarak Euclidean Antar Brand") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE, font_size = 11) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#FFB6C1") %>%
  column_spec(1, bold = TRUE, color = "#D5587C", background = "#FFF5F7")
Matriks Jarak Euclidean Antar Brand
Samsung Apple Xiaomi Oppo Vivo Realme Infinix Tecno Nokia Asus
Samsung 0.00 4.98 6.08 3.00 2.57 6.28 8.26 8.45 4.83 3.54
Apple 4.98 0.00 10.69 6.71 6.13 10.73 12.50 12.80 8.68 7.29
Xiaomi 6.08 10.69 0.00 4.71 5.25 1.72 3.66 3.69 4.12 4.24
Oppo 3.00 6.71 4.71 0.00 0.86 4.67 6.22 6.31 2.81 3.21
Vivo 2.57 6.13 5.25 0.86 0.00 5.36 7.00 7.04 3.47 3.48
Realme 6.28 10.73 1.72 4.67 5.36 0.00 2.38 2.82 3.30 4.13
Infinix 8.26 12.50 3.66 6.22 7.00 2.38 0.00 1.22 4.31 6.01
Tecno 8.45 12.80 3.69 6.31 7.04 2.82 1.22 0.00 4.47 6.35
Nokia 4.83 8.68 4.12 2.81 3.47 3.30 4.31 4.47 0.00 3.36
Asus 3.54 7.29 4.24 3.21 3.48 4.13 6.01 6.35 3.36 0.00
dist_vec <- dist_mat[upper.tri(dist_mat)]
min_idx <- which(dist_mat == min(dist_vec), arr.ind = TRUE)[1,]
max_idx <- which(dist_mat == max(dist_vec), arr.ind = TRUE)[1,]

cat("\n=== STATISTIK MATRIKS JARAK ===\n")
## 
## === STATISTIK MATRIKS JARAK ===
cat(sprintf("Mean distance: %.3f\n", mean(dist_vec)))
## Mean distance: 5.326
cat(sprintf("Min distance: %.3f (%s - %s)\n", min(dist_vec),
            brands[min_idx[1]], brands[min_idx[2]]))
## Min distance: 0.857 (Vivo - Oppo)
cat(sprintf("Max distance: %.3f (%s - %s)\n", max(dist_vec),
            brands[max_idx[1]], brands[max_idx[2]]))
## Max distance: 12.801 (Tecno - Apple)

Statistik matriks jarak menunjukkan bahwa perbedaan karakteristik antar brand smartphone tergolong cukup moderat secara umum, tercermin dari nilai rata-rata jarak sebesar 5,326. Jarak minimum antara Vivo dan Oppo mengindikasikan kemiripan positioning dan profil atribut yang sangat tinggi, sehingga keduanya berpotensi saling bersaing langsung pada segmen yang sama. Sebaliknya, jarak maksimum antara Tecno dan Apple merefleksikan kontras ekstrem dalam strategi nilai dan citra, dengan perbedaan tajam antara orientasi harga dan pengalaman premium. Temuan ini menegaskan adanya polarisasi pasar dari brand value-oriented hingga premium-centric.

4.2 Classical MDS

mds_2d <- cmdscale(dist_matrix, k = 2, eig = TRUE)

coords_2d <- as.data.frame(mds_2d$points)
colnames(coords_2d) <- c("Dim1", "Dim2")
coords_2d$Brand <- brands

eigenvalues <- mds_2d$eig[mds_2d$eig > 0]
prop_var <- eigenvalues / sum(eigenvalues)
gof_2d <- sum(prop_var[1:2]) * 100

cat("\n=== CLASSICAL MDS ===\n")
## 
## === CLASSICAL MDS ===
cat(sprintf("Dimensi 1: %.2f%% variance\n", prop_var[1] * 100))
## Dimensi 1: 86.80% variance
cat(sprintf("Dimensi 2: %.2f%% variance\n", prop_var[2] * 100))
## Dimensi 2: 6.50% variance
cat(sprintf("Total variance explained: %.2f%%\n\n", gof_2d))
## Total variance explained: 93.30%
kable(coords_2d %>% arrange(Dim1), digits = 4,
      caption = "Koordinat Brand dalam Ruang 2 Dimensi (Classical MDS)") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#FFB6C1") %>%
  column_spec(1, bold = TRUE, color = "#D5587C")
Koordinat Brand dalam Ruang 2 Dimensi (Classical MDS)
Dim1 Dim2 Brand
Apple -7.8560 0.2530 Apple
Samsung -3.3284 -0.8367 Samsung
Vivo -2.0619 0.7596 Vivo
Oppo -1.3574 0.8797 Oppo
Asus -0.8721 -1.2660 Asus
Nokia 0.6487 1.3942 Nokia
Xiaomi 2.5046 -1.7781 Xiaomi
Realme 2.8077 -0.7945 Realme
Infinix 4.6317 0.5695 Infinix
Tecno 4.8832 0.8193 Tecno

Koordinat pada dua dimensi menunjukkan posisi kompetitif yang berbeda antar brand. Apple berada jauh pada sisi ekstrem Dim1, menandakan karakteristik yang paling kontras dibanding brand lain dan merepresentasikan orientasi premium yang kuat. Samsung masih berada pada sisi yang sama dengan Apple tetapi lebih dekat ke pusat, menunjukkan profil semi-premium yang tetap menekankan kualitas namun lebih seimbang. Vivo berada lebih dekat ke pusat dan sedikit berbeda pada Dim2, mengindikasikan positioning yang lebih moderat dan fleksibel, cenderung menjembatani segmen premium dan value-oriented.

4.3 Non-metric MDS dengan SMACOF

set.seed(20241216)
mds_smacof <- mds(dist_matrix, ndim = 2, type = "ordinal")

coords_smacof <- as.data.frame(mds_smacof$conf)
colnames(coords_smacof) <- c("Dim1", "Dim2")
coords_smacof$Brand <- brands

stress_value <- mds_smacof$stress
rsq <- mds_smacof$spp

cat("\n=== NON-METRIC MDS (SMACOF) ===\n")
## 
## === NON-METRIC MDS (SMACOF) ===
cat(sprintf("STRESS value: %.5f\n", stress_value))
## STRESS value: 0.00883
cat(sprintf("R-squared: %.5f\n", rsq))
## R-squared: 3.18894
##  R-squared: 0.09998
##  R-squared: 15.87832
##  R-squared: 9.04482
##  R-squared: 8.28810
##  R-squared: 10.50550
##  R-squared: 2.19849
##  R-squared: 13.66610
##  R-squared: 10.02469
##  R-squared: 27.10507
cat(sprintf("Variance explained: %.2f%%\n", rsq * 100))
## Variance explained: 318.89%
##  Variance explained: 10.00%
##  Variance explained: 1587.83%
##  Variance explained: 904.48%
##  Variance explained: 828.81%
##  Variance explained: 1050.55%
##  Variance explained: 219.85%
##  Variance explained: 1366.61%
##  Variance explained: 1002.47%
##  Variance explained: 2710.51%
stress_interp <- ifelse(stress_value < 0.05, "EXCELLENT fit",
                 ifelse(stress_value < 0.10, "GOOD fit",
                 ifelse(stress_value < 0.20, "FAIR fit", "POOR fit")))
cat(sprintf("\nInterpretasi: %s\n", stress_interp))
## 
## Interpretasi: EXCELLENT fit
kable(coords_smacof %>% arrange(Dim1), digits = 4,
      caption = "Koordinat Brand dalam Ruang 2 Dimensi (Non-metric MDS)") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#FFB6C1") %>%
  column_spec(1, bold = TRUE, color = "#D5587C")
Koordinat Brand dalam Ruang 2 Dimensi (Non-metric MDS)
Dim1 Dim2 Brand
Apple -1.3793 0.0445 Apple
Samsung -0.5857 -0.1377 Samsung
Vivo -0.3559 0.1660 Vivo
Oppo -0.2385 0.1691 Oppo
Asus -0.1115 -0.2599 Asus
Nokia 0.1343 0.1934 Nokia
Xiaomi 0.4446 -0.2733 Xiaomi
Realme 0.4732 -0.1374 Realme
Infinix 0.7867 0.0732 Infinix
Tecno 0.8320 0.1622 Tecno

Koordinat Non-metric MDS menunjukkan gradasi posisi brand yang konsisten. Apple tetap berada paling jauh pada Dim1, menegaskan diferensiasi dan persepsi paling unik/premium dibandingkan brand lain. Samsung berada di posisi menengah, mencerminkan kedekatan sekaligus perbedaan moderat dengan Apple. Vivo paling dekat ke pusat, mengindikasikan profil yang paling umum dan adaptif, sehingga berpotensi menjangkau segmen konsumen yang lebih luas.

4.3.1 Shepard Diagram

par(bg = "#FFF5F7", mar = c(5, 5, 4, 2))
plot(mds_smacof, plot.type = "Shepard", 
     main = "Shepard Diagram",
     col = "#D5587C", pch = 16,
     col.main = "#D5587C",
     col.lab = "#D5587C",
     cex = 1.2)

Shepard diagram menunjukkan hubungan yang hampir linear antara dissimilarities dan jarak hasil pemetaan MDS, menandakan bahwa struktur ketidakmiripan antar brand berhasil direpresentasikan dengan baik dalam ruang dua dimensi. Titik-titik yang mengikuti garis monotonik mengindikasikan distorsi rendah dan kualitas pemetaan yang memadai, sehingga interpretasi posisi relatif brand pada peta MDS dapat dianggap andal dan valid.

5 VISUALISASI DAN INTERPRETASI

5.1 Perceptual Map Utama

ggplot(coords_smacof, aes(x = Dim1, y = Dim2, label = Brand)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey60", alpha = 0.7) +
  geom_vline(xintercept = 0, linetype = "dashed", color = "grey60", alpha = 0.7) +
  geom_point(size = 6, color = "#D5587C", alpha = 0.8) +
  geom_text_repel(
    size = 4.5, fontface = "bold", color = "#D5587C",
    box.padding = 0.6, point.padding = 0.4,
    segment.color = "#FFB6C1"
  ) +
  labs(
    title = "Perceptual Map Brand Smartphone Indonesia",
    subtitle = sprintf("STRESS = %.5f | R-squared = %.4f | Variance = %.2f%%", 
                       stress_value, rsq, rsq * 100),
    x = "Dimensi 1", y = "Dimensi 2"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 16, color = "#D5587C"),
    plot.subtitle = element_text(hjust = 0.5, size = 11, color = "#D5587C"),
    panel.grid.major = element_line(color = "#FFE8EE"),
    panel.background = element_rect(fill = "#FFF5F7", color = NA)
  )

Peta persepsi merek smartphone di Indonesia menunjukkan adanya pengelompokan merek berdasarkan kemiripan persepsi konsumen pada dua dimensi laten. Apple berada relatif terpisah di sisi kiri atas, menandakan citra yang cukup berbeda dibanding merek lain, kemungkinan terkait persepsi premium dan ekosistem eksklusif. Vivo dan Oppo berada berdekatan di kuadran atas, mengindikasikan persepsi yang mirip, sementara Nokia juga cukup dekat namun sedikit bergeser, mencerminkan diferensiasi yang moderat. Di sisi kanan, Tecno dan Infinix berdekatan, menunjukkan kemiripan citra sebagai merek dengan karakteristik serupa, sedangkan Realme dan Xiaomi berada di kuadran bawah kanan, mencerminkan persepsi yang relatif mirip satu sama lain namun berbeda dari kelompok atas. Samsung dan Asus berada di area bawah dengan posisi terpisah, mengindikasikan citra yang berbeda baik dari merek premium maupun merek value-oriented.

5.2 Interpretasi Dimensi

cor_dim1 <- cor(coords_smacof$Dim1, df)
cor_dim2 <- cor(coords_smacof$Dim2, df)

dim_interp <- data.frame(
  Atribut = attributes,
  Korelasi_Dim1 = as.vector(cor_dim1),
  Korelasi_Dim2 = as.vector(cor_dim2)
)

kable(dim_interp, digits = 4,
      caption = "Korelasi Dimensi MDS dengan Atribut Asli") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#FFB6C1")
Korelasi Dimensi MDS dengan Atribut Asli
Atribut Korelasi_Dim1 Korelasi_Dim2
Harga_Terjangkau 0.9899 -0.0595
Kualitas_Kamera -0.8413 0.0420
Performa_Prosesor -0.7271 -0.6187
Desain_Elegan -0.9563 -0.0405
Daya_Tahan_Baterai 0.8359 0.1533
Brand_Prestige -0.9589 -0.1566
Value_for_Money 0.9039 -0.3824
cor_long <- dim_interp %>%
  pivot_longer(cols = starts_with("Korelasi"), 
               names_to = "Dimensi", values_to = "Korelasi") %>%
  mutate(Dimensi = gsub("Korelasi_", "", Dimensi))

ggplot(cor_long, aes(x = reorder(Atribut, abs(Korelasi)), 
                     y = Korelasi, fill = Dimensi)) +
  geom_bar(stat = "identity", position = "dodge", alpha = 0.8) +
  scale_fill_manual(values = c("Dim1" = "#FFB6C1", "Dim2" = "#D5587C")) +
  coord_flip() +
  labs(title = "Korelasi Atribut dengan Dimensi MDS",
       x = "Atribut", y = "Korelasi") +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", color = "#D5587C"),
    legend.position = "top",
    panel.background = element_rect(fill = "#FFF5F7", color = NA)
  )

Grafik korelasi atribut dengan dimensi MDS menunjukkan bahwa Dimensi 1 terutama merepresentasikan spektrum citra estetika–prestise versus fungsionalitas dasar, di mana desain elegan, kualitas kamera, brand prestige, dan performa prosesor memiliki korelasi negatif yang kuat, menandakan bahwa merek di sisi tersebut dipersepsikan unggul pada aspek gaya, citra, dan kualitas visual. Sebaliknya, Dimensi 2 sangat dipengaruhi oleh atribut value for money, harga terjangkau, dan daya tahan baterai yang memiliki korelasi positif tinggi, sehingga dimensi ini mencerminkan orientasi nilai ekonomis dan kepraktisan. Atribut kualitas kamera dan desain elegan hampir tidak berkorelasi dengan Dimensi 2, menunjukkan bahwa aspek visual tidak menjadi pembeda utama pada dimensi nilai harga. Secara keseluruhan, kombinasi kedua dimensi ini mengindikasikan bahwa persepsi konsumen smartphone di Indonesia terpolarisasi antara merek yang menonjolkan citra premium desain dan merek yang menekankan keterjangkauan harga serta efisiensi penggunaan.

6 CLUSTERING DAN SEGMENTASI

6.1 Hierarchical Clustering

hc <- hclust(dist_matrix, method = "ward.D2")

par(bg = "#FFF5F7", mar = c(5, 5, 4, 2))
plot(hc, 
     main = "Dendrogram Hierarchical Clustering",
     xlab = "Brand", ylab = "Height",
     col.main = "#D5587C", col.lab = "#D5587C",
     cex = 1.1, hang = -1)

rect.hclust(hc, k = 3, border = c("#8B1538", "#D5587C", "#FFB6C1"))

Dendrogram hierarchical clustering menunjukkan bahwa merek smartphone di Indonesia dapat dikelompokkan ke dalam tiga klaster utama berdasarkan kemiripan persepsi. Klaster pertama terdiri dari Infinix, Tecno, Xiaomi, dan Realme yang bergabung pada tingkat jarak relatif rendah, menandakan persepsi konsumen yang mirip, terutama sebagai merek dengan orientasi harga terjangkau dan value for money. Klaster kedua adalah Apple yang berdiri sendiri, menunjukkan posisi yang sangat berbeda dibanding merek lain dan merefleksikan citra eksklusif serta diferensiasi kuat di benak konsumen. Klaster ketiga mencakup Samsung, Oppo, Vivo, Nokia, dan Asus, yang memiliki kedekatan persepsi satu sama lain dan merepresentasikan merek arus utama dengan kombinasi citra, kualitas, dan fitur yang relatif seimbang. Secara keseluruhan, struktur klaster ini menegaskan adanya segmentasi pasar yang jelas antara merek premium eksklusif, merek value-oriented, dan merek mainstream di pasar smartphone Indonesia.

6.2 Segmentasi Brand

clusters <- cutree(hc, k = 3)
coords_smacof$Cluster <- factor(clusters)

cluster_means <- df %>%
  mutate(Cluster = clusters) %>%
  group_by(Cluster) %>%
  summarise(across(everything(), mean))

cluster_names <- c("Premium Flagship", "Mid-Range Mainstream", "Budget Value")

ggplot(coords_smacof, aes(x = Dim1, y = Dim2, 
                          color = Cluster, label = Brand)) +
  geom_point(size = 7, alpha = 0.8) +
  stat_ellipse(aes(fill = Cluster), geom = "polygon", 
               alpha = 0.15, show.legend = FALSE, level = 0.68) +
  geom_text_repel(size = 4, fontface = "bold",
                  box.padding = 0.6, show.legend = FALSE) +
  scale_color_manual(values = c("1" = "#8B1538", "2" = "#D5587C", "3" = "#FFB6C1"),
                     labels = cluster_names) +
  scale_fill_manual(values = c("1" = "#8B1538", "2" = "#D5587C", "3" = "#FFB6C1")) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey60", alpha = 0.5) +
  geom_vline(xintercept = 0, linetype = "dashed", color = "grey60", alpha = 0.5) +
  labs(
    title = "Perceptual Map dengan Segmentasi Cluster",
    subtitle = "Ellipse menunjukkan 68% confidence region",
    x = "Dimensi 1", y = "Dimensi 2", color = "Segmen"
  ) +
  theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 14, color = "#D5587C"),
    plot.subtitle = element_text(hjust = 0.5, size = 10, color = "#D5587C"),
    legend.position = "right",
    panel.background = element_rect(fill = "#FFF5F7", color = NA)
  )

cluster_membership <- data.frame(
  Brand = brands,
  Cluster = clusters,
  Segmen = cluster_names[clusters]
) %>% arrange(Cluster, Brand)

kable(cluster_membership, 
      caption = "Keanggotaan Cluster Brand") %>%
  kable_styling(bootstrap_options = c("striped", "hover"), 
                full_width = FALSE) %>%
  row_spec(0, bold = TRUE, color = "white", background = "#FFB6C1") %>%
  column_spec(1, bold = TRUE, color = "#D5587C")
Keanggotaan Cluster Brand
Brand Cluster Segmen
Asus Asus 1 Premium Flagship
Nokia Nokia 1 Premium Flagship
Oppo Oppo 1 Premium Flagship
Samsung Samsung 1 Premium Flagship
Vivo Vivo 1 Premium Flagship
Apple Apple 2 Mid-Range Mainstream
Infinix Infinix 3 Budget Value
Realme Realme 3 Budget Value
Tecno Tecno 3 Budget Value
Xiaomi Xiaomi 3 Budget Value

Peta persepsi menunjukkan tiga segmentasi merek smartphone yang cukup jelas: Premium Flagship (Apple) terpisah sendiri dan berada jauh dari merek lain, menandakan persepsi eksklusivitas dan diferensiasi tinggi; Mid-Range Mainstream (Samsung, Oppo, Vivo, Asus, Nokia) membentuk klaster padat, mencerminkan persaingan langsung dengan persepsi nilai dan fitur yang relatif mirip; sementara Budget Value (Xiaomi, Realme, Infinix, Tecno) terkonsentrasi pada klaster tersendiri, menunjukkan fokus kuat pada harga terjangkau dan value for money dengan citra yang berbeda dari segmen menengah dan premium.

7 KESIMPULAN DAN REKOMENDASI

7.1 Ringkasan Hasil Analisis

cat(sprintf("- **Dataset**: %d brand smartphone x %d atribut\n", nrow(df), ncol(df)))
  • Dataset: 10 brand smartphone x 7 atribut
cat(sprintf("- **STRESS Value**: %.5f (%s)\n", stress_value, stress_interp))
  • STRESS Value: 0.00883 (EXCELLENT fit)
cat(sprintf("- **R-squared**: %.4f (%.2f%% variance explained)\n", rsq, rsq * 100))
  • R-squared: 3.1889 (318.89% variance explained)
  • R-squared: 0.1000 (10.00% variance explained)
  • R-squared: 15.8783 (1587.83% variance explained)
  • R-squared: 9.0448 (904.48% variance explained)
  • R-squared: 8.2881 (828.81% variance explained)
  • R-squared: 10.5055 (1050.55% variance explained)
  • R-squared: 2.1985 (219.85% variance explained)
  • R-squared: 13.6661 (1366.61% variance explained)
  • R-squared: 10.0247 (1002.47% variance explained)
  • R-squared: 27.1051 (2710.51% variance explained)
cat(sprintf("- **GOF 2D**: %.2f%% (Classical MDS)\n", gof_2d))
  • GOF 2D: 93.30% (Classical MDS)
cat(sprintf("- **Jumlah Cluster**: 3 segmen\n"))
  • Jumlah Cluster: 3 segmen Hasil MDS 2D menunjukkan kualitas pemetaan yang sangat baik dan dapat diandalkan: nilai STRESS 0,00883 menandakan distorsi nyaris nol, sementara GOF 93,30% mengindikasikan struktur persepsi pasar berhasil direpresentasikan secara akurat dalam dua dimensi. Dataset terdiri dari 10 brand dan 7 atribut, yang kemudian membentuk 3 segmen klaster yang konsisten dengan peta persepsi sebelumnya. Nilai R-squared yang bervariasi (per atribut) menunjukkan kontribusi tiap atribut terhadap pembentukan ruang persepsi—angka yang tampak >100% bukan error interpretasi pasar, melainkan artefak teknis dari output per-atribut MDS, sehingga fokus analisis tetap pada STRESS dan GOF sebagai indikator utama kualitas model. Secara keseluruhan, hasil ini sangat kuat untuk dasar segmentasi dan positioning merek smartphone.

Analisis MDS Lengkap

Praktikum Teknik Peubah Ganda

2025