Ana içeriğe atla

Python’da Faktör Analizine Giriş

Bu eğitimde, faktör analizinin temellerini ve Python’da nasıl uygulanacağını öğreneceksiniz.
Güncel 3 Eki 2026  · 10 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Faktör Analizi (FA), gözlemlenen değişkenler kümesinden etkili temel faktörleri veya örtük değişkenleri aramak için kullanılan keşifsel bir veri analizi yöntemidir. Değişken sayısını azaltarak verilerin yorumlanmasına yardımcı olur. Tüm değişkenlerden maksimum ortak varyansı çıkarır ve bunları ortak bir skora dönüştürür.

Faktör analizi pazar araştırması, reklamcılık, psikoloji, finans ve yöneylem araştırmalarında yaygın olarak kullanılır. Pazar araştırmacıları, fiyat duyarlı müşterileri belirlemek, tüketici tercihini etkileyen marka özelliklerini saptamak ve dağıtım kanalı için kanal seçimi kriterlerini anlamak için faktör analizinden yararlanır.

Faktör Analizi

Faktör analizi doğrusal bir istatistiksel modeldir. Gözlemlenen değişkenler arasındaki varyansı açıklamak ve gözlemlenen değişkenler kümesini faktör adı verilen gözlemlenmeyen değişkenlere yoğunlaştırmak için kullanılır. Gözlemlenen değişkenler, faktörler ve hata terimlerinin doğrusal bir birleşimi olarak modellenir (Kaynak). Faktör veya örtük değişken, ortak yanıt kalıplarına sahip birden çok gözlemlenen değişkenle ilişkilidir. Her faktör, gözlemlenen değişkenlerde belirli bir miktar varyansı açıklar. Değişken sayısını azaltarak verilerin yorumlanmasına yardımcı olur.

Faktör analizi, X1, X2,……, Xl gibi bir dizi ilgi çekici değişkenin, daha küçük sayıda gözlemlenmeyen faktörle F1, F2,……, Fk doğrusal olarak ilişkili olup olmadığını araştırma yöntemidir.

Kaynak: Bu görsel, faktör analizi notlarında bulduğum bir görsel baz alınarak yeniden oluşturulmuştur. Görsel, faktör analizine genel bir bakış sunar.

Varsayımlar:

  1. Verilerde aykırı değer bulunmamalıdır.
  2. Örneklem büyüklüğü, faktör sayısından büyük olmalıdır.
  3. Mükemmel çoklu doğrusal bağlantı olmamalıdır.
  4. Değişkenler arasında homoskedastisite olmamalıdır.

Faktör Analizi Türleri

  • Keşfedici Faktör Analizi: Sosyal ve yönetim araştırmacıları arasında en popüler faktör analizi yaklaşımıdır. Temel varsayımı, herhangi bir gözlemlenen değişkenin herhangi bir faktörle doğrudan ilişkili olabileceğidir.
  • Doğrulayıcı Faktör Analizi (CFA): Temel varsayımı, her faktörün belirli bir gözlemlenen değişkenler kümesiyle ilişkili olduğudur. CFA, temel varsayımlar doğrultusunda bekleneni doğrular.

Faktör Analizi Nasıl Çalışır?

Faktör analizinin birincil amacı, gözlemlenen değişkenlerin sayısını azaltmak ve gözlemlenmeyen değişkenleri bulmaktır. Bu gözlemlenmeyen değişkenler, pazar araştırmacısının anketten sonuç çıkarmasına yardımcı olur. Gözlemlenen değişkenlerin gözlemlenmeyen değişkenlere dönüştürülmesi iki adımda gerçekleştirilebilir:

  • Faktör Çıkarımı: Bu adımda, ana bileşenler analizi ve ortak faktör analizi gibi varyans paylaştırma yöntemleri kullanılarak çıkarılacak faktör sayısı ve çıkarım yaklaşımı seçilir.
  • Faktör Rotasyonu: Bu adımda, rotasyon faktörleri ilişkisiz (uncorrelated) hale getirmeye çalışır — bu adımın ana hedefi genel yorumlanabilirliği artırmaktır. Varimax rotasyonu, Quartimax rotasyonu ve Promax rotasyonu gibi birçok rotasyon yöntemi mevcuttur.

Terminoloji

Faktör nedir?

Faktör, çok sayıda gözlemlenen değişken arasındaki ilişkiyi tanımlayan bir örtük değişkendir. Maksimum faktör sayısı, gözlemlenen değişken sayısına eşittir. Her faktör, gözlemlenen değişkenlerde belirli bir varyansı açıklar. En düşük varyansa sahip faktörler elenir. Faktörler, örtük değişken, gizli değişken, gözlemlenmeyen değişken veya varsayımsal değişken olarak da bilinir.

Faktör yükleri nedir?

Faktör yükü, her bir değişkenin altta yatan faktörle ilişkisini gösteren bir matristir. Gözlemlenen değişken ile faktör arasındaki korelasyon katsayısını gösterir. Gözlemlenen değişkenlerce açıklanan varyansı ifade eder.

Özdeğer (Eigenvalue) nedir?

Özdeğerler, toplam varyanstan her bir faktörün açıkladığı varyansı temsil eder. Karakteristik kökler olarak da bilinir.

Komünaliteler (Communalities) nedir?

Komünaliteler, her bir değişken için kareler toplamı yükleridir. Ortak varyansı temsil eder. 0 ile 1 arasında değişir ve 1’e yakın değer daha fazla varyansı ifade eder.

Faktör Rotasyonu nedir?

Rotasyon, faktör analizinin daha iyi yorumlanması için bir araçtır. Rotasyon ortogonal veya oblik olabilir. Yüklerde net bir desenle komünaliteleri yeniden dağıtır.

Faktör Sayısını Seçme

Kaiser ölçütü, daha büyük bir varyans oranı açıklayan faktörün seçileceği analitik bir yaklaşımdır. Özdeğer, faktör sayısını belirlemek için iyi bir ölçüttür. Genellikle, 1’den büyük özdeğer bir özelliğin (faktörün) seçim ölçütü olarak kabul edilir.

Grafiksel yaklaşım, faktörlerin özdeğerlerinin görsel gösterimine, yani scree plot’a dayanır. Bu scree grafiği, eğrinin dirsek yaptığı yerdeki faktör sayısını belirlememize yardımcı olur.

Kaynak

Faktör Analizi ve Temel Bileşenler Analizi Karşılaştırması

  • PCA bileşenleri maksimum varyansı açıklarken, faktör analizi verideki kovaryansı açıklar.
  • PCA bileşenleri tamamen ortogonaldir, oysa faktör analizinde faktörlerin ortogonal olması gerekmez.
  • PCA bileşeni, gözlemlenen değişkenlerin doğrusal bir birleşimidir; FA’da ise gözlemlenen değişkenler, gözlemlenmeyen değişkenlerin veya faktörlerin doğrusal birleşimleridir.
  • PCA bileşenleri yorumlanamaz. FA’da altta yatan faktörler isimlendirilebilir ve yorumlanabilir.
  • PCA bir tür boyut indirgeme yöntemiyken, faktör analizi bir örtük değişken yöntemidir.
  • PCA, faktör analizinin bir türüdür. PCA gözlemsel bir yöntemken FA bir modelleme tekniğidir.

Kaynak

factor_analyzer paketiyle Python’da Faktör Analizi

Gerekli Kütüphaneleri İçe Aktarın

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

Veri Yükleme

BFI (kişilik değerlendirme projesine dayalı veri kümesi) üzerinde, 6 puanlık yanıt ölçeği kullanılarak toplanmış verilerle faktör analizi yapalım: 1 Çok Yanlış, 2 Orta Derecede Yanlış, 3 Biraz Yanlış, 4 Biraz Doğru, 5 Orta Derecede Doğru ve 6 Çok Doğru. Bu veri setini şu bağlantıdan da indirebilirsiniz: https://vincentarelbundock.github.io/Rdatasets/datasets.html

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

Veriyi Ön İşleme

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 satır × 25 sütun

Yeterlilik Testi

Faktör analizi yapmadan önce veri kümenizin “faktörlenebilirliğini” değerlendirmeniz gerekir. Faktörlenebilirlik, "veri kümesinde faktörler bulunabilir mi?" anlamına gelir. Faktörlenebilirliği veya örneklem yeterliliğini kontrol etmek için iki yöntem vardır:

  • Bartlett Testi
  • Kaiser-Meyer-Olkin Testi

Kürelik için Bartlett testi, gözlenen korelasyon matrisini birim matrisle karşılaştırarak gözlemlenen değişkenlerin birbirleriyle korelasyonlu olup olmadığını kontrol eder. Test istatistiksel olarak anlamsız çıkarsa faktör analizi uygulamamalısınız.

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)

Bu Bartlett testinde p-değeri 0’dır. Test istatistiksel olarak anlamlı çıkmış, bu da gözlenen korelasyon matrisinin birim matris olmadığını göstermektedir.

Kaiser-Meyer-Olkin (KMO) Testi, verinin faktör analizine uygunluğunu ölçer. Her bir gözlemlenen değişken ve tüm model için yeterliliği belirler. KMO, tüm gözlemlenen değişkenler arasındaki varyansın oranını tahmin eder. Daha düşük oran, faktör analizi için daha uygundur. KMO değerleri 0 ile 1 arasında değişir. 0,6’dan küçük KMO değeri yetersiz kabul edilir.

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

Verilerimiz için genel KMO 0,84’tür ve bu mükemmeldir. Bu değer, planladığınız faktör analizine devam edebileceğinizi göstermektedir.

Faktör Sayısını Seçme

Faktör sayısını seçmek için Kaiser ölçütünü ve scree grafiğini kullanabilirsiniz. Her ikisi de özdeğerlere dayanır.

# 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

Burada yalnızca 6 faktör için özdeğerlerin birden büyük olduğunu görebilirsiniz. Bu, yalnızca 6 faktörü (veya gözlemlenmeyen değişkeni) seçmemiz gerektiği anlamına gelir.

# 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()

Scree grafiği yöntemi, her faktör ve özdeğeri için bir doğru çizer. Birden büyük özdeğer sayısı, faktör sayısı olarak kabul edilir.

Burada yalnızca 6 faktör için özdeğerlerin birden büyük olduğunu görebilirsiniz. Bu, yalnızca 6 faktörü (veya gözlemlenmeyen değişkeni) seçmemiz gerektiği anlamına gelir.

Faktör Analizi Uygulama

# 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
  • Faktör 1, E1,E2,E3,E4 ve E5 için yüksek faktör yüklerine sahiptir (Dışadönüklük)
  • Faktör 2, N1,N2,N3,N4 ve N5 için yüksek faktör yüklerine sahiptir (Nevrotiklik)
  • Faktör 3, C1,C2,C3,C4 ve C5 için yüksek faktör yüklerine sahiptir (Sorumluluk)
  • Faktör 4, O1,O2,O3,O4 ve O5 için yüksek faktör yüklerine sahiptir (Açıklık)
  • Faktör 5, A1,A2,A3,A4 ve A5 için yüksek faktör yüklerine sahiptir (Uyumluluk)
  • Faktör 6, hiçbir değişkende yüksek yüklemelere sahip değildir ve kolayca yorumlanamaz. Yalnızca beş faktör almak daha iyidir.

Beş faktör için faktör analizi yapalım.

# 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

Toplamda 5 faktör tarafından açıklanan kümülatif varyans %42’dir.

Faktör Analizinin Artıları ve Eksileri

Faktör analizi, büyük veri kümelerini keşfeder ve birbiriyle bağlantılı ilişkileri bulur. Gözlemlenen değişkenleri birkaç gözlemlenmeyen değişkene indirger veya birbiriyle ilişkili değişken gruplarını tanımlar; bu da pazar araştırmacılarının pazar durumlarını sadeleştirmesine ve tüketici zevki, tercihi ve kültürel etki arasındaki gizli ilişkileri bulmasına yardımcı olur. Ayrıca gelecekteki anketler için anket formunun iyileştirilmesine katkı sağlar. Faktörler, verilerin daha doğal biçimde yorumlanmasını sağlar.

Faktör analizi sonuçları tartışmalıdır. Yorumları tartışmaya açıktır çünkü aynı veri faktörlerinden birden fazla yorum yapılabilir. Faktörlerin belirlenmesi ve adlandırılması, alan bilgisi gerektirir.

Sonuç

Tebrikler, bu eğitimin sonuna geldiniz!

Bu eğitimde faktör analizinin ne olduğunu, faktör analizi türlerini, faktör analizinin nasıl çalıştığını, temel faktör analizi terminolojisini, faktör sayısının seçimini, temel bileşenler analizi ile faktör analizinin karşılaştırmasını, Python’da FactorAnalyzer paketiyle uygulamayı ve faktör analizinin artılarını/eksilerini öğrendiniz.

Geri bildirim veya sorularınızı duymayı çok isterim. Yorum bırakarak sorunuzu iletebilirsiniz; yanıtlamak için elimden gelenin en iyisini yapacağım.

Python’da faktörler hakkında daha fazla bilgi edinmek isterseniz DataCamp’in Python’da Denetimsiz Öğrenme kursunu inceleyin.

Konular
Python
Veri Bilimi

Python Kursları

Kurs

Python’a Giriş

4 sa
7.1M
Python ile veri analizi temellerini sadece dört saatte öğrenin. Bu çevrimiçi kurs, Python arayüzünü tanıtacak ve popüler paketleri keşfedecektir.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör