rozszerzanie interakcji czynników w formule
Mam wiele formuł (klasyformula
lubFormula
) formularzay ~ a*b
, gdziea
ib
są czynniki.
Muszę napisać funkcję, która przyjmuje taką formułę i zwraca formułę ze wszystkimi wyrażeniami w interakcji „wyrażonymi”. Oto przykład:
fac1 <- factor(c('a', 'a', 'b', 'b'))
fac2 <- factor(c('c', 'd', 'c', 'd'))
BigFormula(formula(x ~ fac1*fac2))
gdzieBigFormula
zwracaformula(x ~ a + b + c + d + a:c + a:d + b:c + b:d)
.
Czy można to zrobić w prosty sposób?
(Kontekst: Używam wielu poleceń formularzaanova(mod1, mod2)
, gdziemod2
gniazdujemod1
, i gdzie prawa strona obu modeli zawiera terminy takie jakfac1*fac2
. Celem tych poleceń jest obliczenie statystyki F. Problemem jestanova
Przysmakifac1*fac2
jako trzy zmienne, chociaż zwykle reprezentuje więcej niż trzy zmienne. (W powyższym kodzie, na przykład,fac1*fac2
reprezentuje osiem zmiennych.) W rezultacieanova
nie docenia liczby ograniczeń w modelu zagnieżdżonym i przecenia moje stopnie swobody.)