如何从公式中删除截距
How to remove intercept from formula
我有一个公式,我想用它来创建模型矩阵,但为了我的使用,我需要阻止用户添加截距,因为这将在稍后的回归阶段得到处理。我怎样才能从公式中删除截距,还有比更新更好的选择吗?
您可以通过几种方式做到这一点。下面指定的第一个选项可能是解决此问题的最佳方法。
# 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)
我有一个公式,我想用它来创建模型矩阵,但为了我的使用,我需要阻止用户添加截距,因为这将在稍后的回归阶段得到处理。我怎样才能从公式中删除截距,还有比更新更好的选择吗?
您可以通过几种方式做到这一点。下面指定的第一个选项可能是解决此问题的最佳方法。
# 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)