Faktör Analizi


Bu yazımda R programında faktör analizi nasıl yapılır onu açıklamaya çalışacağım. Faktör analizi çok fazla değişkene sahip bir veri setinde birkaç değişkenle ifade edilip edilmeyeceğine karar vermemize yardım olan bir yöntemdir. Bu yöntemi R programında uygulayabilmek için temel bileşen analizi dersinde olduğu gibi yine “psych” paketine ihtiyaç duymaktayız ve kullanacağımız komut “factanal” komutu olacaktır. Komutu kullanımı ve argümanlar şu şekildedir.

factanal(x, factors, data = NULL, covmat = NULL, n.obs = NA, subset, na.action, start = NULL, scores = c("none", "regression", "Bartlett"), rotation = "varimax", control = NULL, ...)

argümanlara bakacak olursak; “x” sayısal matriks oluşumuna zorlayan bir formül, sayısal matris veya nesneyi temsil ederken, “data” yine her zamanki gibi bir data frame içerisine alınmış veri setini, “covmat” kovaryans matrisini, “n.obs” eğer covmatta tanımlanan matris bir kovaryans matrisi ise gözlem sayısını, “subset” eğer “x” bir matris yada formül ise kendine has özel durumlarda kullanılabileceğini,”scores” varsayılan ayarı “none” şeklindedir ve “regression” bize Thompson's skorunu vermektedir.

Bu sefer veri setini farklı bir şekilde oluşturalım. Elimizde v1 den v6 ya kadar değişkene sahip bir veri seti olduğunu varsayalım. Bu veri setini şu şekilde tanımlayabiliriz.

>v1 <- c(1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,4,5,6)

>v2 <- c(1,2,1,1,1,1,2,1,2,1,3,4,3,3,3,4,6,5)

>v3 <- c(3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,5,4,6)

>v4 <- c(3,3,4,3,3,1,1,2,1,1,1,1,2,1,1,5,6,4)

>v5 <- c(1,1,1,1,1,3,3,3,3,3,1,1,1,1,1,6,4,5)

>v6 <- c(1,1,1,2,1,3,3,3,4,3,1,1,1,2,1,6,5,4)

Şimdi bu elimizdeki dizinlerin hepsini bir matris haline dönüştürelim ve korelasyon matrisini bir görelim

>m1 <- cbind(v1,v2,v3,v4,v5,v6)

>cor(m1)

          v1        v2        v3        v4        v5        v6

v1 1.0000000 0.9393083 0.5128866 0.4320310 0.4664948 0.4086076

v2 0.9393083 1.0000000 0.4124441 0.4084281 0.4363925 0.4326113

v3 0.5128866 0.4124441 1.0000000 0.8770750 0.5128866 0.4320310

v4 0.4320310 0.4084281 0.8770750 1.0000000 0.4320310 0.4323259

v5 0.4664948 0.4363925 0.5128866 0.4320310 1.0000000 0.9473451

v6 0.4086076 0.4326113 0.4320310 0.4323259 0.9473451 1.0000000

 

Şimdi faktör analizine geçebiliriz. Önceden belirttiğim gibi “factanal” komutunu kullanacağız. Eğer bu komutla beraber bir döndürme değeri girmezsek bize default olarak “varimax” değeri gelecektir.

>factanal(m1, factors = 3)

Call:

factanal(x = m1, factors = 3)

 

Uniquenesses:

   v1    v2    v3    v4    v5    v6

0.005 0.101 0.005 0.224 0.084 0.005

 

Loadings:

   Factor1 Factor2 Factor3

v1 0.944   0.182   0.267 

v2 0.905   0.235   0.159 

v3 0.236   0.210   0.946 

v4 0.180   0.242   0.828 

v5 0.242   0.881   0.286 

v6 0.193   0.959   0.196 

 

               Factor1 Factor2 Factor3

SS loadings      1.893   1.886   1.797

Proportion Var   0.316   0.314   0.300

Cumulative Var   0.316   0.630   0.929

 

The degrees of freedom for the model is 0 and the fit was 0.4755

>factanal(m1, factors = 3, rotation = "promax")

Call:

factanal(x = m1, factors = 3, rotation = "promax")

 

Uniquenesses:

   v1    v2    v3    v4    v5    v6

0.005 0.101 0.005 0.224 0.084 0.005

 

Loadings:

   Factor1 Factor2 Factor3

v1          0.985        

v2          0.951        

v3                  1.003

v4                  0.867

v5  0.910                

v6  1.033                

 

               Factor1 Factor2 Factor3

SS loadings      1.903   1.876   1.772

Proportion Var   0.317   0.313   0.295

Cumulative Var   0.317   0.630   0.925

 

Factor Correlations:

        Factor1 Factor2 Factor3

Factor1   1.000   0.462   0.460

Factor2   0.462   1.000   0.501

Factor3   0.460   0.501   1.000

 

The degrees of freedom for the model is 0 and the fit was 0.4755

Eğer bu komut ile bir formül kullanmak istersek;

factanal(~v1+v2+v3+v4+v5+v6, factors = 3,scores = "Bartlett")$scores

 

Factor1    Factor2    Factor3

1  -0.9039949 -0.9308984  0.9475392

2  -0.8685952 -0.9328721  0.9352330

3  -0.9082818 -0.9320093  0.9616422

4  -1.0021975 -0.2529689  0.8178552

5  -0.9039949 -0.9308984  0.9475392

6  -0.7452711  0.7273960 -0.7884733

7  -0.7098714  0.7254223 -0.8007795

8  -0.7495580  0.7262851 -0.7743704

9  -0.8080740  1.4033517 -0.9304636

10 -0.7452711  0.7273960 -0.7884733

11  0.9272282 -0.9307506 -0.8371538

12  0.9626279 -0.9327243 -0.8494600

13  0.9229413 -0.9318615 -0.8230509

14  0.8290256 -0.2528211 -0.9668378

15  0.9272282 -0.9307506 -0.8371538

16  0.4224366  2.0453079  1.2864761

17  1.4713902  1.2947716  0.5451562

18  1.8822320  0.3086244  1.9547752

 

Şeklinde olacaktır. Oluşan analizi bir grafik içerisinde görmek istersek yine “plot” komutunu kullanabiliriz. Faktör sayısını alabilmek için ayrıca bir paket (“nFactors”) indirmemiz gereklidir.

> install.packages("nFactors")

Veri içerisindeki özdeğerleri belirlemek için “eigen” komutu kullanılır.

> ev <- eigen(cor(m1))

>ap <- parallel(subject=nrow(m1),var=ncol(m1),  rep=100,cent=.05)

>nS <- nScree(ev$values, ap$eigen$qevpea)

Daha da fazlasını görebilmek için “FactoMiner” paketini kullanabiliriz. Aklınıza takılan soru varsa benimle irtibata geçebilirsiniz.

KAYNAK

https://stat.ethz.ch/R-manual/R-devel/library/stats/html/factanal.html

http://www.statmethods.net/advstats/factor.html

https://en.wikipedia.org/wiki/Factor_analysis

 

Yazar Kimdir?

Sıtkı Cansu, 19 Ekim 1985 yilinda Konya-Beyşehir'de dogmustur.İlk, orta ve liseyi Beyşehir'de bitirmis olup Konya-Ereğli Selçuk MYO Bilgisayar programcılığı ve Mugla Sıtkı Koçman Üniversitesi İstatistik bölümünden mezun olmustur. Çesitli yerlerde web tasarımcı ve veri tabani yöneticisi olarak çalışan yazar, son üç senedir ingilizce öğretmenliği yapmaktadir. Şu anda yüksek lisansını tamamlamak üzere Mugla Üniversitesinde öğrenim görmektedir.