【问题标题】:Condition ( | ) in R formulaR公式中的条件(|)
【发布时间】:2017-02-23 14:03:58
【问题描述】:

我找到了这个pdf on R formulas,但我无法弄清楚| 是如何工作的(参见第二页上的表格)。此外,我在网上找不到任何解释。它不时出现在可能的公式符号列表中,但没有任何示例。

我认为它可能已经过时了,因为有其他方法可以实现它所做的一切。

有人知道如何在公式中使用| 以及它究竟能达到什么目的吗?

一段代码显示了我笨拙地尝试使用|

x <- rnorm(100)
y <- rnorm(100)
z <- sample(c(TRUE, FALSE), 100, replace = TRUE )

lm(y ~ x|z)

【问题讨论】:

  • 用在什么地方?
  • | 是一个逻辑OR,它按元素计算。而且,我相信这里有足够的资源可以帮助解释这一点。
  • 许多建模包都使用它,包括lfeAER (ivreg) 和lme4
  • @Abdou 我知道逻辑 OR 在 R 中是如何工作的。但是如果在公式中使用某些符号,例如 *,则具有特殊含义。这也是我对| 的期望。
  • @Alex,我不知道有些软件包正在使用它来表示条件概率等。很高兴知道。

标签: r r-formula


【解决方案1】:

| 符号根据上下文表示不同的含义:

一般情况

一般来说,| 表示 OR。一般建模函数会将任何| 视为逻辑运算符并执行它。这相当于使用另一个运算符,例如^,如下所示:

lm(y~ x + x^2)

先进行算子,然后用这个新变量来构建模型矩阵并进行拟合。

在您的代码中,| 也表示 OR。您必须记住,当您使用任何逻辑运算符时,R 也将数值解释为逻辑值。 0 被视为 FALSE,任何其他都被视为 TRUE。

所以你对lm 的调用构造了一个在x OR z 函数中的y 模型。这没有任何意义。给定x 的值,这将只是y ~ TRUE。这也是您的模型不适合的原因。您的模型矩阵有 2 列和 1,一列用于截距,一列用于 x|z 中的唯一值,即 TRUE。因此,您甚至无法计算 x|z 的系数,如输出所示:

> lm(y ~ x|z)

Call:
lm(formula = y ~ x | z)

Coefficients:
(Intercept)    x | zTRUE  
   -0.01925           NA  

混合模型的内部公式

在混合模型中(例如lme4 包),| 用于表示随机效应。像+ 1|X 这样的术语意味着:“为 X 中的每个类别拟合随机截距”。您可以将| 翻译为“给定”。因此,您可以将术语视为“在给定 X 的情况下拟合截距”。如果您牢记这一点,在 nlmemgcv 等相关结构规范中使用 | 对您来说会更有意义。

您仍然需要小心,因为| 的确切解释方式很大程度上取决于您使用的包。因此,真正了解它在您使用的建模功能的上下文中的含义的唯一方法是查看该软件包的手册。

其他用途

还有一些其他函数和包在公式界面中使用| 符号。同样在这里,它几乎可以归结为指示某种组。一个例子是在点阵图形系统中使用|。在那里它用于分面,如以下代码所示:

library(lattice)
densityplot(~Sepal.Width|Species,
            data = iris,
            main="Density Plot by Species",
            xlab="Sepal width")

【讨论】:

  • 所以它一般不用于公式中,而只在某些包中实现。诸如lm() 之类的基本 R 函数将其评估为简单的逻辑运算符,在公式的上下文中没有特殊含义?
  • @Alex 你明白了。我添加了一些信息以使其更加明显。
  • 您可以在lme4 包的介绍小插图中找到更多信息:cran.r-project.org/web/packages/lme4/vignettes/lmer.pdf
  • Joris:您还应该根据公式(面板/条件)丰富格子图形中的可能用法 - 我仍然为您投票
  • @EricLecoutre 好点。几乎没有人再使用它了,但为了完整起见,我将 lattice 包含在内。
【解决方案2】:

它的一般使用方式是dependent ~ independent | grouping你可以在这里阅读更多http://talklab.psy.gla.ac.uk/KeepItMaximalR2.pdf

【讨论】:

    猜你喜欢
    • 2020-02-26
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 2014-12-01
    • 2016-04-17
    • 1970-01-01
    相关资源
    最近更新 更多