R in action读书笔记(11)-第八章:回归-- 选择“最佳”的回归模型

8.6 选择“最佳”的回归模型

8.6.1 模型比较

用基础安装中的anova()函数可以比较两个嵌套模型的拟合优度。所谓嵌套模型,即它的一

些项完全包含在另一个模型中

用anova()函数比较

> 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)

> anova(fit2,fit1)

Analysis of Variance Table

Model 1: Murder ~ Population + Illiteracy

Model 2: Murder ~ Population + Illiteracy + Income +Frost

Res.Df RSS Df Sum of Sq F Pr(>F)

1 47289.25

2 45289.17 2 0.078505 0.0061 0.9939

AIC(AkaikeInformation Criterion,赤池信息准则)也可以用来比较模型,它考虑了模型的

统计拟合度以及用来拟合的参数数目。AIC值越小的模型要优先选择,它说明模型用较少的参数

获得了足够的拟合度。

> AIC(fit1,fit2)

df AIC

fit1 6 241.6429

fit2 4 237.6565

8.6.2变量选择

1. 逐步回归stepwise method

逐步回归中,模型会一次添加或者删除一个变量,直到达到某个判停准则为止。向前

逐步回归(forward stepwise)每次添加一个预测变量到模型中,直到添加变量不会使模型有所改

进为止。向后逐步回归(backward stepwise)从模型包含所有预测变量开始,一次删除一个变量

直到会降低模型质量为止。而向前向后逐步回归(stepwise stepwise,通常称作逐步回归

),结合了向前逐步回归和向后逐步回归的方法,变量每次进入一个,但是每一步

中,变量都会被重新评价,对模型没有贡献的变量将会被删除,预测变量可能会被添加、删除好

几次,直到获得最优模型为止。。MASS包中的stepAIC()函数可以实现

逐步回归模型(向前、向后和向前向后),依据的是精确AIC准则。

> library(MASS)

>fit1<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)

>stepAIC(fit1,direction="backward")

Start: AIC=97.75

Murder ~ Population +Illiteracy + Income + Frost

Df Sum of Sq RSS AIC

- Frost 1 0.021 289.19 95.753

- Income 1 0.057 289.22 95.759

<none> 289.17 97.749

- Population 1 39.238 328.41 102.111

- Illiteracy 1 144.264 433.43 115.986

Step: AIC=95.75

Murder ~ Population +Illiteracy + Income

Df Sum of Sq RSS AIC

- Income 1 0.057 289.25 93.763

<none> 289.19 95.753

- Population 1 43.658332.85 100.783

- Illiteracy 1 236.196 525.38 123.605

Step: AIC=93.76

Murder ~ Population +Illiteracy

Df Sum of Sq RSS AIC

<none> 289.25 93.763

- Population 1 48.517 337.76 99.516

- Illiteracy 1 299.646588.89 127.311

Call:

lm(formula = Murder ~Population + Illiteracy, data = states)

Coefficients:

(Intercept) Population Illiteracy

1.6515497 0.0002242 4.0807366

2. 全子集回归

全子集回归可用leaps包中的regsubsets()函数实现。你能通过R平方、调整R平方或

Mallows Cp统计量等准则来选择“最佳”模型

> library("leaps", lib.loc="d:/ProgramFiles/R/R-3.1.3/library")

>leaps<-regsubsets(Murder~Population+Illiteracy+Income+Frost,data=states,nbest=4)

> plot(leaps,scal="adjr2")

> library(car)

> subsets(leaps,statistic="cp",main="cpplot for all subsets regression")

> abline(1,1,lty=2,col="red")

8.7 深层次分析

8.7.1 交叉验证

所谓交叉验证,即将一定比例的数据挑选出来作为训练样本,另外的样本作保留样本,先在

训练样本上获取回归方程,然后在保留样本上做预测。由于保留样本不涉及模型参数的选择,该

样本可获得比新数据更为精确的估计。在k 重交叉验证中,样本被分为k个子样本,轮流将k?1个子样本组合作为训练集,另外1个子样本作为保留集。这样会获得k 个预测方程,记录k 个保留样本的预测表现结果,然后求其平均值。[当n 是观测总数目,k 为n 时,该方法又称作刀切法(jackknifing)]bootstrap 包中的crossval() 函数可以实现k 重交叉验证。

fit<-lm(mpg~hp+wt+hp:wt,data=mtcars)

shrinkage<-function(fit,k=10){

require(bootstrap)

theta.fit<-function(x,y){lsfit(x,y)}

theta.predict<-function(fit,x){cbind(1,x)%*%fit$coef}

x<-fit$model[,2:ncol(fit$model)]

y<-fit$model[,1]

results<-crossval(x,y,theta.fit,theta.predict,ngroup=k)

r2<-cor(y,fit$fitted.values)^2

r2cv<-cor(y,results$cv.fit)^2

cat("original r-square=",r2,"\n")

cat(k,"fold cross-validated r-square =",r2cv,"\n")

cat("change=",r2-r2cv),"\n")

}

时间: 2024-10-05 03:18:39

R in action读书笔记(11)-第八章:回归-- 选择“最佳”的回归模型的相关文章

R in action读书笔记(14)第十一章 中级绘图 之一:散点图(高能预警)

第十一章中级绘图 本章内容: 二元变量和多元变量关系的可视化 绘制散点图和折线图 理解相关图 学习马赛克图和关联图 本章用到的函数有: plot hexbin ablines iplot scatterplot scatterplot3d pairs plot3d scatterplotMatrix scatter3d cpairs symbols smoothScatter   11.1散点图 添加了最佳拟合曲线的散点图 > attach(mtcars) > plot(wt,mpg,main

R in action读书笔记(10)-第八章:回归-- 异常观测值 改进措施

8.4 异常观测值 8.4.1 离群点 car包也提供了一种离群点的统计检验方法.outlierTest()函数可以求得最大标准化残差绝对值Bonferroni调整后的p值: > library(car) > outlierTest(fit) rstudent unadjusted p-value Bonferonni p Nevada 3.542929 0.00095088 0.047544 可以看到Nevada被判定为离群点(p=0.048).注意,该函数只是根据单个最大(或正或负)残差值

R in action读书笔记(8)-第八章:回归(上)

8.1回归的多面性 8.2 OLS回归 OLS回归拟合模型形式: 为了能够恰当地解释oLs模型的系数,数据必须满足以下统计假设. 口正态性对于固定的自变量值,因变量值成正态分布. 口独立性Yi值之间相互独立. 口线性因变量与自变量之间为线性相关. 口同方差性因变量的方差不随自变量的水平不同而变化.也可称作不变方差,但是说同方差性感觉上更犀利. 8.2.1用lm()拟合回归模型 myfit<-lm(formula,data) formula指要拟合的模型形式,data是一个数据框,包含了用于拟合模

R in action读书笔记(9)-第八章:回归 -回归诊断

8.3回归诊断 > fit<-lm(weight~height,data=women) > par(mfrow=c(2,2)) > plot(fit) 为理解这些图形,我们来回顾一下oLs回归的统计假设. 口正态性当预测变量值固定时,因变量成正态分布,则残差值也应该是一个均值为0的正态分布.正态Q-Q图(Normal Q-Q,右上)是在正态分布对应的值下,标准化残差的概率图.若满足正态假设,那么图上的点应该落在呈45度角的直线上;若不是如此,那么就违反了正态性的假设. 口独立性你无

R in action读书笔记(19)第十四章 主成分和因子分析

第十四章:主成分和因子分析 本章内容 主成分分析 探索性因子分析 其他潜变量模型 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分.探索性因子分析(EFA)是一系列用来发现一组变量的潜在结构的方法.它通过寻找一组更小的.潜在的或隐藏的结构来解释已观测到的.显式的变量间的关系. PCA与EFA模型间的区别 主成分(PC1和PC2)是观测变量(X1到X5)的线性组合.形成线性组合的权重都是通过最大化各主成分所解释的方差来获得,同时还要保证个

R in action读书笔记(5)-第七章:基本统计分析

7.1描述性统计分析 > vars<-c("mpg","hp","wt") > head(mtcars[vars])                    mpg  hp    wt Mazda RX4         21.0 110 2.620 Mazda RX4 Wag     21.0 110 2.875 Datsun 710        22.8  93 2.320 Hornet 4 Drive    21.4 11

R in action读书笔记(22)第十六章 高级图形进阶(下)

16.2.4 图形参数 在lattice图形中,lattice函数默认的图形参数包含在一个很大的列表对象中,你可通过trellis.par.get()函数来获取,并用trellis.par.set()函数来修改.show.settings()函数可展示当前的图形参数设置情况.查看当前的默认设置,并将它们存储到一个mysettings列表中: > show.settings() > mysettings<-trellis.par.get() 查看叠加点的默认设置值: > mysett

R in action读书笔记(17)第十二章 重抽样与自助法

12.4 置换检验点评 除coin和lmPerm包外,R还提供了其他可做置换检验的包.perm包能实现coin包中的部分功能,因此可作为coin包所得结果的验证.corrperm包提供了有重复测量的相关性的置换检验. logregperm包提供了Logistic回归的置换检验.另外一个非常重要的包是glmperm,它涵盖了广义线性模型的置换检验依靠基础的抽样分布理论知识,置换检验提供了另外一个十分强大的可选检验思路.对于上面描述的每一种置换检验,我们完全可以在做统计假设检验时不理会正态分布.t分

R in action读书笔记(6)-第七章:基本统计分析(下)

7.3相关 相关系数可以用来描述定量变量之间的关系.相关系数的符号(±)表明关系的方向(正相关或负相关),其值的大小表示关系的强弱程度(完全不相关时为0,完全相关时为1).除了基础安装以外,我们还将使用psych和ggm包. 7.3.1 相关的类型 1.Pearson.Spearman和Kendall相关 Pearson积差相关系数衡量了两个定量变量之间的线性相关程度.Spearman等级相关系数则衡 量分级定序变量之间的相关程度.Kendall’s Tau相关系数也是一种非参数的等级相关度量.