2013-07-11 20 views
10

Tytuł mówi wszystko, zamówiłem zmienną czynnikową, kiedy ją wygenerowałem, teraz chciałbym usunąć porządek i użyć go jako nieuporządkowanej zmiennej czynnikowej. I inne pytanie, jeśli używam mojej zmiennej czynnikowej jako predyktora w regresji, czy robi ona różnicę do R, jeśli jest uporządkowana (porządkowa) lub prosta zmienna czynnikowa (kategoryczna)?Jak usunąć kolejność poziomów ze zmiennej czynnikowej w R?

+2

tak ... Co próbujesz? na drugie pytanie, możesz przynajmniej wykonać kilka testów empirycznych .. – agstudy

Odpowiedz

14

Wszystko czego potrzebujesz to

x <- factor(x , ordered = FALSE) 

np

x <- factor(c(1,2,"a") , ordered = TRUE) 
x 
#[1] 1 2 a 
#Levels: 1 < 2 < a 

x <- factor(x , ordered = FALSE) 
x 
#[1] 1 2 a 
#Levels: 1 2 a 
2

Po utworzeniu zmiennej poprzez ordered, jest to tak proste, jak resetowanie tej klasy factor.

f <- ordered(letters) 
class(f) <- "factor" 
identical(f, factor(letters)) 

W liniowy lub dodatku modelu (w tym regresji liniowej regresji logistycznej i wszystko Fit lm, glm i gam) czynnikiem predyktora traktuje się tak samo jak uporządkowanej czynnika prognostycznego w odniesieniu do ogólnego modelu dopasowanie. Otrzymasz te same przewidywane wartości, wartości rezydualne, statystyki braku dopasowania itp., Niezależnie od tego, z którego korzystasz.

Jednakże, kontrasty są różne dla obu klas. Czynnik używa kontrastów leczniczych, tj. Zwykłego kodowania zmiennej fikcyjnej z danym poziomem traktowanym jako linia podstawowa. Rozkazany czynnik używa wielomianowych kontrastów, które są oparte na wielomianach ortogonalnych (cokolwiek to oznacza, nigdy nie miałem powodu, aby używać uporządkowanych czynników). Z tego powodu statystyki t i wartości P dla poszczególnych współczynników będą różne.

+0

Tak, ale myślę, że wynik (interakcja dla ex :), która zostanie pokazana, będzie oparta na tym, który czynnik ma wartość "0", nie jest to? Więc, w zasadzie, jeśli chcesz wywnioskować efekt czegoś w.r.t. poziom, ma sens, aby uczynić go zamówionym czynnikiem ... – Arun

+0

@Arun Nie, jeśli masz poziom odniesienia, powinieneś użyć 'relevel'. – Roland

+0

O tak, dzięki @Roland. – Arun

Powiązane problemy