10

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

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

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

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

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

lm(y ~ x|z)
4

2 回答 2

16

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

一般情况

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

lm(y~ x + x^2)

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

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

因此,您的调用lm构建了 y 的函数中的模型x OR z。这没有任何意义。给定 的值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 的情况下拟合截距”。如果您牢记这一点,那么在or中使用|相关结构的规范对您来说更有意义。nlmemgcv

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

其他用途

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

library(lattice)
densityplot(~Sepal.Width|Species,
            data = iris,
            main="Density Plot by Species",
            xlab="Sepal width")
于 2017-02-23T14:12:46.960 回答
2

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

于 2017-02-23T14:11:24.760 回答