参考博客:https://blog.csdn.net/jiabiao1602/article/details/39177125

1.导入数据,R自带研究共线性的数据集

该数据集有7个变量,其中GNP.deflator可以作为yyy

rm(list=ls())
data=longley
print(data)

2.对全变量建立回归模型

model=lm(GNP.deflator~.,data=data)
summary(model)


结论:\color{red}{结论:}结论:从上面的结果可以看出,6个自变量中,只有两个变量的ppp值是显著的,此处看结果,要知道,多元线性回归的检验两种:一种是对回归方程的检验(F检验),另一种是对各个回归系数的检验,因为在回归方程中,即使回归方程显著,也不能说明每个自变量对y的影响都是显著的,因此我们总想从回归方程中剔除哪些次要的,可有可无的变量,重新建立更简单的方程。所以需要我们对每个自变量进行显著性检验。其中对自变量进行检验使用的t检验,从上面的summary()可以看出,Residual standard error是sigma_hat的估计

3.t检验计算,以GNP为例

# 显然此处p=6,此处的model$fitted_value与predict(model)是相同的值
# 这个和glm模型的值是不一样的
#
sig_2=sum((data$GNP.deflator-predict(model))*(data$GNP.deflator-predict(model)))
sig_hat=sqrt(sig_2/9)
#我一直不知道R里面把拟合的sigma_hat怎么取出来,可以以下面的方式
#不要以为summary(model)只是返回结果,如果输入a=summary(model)
#那么a是一个对象,那么就可以以a$sigma来获得sigma的估计值了
# 其余的属性也是类似的,其中拟合优度为a$r.squared
y=data[,1];
design_matrix=data[,c(-1)];
design_matrix=cbind(interc=rep(1,16),design_matrix)#直接Ctrl+enter就可以运行
design_matrix=as.matrix(design_matrix)
y=as.matrix(y)
beta=solve(t(design_matrix)%*%design_matrix)%*%t(design_matrix)%*%yt_test=beta/(sqrt(diag(solve(t(design_matrix)%*%design_matrix)))*sig_hat)
print(t_test)


此处可以看到,对于截距项的检验也是t检验算出来的(虽然一般不看这个),
检验的公式为t=β^j(cjj)σ^t=\frac{\hat\beta_{j}}{\sqrt(c_{jj})\hat\sigma}t=(​cjj​)σ^β^​j​​

4.计算方差扩大因子VIFVIFVIF,通常用来检验是否存在多重共线性

该包中的VIF不能对一元线性回归进行计算,会报错

library(car)
print(vif(model))#如果不用print,会有警告
#计算GNP的方差膨胀因子
data1=data[,c(-1)]
model_GNP=lm(GNP~.,data=data1)
R_Square=summary(model_GNP)$r.squared
VIF_GNP=1/(1-R_Square)
print(VIF_GNP)

可以看到完全一致,但是书上说VIF有另一个定义:对自变量进行中心标准化后,自变量的相关阵的主对角线元素VIF=cjjVIF=c_{jj}VIF=cjj​,也是xjx_{j}xj​的方差扩大因子

5.验证VIF的另一个定义

#自变量的相关阵
scale_fun=function(dat)
{return(apply(dat,2,function(x) (x-mean(x))/sqrt(sum((x-mean(x))^2))))
}#这个地方和之前的标准化不一样,这个是除以了残差平方和的开平方,而非标准差
#,所以是不能是使用scale函数
scale_data=scale_fun(data[,c(-1)])
scale_data=as.matrix(scale_data);
C=solve(t(scale_data)%*%scale_data)
print(C)


可以看到两者确实是相等的

6.画任意两个变量之间的相关关系图

pairs(data)
cor(data[,2:7])

可以看到确实存在严重的多重共线性

7.利用step()函数来进行变量的筛选

model.step=step(model,direction = "backward")
summary(model.step)

8.验证一个东西,F−valueF-valueF−value 与R2R^2R2的关系

设自变量的个数为ppp,设计矩阵的维数为(n,p+1)(n,p+1)(n,p+1),那么1−R2=(1+Fpn−p−1)−11-R^{2}=(1+\frac{Fp}{n-p-1})^{-1}1−R2=(1+n−p−1Fp​)−1

p=6;
n=16;
print(1-R_Square)
F=summary(model)$fstatistic[1];
print(1/(1+p*F/(n-p-1)))

为什么值不一样,还没有弄清楚\color{red}{为什么值不一样,还没有弄清楚}为什么值不一样,还没有弄清楚

方差膨胀因子(VIF)学习相关推荐

  1. 多重共线性检验之方差膨胀因子VIF

    过程 1.构造每一个自变量与其余自变量的线性回归模型,例如,数 据集中含有p个自变量,则第一个自变量与其余自变量的线性组合可以 表示为 2.根据如上线性回归模型得到相应的判决系数R2R^2R2,进而计 ...

  2. python方差膨胀因子_讲讲共线性问题

    多重共线性是使用线性回归算法时经常要面对的一个问题.在其他算法中,例如决策树和贝叶斯,前者的建模过程是逐步递进,每次拆分只有一个变量参与,这种建模机制含有抗多重共线性干扰的功能:后者干脆假定变量之间是 ...

  3. python 方差膨胀因子 检验_从零开始学Python【22】--线性回归诊断(第一部分)

    往期回顾 前言 在上一期中,关于线性回归模型的创建,我们对比了Python和R语言的具体代码实现,受到了很多网友的关注.也有一些朋友问到,关于线性回归模型的那些前提假设为什么没有作分享,这期和下期我们 ...

  4. 因变量 方差膨胀系数_请问如何计算潜变量的方差膨胀因子(VIF)?

    这里提供一个 Python 实现的方法和原理趣分析 方差膨胀因子是非常经典缓解多元共线性的方法,原理简单,实现优雅,效果拔群.源代码源数据可私聊俺获取,每天固定时间查看和回复. 原理趣析 多重线性回归 ...

  5. R计算方差膨胀因子(VIF,Variance Inflation Factor)计算并解读VID与共线性(Multicollinearity)的关系实战

    R计算方差膨胀因子(VIF,Variance Inflation Factor)计算并解读VID与共线性(Multicollinearity)的关系实战 目录

  6. R语言使用car包的vif函数计算方差膨胀因子,并基于方差膨胀因子开方后和阈值(2)的判断来确认模型特征(预测变量)之间是否存在多重共线性(Multicollinearity)

    R语言使用car包的vif函数计算方差膨胀因子,并基于方差膨胀因子开方后和阈值(2)的判断来确认模型特征(预测变量)之间是否存在多重共线性(Multicollinearity) 目录

  7. 多元线性模型分类变量方差_第三十一讲 R多元线性回归中的多重共线性和方差膨胀因子...

    在前两讲中,我们介绍了多元线性回归的概念以及多元线性回归中的交互作用.今天学习的主要内容是多元线性回归中的多重共线性和方差膨胀因子. 1. 共线性的概念 1 共线性 在多元回归中,两个或多个预测变量可 ...

  8. VIF 多重共线性膨胀因子

    方差膨胀系数(variance inflation factor,VIF)是衡量多元线性回归模型中复 (多重)共线性严重程度的一种度量.它表示回归系数估计量的方差与假设自变量间不线性相关时方差相比的比 ...

  9. 2.5 数据不匹配时,偏差和方差的分析-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 2.4 在不同的划分上进行训练并测试 回到目录 2.6 定位数据不匹配 数据不匹配时,偏差和方差的分析 (Bias and Variance with Mismatched ...

最新文章

  1. sysbench压测Oracle
  2. interp1 函数-------一维数据插值函数
  3. php模块memcache和memcached区别分析
  4. (十二)java springcloud b2b2c多用户商城系统-springboot集成apidoc
  5. python单元测试框架unittest介绍和使用_Python+Selenium框架设计篇之-简单介绍unittest单元测试框架...
  6. 大数据学习(1)-大数据概述
  7. 【软件质量】对this或字符串加锁的弊病
  8. gitlab定期备份_如何在一分钟内让GitLab为您做定期工作
  9. 模仿Bootstrap插件的放大镜插件
  10. ROS学习笔记七:使用rqt_console和roslaunch
  11. Java求质数(素数)(超详细)
  12. 便宜的前端培训班都有哪些?
  13. 如何查看虚拟机服务器ftp,如何通过FTP工具查看虚拟空间使用了多少?
  14. 软件测试工程师职业规划怎么写,软件测试工程师的职业生涯规划
  15. 北航2022软件工程第一次作业——阅读、思考、调研、实践
  16. 有赞.测试团队介绍(转)
  17. 举一反三的贝壳网爬虫
  18. 凯云水利水电工程造价管理系统 技术解析(七) 机械单价(二)
  19. 计算机辅助培训的策略,宁波诺丁汉大学学习策略培训对解决计算机辅助语言教学环境下信息过剩问题的启示...
  20. LeetCode代码刷题(17~24)

热门文章

  1. Rust中的引用计数Arc与Rc
  2. 51单片机入门·开篇
  3. Opportunity
  4. 智慧校园有多便捷?涂鸦公寓赋能打造,校内生态一键链接
  5. 推进浙江创新发展,区块链赋能智慧农业解决方案
  6. linux 车载导航源代码,基于Linux的嵌入式车载导航系统的设计
  7. Nowa Flutter开发教程之 04 Group 分组使您的 UI 构建更加容易(无代码开发)
  8. 如何听节拍器_节拍器的使用方法
  9. 5.7 维吉尼亚密码(project)
  10. 去哪儿旅行微服务架构实践