Expandierende Faktorwechselwirkungen innerhalb einer Formel
Ich habe viele Formeln (von Klasseformula
oderFormula
) des Formularsy ~ a*b
, wohera
undb
sind Faktoren.
Ich muss eine Funktion schreiben, die eine solche Formel annimmt und eine Formel mit allen Begriffen in der Interaktion "buchstabiert" zurückgibt. Hier ist ein Beispiel:
fac1 <- factor(c('a', 'a', 'b', 'b'))
fac2 <- factor(c('c', 'd', 'c', 'd'))
BigFormula(formula(x ~ fac1*fac2))
woherBigFormula
kehrt zurückformula(x ~ a + b + c + d + a:c + a:d + b:c + b:d)
.
Gibt es eine einfache Möglichkeit, dies zu tun?
(Der Kontext: Ich führe viele Befehle des Formulars ausanova(mod1, mod2)
, wohermod2
Nester inmod1
, und wo die rechte Seite beider Modelle Begriffe wie enthältfac1*fac2
. Der Sinn dieser Befehle ist die Berechnung von F-Statistiken. Das Problem ist, dassanova
Leckereienfac1*fac2
als drei Variablen, obwohl es normalerweise mehr als drei Variablen darstellt. (Im obigen Code zum Beispielfac1*fac2
stellt acht Variablen dar.) Als Ergebnisanova
unterschätzt die Anzahl der Einschränkungen im verschachtelten Modell und überschätzt meine Freiheitsgrade.)