【原创】R语言线性回归 :多项式回归案例分析报告附代码数据
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线性回归模型尽管是最简单的模型,但它却有不少假设前提,其中最重要的一条就是响应变量和解释变量之间的确存在着线性关系,否则建立线性模型就是白搭。然而现实中的数据往往线性关系比较弱,甚至本来就不存在着线性关系,机器学习中有不少非线性模型,这里主要讲由线性模型扩展至非线性模型的多项式回归。
多项式回归
多项式回归就是把一次特征转换成高次特征的线性组合多项式,举例来说,对于一元线性回归模型:
一元线性回归模型
扩展成一元多项式回归模型就是:
一元多项式回归模型
这个最高次d应取合适的值,如果太大,模型会很复杂,容易过拟合。
这里以Wage数据集为例,只研究wage与单变量age的关系。
> library(ISLR)
> attach(Wage)
> plot(age,wage) # 首先散点图可视化,描述两个变量的关系
age vs wage
可见这两条变量之间根本不存在线性关系,最好是拟合一条曲线使散点均匀地分布在曲线两侧。于是尝试构建多项式回归模型。
> fit = lm(wage~poly(age,4),data = Wage) # 构建age的4次多项式模型
>
> # 构造一组age值用来预测
> agelims = range(age)
4次多项式回归模型
从图中可见,采用4次多项式回归效果还不错。那么多项式回归的次数具体该如何确定?
在足以解释自变量和因变量关系的前提下,次数应该是越低越好。方差分析(ANOVA)也可用于模型间的检验,比较模型M1是否比一个更复杂的模型M2更好地解释了数据,但前提是M1和M2必须要有包含关系,即:M1的预测变量必须是M2的预测变量的子集。
> fit.1 = lm(wage~age,data = Wage)
> fit.2 = lm(wage~poly(age,2),data = Wage)