我正在阅读有关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我感到困惑.可以在任何解释~ 1或者y ~ 1是什么意思?谢谢你!
Mat*_*agg 38
在R中的模型公式(asterix,plus,caret)中使用的许多运算符具有特定于模型的含义,这是其中之一:"一"符号表示截距.
换句话说,当自变量为零或没有影响时,它是因变量预期具有的值.(要使用模型术语的更常见的数学含义,请将它们包装在其中I()).通常假设截距,因此最常见的是在明确说明没有截距的模型的情况下看到截距.
以下是为x上的y线性回归模型指定相同模型的两种方法.第一个是隐式拦截术语,第二个是明确的术语:
y ~ x
y ~ 1 + x
Run Code Online (Sandbox Code Playgroud)
以下是通过原点(即没有截距项)对x进行线性回归的方法:
y ~ 0 + x
y ~ -1 + x
y ~ x - 1
Run Code Online (Sandbox Code Playgroud)
在你提到的特定情况下(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
Run Code Online (Sandbox Code Playgroud)
并删除拦截与-1你没有任何东西:
> r <- lm(x ~ -1, data=city)
> r
Call:
lm(formula = x ~ -1, data = city)
No coefficients
Run Code Online (Sandbox Code Playgroud)
formula()是一个从对象中提取公式的函数,其帮助文件不是阅读有关在R中指定模型公式的最佳位置.我建议您查看此解释或R简介的第11章.
Ric*_*rta 17
如果你的模型的形式是 y ~ x1 + x2这样的(粗略地说)代表:
y = ?0 + ?1(x1) + ?2(x2)
Which is of course the same as
y = ?0(1) + ?1(x1) + ?2(x2)
Run Code Online (Sandbox Code Playgroud)
+1上面的公式中有一个隐含的内容.所以真的,上面的公式是y ~ 1 + x1 + x2
我们可以有一个非常简单的公式,即y不依赖于任何其他变量.这是您引用的公式,
y ~ 1 大致相当于
y = ?0(1) = ?0
Run Code Online (Sandbox Code Playgroud)
正如@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
Run Code Online (Sandbox Code Playgroud)
通常,这样的公式以线性模型的形式描述了相关变量和自变量之间的关系.左侧是因变量,右侧是独立变量.自变量用于计算线性模型的趋势分量,然后假设残差具有某种分布.当独立值等于1时~ 1,趋势分量是单个值,例如数据的平均值,即线性模型仅具有截距.
| 归档时间: |
|
| 查看次数: |
21241 次 |
| 最近记录: |