W R obiekt formuły ma charakter symboliczny i wydaje się dość trudny do analizy. Jednak trzeba analizować taką formułę do wyraźnego zestaw etykiet do stosowania na zewnątrz R.Użycie R do interpretacji symbolicznej formuły do użytku zewnętrznego
(1)
Pozwalając f
stanowią model formulae, w którym reakcji nie jest określona, np ~V1 + V2 + V3
, jedno próbowałem było:
t <- terms(f)
attr(t, "term.labels")
Jednak to nie jest dokładnie to, czego wyraźny jeśli niektóre zmienne w f
są kategoryczne. Na przykład, niech V1
będzie zmienną kategoryczną z 2 kategoriami, tj. Boolean, i niech V2
będzie podwójną.
Dlatego model określony przez ~V1:V2
powinien mieć 2 parametry: "przecięcie" i "xyes: z". Tymczasem model określony przez ~V1:V2 - 1
powinien mieć parametry "xno: z" i "xyes: z". Jednak bez możliwości określenia funkcji, które zmienne są kategoryczne (i ile kategorii) nie ma możliwości ich interpretacji. Zamiast tego ma po prostu V1:V2
w swoich "terms.labels", co nie oznacza nic w kontekście, że V1
jest kategoryczny.
(2)
Z drugiej strony, przy użyciu model.matrix
to łatwy sposób, aby uzyskać dokładnie to, co chcę. Problem polega na tym, że wymaga on argumentu, który jest dla mnie zły, ponieważ chcę tylko wyraźnej interpretacji symbolicznej formuły do użycia poza R. Ta metoda uzyskiwania tego będzie marnować dużo czasu (względnie), ponieważ R musi czytać dane z zewnętrznego źródła, gdy wszystko, co naprawdę musi wiedzieć, to: które zmienne są kategoryczne (i ile kategorii) oraz które zmienne są podwajane.
Czy istnieje sposób użycia parametru "model.matrix" wyłącznie z określeniem typów danych, a nie rzeczywistymi danymi? Jeśli nie, to co jeszcze jest realnym rozwiązaniem?
Dzięki za szybką odpowiedź. Mam prawdziwy zestaw danych, ale jest duży i poza R, więc czytanie go zmniejsza wydajność. To, co masz w pierwszej części, wygląda świetnie, ale jedną rzeczą, której nie rozumiem, jest to, że 'model.matrix (f, data = V1Factor)' tworzy 3 odpowiednie parametry, kiedy nie powinno mieć 'V1no: V2' jak tam jest punktem przecięcia. –
R jest niechętne do usuwania parametrów niższego rzędu, gdy są obecne interakcje, być może dlatego: http://stackoverflow.com/q/11335923/289572 – Henrik
@JonClaus Myślę, że powinien on mieć trzy parametry: punkt przecięcia, nachylenie "V2", gdy "V1" to nie, a nachylenie "V2", gdy "V1" jest tak (sposób tutaj parametryzowany). Można również uzyskać 3 parametry z punktem przecięcia, nachylenie 'V2', gdy' V1' jest nie, oraz zmiana nachylenia 'V2', gdy' V1' zmieni się z nie na tak. Jednak podczas parametryzacji istnieją 3 parametry. –