鄙人学习笔记
参考文献:《计量经济学模型及R语言应用》-王斌会
变量的多重共线性诊断
多元线性回归模型的一个基本假设,就是要求自变量矩阵X列满秩,即秩rank(X)=p,也就是要求X的列向量之间线性无关。如果X的列不满秩,则(X’X)-1将不存在,于是基于最小二乘回归系数估计,b = (X’X)-1X’y将不存在,所以很难得出稳定的结果。
考虑线性回归模型:
这里假定自变量矩阵X已中心标准化,且rank(X)=p, 这时X’X/(n-1)为相关矩阵R。
下面给出几个常用的复共线性诊断方法。
特征根分析法
条件数法
方差扩大因子法
一般标准:
①当0<VIF≤5时,没有复共线性;
②当5<VIF≤10时,有较弱的复共线性;
③当10<VIF≤100时,有中等或较强的复共线性;
④当VIF>100时,有严重的复共线性。
由于VIF=1/TOL (TOL称为容忍度),所以也可以用TOL来诊断复共线性。
直观判定法
举个例子(R语言)
数据:
输入:
Xdf <- testdf[, -1]
Xscale <- scale(Xdf, T, T)
#scale(data, center=T,scale=T)
#1.center和scale默认为TRUE
#2.center为TRUE 表示数据中心化
#3.scale为TRUE 表示数据标准化
Rtest <- (t(as.matrix(Xscale)) %*% as.matrix(Xscale))/14
# * 是表示两个矩阵中对应的元素的乘积
# %*% 表示通常意义下的矩阵乘积,要求第一个矩阵的列数与第二个矩阵行数相等。
#相关矩阵 = t(scale(X))*scale(X)/(n-1)
#备注:X为解释变量矩阵,维度是n*p;n为样本量
(Rtest)
(R01 <- cor(Xscale))
#查看我们自制的相关矩阵和R给出的相关矩阵是否一样
#1.特征分析法
(lamda = eigen(Rtest)$value)
#本次实验的相关系数矩阵最小特征根为0.1626082 >0.1 则不存在复共线性
#2.条件数法
(CN = max(lamda)/min(lamda))
#本次实验中CN = 11.53401,0<= CN <= 30, 则不存在多重共线性
#3.方差扩大因子法(VIF)
R2 <- summary(lm(x2 ~ x1 + x3, data = testdf))$r.sq
(VIF1 <- 1/(1 - R2))
#本次实验中VIF = 3.383924,0<= VIF <-5,同样没有复共线性
输出: