2016-03-16 3 views
1

У меня есть формула, которую я хотел бы использовать для создания матрицы модели, но для моего использования мне нужно, чтобы пользователь не добавлял перехват, поскольку об этом позаботятся на более позднем этапе в регрессии. Как я могу удалить перехват из формулы и есть ли лучший вариант, чем обновление?Как удалить перехват из формулы

+2

Почему вам не нравится 'update (formula, ~. + 0)'? – rawr

ответ

2

Вы можете сделать это несколькими способами. Первый вариант, указанный ниже, вероятно, является лучшим способом для этого.

# Create dataset and form for example 
dta <- data.frame(y = rnorm(3), x = rnorm(3), z = rnorm(3)) 
form <- y ~ x + z 

# No censoring 
(X <- model.matrix(form, dta)) 

# Option 1 (my default option) 
tf <- terms(form) 
attr(tf, "intercept") <- 0 
model.matrix(tf, dta) 

# Option 2 
X[, !colnames(X) %in% "(Intercept)"] 

# Option 3 
form2 <- update(form, . ~ . - 1) 
model.matrix(form2, dta) 
Смежные вопросы