上篇文章给大家留了个作业,那么答案现在揭晓:
缺失值数据里,通过变量的相关性填补缺失值:
①: > cor(algae[,4:18],use ="complete.obs") 命令得出函数间的相关之,知识点函数cor()
②:>symnum(cor(algae[,4:18],use = "complete.obs"))函数symnum改善输出结果
③: > lm(PO4~oPO4,data =algae) 通过模型得出相关函数,填充缺失值
以上是上次课余答案。今天将如何根据数据建立模型:通过多元线性回归,和回归树模型两种不同的模型;
线性回归:R预言中,线性回归不能使用有缺失值的数据集;通过如下命令,我们得到不含缺失值的数据集;
通过lm()建立一个回归模型,用其他所有变量来预测变量a1,其中第一个参数点“.”代表数据框a1之外的所有变量。
通过summary()获取多元线性模型的信息。
对得到的线性模型对象用summary()函数得到一些诊断信息,:
①拟合残差:残差应该是均值为0,且正态分布(显然残差尽可能的小)
②为了检验系数的重要性,通过t检验(假设系数为0,被拒绝的概率)来验证,Pr(>|t|) 显示与系数相关的一列
③R2表示模型与数据的吻合度,越接近于1,越好。
由此可知该模型的方差不好(32%),目标变量不依赖预测变量假设。检查某些系数的显著性,会得出有些变量不应该进入模型。
用anova()精简线性模型。函数anova(lm.a1),提供线性拟合的方差分析。
由上面可知season对线性拟合的方差贡献非常小,可以剔除。
用update()将变量season删除
新模型R2提高到了32.8%,依然不好。
用anova比较两个模型,但是Pr(>F)是0.69,不显著,区别不大。
接下来还需要重复删除变量步骤。你觉得是人工一直这样手动删除检验么~~~
当然不是啦,R提供了函数,可以直接自动完成。
如下,只需要step这一步,就可以自动完成向后消元过程。
向后消元完成后,还需要用summary()检验;从如下检验结果看, R2依然不是很理想33.24%,此时我们就需要考虑更换模型了。
利用回归树??这个问题小编先留给大家思考,下期内容更新实现方法。
知识点:1:多元线性回归lm()
2:summary()函数
3:anova()函数
4:step()函数
领取专属 10元无门槛券
私享最新 技术干货