R公式y~1是什么意思?

时间:2012-11-13 18:45:58

标签: r formula

我正在阅读R Formula上的文档,并尝试弄清楚如何使用depmix (from the depmixS4 package)

现在,在depmixS4的文档中,示例公式往往类似于y ~ 1。 对于像y ~ x这样的简单大小写,它定义了输入x和输出y之间的关系,因此我认为它类似于y = a * x + b,其中a是斜率,{{1是截距。

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

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

y = 1

我认为一般来说,以depmix(list(rt~1,corr~1),data=speed,nstates=2,family=list(gaussian(),multinomial()))结尾的公式让我感到困惑。可以解释~ 1~ 1的含义吗?非常感谢!

3 个答案:

答案 0 :(得分:37)

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

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

以下是为x上的y线性回归模型指定相同模型的两种方法。第一个是隐式拦截术语,第二个是明确的术语:

y ~ x
y ~ 1 + x

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

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

-1移除拦截会让你一无所获:

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

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

No coefficients

formula()是一个用于从对象中提取公式的函数,其帮助文件不是阅读有关在R中指定模型公式的最佳位置。我建议您查看this explanation或第11章An Introduction to R

答案 1 :(得分:17)

如果您的模型的格式为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

答案 2 :(得分:5)

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