专注系列化高质量的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变量为因变量。对于自变量:

  • 若为连续变量,使用的变量有wtqsecdrat

  • 若为分类变量,使用的变量有factor(vs)factor(am)factor(cyl),其中前两者为二分类变量,后者为三分类变量。

2 常用操作符和函数

在书写模型表达式中常常会使用一些操作符和函数,这里列举几个。

  • ~

符号~是模型表达式的标志,用于分割因变量和自变量,其前面为因变量,后面为自变量。

  • +-

符号+-用于连接两个变量。符号+表示模型中包括其后面的项(变量),符号-表示模型中不包括其后面的项(变量)。

  • *

符号*用于设置交互项,其本义为乘号。由于模型表达式使用常数1表示截距项,并常常将其省略,因此模型表达式中的x1*x2实际相当于数学表达式的展开式(此处仅适用x1x2均是连续型变量的情况)。

  • :

x1:x2为例,它表示交互项。

  • I()函数

I()函数的作用是让表达式回归“本义”。如I(x1*x2)表示项,而非。

下面分门别类地介绍各种模型表达式的含义。

3 基本形式

  • y ~ x1 + x2

这是最普通的模型形式。y表示因变量,x1x2表示自变量;模型包含截距项。

lm(mpg ~ wt, data = mtcars)
## lm(formula = mpg ~ wt, data = mtcars)
##
## Coefficients:
## (Intercept)           wt
##      37.285       -5.344
  • y ~ x + 1

含义同y ~ x1表示截距项,省略不改变模型表达式含义。

lm(mpg ~ wt + 1, data = mtcars)
## lm(formula = mpg ~ wt + 1, data = mtcars)
##
## Coefficients:
## (Intercept)           wt
##      37.285       -5.344
  • y ~ x - 1y ~ -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 - 1y ~ -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^2y ~ 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

如果x1x2均为连续变量,那么如前所述,它对应的数学表达式为。

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
  • 输出结果中,wtqsec分别表示自身的一次项,wt:qsec表示二者的交互项,也就是。

如果x1x2均为分类变量,则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)表示两个变量参考组的交互项,不含:符号的三项表示一个变量的参考组与另一个变量的非参考组的交互项,含有:符号的两项表示两个变量的非参考组的交互项。

如果x1x2其中一个为连续变量,另一个为分类变量,则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 - x1y ~ 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 - x1y ~ x1:x2 + x2(注意x1x2的顺序)。

连续/连续:

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语言的模型表达式含义解析相关推荐

  1. 《R语言数据挖掘:实用项目解析》——2.6 变量分段

    本节书摘来自华章计算机<R语言数据挖掘:实用项目解析>一书中的第2章,第2.6节,作者[印度]普拉迪帕塔·米什拉(Pradeepta Mishra),译 黄芸,更多章节内容可以访问云栖社区 ...

  2. R语言结构方程模型(SEM)在生态学领域中的应用

    前言:结构方程模型(Sructural Equation Model)是一种建立.估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归.因子分析.协方差分析等方法,利用图形化模型方式清晰 ...

  3. matlab中非线性回归标准误,SPSS—非线性回归(模型表达式)案例解析_spss培训

    SPSS-非线性回归(模型表达式)案例解析 由简单到复杂,人生有下坡就必有上坡,有低潮就必有高潮的迭起,随着SPSS的深入学习,已经逐渐开始走向复杂,今天跟大家交流一下,SPSS非线性回归,希望大家能 ...

  4. R语言结构方程模型(SEM)在生态学领域中的实践

    结构方程模型(Sructural Equation Model)是一种建立.估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归.因子分析.协方差分析等方法,利用图形化模型方式清晰展示研 ...

  5. R语言结构方程模型(SEM)教程

    详情点击链接:R语言结构方程模型(SEM)在生态学应用 结构方程模型(Sructural Equation Model)是一种建立.估计和检验研究系统中多变量间因果关系的模型方法,它可以替代多元回归. ...

  6. R语言分类模型:逻辑回归模型LR、决策树DT、推理决策树CDT、随机森林RF、支持向量机SVM、Rattle可视化界面数据挖掘、分类模型评估指标(准确度、敏感度、特异度、PPV、NPV)

    R语言分类模型:逻辑回归模型LR.决策树DT.推理决策树CDT.随机森林RF.支持向量机SVM.Rattle可视化界面数据挖掘.分类模型评估指标(准确度.敏感度.特异度.PPV.NPV) 目录

  7. R语言回归模型构建、回归模型基本假设(正态性、线性、独立性、方差齐性)、回归模型诊断、car包诊断回归模型、特殊观察样本分析、数据变换、模型比较、特征筛选、交叉验证、预测变量相对重要度

    R语言回归模型构建.回归模型基本假设(正态性.线性.独立性.方差齐性).回归模型诊断.car包诊断回归模型.特殊观察样本分析.数据变换.模型比较.特征筛选.交叉验证.预测变量相对重要度 目录

  8. R语言KNN模型数据分类实战

    R语言KNN模型数据分类实战 目录 R语言KNN模型数据分类实战 #KNN基本原理 #案例分析 ​#数据集说明

  9. R语言xgboost模型构建:基于prima糖尿病数据集

    R语言xgboost模型构建:基于prima糖尿病数据集 目录 R语言xgboost模型构建:基于prima糖尿病数据集

最新文章

  1. linux黄金命令[积累中]
  2. 网络安全比赛理论答题(四)
  3. 用户与服务器的交互:cookies
  4. QHBoxLayout
  5. php代码执行相关函数,关于当前PHP脚本运行时系统信息相关函数
  6. linux机器设置密码,Linux系统设置复杂安全的密码的办法
  7. 如何在64位Ubuntu16.04下安装java开发环境
  8. DHT(Distributed Hash Table,分布式哈希表)
  9. Spring整合Quartz实现定时任务
  10. Collection和Collections有什么区别?
  11. 工业机器人维保调查表_《工业机器人系统集成及维护》课程建设调研报告
  12. jquery取得text,areatext,radio,checkbox,select的值
  13. Educoder Basemap和seaborn 第三关:Basemap
  14. 孩子们各显神通对付 iOS 12「屏幕使用时间」的限制
  15. LeetCode6 Z字形变换
  16. “Error:(1, 1) java: 非法字符: '\ufeff'”错误解决办法
  17. QThread 的使用
  18. discuz文件结构详解,discuz模板文件介绍
  19. 子线程中使用Handler
  20. 一个碌碌无为的程序员

热门文章

  1. 城市轨道交通网络客流控制策略
  2. 【华为OD机试真题】Excel单元格数值统计(javapython)100%通过率 超详细代码注释 代码深度解读
  3. 2018数学建模国赛B题
  4. 终于找到了Visual Studio.net 2003完整高速下载
  5. 腾讯太极广告一站式机器学习平台的产品化之路
  6. 软件著作权和软件专利的不同之处是什么
  7. [转载]PID由入门到精通
  8. 思维导图与超级记忆力之间的联系
  9. 珠心算测验(爆炸型)
  10. XSuperNEST不只是套料软件