R语言公式基础

示例

R中的统计函数大量使用了所谓的Wilkinson-Rogers公式符号1

运行lm线性回归等模型函数时,它们需要一个formula。这formula指定了应该估计哪些回归系数。

my_formula1 <- formula(mpg ~ wt)

class(my_formula1) 

# gives "formula"

mod1 <- lm(my_formula1, data = mtcars)

coef(mod1)

# gives (Intercept)          wt 

#         37.285126   -5.344472

在~(LHS)的左侧指定了因变量,而在右侧(RHS)则指定了自变量。从技术上讲,formula上面的调用是多余的,因为tilde-operator是一个infix函数,它返回具有公式类的对象:

form <- mpg ~ wt

class(form)

#[1] "formula"

与之相比,该formula函数的优势~在于它还允许指定评估环境:

form_mt <- formula(mpg ~ wt, env = mtcars)

在这种情况下,输出显示wt估计了的回归系数以及(默认情况下)拦截参数。截距可以排除/强制为0通过包括0或-1在formula:

coef(lm(mpg ~ 0 + wt, data = mtcars))

coef(lm(mpg ~ wt -1, data = mtcars))

变量之间的相互作用a,并b加入由包括CANa:b到formula:

 coef(lm(mpg ~ wt:vs, data = mtcars))

由于通常建议(从统计学的角度来看)在模型中不具有交互作用而没有主要影响,因此,幼稚的方法是将扩展formula为a + b + a:b。这是可行的a*b,但是可以通过编写来简化,其中*运算符指示因子交叉(当在两个因子列之间时)或当一个或两个列均为“数字”时相乘:

coef(lm(mpg ~ wt*vs, data = mtcars))

使用*表示法可将术语扩展为包括所有低阶效果,例如:

coef(lm(mpg ~ wt*vs*hp, data = mtcars))

除截距外,还将给出7个回归系数。一个用于三向交互,三个用于两向交互,三个用于主要效果。

例如,如果要排除三向交互但保留所有两向交互,则有两个速记。首先,使用-我们可以减去任何特定项:

coef(lm(mpg ~ wt*vs*hp - wt:vs:hp, data = mtcars))

或者,我们可以使用^表示法指定我们要求的交互级别:

coef(lm(mpg ~ (wt + vs + hp) ^ 2, data = mtcars))

这两个公式规范应创建相同的模型矩阵。

最后,.是将所有可用变量用作主要效果的简写。在这种情况下,该data参数用于获取可用变量(不在LHS上)。因此:

coef(lm(mpg ~ ., data = mtcars))

给出截距的系数和10个独立变量。这种表示法经常用在机器学习包中,其中人们希望使用所有变量进行预测或分类。注意,的含义.取决于上下文(例如?update.formula,参见其他含义)。

  1. GN Wilkinson和CE Rogers。皇家统计学会杂志。系列C(应用统计信息)第一卷 22,No.3(1973),第392-399页

以上是 R语言公式基础 的全部内容, 来源链接: utcz.com/z/321298.html

回到顶部