前情回顾:因子分析模型Python版本

目录

  • 数据集展示
  • 一、KMO检验和Barlette检验
  • 二、确定公因子个数
  • 三、正交旋转
  • 四、因子得分
  • 全部代码

数据集展示

现有30个省份9项家庭支出指标,部分数据如下所示

现想通过因子分析法评价各省份家庭综合消费支出水平

一、KMO检验和Barlette检验

使用因子分析模型前,需保证各个变量存在相关性,检验的标准如下

library(psych) #KMO和Bartlette检验所需包
data<-read.csv('raw_data.csv')
data1=data[,-1] #去除地区列
KMO(data1)
bartlett.test(data1)


从检验结果来看,KMO值为0.88,Bartlette检验的P值远小于0.05,故该数据集十分适合作因子分析。

二、确定公因子个数

确定一般准则:特征值大于1累计方差贡献率大于85%(这个值根据实际数据情况可以适当改变)

基本步骤:计算原始矩阵相关系数矩阵——计算相关系数矩阵的特征值——计算累计方差贡献率

这里使用累计方差贡献率确定公因子个数

corr=cor(data1)
eig=eigen(corr)
(ccx=(eig$va)/sum(eig$va))  #贡献率
(cx=cumsum(eig$va)/sum(eig$va)) #累计方差贡献率


从结果可知,当公因子数为3个时,累计方差贡献率可达~90%,包含了原始数据的大部分信息。

三、正交旋转

正交旋转可使因子载荷矩阵中,各因子的值差别更大,有利于解释各因子含义

library(mvstats) #因子分析所需包
Fac0=factpc(scale(data1),3)
Fac1=factpc(scale(data1),3,rot="varimax")#运用旋转因子分析
data.frame(Fac0$loadings,row.names = colnames(data)[-1]) #旋转前的因子载荷矩阵
data.frame(Fac1$loadings,row.names = colnames(data)[-1]) #旋转后的因子载荷矩阵


旋转前的因子载荷矩阵特征:公共因子F1、F2、F3在原变量的载荷值差异不大,各个因子下的变量代表性并不突出

旋转后的因子载荷矩阵特征:公共因子F1在人均食品、教育、交通支出上载荷较大,可反映日常消费因子;F2在人均医疗支出上有很大的载荷,可视为医疗因子;F3在人均衣着支出上有很大的载荷,可视为衣着因子

四、因子得分

score=Fac1$scores  #各因子得分
rownames(score)=data$省份
plot.text(score[,1:2])  #因子1和因子2得分图
plot.text(score[,2:3])  #因子2和因子3得分图



从F1与F2的因子得分图来看:在F1因子上得分较高地区是上海、广东、北京、浙江、北京、福建,即这些地区的人均日常消费较高.而在F2因子上得分较高的地区是天津、北京、河北、吉林、辽宁,即这些地区的人均医疗支出较高.

从F2与F3的因子得分图来看:在F3因子上得分较高的地区是北京、上海、浙江、内蒙古、新疆,即这些地区的人均衣着支出较高.像新疆、内蒙古这些地区的人们,由于气候原因,人均衣着支出较多;而像北京、上海、浙江这些经济较发达地区的人们,为了追求更好的生活质量,人均衣着消费也位居前列.

综合F1、F2、F3因子得分情况来看,北京、上海、浙江这三个地区在三个因子上的得分都相对较高,可以知道这三个地区的综合消费水平位于我国消费水平前列.

综合得分及排名

rank=Fac1$Rank #综合得分及排名
rownames(rank)<-data$省份
rank=rank[order(rank$Ri,decreasing=F),]
rank

全部代码

注意:mvstats包是王斌会教授自编的因子分析包,需要自行从网络上下载安装

library(mvstats)
library(psych) #KMO和Bartlette检验所需包
data<-read.csv('raw_data.csv')
data1=data[,-1] #去除地区列
KMO(data1)
bartlett.test(data1)corr=cor(data1)
eig=eigen(corr)
(ccx=(eig$va)/sum(eig$va))  #贡献率
(cx=cumsum(eig$va)/sum(eig$va)) #累计方差贡献率Fac0=factpc(scale(data1),3)
Fac1=factpc(scale(data1),3,rot="varimax")#运用旋转因子分析
data.frame(Fac0$loadings,row.names = colnames(data)[-1])
data.frame(Fac1$loadings,row.names = colnames(data)[-1])score=Fac1$scores
rownames(score)=data$省份
plot.text(score[,1:2])
plot.text(score[,2:3])rank=Fac1$Rank
rownames(rank)<-data$省份
rank=rank[order(rank$Ri,decreasing=F),]
rank

以上初步介绍了R语言版本因子分析的基本过程,后续会将多个年份的批量因子分析代码分享给大家~

因子分析模型R语言实现相关推荐

  1. r语言c5.0要求因子输出,R语言中因子的创建与使用

    原标题:R语言中因子的创建与使用 因子在R语言中可以用来表示名义型变量或有序变量.名义变量一般表示类别,如性别,种族等等.有序变量是有一定排序顺序的变量,如职称,年级等等.在R语言中,名义变量和有序变 ...

  2. R语言-因子的构造-factor函数

    参考内容:教程一, 非数值型变量(类别变量和顺序变量)在R语言中称为因子,也称为因子型变量.因子型变量内的所有非重复值,被称为因子水平(levels). 创建因子 在R语言中可以使用factor()函 ...

  3. 还在被R语言中的因子factor毒打吗

    还在被R语言中的因子 factor毒打吗? 视频教程在B站或者微信里搜这个标题即可. 一.R语言为什么要设计出因子factor? Python中没有因子的概念,为什么R中会有呢? 首先,我们知道,R语 ...

  4. R语言语法及建模合集

    点击下列超链接可进入博客: 一.语法篇: R语言常用包分类 R语言数据导入导出总结 R语言数据探索功能总结 R语言中的离群点检测方法 R语言中的向量使用合集 R语言中的因子类型 R语言中的对象以及它的 ...

  5. R语言CART决策树、随机森林、chaid树预测母婴电商平台用户寿命、流失可视化

    全文链接:http://tecdat.cn/?p=31644 借着二胎政策的开放与家庭消费升级的东风,母婴市场迎来了生机盎然的春天,尤其是母婴电商行业,近年来发展迅猛(点击文末"阅读原文&q ...

  6. R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵)、使用rotate参数指定进行斜交旋转提取因子、使用fa.diagram函数可视化斜交旋转因子分析、并解读可视化图形

    R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵).使用rotate参数指定进行斜交旋转提取因子.使用fa.diagram函数可视化斜交旋转因子分析.并解读可视化图形 目 ...

  7. R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵)、使用rotate参数指定进行斜交旋转提取因子、使用nfactors参数指定抽取的因子个数、fa函数因子分析结果解读

    R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵).使用rotate参数指定进行斜交旋转提取因子.使用nfactors参数指定抽取的因子个数.fa函数因子分析结果解读(  ...

  8. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、为不同的变量显示不同的统计信息

    R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义三线表结构(将因子变量细粒度化重新构建三线图).为不同的变量显示不同的统计信息 目录

  9. 三线表是什么?R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义三线表结构(将因子变量细粒度化重新构建三线图)、编写自定义函数在三线表中添加p值

    三线表是什么?R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.编写自定义三线表结构(将因子变量细粒度化重新构建三线图).编写自定义函数在三线表中添加p值 目录

  10. R语言主成分分析PCA和因子分析EFA、主成分(因子)个数、主成分(因子)得分、主成分(因子)旋转(正交旋转、斜交旋转)、主成分(因子)解释

    R语言主成分分析PCA和因子分析EFA.主成分(因子)个数.主成分(因子)得分.主成分(因子)旋转(正交旋转.斜交旋转).主成分(因子)解释 目录

最新文章

  1. linux oracle 关闭防火墙,Linux 下关闭防火墙设置
  2. 经典树型表结构之SORT_NO
  3. ML之Medicine:利用机器学习研发药物—《Machine Learning for Pharmaceutical Discovery and Synthesis Consortium》
  4. 如何设置窗口立即刷新显示
  5. PHP+JavaScript+HTML实现注册界面表单及日历控件
  6. 译: 3. RabbitMQ Spring AMQP 之 Publish/Subscribe 发布和订阅
  7. poj 2251 Dungeon Master (三维bfs)
  8. 《四世同堂》金句摘抄(四)
  9. Java OutputStreamWriter flush()方法与示例
  10. python学生管理系统2.0-python3.6+django2.0开发一套学员管理系统
  11. NSD cisco高级路由与交换技术--2014.8.16
  12. await 单步调试 c#_GDB调试指南-单步调试
  13. 各个版本JDK官方下载地址
  14. Obsolete特性
  15. OpenCV 文字检测与识别模块
  16. 在股东协议中,如何设定关于股权转让的相关规定,如股东优先购买权、股权出售限制、股权转让审批流程等?
  17. C++课程设计(校车订票系统)
  18. IOS越狱插件开发一(环境配置搭建)
  19. 2018年中国安全生产事故总量、较大事故、重特大事故同比实现“三个下降”
  20. cf 356 - Xenia and Hamming

热门文章

  1. 转载:在Python 3中使用深度森林(Deep Forest)进行分类
  2. Altium Designer PCB设计常用规则
  3. 农村三资管理平台app_中科农村三资管理信息系统下载
  4. MD5加盐的一个简单算法
  5. three.js 制作3D相册
  6. python笔记——jieba库
  7. 逻辑回归系数的显著性检验(python实现)
  8. 前端基础(二十一):移动端H5调用摄像头拍照旋转解决方案
  9. 时间轮定时器-Timewheel
  10. 一种身份证号码的编码压缩方法