背景: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