15 Kreiranje faktora

Faktori predstavljaju kvalitativne varijable (opisne i stupnjevite, mjerene na nominalnoj i ordinalnoj ljestvici), a sastoje se od određenog broja razina (engl. level; poprimaju konačan broj unaprijed definiranih vrijednosti). Razine ili leveli mogu se uraditi na način da postoji poredak. U nekim izvorima naići ćete da se faktor tretira kao tip podataka, ali je pravilnije o njima razmišljati kao o vrsti varijabli. Kreiraju se pomoću funkcije factor(). Elemente je moguće kombinirati putem c(), a moguće je i vektore pretvoriti u faktore.

Faktor1<-factor(c("Plava", "Crvena", "Zelena", "Crna"))
Faktor1
## [1] Plava  Crvena Zelena Crna  
## Levels: Crna Crvena Plava Zelena
Faktor2<-factor(d)
Faktor2
## [1] Iva   Ana   Maja  Marko Ivan 
## Levels: Ana Iva Ivan Maja Marko

U navedena dva primjera radi se o nominalnim varijablama, kod kojih poredak nije moguće utvrditi. Za stupnjevite varijable, kao što je, na primjer, završena razina obrazovanja, moguće je utvrditi poredak, a isti može biti relevantan pri daljnjim analizama. U takvom slučaju, faktor se može zadati na sljedeći način:

r<-c("Osnovna škola","Srednja škola","Fakultet")
Faktor3<-factor(r, levels = r, ordered = TRUE)
Faktor3
## [1] Osnovna škola Srednja škola Fakultet     
## Levels: Osnovna škola < Srednja škola < Fakultet

Ako se pri zadavanju vektora doda ordered=TRUE bez specifikacije razina, tada će elementi biti poredani po abecedi ili po veličini.

Faktor4<-factor(a, ordered = TRUE)
Faktor4
## [1] 1 2 3 4 5
## Levels: 1 < 2 < 3 < 4 < 5

Ako se faktor želi prebaciti natrag u numerički tip varijable, to je moguće učiniti:

num<-as.numeric(Faktor4)
num
## [1] 1 2 3 4 5

Isto bi funkcioniralo i da je upotrijebljena funkcija as.double(), odnosno za cjelobrojne vrijednosti as.integer, ili as.character() za znakovne elemente. Provjera:

typeof(num)
## [1] "double"

Još nekoliko primjera.

chr<-as.character(Faktor3)
chr
## [1] "Osnovna škola" "Srednja škola" "Fakultet"
#obratite pozornost na ovaj primjer
Faktor6<-factor(h)
Faktor6
## [1] 1  5  10 1  5  10
## Levels: 1 5 10
num2<-as.numeric(Faktor6)
num2
## [1] 1 2 3 1 2 3

U ovom primjeru može se uočiti da je pretvorbom u numeričku varijablu zapravo sačuvan niz rednih mjesta razina Faktora 6. To znači da je potrebno napraviti dodatnu promjenu, prvo u znakovni tip, a onda u numerički tip varijable.

num2<-as.numeric(as.character(Faktor6))
num2
## [1]  1  5 10  1  5 10

Iz ovog primjera može se uočiti da je izuzetno važno provjeriti rezultat nakon svake izvršene promjene, osobito u početku dok još niste u potpunosti sigurni čemu služi koja funkcija.

Moguće je i pojedinu varijablu podatkovnog okvira pretvoriti u faktor.

Drzave<-as.factor(Turisti2$Drzava)
Drzave
## [1] Croatia       France        China         Italy         Austria      
## [6] Ireland       United States
## Levels: Austria China Croatia France Ireland Italy United States

Dodavanje razina postojećem faktoru:

levels(Faktor3)<-c(levels(Faktor3), "Doktorat")
Faktor3
## [1] Osnovna škola Srednja škola Fakultet     
## Levels: Osnovna škola < Srednja škola < Fakultet < Doktorat

Faktori su izuzetno korisni za analizu odgovora anketnih podataka, gdje su odgovori zapisane kao kategoričke ili ordinalne varijable. Osim toga, mnogi statistički modeli u R-u zahtijevaju faktore za kategorizirane prediktorne varijable kako bi ispravno interpretirali kategorije. Pri vizualizaciji podataka, faktori omogućuju kontrolu nad redosljedom prikaza kategorija, što može biti ključno za jasnoću grafikona.

Najčešće greške

  • Neadekvatno upravljanje razinama: Jedna od najčešćih grešaka nastaje pri dodavanju novih elemenata u faktor, pri čemu ti elementi nisu prepoznati kao postojeće razine. R će automatski dodijeliti NA novim elementima koji nisu definirani kao razine faktora.

  • Pretvorba u numeričke vrijednosti: Direktna pretvorba faktora u numeričke vrijednosti (as.numeric(faktor)) može rezultirati vrijednostima koje predstavljaju oznake razina, a ne pridružene stvarne numeričke vrijednosti. Ispravan način je prvo pretvoriti faktor u znakovni niz, a zatim u numeričke vrijednosti.

  • Zanemarivanje poretka za uređene faktore: Pri radu s uređenim faktorima, važno je pravilno postaviti i koristiti poredak, jer to utječe na analizu i vizualizaciju podataka.