自变量选择(R语言)

1.自有度调整复决定系数 R a 2 R_{a}^{2}

R a 2 R_{a}^{2} 为调整的复决定系数, n n 为样本量, p p 为自变量的个数,则
   
    R a 2 = 1 n 1 n p 1 ( 1 R 2 ) R_{a}^{2}=1-\frac{n-1}{n-p-1}(1-R^{2})

在一个实际问题的回归建模中,自由度调整复决定系数 R a 2 R_{a}^{2} 越大,所对应的回归方程越好。从拟合优度的角度追求最优,则所有回归子集中 R a 2 R_{a}^{2} 最大者对应的回归方程就是最优方程。

代码实现如下:

data3.1<-read.csv("C:/Users/Administrator/Desktop/data3.1.csv",head=TRUE)
library(leaps)
exps<-regsubsets(y~x1+x2+x3+x4+x5+x6+x7+x8+x9,data=data3.1,nbest=1,really.big=T)
expres<-summary(exps)
res<-data.frame(expres$outmat,调整R平方=expres$adjr2)
res

解释:
  第3行调用regsubsets函数式对数据做所有子集(除了全模型)回归分析,共有 2 m 2 2^{m}-2 个变量子集的模型回归结果,并将结果赋给exps,回归结果中计算了 R a 2 R_{a}^{2} 的值。
  其中nbest可以任意赋大于等于1的值 n n ,其主要用于展示包含不同变量个数(1个、2个或多个解释变量)的子集的前 n n 个最佳模型。假如本例中,nbest=3,结果中间首先展示3个最佳的单解释变量的模型,然后展示3个最佳的含有两个解释变量的模型,以此类推,直至展示3个最佳的包含8个解释变量的模型。当nbest=126时,将显示所有的回归子集,但不包含全模型。
  
输出结果:
  在这里插入图片描述
  根据上面的输出结果可知,依据 R a 2 R_{a}^{2} 准则选出的最优子集为 x 1 , x 2 , x 3 , x 5 , x 6 x1,x2,x3,x5,x6 ,同时也可以看出包含变量 x 1 , x 2 , x 3 , x 5 x1,x2,x3,x5 的子集回归模型的 R a 2 R_{a}^{2} 取值与最优子集回归模型的 R a 2 R_{a}^{2} 差别很小。如果仅考虑 R a 2 R_{a}^{2} 这一个准则时,则 x 1 , x 2 , x 3 , x 5 , x 6 x1,x2,x3,x5,x6 为最优子集,但是实际应用中应该考虑几个准则来确定最优子集。

2. C p C_{p} 统计量

1964年马洛斯从预测的角度提出可一个可以用来选择自变量的统计量,这就是常说的 C p C_{p} 统计量。根据选模型预测的均方误差比全模型预测的方差更小的性质,也可以知道即使全模型正确,但仍有可能选模型有更小的预测误差。 C p C_{p} 正是根据这一原理提出来的。
 
   C p = S S E p σ ^ 2 n + 2 p C_{p}=\frac{SSE_{p}}{\hat{\sigma }^{2}}-n+2p
     = ( n m 1 ) S S E p S S E m n + 2 p =(n-m-1)\frac{SSE_{p}}{SSE_{m}}-n+2p

式中, σ ^ 2 = 1 n m 1 S S E m \hat{\sigma }^{2}=\frac{1}{n-m-1}SSE_{m} ,为全模型中 σ 2 \sigma^{2} 的无偏估计。
  这样我们就得到一个选择变量的 C p C_{p} 准则:选择使 C p C_{p} 最小的自变量子集,这个自变量子集对应的回归方成就是最优回归方程。

代码实现如下:

data3.1<-read.csv("C:/Users/Administrator/Desktop/data3.1.csv",head=TRUE)
library(leaps)
exps<-regsubsets(y~x1+x2+x3+x4+x5+x6+x7+x8+x9,data=data3.1,nbest=1,really.big=T)
expres<-summary(exps)
res<-data.frame(expres$outmat,Cp=expres$cp)
res

输出结果如下:
在这里插入图片描述
  由以上输出结果可知,依据 C p C_{p} 准则选出最优的子集为 x 1 , x 2 , x 3 , x 5 x1,x2,x3,x5 ,而且 C p = 1.726 C_{p}=1.726 与其他7个子集所对应的 C p C_{p} 的取值均有明显差异。
  因此,综合 C p C_{p} R a 2 R_{a}^{2} 的输出结果,我们可以选择包含变量 x 1 , x 2 , x 3 , x 5 x1,x2,x3,x5 的回归模型作为最优子集回归模型。

猜你喜欢

转载自blog.csdn.net/qq_38204302/article/details/86566696