R语言建模入门:如何理解formula中y~.和y~x:z的含义?

2020-07-10 15:46:02 浏览数 (1)

背景:2019年的某月末日,三路人开局,兴趣所致组建了“花儿少年”:一个有组织、有纪律的R语言入门交流学习组织。自此,开启了一段小白&大师的成长史。

01

如何理解formula中y~.和y~x:z的含义?

y~. 和 y~x:z 是一个简单的formula。~和 : 是formula中的运算符,但它们与通常理解的数学运算符存在一定的差距。

公式formula中“~”符号将模型的响应变量(在~左侧)和解释变量(在~右侧)联系起来。常见于线性/一般线性模型(如lm(),glm()),树方法(如rpart())和图形表示(如coplot())以及其它一些场合(如table())。

以下是formula中其他一些运算符的含义:

  • ~ :~连接公式两侧,~的左侧是因变量,右侧是自变量。
  • :模型中不同的项用 分隔。注意R语言中默认表达式带常数项,因此估计

只需要写y~x。

  • - :-表示从模型中移除某一项,y~x-1表示从模型中移除常数项,估计的是一个不带截距项的过原点的回归方程。此外,y~x 0或y~0 x也可以表示不带截距项的回归方程。
  • ::冒号在formula中表示交互项
  • * :*不表示乘法,

是等价的,

等价

  • ^ :

^2与

等价,所以

^2在formula中并不是

的平方的意思

如果想要在表达式中加入数学运算符,应该怎么办呢?对某一变量取对数,可以直接写log(y)~log(x),这一表达式的含义就是估计

;自然指数同样也可以直接表示为exp();但如果想要表示加减乘除和平方之类,需要用到I()这个运算符。(←是大写的i不是小写的L)

y~x I(z^2)的含义:

y~x z^2的含义:

(因为z没法和自己交互)

那么,y~x w z和y~x I(w z)有什么区别呢?

y~x w z的含义:

y~x I(w z)的含义:

可以发现,第二个公式将w z作为一个整体估计这一变量的参数。

如果要估计动态面板模型,在plm包中,滞后变量(lagged variable)用运算符lag()表示,如lag(x,1)表示x滞后一期的滞后变量,lag(log(z),2)表示log(z)滞后两期的滞后变量;差分项则使用运算符diff()表示。

02

参考来源

  • 《R语言实战》
  • https://stat.ethz.ch/R-manual/R-devel/library/stats/html/formula.html

0 人点赞