1. Pendahuluan

Sektor konstruksi memiliki peran penting dalam pembangunan karena berkaitan dengan penyediaan infrastruktur dan fasilitas publik. Perubahan harga bahan bangunan dapat memengaruhi biaya proyek dan perencanaan anggaran, sehingga analisis dinamika harga menjadi penting. Indeks Harga Perdagangan Besar (IHPB) Bahan Bangunan/Konstruksi digunakan untuk mengukur perubahan harga berbagai material konstruksi selama periode tertentu.

Data IHPB terdiri atas banyak variabel yang berpotensi saling berkorelasi, sehingga analisis secara terpisah dapat menyulitkan interpretasi. Oleh karena itu, penelitian ini menggunakan Principal Component Analysis (PCA) untuk mereduksi variabel menjadi beberapa komponen utama serta Factor Analysis (FA) untuk mengidentifikasi faktor laten yang mendasari hubungan antar variabel. Penelitian ini bertujuan untuk mendeskripsikan karakteristik data IHPB tahun 2025, menentukan jumlah komponen utama yang terbentuk melalui PCA, serta mengidentifikasi faktor laten yang diperoleh dari FA.

2. Penjelasan Dataset

Dataset yang digunakan dalam penelitian ini adalah data Indeks Harga Perdagangan Besar (IHPB) Bahan Bangunan/Konstruksi tahun 2025 yang dipublikasikan oleh Badan Pusat Statistik (BPS). Data terdiri atas 12 periode bulanan, yaitu Januari hingga Desember 2025, dengan total 65 komoditas bahan bangunan sebagai variabel awal. Setiap variabel merepresentasikan indeks harga dengan tahun dasar 2023 = 100.

Struktur awal dataset memiliki baris sebagai komoditas dan kolom sebagai periode waktu (Januari–Desember 2025). Dalam penelitian ini, unit analisis adalah komoditas bahan bangunan, sedangkan variabel yang dianalisis adalah indeks harga per bulan. Oleh karena itu, data tidak dilakukan transpose karena struktur awal sudah sesuai dengan kebutuhan analisis multivariat, yaitu baris sebagai observasi dan kolom sebagai variabel.

3.Variabel Dataset

Variabel yang digunakan dalam penelitian ini merupakan indeks harga bulanan dari komoditas bahan bangunan/konstruksi selama periode Januari hingga Desember 2025. Dalam struktur data yang telah dibersihkan, terdapat 12 variabel penelitian yang merepresentasikan periode waktu (bulan), sedangkan 65 komoditas bertindak sebagai unit observasi.

Setiap variabel diukur dalam bentuk indeks dengan tahun dasar 2023 = 100. Nilai indeks menunjukkan tingkat perubahan harga relatif terhadap tahun dasar. Nilai di atas 100 menunjukkan kenaikan harga dibandingkan tahun dasar, sedangkan nilai di bawah 100 menunjukkan penurunan harga.

Dalam penelitian ini, variabel bulanan diperlakukan sebagai variabel numerik kontinu yang dianalisis menggunakan pendekatan multivariat. Karena seluruh variabel berada dalam skala indeks yang sama, dilakukan standardisasi sebelum analisis PCA dan FA untuk menghilangkan perbedaan variabilitas antar bulan. Dengan demikian, struktur data akhir terdiri atas 65 observasi (komoditas bahan bangunan) dan 12 variabel (indeks harga Januari–Desember 2025)

library(readr)
library(dplyr)
## 
## 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
# 1. Import data
data_raw <- read_csv("Indeks Harga Perdagangan Besar (IHPB) Bahan Bangunan_Konstruksi Indonesia Menurut Jenis Barang (2023=100), 2025.csv", 
                     show_col_types = FALSE)
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
# 2. Hapus 3 baris pertama (judul & keterangan tahun)
data_clean <- data_raw[-c(1:3), ]

# 3. Rename kolom
colnames(data_clean) <- c(
  "Komoditas",
  "Jan","Feb","Mar","Apr","Mei","Jun",
  "Jul","Agu","Sep","Okt","Nov","Des","Tahunan"
)

# 4. Hapus baris NA pada Komoditas
data_clean <- data_clean %>%
  filter(!is.na(Komoditas))

# 5. Hilangkan angka dan titik di depan nama komoditas
data_clean$Komoditas <- gsub("^\\d+\\.\\s*", "", data_clean$Komoditas)

# 6. Ubah kolom bulan menjadi numeric
data_clean[,2:14] <- lapply(data_clean[,2:14], as.numeric)

# 7. Hapus kolom Tahunan
data_clean <- data_clean[,1:13]

# 8. Jadikan nama komoditas sebagai rownames (TIDAK DITRANSPOSE)
data_matrix <- as.data.frame(data_clean)
rownames(data_matrix) <- data_matrix$Komoditas
data_matrix <- data_matrix[,-1]

# Cek struktur data
str(data_matrix)
## 'data.frame':    65 obs. of  12 variables:
##  $ Jan: num  101 99 99 102 102 ...
##  $ Feb: num  101 99 99 102 102 ...
##  $ Mar: num  102 99 97.6 102.4 102.1 ...
##  $ Apr: num  102 99 92.4 102.3 102.3 ...
##  $ Mei: num  102 99 92.3 102.3 102.4 ...
##  $ Jun: num  102 99 92.3 102.2 103.1 ...
##  $ Jul: num  102 98.8 92.4 102.1 102.6 ...
##  $ Agu: num  102 98.8 92.4 102.1 102.8 ...
##  $ Sep: num  101.8 98.8 92.4 102.1 102.8 ...
##  $ Okt: num  101.8 98.8 92.4 102.1 103.1 ...
##  $ Nov: num  101.8 98.8 92.4 102.1 102.8 ...
##  $ Des: num  101.8 98.8 94.2 102 102.8 ...
dim(data_matrix)
## [1] 65 12
head(data_matrix)
##                                   Jan    Feb    Mar    Apr    Mei    Jun    Jul
## Adukan semen (ready mix)       101.42 101.42 101.98 101.98 101.98 101.98 101.98
## Amplas kertas                   99.00  99.00  99.01  99.01  99.01  99.01  98.83
## Anak kunci dari besi atau baja  98.95  98.95  97.63  92.40  92.35  92.35  92.40
## Asbes semen lembaran           102.43 102.41 102.41 102.30 102.30 102.20 102.08
## Aspal                          102.50 102.09 102.09 102.30 102.36 103.07 102.57
## Atap aluminium (awning)        103.34 103.12 103.20 103.31 103.13 102.98 102.83
##                                   Agu    Sep    Okt    Nov    Des
## Adukan semen (ready mix)       101.98 101.75 101.75 101.75 101.75
## Amplas kertas                   98.83  98.83  98.83  98.83  98.83
## Anak kunci dari besi atau baja  92.40  92.40  92.40  92.40  94.24
## Asbes semen lembaran           102.06 102.07 102.07 102.12 102.05
## Aspal                          102.84 102.77 103.12 102.82 102.82
## Atap aluminium (awning)        102.79 102.68 102.85 103.58 104.51

Data mentah yang diperoleh dari BPS masih mengandung baris judul dan keterangan tambahan sehingga perlu dilakukan pembersihan terlebih dahulu. Tiga baris pertama dihapus karena bukan bagian dari observasi. Nama kolom kemudian disesuaikan menjadi bulan Januari hingga Desember serta Tahunan. Kolom Tahunan tidak digunakan dalam analisis sehingga dihapus. Seluruh data harga dikonversi ke tipe numerik agar dapat dianalisis secara statistik.

Dalam penelitian ini data tidak ditranspose, sehingga baris merepresentasikan 65 komoditas sebagai unit observasi dan kolom merepresentasikan 12 periode bulanan sebagai variabel penelitian. Dengan struktur ini, rasio observasi terhadap variabel menjadi lebih proporsional sehingga analisis multivariat seperti PCA dan FA lebih stabil secara statistik.

4. Karakteristik Data

library(psych)

# Statistik deskriptif
desc_stats <- describe(data_matrix)
desc_table <- desc_stats[, c("mean","sd","min","max")]
round(desc_table, 2)
##       mean   sd   min    max
## Jan 101.83 4.44 92.68 113.20
## Feb 101.91 4.48 93.54 113.20
## Mar 102.15 4.63 93.54 115.00
## Apr 102.31 4.83 92.40 113.73
## Mei 102.27 4.89 92.35 113.73
## Jun 102.44 5.05 92.35 113.73
## Jul 102.53 5.05 92.40 113.73
## Agu 102.72 5.08 92.40 114.84
## Sep 102.81 5.08 92.40 114.84
## Okt 103.18 5.43 92.40 117.16
## Nov 103.50 5.72 92.40 117.08
## Des 104.00 6.03 93.54 117.05
boxplot(data_matrix,
        col = "lightblue",
        las = 2)

Boxplot menunjukkan bahwa distribusi indeks harga bahan bangunan dari Januari hingga Desember 2025 relatif stabil dan memiliki pola yang seragam. Median setiap bulan berada pada kisaran yang tidak jauh berbeda, yaitu sedikit di atas 100, yang menunjukkan bahwa secara umum harga berada di atas tahun dasar 2023.

Terlihat adanya kecenderungan peningkatan median secara bertahap menuju akhir tahun, terutama pada bulan Oktober hingga Desember. Hal ini mengindikasikan adanya tren kenaikan harga secara moderat sepanjang tahun 2025.

Beberapa titik outlier terlihat pada hampir setiap bulan, terutama di bagian atas, yang menunjukkan adanya beberapa komoditas dengan indeks harga jauh lebih tinggi dibandingkan komoditas lainnya. Namun, secara keseluruhan rentang interkuartil (IQR) relatif

5. Uji Asumsi

Sebelum melakukan analisis faktor, perlu dilakukan pengujian kelayakan data menggunakan Kaiser-Meyer-Olkin (KMO) Measure of Sampling Adequacy dan Uji Bartlett’s Test of Sphericity. Uji ini bertujuan untuk memastikan bahwa data memiliki korelasi yang cukup untuk dianalisis menggunakan Factor Analysis.

library(psych)

# Standarisasi
data_scaled <- scale(data_matrix)

# Uji KMO
kmo_result <- KMO(data_scaled)
kmo_result
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = data_scaled)
## Overall MSA =  0.91
## MSA for each item = 
##  Jan  Feb  Mar  Apr  Mei  Jun  Jul  Agu  Sep  Okt  Nov  Des 
## 0.90 0.86 0.92 0.89 0.90 0.91 0.89 0.90 0.94 0.95 0.90 0.90
# Uji Bartlett
bartlett_result <- cortest.bartlett(data_scaled)
## R was not square, finding R from data
bartlett_result
## $chisq
## [1] 2621.864
## 
## $p.value
## [1] 0
## 
## $df
## [1] 66

Berdasarkan nilai KMO yang sangat baik (0,91) dan hasil Uji Bartlett yang signifikan (p < 0,05), maka data dinyatakan layak untuk dilakukan analisis faktor. Struktur korelasi antar periode bulanan menunjukkan adanya pola bersama dalam pergerakan harga komoditas sepanjang tahun 2025, sehingga penggunaan Principal Component Analysis (PCA) dan Factor Analysis (FA) dapat dibenarkan secara statistik.

6. Analisis Principal Component Analysis (PCA)

6.1 Matriks Korelasi

Matriks korelasi dihitung untuk melihat hubungan antar variabel. PCA relevan digunakan apabila terdapat korelasi yang cukup kuat antar variabel.

# Matriks korelasi
cor_matrix <- cor(data_scaled)

# Tampilkan
round(cor_matrix, 2)
##      Jan  Feb  Mar  Apr  Mei  Jun  Jul  Agu  Sep  Okt  Nov  Des
## Jan 1.00 1.00 0.98 0.91 0.91 0.89 0.88 0.88 0.87 0.86 0.83 0.78
## Feb 1.00 1.00 0.99 0.92 0.92 0.90 0.89 0.88 0.87 0.86 0.83 0.77
## Mar 0.98 0.99 1.00 0.94 0.94 0.92 0.91 0.90 0.90 0.87 0.84 0.81
## Apr 0.91 0.92 0.94 1.00 1.00 0.98 0.97 0.96 0.95 0.92 0.89 0.85
## Mei 0.91 0.92 0.94 1.00 1.00 0.98 0.97 0.96 0.95 0.92 0.89 0.84
## Jun 0.89 0.90 0.92 0.98 0.98 1.00 0.99 0.98 0.98 0.94 0.92 0.89
## Jul 0.88 0.89 0.91 0.97 0.97 0.99 1.00 1.00 0.99 0.96 0.93 0.90
## Agu 0.88 0.88 0.90 0.96 0.96 0.98 1.00 1.00 1.00 0.96 0.94 0.91
## Sep 0.87 0.87 0.90 0.95 0.95 0.98 0.99 1.00 1.00 0.97 0.95 0.91
## Okt 0.86 0.86 0.87 0.92 0.92 0.94 0.96 0.96 0.97 1.00 0.97 0.94
## Nov 0.83 0.83 0.84 0.89 0.89 0.92 0.93 0.94 0.95 0.97 1.00 0.97
## Des 0.78 0.77 0.81 0.85 0.84 0.89 0.90 0.91 0.91 0.94 0.97 1.00
library(corrplot)
## corrplot 0.95 loaded
corrplot(cor_matrix, 
         method = "color", 
         type = "upper",
         tl.cex = 0.7,
         number.cex = 0.6)

Berdasarkan hasil perhitungan matriks korelasi, terlihat bahwa hampir seluruh pasangan variabel memiliki nilai korelasi yang sangat tinggi dan positif, sebagian besar berada di atas 0,90. Korelasi yang sangat kuat terutama terlihat pada bulan-bulan yang berdekatan, seperti April–Mei, Juni–Juli, serta Juli–Agustus.

Tingginya korelasi antar bulan menunjukkan bahwa pergerakan indeks harga bahan bangunan selama tahun 2025 cenderung bergerak searah dan memiliki pola yang konsisten. Dengan kata lain, apabila terjadi kenaikan indeks harga pada satu bulan, maka kemungkinan besar bulan berikutnya juga mengalami kenaikan dengan pola yang relatif sama.

Kondisi ini mengindikasikan adanya satu pola umum yang mendominasi variasi data, sehingga secara konseptual mendukung penggunaan metode Principal Component Analysis (PCA) dan Factor Analysis (FA) untuk mereduksi dimensi data. Korelasi yang tinggi antar variabel juga menunjukkan bahwa variabel-variabel tersebut tidak independen satu sama lain dan berpotensi membentuk satu struktur faktor utama.

6.2 Hasil PCA

Berdasarkan hasil Principal Component Analysis (PCA), diperoleh bahwa hanya komponen utama pertama (PC1) yang memiliki eigenvalue lebih besar dari 1, yaitu sebesar 11,13. Sementara itu, seluruh komponen lainnya memiliki eigenvalue kurang dari 1 sehingga tidak layak dipertahankan berdasarkan kriteria Kaiser.

# Jalankan PCA
pca_result <- prcomp(data_scaled, center = FALSE, scale. = FALSE)

# Ringkasan hasil PCA
summary(pca_result)
## Importance of components:
##                           PC1     PC2     PC3     PC4     PC5     PC6    PC7
## Standard deviation     3.3356 0.71653 0.45530 0.24451 0.20930 0.14081 0.1098
## Proportion of Variance 0.9272 0.04278 0.01728 0.00498 0.00365 0.00165 0.0010
## Cumulative Proportion  0.9272 0.96996 0.98723 0.99222 0.99587 0.99752 0.9985
##                            PC8     PC9    PC10    PC11    PC12
## Standard deviation     0.09965 0.05862 0.04873 0.03373 0.02886
## Proportion of Variance 0.00083 0.00029 0.00020 0.00009 0.00007
## Cumulative Proportion  0.99935 0.99964 0.99984 0.99993 1.00000
# Hitung eigenvalue
eigenvalues <- pca_result$sdev^2

# Tampilkan eigenvalue
eigenvalues
##  [1] 11.126098142  0.513417825  0.207300004  0.059783103  0.043806593
##  [6]  0.019827608  0.012055839  0.009930048  0.003436424  0.002374231
## [11]  0.001137400  0.000832783

Komponen pertama mampu menjelaskan sebesar 92,72% variasi total data, yang menunjukkan bahwa hampir seluruh variasi indeks harga antar komoditas selama periode Januari hingga Desember 2025 dapat diringkas ke dalam satu komponen utama. Hal ini mengindikasikan bahwa pergerakan harga bahan bangunan sepanjang tahun 2025 cenderung mengikuti satu pola umum yang sangat kuat dan seragam.

# Scree Plot
plot(eigenvalues, type = "b",
     xlab = "Komponen",
     ylab = "Eigenvalue",
     main = "Scree Plot PCA")

abline(h = 1, col = "red", lty = 2)

Berdasarkan scree plot, terlihat adanya penurunan eigenvalue yang sangat tajam dari komponen pertama ke komponen kedua. Setelah komponen pertama, nilai eigenvalue relatif kecil dan menurun secara landai. Titik elbow terlihat pada komponen pertama, sehingga dapat disimpulkan bahwa satu komponen utama sudah cukup untuk merepresentasikan struktur data secara keseluruhan.

# Tampilkan loading untuk 3 komponen utama
round(pca_result$rotation[, 1:3], 3)
##       PC1    PC2    PC3
## Jan 0.280  0.443 -0.328
## Feb 0.281  0.455 -0.265
## Mar 0.286  0.378 -0.167
## Apr 0.294  0.100  0.339
## Mei 0.293  0.109  0.352
## Jun 0.296 -0.032  0.295
## Jul 0.296 -0.099  0.263
## Agu 0.295 -0.143  0.200
## Sep 0.294 -0.165  0.161
## Okt 0.290 -0.254 -0.148
## Nov 0.285 -0.344 -0.339
## Des 0.274 -0.436 -0.443

Hasil loading PCA menunjukkan bahwa seluruh variabel bulanan memiliki nilai loading positif dan relatif seragam terhadap komponen utama pertama (PC1). Hal ini mengindikasikan bahwa PC1 merepresentasikan faktor pergerakan umum harga bahan bangunan sepanjang tahun 2025.

Komponen kedua (PC2) menunjukkan pola kontras antara awal dan akhir tahun, sedangkan komponen ketiga (PC3) mencerminkan variasi musiman yang relatif kecil. Namun, karena eigenvalue kedua komponen tersebut kurang dari satu, maka hanya PC1 yang dipertahankan dalam interpretasi akhir.

7. Analisis Factor Analysis (FA)

7.1 Penentuan Jumlah Faktor

Berdasarkan hasil PCA sebelumnya, hanya terdapat satu komponen utama yang memiliki eigenvalue lebih dari satu. Oleh karena itu, dalam analisis faktor ditentukan jumlah faktor sebanyak satu faktor. Penentuan ini didasarkan pada kriteria Kaiser serta diperkuat oleh hasil scree plot yang menunjukkan titik elbow pada komponen pertama.

Untuk memperkuat keputusan jumlah faktor, dilakukan Parallel Analysis sebagai berikut:

library(psych)

fa.parallel(data_scaled, 
            fa = "fa", 
            n.iter = 100,
            show.legend = FALSE,
            main = "Parallel Analysis")
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully
## Warning in fac(r = r, nfactors = nfactors, n.obs = n.obs, rotate = rotate, : An
## ultra-Heywood case was detected.  Examine the results carefully

## Parallel analysis suggests that the number of factors =  1  and the number of components =  NA

Parallel Analysis digunakan untuk membandingkan eigenvalue aktual dengan eigenvalue acak. Faktor dipertahankan apabila eigenvalue aktual lebih besar dari eigenvalue hasil simulasi acak. Hasil analisis menunjukkan bahwa hanya satu faktor yang layak dipertahankan.

7.2 Estimasi Model Factor Analysis

Analisis faktor dilakukan menggunakan metode Maximum Likelihood dengan rotasi varimax. Meskipun hanya terdapat satu faktor sehingga rotasi tidak terlalu memengaruhi hasil, rotasi tetap digunakan untuk konsistensi prosedur analisis. Parallel Analysis sebagai berikut:

fa_result <- fa(data_scaled,
                nfactors = 1,
                rotate = "varimax",
                fm = "ml")

fa_result
## Factor Analysis using method =  ml
## Call: fa(r = data_scaled, nfactors = 1, rotate = "varimax", fm = "ml")
## Standardized loadings (pattern matrix) based upon correlation matrix
##      ML1   h2     u2 com
## Jan 0.89 0.79 0.2071   1
## Feb 0.90 0.80 0.1986   1
## Mar 0.92 0.84 0.1562   1
## Apr 0.97 0.95 0.0507   1
## Mei 0.97 0.95 0.0507   1
## Jun 0.99 0.98 0.0166   1
## Jul 1.00 1.00 0.0040   1
## Agu 1.00 0.99 0.0072   1
## Sep 0.99 0.99 0.0133   1
## Okt 0.96 0.93 0.0727   1
## Nov 0.94 0.89 0.1141   1
## Des 0.91 0.82 0.1776   1
## 
##                  ML1
## SS loadings    10.93
## Proportion Var  0.91
## 
## Mean item complexity =  1
## Test of the hypothesis that 1 factor is sufficient.
## 
## df null model =  66  with the objective function =  44.31 with Chi Square =  2621.86
## df of  the model are 54  and the objective function was  14.19 
## 
## The root mean square of the residuals (RMSR) is  0.05 
## The df corrected root mean square of the residuals is  0.05 
## 
## The harmonic n.obs is  65 with the empirical chi square  9.16  with prob <  1 
## The total n.obs was  65  with Likelihood Chi Square =  830.18  with prob <  1.7e-139 
## 
## Tucker Lewis Index of factoring reliability =  0.624
## RMSEA index =  0.47  and the 90 % confidence intervals are  0.446 0.503
## BIC =  604.76
## Fit based upon off diagonal values = 1
## Measures of factor score adequacy             
##                                                   ML1
## Correlation of (regression) scores with factors     1
## Multiple R square of scores with factors            1
## Minimum correlation of possible factor scores       1

7.3 Factor Loading

# Tabel factor loading
loading_table <- data.frame(
  Variabel = rownames(fa_result$loadings),
  Loading = round(fa_result$loadings[,1], 3)
)

loading_table
##     Variabel Loading
## Jan      Jan   0.890
## Feb      Feb   0.895
## Mar      Mar   0.919
## Apr      Apr   0.974
## Mei      Mei   0.974
## Jun      Jun   0.992
## Jul      Jul   0.998
## Agu      Agu   0.996
## Sep      Sep   0.993
## Okt      Okt   0.963
## Nov      Nov   0.941
## Des      Des   0.907

Hasil factor loading menunjukkan bahwa seluruh variabel bulanan (Januari hingga Desember 2025) memiliki nilai loading yang tinggi terhadap faktor pertama. Sebagian besar nilai loading berada di atas 0,80, yang menunjukkan bahwa setiap bulan memiliki kontribusi yang sangat kuat terhadap faktor yang terbentuk.

Nilai loading yang tinggi dan relatif seragam ini menunjukkan bahwa seluruh periode bulanan bergerak dalam pola yang sama dan dipengaruhi oleh satu faktor laten yang dominan.

7.4 Diagram Faktor

fa.diagram(fa_result)

Diagram faktor menunjukkan bahwa seluruh variabel bulanan terhubung kuat dengan satu faktor utama, tanpa adanya pengelompokan terpisah. Hal ini mengindikasikan bahwa struktur data bersifat unidimensional.

Pembahasan Hasil Factor Analysis

Berdasarkan hasil Factor Analysis, diperoleh satu faktor laten dominan yang menjelaskan hubungan antar variabel bulanan dalam data IHPB tahun 2025. Faktor ini dapat diinterpretasikan sebagai Faktor Pergerakan Umum Harga Bahan Bangunan.

Faktor tunggal ini menunjukkan bahwa perubahan indeks harga sepanjang Januari hingga Desember 2025 cenderung dipengaruhi oleh satu kondisi ekonomi yang sama, seperti inflasi umum, biaya produksi, distribusi, atau kebijakan harga. Tidak ditemukan adanya kelompok bulan tertentu yang membentuk pola berbeda, sehingga dinamika harga relatif homogen sepanjang tahun.

Konsistensi antara hasil PCA dan FA memperkuat kesimpulan bahwa struktur data dapat direpresentasikan secara efektif oleh satu dimensi utama.

8. Kesimpulan

Berdasarkan hasil analisis Principal Component Analysis (PCA) dan Factor Analysis (FA) terhadap data Indeks Harga Perdagangan Besar (IHPB) Bahan Bangunan/Konstruksi tahun 2025, diperoleh satu komponen atau faktor utama yang mampu menjelaskan lebih dari 90% variasi total data.

Hasil ini menunjukkan bahwa pergerakan harga bahan bangunan selama tahun 2025 memiliki pola yang sangat seragam dan dipengaruhi oleh satu faktor dominan. Dengan demikian, struktur data dapat disederhanakan menjadi satu dimensi utama tanpa kehilangan informasi yang signifikan.