Lewati ke konten utama

Pengantar Analisis Faktor di Python

Dalam tutorial ini, Anda akan mempelajari dasar-dasar analisis faktor dan cara mengimplementasikannya di Python.
Diperbarui 28 Sep 2026  · 10 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Analisis Faktor (FA) adalah metode analisis data eksploratori yang digunakan untuk mencari faktor bawah permukaan atau variabel laten yang berpengaruh dari sekumpulan variabel teramati. Metode ini membantu interpretasi data dengan mengurangi jumlah variabel. FA mengekstrak varians umum maksimum dari semua variabel dan memasukkannya ke dalam skor umum.

Analisis faktor banyak digunakan dalam riset pasar, periklanan, psikologi, keuangan, dan riset operasi. Peneliti pasar menggunakan analisis faktor untuk mengidentifikasi pelanggan yang sensitif terhadap harga, mengidentifikasi fitur merek yang memengaruhi pilihan konsumen, serta membantu memahami kriteria pemilihan kanal untuk saluran distribusi.

Analisis Faktor

Analisis faktor adalah model statistik linear. Metode ini digunakan untuk menjelaskan varians di antara variabel teramati dan memadatkan sekumpulan variabel teramati menjadi variabel tak teramati yang disebut faktor. Variabel teramati dimodelkan sebagai kombinasi linear dari faktor dan suku galat (Sumber). Faktor atau variabel laten terkait dengan beberapa variabel teramati yang memiliki pola respons yang sama. Setiap faktor menjelaskan sejumlah varians tertentu pada variabel teramati. Metode ini membantu interpretasi data dengan mengurangi jumlah variabel.

Analisis faktor adalah metode untuk menyelidiki apakah sejumlah variabel yang diminati X1, X2,……., Xl, berkaitan secara linear dengan sejumlah faktor tak teramati yang lebih kecil F1, F2,..……, Fk.

Sumber: Gambar ini dibuat ulang dari gambar yang saya temukan di catatan analisis faktor. Gambar tersebut memberikan gambaran lengkap tentang analisis faktor.

Asumsi:

  1. Tidak ada pencilan (outlier) dalam data.
  2. Ukuran sampel harus lebih besar daripada jumlah faktor.
  3. Tidak boleh ada multikolinieritas sempurna.
  4. Tidak boleh ada homoskedastisitas antar variabel.

Jenis Analisis Faktor

  • Exploratory Factor Analysis: Ini adalah pendekatan analisis faktor yang paling populer di kalangan peneliti sosial dan manajemen. Asumsi dasarnya adalah setiap variabel teramati dapat berasosiasi langsung dengan faktor mana pun.
  • Confirmatory Factor Analysis (CFA): Asumsi dasarnya adalah setiap faktor terkait dengan sekumpulan variabel teramati tertentu. CFA mengonfirmasi apa yang diharapkan berdasarkan asumsi tersebut.

Bagaimana Cara Kerja Analisis Faktor?

Tujuan utama analisis faktor adalah mengurangi jumlah variabel teramati dan menemukan variabel tak teramati. Variabel tak teramati ini membantu peneliti pasar menyimpulkan hasil survei. Konversi dari variabel teramati ke variabel tak teramati dapat dilakukan dalam dua langkah:

  • Ekstraksi Faktor: Pada langkah ini, jumlah faktor dan pendekatan ekstraksi dipilih menggunakan metode pemartisian varians seperti principal components analysis dan common factor analysis.
  • Rotasi Faktor: Pada langkah ini, rotasi berupaya mengubah faktor menjadi faktor yang tidak berkorelasi — tujuan utamanya untuk meningkatkan keterjelasan interpretasi. Tersedia banyak metode rotasi seperti: metode rotasi Varimax, Quartimax, dan Promax.

Terminologi

Apa itu faktor?

Faktor adalah variabel laten yang menggambarkan keterkaitan di antara sejumlah variabel teramati. Jumlah faktor maksimum sama dengan jumlah variabel teramati. Setiap faktor menjelaskan varians tertentu pada variabel teramati. Faktor dengan jumlah varians terendah dihapus. Faktor juga dikenal sebagai variabel laten, variabel tersembunyi, variabel tak teramati, atau variabel hipotetik.

Apa itu factor loading?

Factor loading adalah matriks yang menunjukkan hubungan setiap variabel dengan faktor dasarnya. Matriks ini menunjukkan koefisien korelasi antara variabel teramati dan faktor. Matriks ini menunjukkan varians yang dijelaskan oleh variabel teramati.

Apa itu Eigenvalues?

Eigenvalues merepresentasikan varians yang dijelaskan masing-masing faktor dari total varians. Nilai ini juga dikenal sebagai akar karakteristik.

Apa itu Communalities?

Commonalities adalah jumlah kuadrat loading untuk setiap variabel. Nilai ini merepresentasikan varians umum. Rentangnya 0-1 dan nilai yang mendekati 1 merepresentasikan varians yang lebih besar.

Apa itu Rotasi Faktor?

Rotasi adalah alat untuk interpretasi analisis faktor yang lebih baik. Rotasi dapat bersifat ortogonal atau oblik. Rotasi mendistribusikan ulang commonalities dengan pola loading yang lebih jelas.

Menentukan Jumlah Faktor

Kriteria Kaiser adalah pendekatan analitis yang didasarkan pada proporsi varians yang lebih besar yang dijelaskan oleh faktor akan dipilih. Eigenvalue adalah kriteria yang baik untuk menentukan jumlah faktor. Umumnya, eigenvalue lebih besar dari 1 akan dianggap sebagai kriteria pemilihan fitur.

Pendekatan grafis didasarkan pada representasi visual eigenvalue faktor yang juga disebut scree plot. Scree plot ini membantu kita menentukan jumlah faktor pada titik di mana kurva membentuk siku (elbow).

Sumber

Analisis Faktor vs. Principal Component Analysis

  • Komponen PCA menjelaskan jumlah varians maksimum sedangkan analisis faktor menjelaskan kovarians dalam data.
  • Komponen PCA sepenuhnya ortogonal satu sama lain sedangkan analisis faktor tidak mensyaratkan faktor bersifat ortogonal.
  • Komponen PCA adalah kombinasi linear dari variabel teramati, sedangkan pada FA, variabel teramati adalah kombinasi linear dari variabel tak teramati atau faktor.
  • Komponen PCA tidak dapat ditafsirkan. Dalam FA, faktor dasar dapat diberi label dan ditafsirkan.
  • PCA adalah jenis metode reduksi dimensi sedangkan analisis faktor adalah metode variabel laten.
  • PCA adalah salah satu jenis analisis faktor. PCA bersifat observasional sedangkan FA adalah teknik pemodelan.

Sumber

Analisis Faktor di Python menggunakan paket factor_analyzer

Impor Pustaka yang Diperlukan

# Import required libraries
import pandas as pd
from sklearn.datasets import load_iris
from factor_analyzer import FactorAnalyzer
import matplotlib.pyplot as plt

Memuat Data

Mari lakukan analisis faktor pada BFI (dataset berdasarkan proyek asesmen kepribadian), yang dikumpulkan menggunakan skala respons 6 poin: 1 Sangat Tidak Akurat, 2 Cukup Tidak Akurat, 3 Agak Tidak Akurat, 4 Agak Akurat, 5 Cukup Akurat, dan 6 Sangat Akurat. Anda juga dapat mengunduh dataset ini dari tautan berikut: https://vincentarelbundock.github.io/Rdatasets/datasets.html

df= pd.read_csv("bfi.csv")

Praproses Data

df.columns
Index(['A1', 'A2', 'A3', 'A4', 'A5', 'C1', 'C2', 'C3', 'C4', 'C5', 'E1', 'E2',
       'E3', 'E4', 'E5', 'N1', 'N2', 'N3', 'N4', 'N5', 'O1', 'O2', 'O3', 'O4',
       'O5', 'gender', 'education', 'age'],
      dtype='object')
# Dropping unnecessary columns
df.drop(['gender', 'education', 'age'],axis=1,inplace=True)
# Dropping missing values rows
df.dropna(inplace=True)
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 2436 entries, 0 to 2799
Data columns (total 25 columns):
A1    2436 non-null float64
A2    2436 non-null float64
A3    2436 non-null float64
A4    2436 non-null float64
A5    2436 non-null float64
C1    2436 non-null float64
C2    2436 non-null float64
C3    2436 non-null float64
C4    2436 non-null float64
C5    2436 non-null float64
E1    2436 non-null float64
E2    2436 non-null float64
E3    2436 non-null float64
E4    2436 non-null float64
E5    2436 non-null float64
N1    2436 non-null float64
N2    2436 non-null float64
N3    2436 non-null float64
N4    2436 non-null float64
N5    2436 non-null float64
O1    2436 non-null float64
O2    2436 non-null int64
O3    2436 non-null float64
O4    2436 non-null float64
O5    2436 non-null float64
dtypes: float64(24), int64(1)
memory usage: 494.8 KB
df.head()
  A1 A2 A3 A4 A5 C1 C2 C3 C4 C5 ... N1 N2 N3 N4 N5 O1 O2 O3 O4 O5
0 2.0 4.0 3.0 4.0 4.0 2.0 3.0 3.0 4.0 4.0 ... 3.0 4.0 2.0 2.0 3.0 3.0 6 3.0 4.0 3.0
1 2.0 4.0 5.0 2.0 5.0 5.0 4.0 4.0 3.0 4.0 ... 3.0 3.0 3.0 5.0 5.0 4.0 2 4.0 3.0 3.0
2 5.0 4.0 5.0 4.0 4.0 4.0 5.0 4.0 2.0 5.0 ... 4.0 5.0 4.0 2.0 3.0 4.0 2 5.0 5.0 2.0
3 4.0 4.0 6.0 5.0 5.0 4.0 4.0 3.0 5.0 5.0 ... 2.0 5.0 2.0 4.0 1.0 3.0 3 4.0 3.0 5.0
4 2.0 3.0 3.0 4.0 5.0 4.0 4.0 5.0 3.0 2.0 ... 2.0 3.0 4.0 4.0 3.0 3.0 3 4.0 3.0 3.0

5 baris × 25 kolom

Uji Kelayakan

Sebelum Anda melakukan analisis faktor, Anda perlu mengevaluasi "factorability" dari dataset kita. Factorability berarti "dapatkah kita menemukan faktor dalam dataset?". Ada dua metode untuk memeriksa factorability atau kecukupan sampel:

  • Uji Bartlett
  • Uji Kaiser-Meyer-Olkin

Uji sferisitas Bartlett memeriksa apakah variabel teramati saling berkorelasi dengan menggunakan matriks korelasi teramati terhadap matriks identitas. Jika uji ini tidak signifikan secara statistik, Anda sebaiknya tidak melakukan analisis faktor.

from factor_analyzer.factor_analyzer import calculate_bartlett_sphericity
chi_square_value,p_value=calculate_bartlett_sphericity(df)
chi_square_value, p_value
(18146.065577234807, 0.0)

Pada uji Bartlett ini, nilai p adalah 0. Uji ini signifikan secara statistik, yang menunjukkan bahwa matriks korelasi teramati bukan matriks identitas.

Uji Kaiser-Meyer-Olkin (KMO) mengukur kesesuaian data untuk analisis faktor. Uji ini menentukan kecukupan untuk setiap variabel teramati dan untuk model secara keseluruhan. KMO mengestimasi proporsi varians di antara semua variabel teramati. Proporsi yang lebih rendah lebih sesuai untuk analisis faktor. Nilai KMO berkisar antara 0 dan 1. Nilai KMO kurang dari 0,6 dianggap tidak memadai.

from factor_analyzer.factor_analyzer import calculate_kmo
kmo_all,kmo_model=calculate_kmo(df)
kmo_model
0.8486452309468382

Nilai KMO keseluruhan untuk data kita adalah 0,84, yang sangat baik. Nilai ini menunjukkan bahwa Anda dapat melanjutkan analisis faktor yang direncanakan.

Menentukan Jumlah Faktor

Untuk menentukan jumlah faktor, Anda dapat menggunakan kriteria Kaiser dan scree plot. Keduanya didasarkan pada eigenvalue.

# Create factor analysis object and perform factor analysis
fa = FactorAnalyzer()
fa.analyze(df, 25, rotation=None)
# Check Eigenvalues
ev, v = fa.get_eigenvalues()
ev
  Original_Eigenvalues
0 5.134311
1 2.751887
2 2.142702
3 1.852328
4 1.548163
5 1.073582
6 0.839539
7 0.799206
8 0.718989
9 0.688089
10 0.676373
11 0.651800
12 0.623253
13 0.596563
14 0.563091
15 0.543305
16 0.514518
17 0.494503
18 0.482640
19 0.448921
20 0.423366
21 0.400671
22 0.387804
23 0.381857
24 0.262539

Di sini, Anda dapat melihat hanya untuk 6 faktor eigenvalue lebih besar dari satu. Ini berarti kita perlu memilih hanya 6 faktor (atau variabel tak teramati).

# Create scree plot using matplotlib
plt.scatter(range(1,df.shape[1]+1),ev)
plt.plot(range(1,df.shape[1]+1),ev)
plt.title('Scree Plot')
plt.xlabel('Factors')
plt.ylabel('Eigenvalue')
plt.grid()
plt.show()

Metode scree plot menggambar garis untuk setiap faktor dan eigenvalue-nya. Jumlah eigenvalue yang lebih besar dari satu dianggap sebagai jumlah faktor.

Di sini, Anda dapat melihat hanya untuk 6 faktor eigenvalue lebih besar dari satu. Ini berarti kita perlu memilih hanya 6 faktor (atau variabel tak teramati).

Melakukan Analisis Faktor

# Create factor analysis object and perform factor analysis
fa = FactorAnalyzer()
fa.analyze(df, 6, rotation="varimax")
fa.loadings
  Factor1 Factor2 Factor3 Factor4 Factor5 Factor6
A1 0.040783 0.095220 0.048734 -0.113057 -0.530987 0.161216
A2 0.235538 0.033131 0.133714 0.063734 0.661141 -0.006244
A3 0.343008 -0.009621 0.121353 0.033990 0.605933 0.160106
A4 0.219717 -0.081518 0.235140 -0.125338 0.404594 0.086356
A5 0.414458 -0.149616 0.106382 0.030977 0.469698 0.236519
C1 0.077248 -0.004358 0.554582 0.190124 0.007511 0.095035
C2 0.038370 0.068330 0.674545 0.087593 0.057055 0.152775
C3 0.031867 -0.039994 0.551164 -0.011338 0.101282 0.008996
C4 -0.066241 0.216283 -0.638475 -0.143846 -0.102617 0.318359
C5 -0.180812 0.284187 -0.544838 0.025837 -0.059955 0.132423
E1 -0.590451 0.022280 0.053915 -0.071205 -0.130851 0.156583
E2 -0.684578 0.233624 -0.088497 -0.045561 -0.116716 0.115065
E3 0.556774 -0.000895 0.103390 0.241180 0.179396 0.267291
E4 0.658395 -0.136788 0.113798 -0.107808 0.241143 0.158513
E5 0.507535 0.034490 0.309813 0.200821 0.078804 0.008747
N1 0.068011 0.805806 -0.051264 -0.074977 -0.174849 -0.096266
N2 0.022958 0.789832 -0.037477 0.006726 -0.141134 -0.139823
N3 -0.065687 0.725081 -0.059039 -0.010664 -0.019184 0.062495
N4 -0.345072 0.578319 -0.162174 0.062916 0.000403 0.147551
N5 -0.161675 0.523097 -0.025305 -0.161892 0.090125 0.120049
O1 0.225339 -0.020004 0.133201 0.479477 0.005178 0.218690
O2 -0.001982 0.156230 -0.086047 -0.496640 0.043989 0.134693
O3 0.325954 0.011851 0.093880 0.566128 0.076642 0.210777
O4 -0.177746 0.207281 -0.005671 0.349227 0.133656 0.178068
O5 -0.014221 0.063234 -0.047059 -0.576743 -0.057561 0.135936
  • Faktor 1 memiliki factor loading tinggi untuk E1,E2,E3,E4, dan E5 (Ekstraversi)
  • Faktor 2 memiliki factor loading tinggi untuk N1,N2,N3,N4, dan N5 (Neurotisisme)
  • Faktor 3 memiliki factor loading tinggi untuk C1,C2,C3,C4, dan C5 (Ketaatan/Conscientiousness)
  • Faktor 4 memiliki factor loading tinggi untuk O1,O2,O3,O4, dan O5 (Keterbukaan/Openness)
  • Faktor 5 memiliki factor loading tinggi untuk A1,A2,A3,A4, dan A5 (Keramahan/Agreeableness)
  • Faktor 6 tidak memiliki loading tinggi pada variabel mana pun dan tidak mudah ditafsirkan. Lebih baik jika kita mengambil hanya lima faktor.

Mari lakukan analisis faktor untuk 5 faktor.

# Create factor analysis object and perform factor analysis using 5 factors
fa = FactorAnalyzer()
fa.analyze(df, 5, rotation="varimax")
fa.loadings
  Factor1 Factor2 Factor3 Factor4 Factor5
A1 0.040465 0.111126 0.022798 -0.077931 -0.428166
A2 0.213716 0.029588 0.139037 0.062139 0.626946
A3 0.317848 0.009357 0.109331 0.056196 0.650743
A4 0.204566 -0.066476 0.230584 -0.112700 0.435624
A5 0.393034 -0.122113 0.087869 0.066708 0.537087
C1 0.070184 0.010416 0.545824 0.209584 0.038878
C2 0.033270 0.089574 0.648731 0.115434 0.102782
C3 0.023907 -0.030855 0.557036 -0.005183 0.111578
C4 -0.064984 0.240410 -0.633806 -0.107535 -0.037498
C5 -0.176395 0.290318 -0.562467 0.036822 -0.047525
E1 -0.574835 0.042819 0.033144 -0.058795 -0.104813
E2 -0.678731 0.244743 -0.102483 -0.042010 -0.112517
E3 0.536816 0.024180 0.083010 0.280877 0.257906
E4 0.646833 -0.115614 0.102023 -0.073422 0.306101
E5 0.504069 0.036145 0.312899 0.213739 0.090354
N1 0.078923 0.786807 -0.045997 -0.084704 -0.216363
N2 0.027301 0.754109 -0.030568 -0.010304 -0.193744
N3 -0.061430 0.731721 -0.067084 -0.004217 -0.027712
N4 -0.345388 0.590602 -0.178902 0.075225 0.005886
N5 -0.161291 0.537858 -0.037309 -0.149769 0.100931
O1 0.213005 -0.002224 0.115080 0.504907 0.061550
O2 0.004560 0.175788 -0.099729 -0.468925 0.081809
O3 0.310956 0.026736 0.076873 0.596007 0.126889
O4 -0.191196 0.220582 -0.021906 0.369012 0.155475
O5 -0.005347 0.085401 -0.062730 -0.533778 -0.010384
# Get variance of each factors
fa.get_factor_variance()
  Factor1 Factor2 Factor3 Factor4 Factor5
SS Loadings 2.473090 2.709633 2.041106 1.522153 1.844498
Proportion Var 0.098924 0.108385 0.081644 0.060886 0.073780
Cumulative Var 0.098924 0.207309 0.288953 0.349839 0.423619

Total 42% Varians kumulatif dijelaskan oleh 5 faktor.

Kelebihan dan Kekurangan Analisis Faktor

Analisis faktor mengeksplorasi dataset besar dan menemukan keterkaitan yang saling terhubung. Metode ini mengurangi variabel teramati menjadi beberapa variabel tak teramati atau mengidentifikasi kelompok variabel yang saling berkaitan, yang membantu peneliti pasar meringkas situasi pasar dan menemukan hubungan tersembunyi di antara selera, preferensi, dan pengaruh budaya konsumen. Selain itu, metode ini membantu memperbaiki kuesioner untuk survei di masa depan. Faktor memudahkan interpretasi data yang lebih alami.

Hasil analisis faktor dapat memicu perdebatan. Interpretasinya bisa diperdebatkan karena lebih dari satu interpretasi dapat dibuat dari faktor data yang sama. Setelah identifikasi faktor, penamaan faktor memerlukan pengetahuan domain.

Kesimpulan

Selamat, Anda telah sampai di akhir tutorial ini!

Dalam tutorial ini, Anda telah mempelajari apa itu analisis faktor. Jenis-jenis analisis faktor, bagaimana analisis faktor bekerja, terminologi dasar analisis faktor, penentuan jumlah faktor, perbandingan antara principal component analysis dan analisis faktor, implementasi di Python menggunakan paket FactorAnalyzer untuk Python, serta kelebihan dan kekurangannya.

Saya menantikan masukan atau pertanyaan apa pun. Anda dapat mengajukan pertanyaan dengan meninggalkan komentar dan saya akan berusaha sebaik mungkin untuk menjawabnya.

Jika Anda ingin mempelajari lebih lanjut tentang faktor di Python, ikuti kursus DataCamp Unsupervised Learning in Python.

Topik
Python
Data Science

Kursus Python

Kursus

Pengantar Python

4 jam
7.1M
Kuasai dasar-dasar analisis data dengan Python dalam 4 jam. Kursus online ini memperkenalkan antarmuka Python dan pustaka populer.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya