Trong ánh sáng của bình luận của bạn, điều này có thể phụ thuộc vào cách bạn đang lắp mô hình ...
Trong trường hợp của một mô hình tuyến tính, những câu trả lời tất cả cho 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
hoặc
length(colnames(l1$qr$qr))-1
Ở đây qr
là QR decomposition of a matrix
được sử dụng để lắp mô hình. Nó sẽ chứa không. các thông số quan tâm.
Bạn cũng có thể tìm thấy trong đó các biến là những yếu tố từ model.frame
, chẳng hạn như:
length(unique(model.frame(l1)[["factor(months)"]]))
Hoặc tổng quát hơn với .getXlevels
, mà sẽ cung cấp cho bạn một danh sách các giá trị duy nhất cho mỗi yếu tố ở phía bên dự đoán, như trong:
length(stats::.getXlevels(terms(l1), model.frame(l1))[[1]])
cập nhật
@ Mark Miller đã sủa lên một cái cây tốt hơn. Nếu mô hình của bạn có sẵn phương thức kiểu AIC
, bạn sẽ có thể sử dụng phương thức này để nhận số không. các thông số. Đối với một lm
, đó là một phương pháp S3 ẩn trong stats
, vì vậy gọi nó là như thế này:
stats:::extractAIC.lm(l1)[[1]] -1
Câu hỏi hỏi về một công thức, không phải là một mô hình. –