43

我正在阅读有关R Formula的文档,并试图弄清楚如何使用depmix(来自 depmixS4 包)

现在,在 depmixS4 的文档中,示例公式往往类似于y ~ 1. 对于像 的简单情况y ~ x,它定义了输入 x 和输出 y 之间的关系,所以我得到它类似于y = a * x + b,其中a是斜率,并且b是截距。

如果我们回到y ~ 1,公式会让我失望。它是否等同于y = 1(y = 1 处的水平线)?

添加一点上下文,如果您查看 depmixs4 文档,下面有一个示例

depmix(list(rt~1,corr~1),data=speed,nstates=2,family=list(gaussian(),multinomial()))

我认为总的来说,以结尾的公式让~ 1我感到困惑。任何人都可以解释什么~ 1y ~ 1意思吗?

4

3 回答 3

47

R 中模型公式(星号、加号、插入符号)中使用的许多运算符具有特定于模型的含义,这就是其中之一:“一”符号表示截距。

换句话说,它是当自变量为零或没有影响时,因变量预期具有的值。(要使用模型术语的更常见的数学含义,请将它们包装在 中I())。通常假设有截距,因此最常见的是在明确说明没有截距的模型的上下文中看到它。

以下是为 y 在 x 上的线性回归模型指定相同模型的两种方法。第一个具有隐式截距项,第二个具有显式截距项:

y ~ x
y ~ 1 + x

以下是通过原点在 x 上对 y 进行线性回归的方法(即,没有截距项):

y ~ 0 + x
y ~ -1 + x
y ~ x - 1

在您提到的特定情况下( y ~ 1 ),没有其他变量预测 y,因此自然预测是 y 的平均值,正如 Paul Hiemstra 所说:

> data(city)
> r <- lm(x~1, data=city)
> r

Call:
lm(formula = x ~ 1, data = city)

Coefficients:
(Intercept)  
       97.3  

> mean(city$x)
[1] 97.3

用 a 删除截距-1会让你一无所有:

> r <- lm(x ~ -1, data=city)
> r

Call:
lm(formula = x ~ -1, data = city)

No coefficients

formula()是一个从对象中提取公式的函数,它的帮助文件不是阅读 R 中指定模型公式的最佳位置。我建议你看一下这个解释An Introduction to R 的第 11 章。

于 2012-11-13T19:20:12.237 回答
20

如果您的模型采用以下形式 y ~ x1 + x2(粗略地说)表示:

 y = β0 + β1(x1) + β2(x2)

 Which is of course the same as 
 y = β0(1) + β1(x1) + β2(x2)

上式中有一个隐含+1的含义。所以真的,上面的公式是y ~ 1 + x1 + x2

我们可以有一个非常简单的公式,其中 y 不依赖于任何其他变量。这是您引用的公式, y ~ 1 大致相当于

 y = β0(1) = β0

正如@Paul 指出的那样,当您解决简单模型时,您会得到β0 = mean (y)




这是一个例子

  # Let's make a small sample data frame
  dat <- data.frame(y= (-2):3, x=3:8)

  # Create the linear model as above
  simpleModel <- lm(y ~ 1, data=dat)

  ## COMPARE THE COEFFICIENTS OF THE MODEL TO THE MEAN(y)
  simpleModel$coef
    # (Intercept) 
    #         0.5 

  mean(dat$y)
    # [1] 0.5
于 2012-11-13T19:33:39.810 回答
5

一般来说,这样的公式以线性模型的形式描述了因变量和自变量之间的关系。左边是因变量,右边是自变量。自变量用于计算线性模型的趋势分量,然后假设残差具有某种分布。当独立值等于 1~ 1时,趋势分量是单个值,例如数据的平均值,即线性模型只有一个截距。

于 2012-11-13T19:00:24.907 回答