R语言的模型表达式含义解析
专注系列化、高质量的R语言教程
推文索引 | 联系小编 | 付费合集
本篇介绍各式各样的模型表达式的含义,主要参考资料是《An Introduction to R》(链接:https://cran.r-project.org/doc/manuals/r-devel/R-intro.pdf)第11.1节的内容。
本篇目录如下:
1 示例数据
2 常用操作符和函数
3 基本形式
4 转换形式
5 多项式
6 交互式
6.1 两个变量的交互
6.2 三个变量的交互
1 示例数据
示例数据mtcars
是R语言自带的数据集,可以直接使用。使用下列代码可以将其加载至全局环境中:
data("mtcars")
数学模型中的变量主要分为两种类型:连续变量和分类变量,或分别称数值变量和因子变量。
在mtcars
中,所有变量均以数值变量的形式存在,但使用factor()
函数可以将其转换为因子变量。
在本篇推文的例子中,始终以mpg
变量为因变量。对于自变量:
若为连续变量,使用的变量有
wt
、qsec
、drat
;若为分类变量,使用的变量有
factor(vs)
、factor(am)
、factor(cyl)
,其中前两者为二分类变量,后者为三分类变量。
2 常用操作符和函数
在书写模型表达式中常常会使用一些操作符和函数,这里列举几个。
~
符号~
是模型表达式的标志,用于分割因变量和自变量,其前面为因变量,后面为自变量。
+
和-
符号+
和-
用于连接两个变量。符号+
表示模型中包括其后面的项(变量),符号-
表示模型中不包括其后面的项(变量)。
*
符号*
用于设置交互项,其本义为乘号。由于模型表达式使用常数1
表示截距项,并常常将其省略,因此模型表达式中的x1*x2
实际相当于数学表达式的展开式(此处仅适用x1
、x2
均是连续型变量的情况)。
:
以x1:x2
为例,它表示交互项。
I()
函数
I()
函数的作用是让表达式回归“本义”。如I(x1*x2)
表示项,而非。
下面分门别类地介绍各种模型表达式的含义。
3 基本形式
y ~ x1 + x2
这是最普通的模型形式。y
表示因变量,x1
、x2
表示自变量;模型包含截距项。
lm(mpg ~ wt, data = mtcars)
## lm(formula = mpg ~ wt, data = mtcars)
##
## Coefficients:
## (Intercept) wt
## 37.285 -5.344
y ~ x + 1
含义同y ~ x
,1
表示截距项,省略不改变模型表达式含义。
lm(mpg ~ wt + 1, data = mtcars)
## lm(formula = mpg ~ wt + 1, data = mtcars)
##
## Coefficients:
## (Intercept) wt
## 37.285 -5.344
y ~ x - 1
或y ~ -1 + x
相当于在y ~ x
的基础上- 1
,表示模型不包含截距项;或理解成截距为0。
lm(mpg ~ wt - 1, data = mtcars)
## lm(formula = mpg ~ wt - 1, data = mtcars)
##
## Coefficients:
## wt
## 5.292
y ~ x + 0
相当于在y ~ x + 1
的基础上- 1
,表示模型不包含截距项,含义同y ~ x - 1
和y ~ -1 + x
,+ 0
不能省略。
lm(mpg ~ wt + 0, data = mtcars)
## lm(formula = mpg ~ wt + 0, data = mtcars)
##
## Coefficients:
## wt
## 5.292
4 转换形式
转换形式即在模型表达式中使用各种函数对变量进行转换,转换后的结果整体表示一个变量。
log(y) ~ x
log(y)
为因变量,x
为自变量。
lm(log(mpg) ~ wt, data = mtcars)
## lm(formula = log(mpg) ~ wt, data = mtcars)
##
## Coefficients:
## (Intercept) wt
## 3.8319 -0.2718
这种模型表达式对应的数学表达式类似泊松回归,但是存在本质的区别。具体可见推文广义线性模型的基本结构及与线性模型的比较第3节例2。
y ~ log(x)
y
为因变量,log(x)
为自变量。
lm(mpg ~ log(wt), data = mtcars)
## lm(formula = mpg ~ log(wt), data = mtcars)
##
## Coefficients:
## (Intercept) log(wt)
## 39.26 -17.09
y ~ factor(x)
这种情况常见于x
变量是具有分类性质的连续变量的情况,用于将该变量转换为因子变量(若x
已经为因子变量则不需要转换)。
模型对连续变量和分类变量的处理方式是截然不同的。作为分类变量,它的每一个类别(组、水平)都是模型表达式中的一项,其中参考组为截距项,不出现模型输出结果中。
lm(mpg ~ cyl, data = mtcars)
## lm(formula = mpg ~ cyl, data = mtcars)
##
## Coefficients:
## (Intercept) cyl
## 37.885 -2.876lm(mpg ~ factor(cyl), data = mtcars)
## lm(formula = mpg ~ factor(cyl), data = mtcars)
##
## Coefficients:
## (Intercept) factor(cyl)6 factor(cyl)8
## 26.664 -6.921 -11.564
5 多项式
在数学中,形如称为x
的多项式,最高次数称为多项式的次数。
y ~ x^2
和y ~ x^n
这种写法不能实现x
的多项式。不管n
取多少,它的含义均与y ~ x
相同。由于x^2 = x*x
,R程序将其视为x
与自身的交互,最终还是x
自身。
lm(mpg ~ wt^2, data = mtcars)
## lm(formula = mpg ~ wt^2, data = mtcars)
##
## Coefficients:
## (Intercept) wt
## 37.285 -5.344lm(mpg ~ wt^10, data = mtcars)
## lm(formula = mpg ~ wt^10, data = mtcars)
##
## Coefficients:
## (Intercept) wt
## 37.285 -5.344
y ~ I(x^2)
对应的数学表达式为。
lm(mpg ~ I(wt^2), data = mtcars)
## lm(formula = mpg ~ I(wt^2), data = mtcars)
##
## Coefficients:
## (Intercept) I(wt^2)
## 28.0511 -0.7058
y ~ x + I(x^2)
在y ~ I(x^2)
的基础上加上x
的一次项,表示。
lm(mpg ~ wt + I(wt^2), data = mtcars)
## lm(formula = mpg ~ wt + I(wt^2), data = mtcars)
##
## Coefficients:
## (Intercept) wt I(wt^2)
## 49.931 -13.380 1.171
y ~ poly(x, 2, raw = T)
poly()
函数可用于表示变量的多项式。y ~ poly(x, 2, raw = T)
对应的数学表达式为,同y ~ x + I(x^2)
。
lm(mpg ~ poly(wt, 2, raw = T), data = mtcars)
## lm(formula = mpg ~ poly(wt, 2, raw = T), data = mtcars)
##
## Coefficients:
## (Intercept) poly(wt, 2, raw = T)1 poly(wt, 2, raw = T)2
## 49.931 -13.380 1.171
y ~ poly(x, n, raw = T)
表示自变量为x
的n次多项式。
lm(mpg ~ poly(wt, 5, raw = T), data = mtcars)
## lm(formula = mpg ~ poly(wt, 5, raw = T), data = mtcars)
##
## Coefficients:
## (Intercept) poly(wt, 5, raw = T)1 poly(wt, 5, raw = T)2
## -87.7182 218.8897 -147.7784
## poly(wt, 5, raw = T)3 poly(wt, 5, raw = T)4 poly(wt, 5, raw = T)5
## 45.6093 -6.7014 0.3797
6 交互式
6.1 两个变量的交互
y ~ x1*x2
如果x1
、x2
均为连续变量,那么如前所述,它对应的数学表达式为。
lm(mpg ~ wt*qsec, data = mtcars)
## lm(formula = mpg ~ wt * qsec, data = mtcars)
##
## Coefficients:
## (Intercept) wt qsec wt:qsec
## -13.1149 5.4988 2.7568 -0.5897
输出结果中,
wt
、qsec
分别表示自身的一次项,wt:qsec
表示二者的交互项,也就是。
如果x1
、x2
均为分类变量,则x1*x2
表示二者交叉分类的结果。
lm(mpg ~ factor(am)*factor(cyl), data = mtcars)
## Call:
## lm(formula = mpg ~ factor(am) * factor(cyl), data = mtcars)
##
## Coefficients:
## (Intercept) factor(am)1 factor(cyl)6
## 22.900 5.175 -3.775
## factor(cyl)8 factor(am)1:factor(cyl)6 factor(am)1:factor(cyl)8
## -7.850 -3.733 -4.825
输出结果中截距项
(Intercept)
表示两个变量参考组的交互项,不含:
符号的三项表示一个变量的参考组与另一个变量的非参考组的交互项,含有:
符号的两项表示两个变量的非参考组的交互项。
如果x1
、x2
其中一个为连续变量,另一个为分类变量,则x1*x2
表示按分类变量对连续变量进行分组。
lm(mpg ~ factor(cyl)*wt, data = mtcars)
## lm(formula = mpg ~ factor(cyl) * wt, data = mtcars)
##
## Coefficients:
## (Intercept) factor(cyl)6 factor(cyl)8 wt
## 39.571 -11.162 -15.703 -5.647
## factor(cyl)6:wt factor(cyl)8:wt
## 2.867 3.455
输出结果中,
(Intercept)
和wt
分别表示连续变量在分类变量参考组下的截距和斜率;在包含分类变量的项中,不含:
符号的两项表示连续变量在分类变量非参考组下的额外截距,含有:
符号的两项表示连续变量在分类变量非参考组下的额外斜率。
y ~ I(x1*x2)
此种情况模型中仅包含交互项,不含一次项。
lm(mpg ~ I(wt*qsec), data = mtcars)
## lm(formula = mpg ~ I(wt * qsec), data = mtcars)
##
## Coefficients:
## (Intercept) I(wt * qsec)
## 34.7587 -0.2568
I()
函数内只能为数值变量,若为因子变量则报错。
lm(mpg ~ I(factor(cyl)*wt), data = mtcars)## Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
## 没有(非NA)案例可用
y ~ x1:x2
此种情况模型中仅包含交互项,不含一次项。该表达式既适用于数值变量,也适用于因子变量。
lm(mpg ~ wt:cyl, data = mtcars)
## lm(formula = mpg ~ wt:cyl, data = mtcars)
##
## Coefficients:
## (Intercept) wt:cyl
## 30.2679 -0.4793lm(mpg ~ factor(cyl):wt, data = mtcars)
## lm(formula = mpg ~ factor(cyl):wt, data = mtcars)
##
## Coefficients:
## (Intercept) factor(cyl)4:wt factor(cyl)6:wt factor(cyl)8:wt
## 32.432 -2.690 -4.056 -4.264
y ~ x1 %in% x2
这种书写方法同y ~ x1:x2
。
lm(mpg ~ wt %in% cyl, data = mtcars)
## lm(formula = mpg ~ wt %in% cyl, data = mtcars)
##
## Coefficients:
## (Intercept) wt:cyl
## 30.2679 -0.4793lm(mpg ~ factor(cyl) %in% wt, data = mtcars)
## lm(formula = mpg ~ factor(cyl) %in% wt, data = mtcars)
##
## Coefficients:
## (Intercept) factor(cyl)4:wt factor(cyl)6:wt factor(cyl)8:wt
## 32.432 -2.690 -4.056 -4.264
y ~ x1*x2 - x1
和y ~ x1:x2 + x2
前者表示在包含一次项和交互项的模型基础上减去x1
的一次项,后者表示在交互项的基础上加上x2
的一次项。最终对应的的数学表达式是相同的,均为。
lm(mpg ~ wt*cyl - wt, data = mtcars)
## lm(formula = mpg ~ wt * cyl - wt, data = mtcars)
##
## Coefficients:
## (Intercept) cyl wt:cyl
## 32.8026 -0.8324 -0.3562lm(mpg ~ wt:cyl + cyl, data = mtcars)
## lm(formula = mpg ~ wt:cyl + cyl, data = mtcars)
##
## Coefficients:
## (Intercept) cyl wt:cyl
## 32.8026 -0.8324 -0.3562
y ~ x2/x1
这种书写方法同y ~ x1*x2 - x1
和y ~ x1:x2 + x2
(注意x1
和x2
的顺序)。
连续/连续:
lm(mpg ~ cyl/wt, data = mtcars)
## lm(formula = mpg ~ cyl/wt, data = mtcars)
##
## Coefficients:
## (Intercept) cyl cyl:wt
## 32.8026 -0.8324 -0.3562lm(mpg ~ cyl*wt - wt, data = mtcars)
## lm(formula = mpg ~ cyl * wt - wt, data = mtcars)
##
## Coefficients:
## (Intercept) cyl cyl:wt
## 32.8026 -0.8324 -0.3562
分类/连续:
lm(mpg ~ factor(am)/wt, data = mtcars)
## lm(formula = mpg ~ factor(am)/wt, data = mtcars)
##
## Coefficients:
## (Intercept) factor(am)1 factor(am)0:wt factor(am)1:wt
## 31.416 14.878 -3.786 -9.084lm(mpg ~ factor(am)*wt - wt, data = mtcars)
## lm(formula = mpg ~ factor(am) * wt - wt, data = mtcars)
##
## Coefficients:
## (Intercept) factor(am)1 factor(am)0:wt factor(am)1:wt
## 31.416 14.878 -3.786 -9.084
连续/分类:
lm(mpg ~ wt/factor(am), data = mtcars)
## lm(formula = mpg ~ wt/factor(am), data = mtcars)
##
## Coefficients:
## (Intercept) wt wt:factor(am)1
## 38.8798 -5.6895 -0.4947lm(mpg ~ wt*factor(am) - factor(am), data = mtcars)
## lm(formula = mpg ~ wt * factor(am) - factor(am), data = mtcars)
##
## Coefficients:
## (Intercept) wt wt:factor(am)1
## 38.8798 -5.6895 -0.4947
分类/分类:
lm(mpg ~ factor(am)/factor(vs), data = mtcars)
## lm(formula = mpg ~ factor(am)/factor(vs), data = mtcars)
##
## Coefficients:
## (Intercept) factor(am)1 factor(am)0:factor(vs)1
## 15.050 4.700 5.693
## factor(am)1:factor(vs)1
## 8.621lm(mpg ~ factor(am)*factor(vs) - factor(vs), data = mtcars)
## lm(formula = mpg ~ factor(am) * factor(vs) - factor(vs), data = mtcars)
##
## Coefficients:
## (Intercept) factor(am)1 factor(am)0:factor(vs)1
## 15.050 4.700 5.693
## factor(am)1:factor(vs)1
## 8.621
6.2 三个变量的交互
y ~ (x1 + x2 + x3)^2
该模型包括三个变量的一次项以及任意两个变量的交互项。
lm(mpg ~ (wt + qsec + drat)^2, data = mtcars)
## lm(formula = mpg ~ (wt + qsec + drat)^2, data = mtcars)
##
## Coefficients:
## (Intercept) wt qsec drat wt:qsec wt:drat
## 7.08683 6.48598 0.14217 0.09028 -0.23187 -1.99972
## qsec:drat
## 0.38796
R语言的模型表达式含义解析相关推荐
- 《R语言数据挖掘:实用项目解析》——2.6 变量分段
本节书摘来自华章计算机<R语言数据挖掘:实用项目解析>一书中的第2章,第2.6节,作者[印度]普拉迪帕塔·米什拉(Pradeepta Mishra),译 黄芸,更多章节内容可以访问云栖社区 ...
- R语言结构方程模型(SEM)在生态学领域中的应用
前言:结构方程模型(Sructural Equation Model)是一种建立.估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归.因子分析.协方差分析等方法,利用图形化模型方式清晰 ...
- matlab中非线性回归标准误,SPSS—非线性回归(模型表达式)案例解析_spss培训
SPSS-非线性回归(模型表达式)案例解析 由简单到复杂,人生有下坡就必有上坡,有低潮就必有高潮的迭起,随着SPSS的深入学习,已经逐渐开始走向复杂,今天跟大家交流一下,SPSS非线性回归,希望大家能 ...
- R语言结构方程模型(SEM)在生态学领域中的实践
结构方程模型(Sructural Equation Model)是一种建立.估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归.因子分析.协方差分析等方法,利用图形化模型方式清晰展示研 ...
- R语言结构方程模型(SEM)教程
详情点击链接:R语言结构方程模型(SEM)在生态学应用 结构方程模型(Sructural Equation Model)是一种建立.估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归. ...
- R语言分类模型:逻辑回归模型LR、决策树DT、推理决策树CDT、随机森林RF、支持向量机SVM、Rattle可视化界面数据挖掘、分类模型评估指标(准确度、敏感度、特异度、PPV、NPV)
R语言分类模型:逻辑回归模型LR.决策树DT.推理决策树CDT.随机森林RF.支持向量机SVM.Rattle可视化界面数据挖掘.分类模型评估指标(准确度.敏感度.特异度.PPV.NPV) 目录
- R语言回归模型构建、回归模型基本假设(正态性、线性、独立性、方差齐性)、回归模型诊断、car包诊断回归模型、特殊观察样本分析、数据变换、模型比较、特征筛选、交叉验证、预测变量相对重要度
R语言回归模型构建.回归模型基本假设(正态性.线性.独立性.方差齐性).回归模型诊断.car包诊断回归模型.特殊观察样本分析.数据变换.模型比较.特征筛选.交叉验证.预测变量相对重要度 目录
- R语言KNN模型数据分类实战
R语言KNN模型数据分类实战 目录 R语言KNN模型数据分类实战 #KNN基本原理 #案例分析 #数据集说明
- R语言xgboost模型构建:基于prima糖尿病数据集
R语言xgboost模型构建:基于prima糖尿病数据集 目录 R语言xgboost模型构建:基于prima糖尿病数据集
最新文章
- linux黄金命令[积累中]
- 网络安全比赛理论答题(四)
- 用户与服务器的交互:cookies
- QHBoxLayout
- php代码执行相关函数,关于当前PHP脚本运行时系统信息相关函数
- linux机器设置密码,Linux系统设置复杂安全的密码的办法
- 如何在64位Ubuntu16.04下安装java开发环境
- DHT(Distributed Hash Table,分布式哈希表)
- Spring整合Quartz实现定时任务
- Collection和Collections有什么区别?
- 工业机器人维保调查表_《工业机器人系统集成及维护》课程建设调研报告
- jquery取得text,areatext,radio,checkbox,select的值
- Educoder Basemap和seaborn 第三关:Basemap
- 孩子们各显神通对付 iOS 12「屏幕使用时间」的限制
- LeetCode6 Z字形变换
- “Error:(1, 1) java: 非法字符: '\ufeff'”错误解决办法
- QThread 的使用
- discuz文件结构详解,discuz模板文件介绍
- 子线程中使用Handler
- 一个碌碌无为的程序员