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