Dr. Kubra Atalay Kabasakal
Kasim 2021
Faktorler bir veri setindeki kesikli/sureksiz degiskeni gostermektedir. Faktorler analizlerde gruplari belirtir. Faktorler hem karakter veri turunden hem de sayisal veri turunden olusturulabilmektedir.
Faktor nesnelerinin aldigi degerlere duzey (level) denir.
# cinsiyet nesnesi olusturulmasi
ad <- c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
cinsiyet <-c("erkek","kadin","kadin","kadin","erkek","erkek","erkek","kadin","erkek","erkek")cinsiyet nesnesinin faktore/sureksiz degiskene donusturulmesi as.factor() ya da factor() fonksiyonlari ile saglanir.
## [1] erkek kadin kadin kadin erkek erkek erkek kadin erkek erkek
## Levels: erkek kadin
Faktor nesnelerin (grup duzeyine sahip nesnelerin) grup duzeyleri levels() fonksiyonu ile belirlenebilir.
## [1] "erkek" "kadin"
Faktor nesneler grup adlari ile olusturulabilecegi gibi, sayisal nesnelerde faktor olarak tanimlanabilir. Olusan nesnenin grup isimleri/duzeyleri levels() fonksiyonu ile olusturulabilir.
cinsiyet2 nesnesi olusturmanin diger bir yolu ise asagidaki gibidir.
# 1 erkek, 2 kadin olmak uzere yeni nesne olusturulmustur.
cinsiyet2 <-c(1,2,2,2,1,1,1,2,1,1)
cinsiyet2 <- factor(cinsiyet2)
cinsiyet2## [1] 1 2 2 2 1 1 1 2 1 1
## Levels: 1 2
## [1] "1" "2"
Sayisal degere sahip olan faktor nesnesine duzey isimleri levels() fonksiyonu ile atanabilir.
## [1] erkek kadin kadin kadin erkek erkek erkek kadin erkek erkek
## Levels: erkek kadin
Faktor duzeylerinin siralanmasi ozellikle dogrusal modellerde onemlidir. Eger duzeylerin sirasi onemli ise, order() fonksiyonunu kullanarak siralama yapabilmektedir.
100 ogrenciye iliskin elimizde donem sonu notlarinin oldugunu dusunelim. Bu nesneyi olusturmak icin rastgele veri uretelim.
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.428 39.326 48.955 48.764 59.137 95.593
Bu notlari harfe cevirmek icin vektoru belli noktalardan bolebiliriz. 90 uzeri A, 80 - 90 arasi B, 70 - 80 arasi C, 60 - 70 arasi D, 50 - 60 arasi E, 50 ve alti ise F olmak uzere, notlari 6 duzeyli bir faktor nesnesine donusturelim. Bu islemi yapmak icin her bir nota karsilik gelen harflerden bir karakter vektoru olusturulabilecegi gibi, cut() fonksiyonu ile de olusturulabilir.
harf_v1 <- cut(not,breaks = c(0,50,60,70,80,90,100),right = TRUE)
harf_v2 <-cut(not,breaks = c(0,50,60,70,80,90,100),right = FALSE)
levels(harf_v1)## [1] "(0,50]" "(50,60]" "(60,70]" "(70,80]" "(80,90]" "(90,100]"
## [1] "[0,50)" "[50,60)" "[60,70)" "[70,80)" "[80,90)" "[90,100)"
harf_v1 ve harf_v2 nesnelerinin farkı nedir?
breaks argumanina kesme degerleri girelebilecegi gibi kesme sayisi da girilebilir.
## [1] "(3.34,18.8]" "(18.8,34.2]" "(34.2,49.5]" "(49.5,64.9]" "(64.9,80.2]"
## [6] "(80.2,95.7]"
cut() fonksiyonunun argumanlari baska ne amaclar icin kullanilabilir yardim sayfasindan inceleyiniz.
Asagidaki cikti nasil elde edilebilir?
## [1] E F F F E F F F E E F D F F F F E C E F F F F F E D F F F F E F C E F E C
## [38] F F F F E C F A D F F E F F D F E D F D F C F F F F E F C E D C E E D E F
## [75] E D F D C F C F D F D F E F F F F C F F F F F D F D
## Levels: F E D C B A
Asagidaki cikti nasil elde edilebilir?
## [1] E F F F E F F F E E F D F F F F E C E F F F F F E D F F F F E F C E F E C
## [38] F F F F E C F A D F F E F F D F E D F D F C F F F F E F C E D C E E D E F
## [75] E D F D C F C F D F D F E F F F F C F F F F F D F D
## Levels: F < E < D < C < B < A
10 kisiye alinacak olan basketbol formalarinin beden vektoru asagidaki gibi olusturulmustur.
## [1] S M S M S L M L S S
## Levels: L M S
beden nesnesi siralanmak istediginde bu siralama alfabetik siralama ile yapilir. Ancak bu siralama farkli sekilde yapilmak istendiginde, ordered() fonksiyonu kullanılarak faktorlerde duzey siralamasi yapilabilir.
# Duzeylerin siralamasinin kucuten buyuge yapilmasi
beden<- ordered(beden, levels=c("S","M","L"))
beden## [1] S M S M S L M L S S
## Levels: S < M < L
Faktor nesnelerinin karakter degerleri sayisal degerlere donusturulebilir.
## [1] 1 2 1 2 1 3 2 3 1 1
Sayisal veride olsa matematiksel islem yapilamaz. Sayisal degerler sadece duzeyler icindir. Duzeyleri levels() fonksiyonu ile isimlendirilebilir.
Bu sekilde daha onceden sayisal olarak kayitli olan faktor nesnelere de duzey atanabilir.
## [1] 1 2 1 2 1 3 2 3 1 1
## attr(,"levels")
## [1] "S" "M" "L"
Duzeyleri belirli bir oruntude olan faktorler olusturmak icin, gl() fonksiyonu kullanilabilir.
Fonksiyona duzey sayisi (n),
her bir duzeyin kac kere tekrar edecegi (k),
faktor uzunlugu (length),
istenirse duzeylerin etiketleri ve duzeylerin siralanma durumu (ordered) girilebilir.
cikti nasil olusturulur?
## [1] 0 0 A A B B AB AB 0 0
## Levels: 0 A B AB
cikti nasil olusturulur?
## [1] A A B B C C D D E E F1 F1 F2 F2 F3 F3 A A B B
## Levels: A < B < C < D < E < F1 < F2 < F3
Atar, B., Atalay Kabasakal, K, Ünsal Özberk, E. B., Özberk, E. H. Ve Kıbrıslıoğlu Uysal, N. (2020). R ile Veri Analizi ve Psikometri Uygulamaları, Editör, Pegem Akademi, Ankara.
Faktorlerle ilgili daha ust duzey islemler icin forcats paketi kullanılabilir. http://www.flutterbys.com.au/stats/downloads/slides/figure/factors.pdf