R语言—模型调整
Posted 大康的笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言—模型调整相关的知识,希望对你有一定的参考价值。
-
删除观测点
变量变换
当模型不符合正态性,线性或者同方差性,使用car包中powerTransform函数。
违反线性假设时,使用car包中boxTidwell函数。
改善异方差性,使用car包中spreadLevelPlot函数。
-
模型比较
>states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
> fit1<-lm(Murder~Population+Illiteracy+Income+Frost,data = states)
> fit2<-lm(Murder~Population+Illiteracy,data = states)
> AIC(fit1,fit2)
变量选择
>library(MASS)
> states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")])
> fit<-lm(Murder~Population+Illiteracy+Income+Frost,data = states)
> stepAIC(fit,direction = "backward")
#向前逐步回归
>stepAIC(frame,direction="forward")
#向后逐步回归
>stepAIC(fit1,direction = "backward")
#向后逐步回归
>stepAIC(fit1,direction = "stepwise")
逐步回归法局限性在于不能保证模型就是最佳模型,因为不是每一个可能的模型都被评价了。
>library(leaps)
>leaps<-regsubsets(Murder~Population+Illiteracy+Income+Frost,data = state,nbest = 4)
> plot(leaps,scale = "adjr2")
第一行(从下往上数)可以看到intercept截距项和income的模型调整R平方为0.033,而含有intercept,和population,illiteracy的模型调整R方为0.55,可以看出只含有这三项的模型最好。有一点就是当有大量预测变量时,全子集回归会很慢。
以上是关于R语言—模型调整的主要内容,如果未能解决你的问题,请参考以下文章
R语言leaps包中的regsubsets函数实现全集子集回归(all subsets regression)使用调整R方和Mallows Cp统计量筛选最优模型并可视化不同组合参数下的模型指标
R语言 支持向量机(class.weights可以对类别的权重进行调整,提高准确度)
R语言mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model)GAM(对非线性变量进行样条处理计算RMSER方调整R方可视化模型预测值与真实值的曲线)