2012-06-12 15 views
11

Używam regresji logistycznej z kategorialną zmienną predykcyjną z poziomami 0-6. Domyślnie R uznaje poziom 0 jako grupę odniesienia.Zmiana grupy odniesienia dla zmiennej predyktorów jakościowych w regresji logicznej

Jak mogę określić, aby R używał na przykład poziomu 3 zamiast poziomu 0 jako odniesienia bez zmiany nazw poziomów?

+0

Czy istnieje rozwiązanie, które będzie pracować z etykietami? Na przykład, jeśli poziomy to "" a "," b ", ...," g "', 'R' używa uporządkowania alfabetycznego. Jak używać '" d "' jako odniesienia? Próbowałem 'C (F, contr.treatment, base =" a ")', ale to nie działa. –

+0

'C (F, contr.treatment, base = which (poziomy (F) ==" d "))) działa, ale nie jest elegancki. –

+0

@MathieuDubois, moim leniwym rozwiązaniem jest oszukiwanie alfabetyzacji poprzez nadanie nazwom kategorii jak "aCategory1" "bCategory2", itp. –

Odpowiedz

8

użyć funkcji C do określ swoje kontrasty w ramce danych.

Jeśli dataframe jest DF i zmienna czynnikiem jest fct, następnie

DF$fct <- C(DF$fct, contr.treatment, base=3) 

(niesprawdzone).

+0

Pracowałem świetnie, dzięki! –

5

Jest to bardzo łatwe dzięki pakietom Franka Harrella (który pozwala na wiele dodatkowych funkcji).
Na przykład dla dataframe nazwie „df”

library(Hmisc) 
library(rms) 
dd=datadist(df) 
options(datadist='dd') 
(m=lrm(y ~ catvar, data=df)) #uses the mode as the reference group 
summary(m, catvar=3) #using level=3 as the reference group 
summary(m, catvar=0) #using level=0 as the reference group 

(A, niektóre dane przykładowe byłby miły - zawsze można użyć dput do wyjścia niewielki zbiór danych)

+0

Ciekawe elastyczne rozwiązanie, dziękuję. Będzie musiał przeczytać, co reprezentuje datadysta. –

4

Zaproponowano już funkcję C, zobacz również contrasts, relevel i reorder, między innymi.

+0

Również bardzo pomocne. Dziękuję Ci. –

2

Można użyć relevel funkcję: dataframe $ x1 < - relevel (datafrmae $ x1 "wpisz tutaj kategoria referencyjna")

Powiązane problemy