经典线性回归模型自变量选择Word格式.docx
《经典线性回归模型自变量选择Word格式.docx》由会员分享,可在线阅读,更多相关《经典线性回归模型自变量选择Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
但残差平方和的大小与因变量的计量单位有关,因此我们定义了决定系数。
决定系数越大,模型拟合的越好。
决定系数不仅与因变量的计量单位无关,而且能说明在因变量的变异中,归功于自变量变化的部分所占比例。
但不论是用残差平方和还是用决定系数来度量线性拟合模型拟合程度,都会得出模型中包含越多自变量拟合就越好的结论。
但在样本容量给定的情况下,自变量越多,模型就越复杂,模型参数估计就越不精确,导致模型应用的效果就越差。
因此我们需要能综合用残差平方和表示的模型拟合精度和用模型中包含的自变量个数表示的模型复杂程度的准则,以便选择出最优的回归模型。
回归分析中用于选择自变量的准则很多。
由于残差平方和RSSp和决定系数R2只考虑模型拟合精度,因而只能作为自变量个数相同时自变量选择的准则。
残差均方s2和修正决定系数是一个综合模型拟合精度和模型复杂程度的准则。
综合性准则除了残差均方和修正决定系数外,还有如下一些准则:
·
MallowsCp准则
其中,s2为包含全部自变量的拟合模型的残差均方,RSSp为当前拟合模型的残差平方和,p为当前拟合模型的自变量个数。
信息准则
信息准则根据公式
计算,其中logLik=-n{log(RSS/n)+log(2π)+1}/2为当前拟合模型的对数似然函数,npar为当前拟合模型的参数个数,当k=2时称为AIC准则,当k=log(n)时称为BIC准则。
在小样本情况下,AIC准则的表现不太好,为此人们提出的修正AIC准则AICc,其计算公式为
R中计算当前拟合模型信息准则的函数有(其中fit为当前拟合模型对象)
AIC(fit,k=2)k=2(缺省)时计算
k=log(n)时计算
extractAIC(fit,scale,k=2)指定scale=s2,计算当前拟合模型的Cp准则
不指定scale,k=2(缺省)时计算
不指定scale,k=log(n)时计算
R的附加程序包qpcR中的函数AICc(fit)可计算当前拟合模型的修正信息准则
预测平方和准则
其中,,表示删除第i个案例后,用剩余的(n-1)个案例估计的拟合模型对第i个案例的预测误差。
R的附加程序包qpcR中的函数PRESS(fit)可计算预测平方和。
此函数的返回值是一个列表,其中包含三个元素,
(1)名字为stat的预测平方和;
(2)名字为residuals的预测残差向量;
(3)名字为P.square的P2,其计算公式为:
R的的附加程序包leaps中的函数leaps()和regsubsets()均可用来完成全局最优的选择。
leaps()依据Cp准则、修正R2准则和R2准则来选择全局最优回归模型;
regsubsets()函数则只能选出不同自变量个数的局部最优的模型,我们再从这些局部的最优模型中选出全局最优的模型。
例:
高速公路事故数据
library(alr3)
attach(highway)
y=log(Rate)
x1=log(Len)
x2=log(ADT)
x3=log(Trks)
x4=log((Sigs*Len+1)/Len)
x5=Slim
x6=Shld
x7=Lane
x8=Acpt
x9=Itg
x10=Lwid
x11=as.numeric(Hwy==1)
x12=as.numeric(Hwy==2)
x13=as.numeric(Hwy==3)
考虑汽车意外事故率(事故数/百万行车)与一些可能的相关之间的关系。
数据包括1973年在明尼苏达州的39段高速公路。
ADT以千计的平均是流量(估计)
Trks卡车容量在全部容量中的百分比
Lane在两个方向上的交通车道总数
Acpt路段中每英里的进入点
Sigs路段中每英里信号交换数
Itg路段中每英里的快车道类型交换数
Slim时速限制(在1973年)
Len段的长度(英里)
Lwid道路宽度(英尺)
Shld道路的外侧路肩宽度
Hwy公路类型的因子变量,0:
州际高速公路、1:
首要干道高速公路、2:
主
干道高速公路、3:
其它
Rate1973年每百万公里行车的事故率
考虑log(Rate)对log(Len),log(ADT),log(Trks),log(Sigs1),Slim,Shld,Lane,Acpt,Itg,Lwid,Hwy的回归,其中Sigs1=(Sigs*Len+1)/Len
hwm=lm(y~x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13)
summary(hwm)
EstimateStd.ErrortvaluePr(>
|t|)
(Intercept)3.9541541.7655412.2400.0342*
x1-0.2144700.099986-2.1450.0419*
x2-0.1546250.111893-1.3820.1792
x3-0.1975600.239812-0.8240.4178
x40.1923220.0753672.5520.0172*
x5-0.0272600.016799-1.6230.1172
x60.0029740.0341590.0870.9313
x7-0.0111330.057021-0.1950.8468
x80.0060490.0081010.7470.4622
x90.0357220.2428180.1470.8842
x100.0421220.1368210.3080.7607
x110.2375450.3998220.5940.5578
x12-0.2857810.273072-1.0470.3053
x13-0.1437290.233458-0.6160.5437
---
Signif.codes:
0‘***’0.001‘**’0.01‘*’0.05‘.’0.1‘’1
Residualstandarderror:
0.2607on25degreesoffreedom
MultipleR-squared:
0.7913,AdjustedR-squared:
0.6828
F-statistic:
7.293on13and25DF,p-value:
1.247e-05
kappa(hwm)
[1]1305.216
library(car)
vif(hwm)
x1x2x3x4x5x6x7
2.0330758.3451491.9745914.9948645.3974856.0143523.365510
x8x9x10x11x12x13
3.1854075.5724292.17496110.25124810.6888766.949116
library(leaps)
leaps(x=cbind(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13),y=y,nbest=1)
$which
123456789ABCD
1FALSEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSE
2TRUEFALSEFALSEFALSETRUEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSE
3FALSEFALSEFALSETRUETRUEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSE
4TRUEFALSEFALSETRUETRUEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSE
5TRUETRUEFALSETRUETRUEFALSEFALSEFALSEFALSEFALSEFALSETRUEFALSE
6TRUETRUEFALSETRUETRUEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUE
7TRUETRUETRUETRUETRUEFALSEFALSEFALSEFALSEFALSEFALSETRUETRUE
8TRUETRUETRUETRUETRUEFALSEFALSETRUEFALSEFALSEFALSETRUETRUE
9TRUETRUETRUETRUETRUEFALSEFALSETRUEFALSEFALSETRUETRUETRUE
10TRUETRUETRUETRUETRUEFALSEFALSETRUEFALSETRUETRUETRUETRUE
11TRUETRUETRUETRUETRUEFALSETRUETRUEFALSETRUETRUETRUETRUE
12TRUETRUETRUETRUETRUEFALSETRUETRUETRUETRUETRUETRUETRUE
13TRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUETRUE
$label
[1]"
(Intercept)"
"
1"
2"
3"
4"
5"
[7]"
6"
7"
8"
9"
A"
B"
[13]"
C"
D"
$size
[1]234567891011121314
$Cp
[1]27.72323310.2020837.0867931.6498531.4379302.0455123.0904174.5426566.179744
[10]8.06356810.02710212.00758214.000000
leaps()函数的一般用法为
leaps(x=,y=,method=c("
Cp"
"
adjr2"
r2"
),int=TRUE,nbest=10,names=NULL)
其中,x=用来指定