W świetle Twojego komentarza, może to zależeć od tego, jak jesteś dopasowania modelu ...
W przypadku modelu liniowego, te odpowiedzi wszystko dać 12
:
set.seed(1)
df1 <- data.frame (y=rnorm(100),
x=rnorm(100),
months=sample(letters[1:12], replace=TRUE, size=100))
f1 <-formula(y~x+factor(months))
l1 <- lm(f1, data=df1)
ncol(l1$qr$qr)-1
lub
length(colnames(l1$qr$qr))-1
Tutaj qr
to QR decomposition of a matrix
używany do dopasowania modelu. Będzie zawierał nie. parametrów zainteresowania.
Można również dowiedzieć się, jakie zmienne czynniki od model.frame
, takie jak:
length(unique(model.frame(l1)[["factor(months)"]]))
lub bardziej ogólnie z .getXlevels
, które dadzą Ci listę unikatowych wartości dla każdego czynnika po stronie predykcyjnej, jak w:
length(stats::.getXlevels(terms(l1), model.frame(l1))[[1]])
Aktualizacja
@Mark Miller szczekał lepsze drzewo. Jeśli twój model ma dostępną metodę typu AIC
, powinieneś być w stanie go użyć, aby uzyskać nr. parametrów. Dla lm
, to ukryty sposób S3 w stats
, więc nazwać tak:
stats:::extractAIC.lm(l1)[[1]] -1
Pytanie dotyczy formuły, a nie modelu. –