在R中,lm(y~.)中的点的含义是什么?

7

我正在尝试理解别人写的R代码中的这个语句的含义。

mymodel = lm(gene ~ ., data = mydata) 

mydata 的内容如下:

> mydata
                 gene    cna rs11433683      PC1    PC2
TCGA.BH.A0C0 270.7446 0.1291          0 270.7446 0.1291
TCGA.A2.A3XY  87.9092 0.0128          1  87.9092 0.0128
TCGA.XX.A89A 255.1346 0.1530          1 255.1346 0.1530

我已经查阅了R帮助文档,以找出如何解释.。我明白.通常不使用,但这是我找到的。

help(formula)

在公式中有两种特殊解释 .。通常情况下,它用于模型拟合函数的data参数上,意思是“所有不在公式中的列”:参见terms.formula。 在update.formula的上下文中,仅仅表示“先前在公式这部分中出现的内容”。

help(terms.formula)

允许点作为名称(AllowDotAsName):通常情况下,公式中的“.”表示包含在数据中的剩余变量。特殊情况下,“.”可以被视为公式非标准用途的名称。
数据(data):可以推断出特殊符号“.”的含义的数据框。如果公式中没有“.”,则未使用该数据框。
然而,我不太确定这些陈述的含义。有人能否给我一个简单的例子,说明上述语句在我提到的语境和数据中的含义?

1
https://stats.stackexchange.com/questions/10712/what-is-the-meaning-of-the-dot-in-r - Severin Pappadeux
1
这意味着在模型中将所有其他变量(cna、rs...、pc1和pc2)用作自变量。 - ayhan
3
这句话的意思是:它就是字面意思,即“所有列”(来自提供给“data”参数的数据),除了公式中已经使用的。在这种情况下,因为给出了“gene”,所以其余部分被视为解释变量,因此“gene〜。”等同于“gene〜cna + rs11433683 + PC1 + PC2”。虽然解释只能到这里,但可以试一试并查看生成模型的差异。 - alistaire
2
要明确的是,这里的“.”是指在公式中的含义。一些软件包在管道或作为函数时使用它表示其他含义。 - alistaire
谢谢大家,现在我明白了很多。如果像你们刚才提到的那样有一个例子包含在help()部分中,我就不会花费那么多时间摸索和搜索帮助文件了。是否有一种方法可以建议在R文档中进行这种更改? - alpha_989
2个回答

7

在模型拟合函数的数据参数上下文中,它表示“除公式中未包含的所有列”。

就是字面上的意思!

因此,使用

 mymodel = lm(gene ~ ., data = mydata) 

在公式的右侧,您可以获得mydata中除gene以外的每个变量:

   cna + rs11433683 + PC1 + PC2

据我所见,引用的短语清晰明了(...但你也可以通过尝试一些小例子来看出来)。
唯一不明显的是,如果您没有提供数据参数,它会执行什么操作(但这在您引用的terms.formula的帮助文件中已经有了答案)。

我同意事后看来,引用的文本似乎很清晰,一旦我看到了例子。然而,“通常情况下是在模型拟合函数的数据参数的上下文中使用,意思是‘除公式中未包含的所有列’:请参见terms.formula”,并不一定会让读者理解y〜等价于y〜a+b+c...,其中a、b、c是其他数据列,特别是对于那些新手来说。帮助部分写成了密集的文本,并假设读者已经对R有高度的熟悉度。 - alpha_989

0

这意味着你正在将基因与所有变量进行比较


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接