【问题标题】:How to remove intercept in R如何在R中删除拦截
【发布时间】:2013-01-08 14:17:31
【问题描述】:

我需要创建一个没有截距的概率模型。那么,如何从 R 中的概率模型中删除截距?

【问题讨论】:

  • 只需在您的公式中添加一个-1,如:glm(y ~ x1 + x2 - 1, family = binomial(link = "probit"), data = yourdata) 这将估计一个没有截距的概率模型。

标签: r intercept


【解决方案1】:

您没有说如何您打算拟合概率模型,但如果它使用 R 的公式符号来描述模型,那么您可以提供 + 0 或 - 1 作为一部分抑制截距的公式:

mod <- foo(y ~ 0 + x1 + x2, data = bar)

或

mod <- foo(y ~ x1 + x2 - 1, data = bar)

(当然都使用伪 R 代码 - 替换您的建模函数和数据/变量。)

如果这是glm() 拟合的模型,则类似于:

mod <- glm(y ~ x1 + x2 - 1, data = bar, family = binomial(link = "probit"))

应该这样做(再次酌情替换您的数据和变量名称。)

【讨论】:

  • 使用 + 0 或 -1 有区别吗?
  • @NiekdeKlein 不,我知道没有区别
【解决方案2】:

另外,如果您有一个现有的公式对象 foo,您可以使用 update 删除截距,如下所示:

foo <- y ~ x1 + x2
bar <- update(foo, ~ . -1)
# bar == y ~ x1 + x2 - 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 2012-05-30
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 2020-09-08
    相关资源
    最近更新 更多