R语言:因子分析 factor analysis

文章目录

        • 因子分析
        • 数据集
        • 处理步骤
        • 主成分法做因子分析
        • 最大似然法做因子分析

因子分析
  • 因子分析的用途与主成分分析类似,它也是一种降维方法。由于因子往往比主成分更易得到解释,故因子分析比主成分分析更容易成功,从而有更广泛的应用。

  • 从方法上来说,因子分析比主成分分析更为精细,自然理论上也就更为复杂。主成分分析只涉及一般的线性变换,不涉及模型,仅需假定二阶矩存在。而因子分析需建立一个数学模型,并作一定的假定。

  • 因子分析起源于20世纪初,K.皮尔逊(Pearson)和C.斯皮尔曼(Spearman)等学者为定义和测定智力所作的努力,主要是由对心理测量学有兴趣的科学家们培育和发展了因子分析。

  • 因子分析的目的是为了降维,降维的方式是试图用少数几个潜在的、不可观测的随机变量来描述原始变量间的协方差关系。

数据集

内置的mtcars数据框包含有关32辆汽车的信息,包括它们的重量,燃油效率(以每加仑英里为单位),速度等。

数据来自1974年美国汽车趋势杂志,包括32辆汽车(1973-74款)的油耗和10个方面的汽车设计和性能。

> help("mtcars")Motor Trend Car Road Tests
Description
The data was extracted from the 1974 Motor Trend US magazine, and comprises fuel consumption and 10 aspects of automobile design and performance for 32 automobiles (197374 models).Usage
mtcars
Format
A data frame with 32 observations on 11 (numeric) variables.[, 1]	mpg	Miles/(US) gallon
[, 2]	cyl	Number of cylinders
[, 3]	disp	Displacement (cu.in.)
[, 4]	hp	Gross horsepower
[, 5]	drat	Rear axle ratio
[, 6]	wt	Weight (1000 lbs)
[, 7]	qsec	1/4 mile time
[, 8]	vs	Engine (0 = V-shaped, 1 = straight)
[, 9]	am	Transmission (0 = automatic, 1 = manual)
[,10]	gear	Number of forward gears
[,11]	carb	Number of carburetors
Source
Henderson and Velleman (1981), Building multiple regression models interactively. Biometrics, 37, 391411.Examples
require(graphics)
pairs(mtcars, main = "mtcars data", gap = 1/4)
coplot(mpg ~ disp | as.factor(cyl), data = mtcars,panel = panel.smooth, rows = 1)
## possibly more meaningful, e.g., for summary() or bivariate plots:
mtcars2 <- within(mtcars, {vs <- factor(vs, labels = c("V", "S"))am <- factor(am, labels = c("automatic", "manual"))cyl  <- ordered(cyl)gear <- ordered(gear)carb <- ordered(carb)
})
summary(mtcars2)
处理步骤
  1. 根据研究的问题选取原始变量
  2. 对原始变量进行标准化并求出相关阵,分析变量之间的相关性
  3. 求解初始公因子及其因子载荷矩阵
  4. 因子旋转
  5. 计算因子得分
  6. 绘制因子载荷图,因子得分图
主成分法做因子分析
  • 不做因子旋转,使用原始数据
    因子数选择为3
library("psych")fac<-principal(mtcars,3,rotate="none")
fac
  • 不做因子旋转,使用相关系数矩阵
    有些题目直接给出相关系数矩阵,没有原始数据,也可以使用因子分析的主成分法,得到的结果相同

Standardized loadings:标准化后的载荷矩阵

Principal Components Analysis
Call: principal(r = R, nfactors = 3, rotate = "none")
Standardized loadings (pattern matrix) based upon correlation matrixPC1   PC2   PC3   h2    u2 com
mpg  -0.93  0.03 -0.18 0.90 0.099 1.1
cyl   0.96  0.07 -0.14 0.95 0.052 1.1
disp  0.95 -0.08 -0.05 0.90 0.095 1.0
hp    0.85  0.41  0.11 0.90 0.104 1.5
drat -0.76  0.45  0.13 0.79 0.212 1.7
wt    0.89 -0.23  0.27 0.92 0.081 1.3
qsec -0.52 -0.75  0.32 0.94 0.063 2.2
vs   -0.79 -0.38  0.34 0.88 0.122 1.8
am   -0.60  0.70 -0.16 0.88 0.120 2.1
gear -0.53  0.75  0.23 0.90 0.098 2.0
carb  0.55  0.67  0.42 0.93 0.069 2.6PC1  PC2  PC3
SS loadings           6.61 2.65 0.63
Proportion Var        0.60 0.24 0.06
Cumulative Var        0.60 0.84 0.90
Proportion Explained  0.67 0.27 0.06
Cumulative Proportion 0.67 0.94 1.00Mean item complexity =  1.7
Test of the hypothesis that 3 components are sufficient.The root mean square of the residuals (RMSR) is  0.03 Fit based upon off diagonal values = 1

从累积方差贡献率来看,取3个因子的累积方差贡献率为90%,取两个因子的累积方差贡献率为84%
因此我们可以将因子数减少到两个,有利于可视化分析

fac<-principal(mtcars,2,rotate="none")
facPrincipal Components Analysis
Call: principal(r = mtcars, nfactors = 2, rotate = "none")
Standardized loadings (pattern matrix) based upon correlation matrixPC1   PC2   h2    u2 com
mpg  -0.93  0.03 0.87 0.131 1.0
cyl   0.96  0.07 0.93 0.071 1.0
disp  0.95 -0.08 0.90 0.098 1.0
hp    0.85  0.41 0.88 0.116 1.4
drat -0.76  0.45 0.77 0.228 1.6
wt    0.89 -0.23 0.85 0.154 1.1
qsec -0.52 -0.75 0.83 0.165 1.8
vs   -0.79 -0.38 0.76 0.237 1.4
am   -0.60  0.70 0.85 0.146 2.0
gear -0.53  0.75 0.85 0.150 1.8
carb  0.55  0.67 0.76 0.244 1.9PC1  PC2
SS loadings           6.61 2.65
Proportion Var        0.60 0.24
Cumulative Var        0.60 0.84
Proportion Explained  0.71 0.29
Cumulative Proportion 0.71 1.00Mean item complexity =  1.5
Test of the hypothesis that 2 components are sufficient.The root mean square of the residuals (RMSR) is  0.05 with the empirical chi square  9.45  with prob <  1 Fit based upon off diagonal values = 0.99

可以发现,因子数从3个减少到2个时,使用主成分法,前两个主成分的方差贡献率不会变化。这跟最大似然法不同。

  • 绘制因子载荷图
#绘制因子载荷图
plot(fac1$loadings,xlab="Factor1",ylab="Factor2")
abline(h=0);abline(v=0)

在这里插入图片描述
可以发现很多点离两个因子都比较远,不好解释。

  • 主成分法,使用最大方差法进行因子旋转
    因子数选择为2,并计算因子得分
> #主成分法,方差最大化做因子正交旋转
> fac2<-principal(mtcars,2,rotate="varimax")
> fac2
Principal Components Analysis
Call: principal(r = mtcars, nfactors = 2, rotate = "varimax")
Standardized loadings (pattern matrix) based upon correlation matrixRC1   RC2   h2    u2 com
mpg   0.68 -0.63 0.87 0.131 2.0
cyl  -0.64  0.72 0.93 0.071 2.0
disp -0.73  0.60 0.90 0.098 1.9
hp   -0.32  0.88 0.88 0.116 1.3
drat  0.85 -0.21 0.77 0.228 1.1
wt   -0.80  0.46 0.85 0.154 1.6
qsec -0.16 -0.90 0.83 0.165 1.1
vs    0.30 -0.82 0.76 0.237 1.3
am    0.92  0.08 0.85 0.146 1.0
gear  0.91  0.17 0.85 0.150 1.1
carb  0.08  0.87 0.76 0.244 1.0RC1  RC2
SS loadings           4.67 4.59
Proportion Var        0.42 0.42
Cumulative Var        0.42 0.84
Proportion Explained  0.50 0.50
Cumulative Proportion 0.50 1.00Mean item complexity =  1.4
Test of the hypothesis that 2 components are sufficient.The root mean square of the residuals (RMSR) is  0.05 with the empirical chi square  9.45  with prob <  1 Fit based upon off diagonal values = 0.99> #计算因子得分
> fac2$scoresRC1        RC2
Mazda RX4            0.913545261  0.5740734
Mazda RX4 Wag        0.827547997  0.5013891
Datsun 710           0.698816380 -0.8074274
Hornet 4 Drive      -0.913638812 -1.1047271
Hornet Sportabout   -0.859350144  0.2025926
Valiant             -1.162422544 -1.2190911
Duster 360          -0.680268641  0.9486423
Merc 240D           -0.056857408 -1.1835017
Merc 230            -0.212468151 -1.4696568
Merc 280             0.075581300 -0.2109478
Merc 280C            0.002444315 -0.2763119
Merc 450SE          -0.904174186  0.3064233
Merc 450SL          -0.849329738  0.2529898
Merc 450SLC         -0.927001103  0.2287337
Cadillac Fleetwood  -1.417403948  0.6862707
Lincoln Continental -1.392296773  0.7416873
Chrysler Imperial   -1.161445427  0.7799435
Fiat 128             0.930026590 -1.1606987
Honda Civic          1.455372982 -0.8414166
Toyota Corolla       1.040852468 -1.2543364
Toyota Corona       -0.374988630 -1.4259630
Dodge Challenger    -1.026764303  0.1466255
AMC Javelin         -0.893224853  0.1071275
Camaro Z28          -0.502907752  1.0677154
Pontiac Firebird    -0.984122353  0.2236560
Fiat X1-9            0.926969145 -1.0092451
Porsche 914-2        1.590766193  0.1745827
Lotus Europa         1.509486177 -0.3106522
Ford Pantera L       1.103849172  1.8802235
Ferrari Dino         1.361140948  1.3909629
Maserati Bora        1.120968759  2.6074298
Volvo 142E           0.761297080 -0.5470932
> 

因子旋转之后,每个变量在某个因子上的载荷接近正负1,而在另一个因子上的载荷接近0,有助于我们进行解释分析。

  • 绘制新的因子载荷图
#绘制因子载荷图
plot(fac2$loadings,xlab="Factor1",ylab="Factor2")
abline(h=0);abline(v=0)

在这里插入图片描述

  • 绘制因子得分图
#绘制每个学生的因子得分图与原坐标在因子上的方向,反应因子与原始数据的关系
biplot(fac2$scores,fac2$loadings)

在这里插入图片描述

  • 主成分法分析
因子数有无因子旋转因子1方差贡献率因子1方差贡献率两因子累积贡献率
因子数为2无因子旋转60%24%84%
因子数为2有因子旋转42%42%84%
因子数为3无因子旋转60%24%84%
因子数为3有因子旋转41%29%70%

结论1:进行因子旋转会改变各因子的方差贡献率,但不会改变总方差贡献率
结论2:因子数不同,不进行因子旋转时,因子的方差贡献率不变

最大似然法做因子分析
  • 不做因子旋转
#用极大似然法做因子分析
factanal(mtcars,factors = 2,rotation = "none")Call:
factanal(x = mtcars, factors = 2, rotation = "none")Uniquenesses:mpg   cyl  disp    hp  drat    wt  qsec    vs    am 
0.167 0.070 0.096 0.143 0.298 0.168 0.150 0.256 0.171 gear  carb 
0.246 0.386 Loadings:Factor1 Factor2
mpg  -0.910         
cyl   0.962         
disp  0.946         
hp    0.851   0.364 
drat -0.726   0.418 
wt    0.867  -0.283 
qsec -0.533  -0.752 
vs   -0.783  -0.362 
am   -0.578   0.703 
gear -0.514   0.700 
carb  0.537   0.571 Factor1 Factor2
SS loadings      6.439   2.412
Proportion Var   0.585   0.219
Cumulative Var   0.585   0.805Test of the hypothesis that 2 factors are sufficient.
The chi square statistic is 68.57 on 34 degrees of freedom.
The p-value is 0.000405 

相对来说,因子载荷矩阵中,各变量在第一个因子上的载荷都比较大,不好解释,需要进行因子旋转。
前两个因子的累积方差解释率达到80.5%,满足要求。

  • 进行因子旋转
> factanal(mtcars,factors = 2,rotation = "varimax")Call:
factanal(x = mtcars, factors = 2, rotation = "varimax")Uniquenesses:mpg   cyl  disp    hp  drat    wt  qsec    vs    am 
0.167 0.070 0.096 0.143 0.298 0.168 0.150 0.256 0.171 gear  carb 
0.246 0.386 Loadings:Factor1 Factor2
mpg   0.686  -0.602 
cyl  -0.629   0.731 
disp -0.730   0.609 
hp   -0.337   0.862 
drat  0.807  -0.225 
wt   -0.810   0.420 
qsec -0.162  -0.908 
vs    0.291  -0.812 
am    0.907         
gear  0.860   0.125 
carb          0.783 Factor1 Factor2
SS loadings      4.494   4.357
Proportion Var   0.409   0.396
Cumulative Var   0.409   0.805Test of the hypothesis that 2 factors are sufficient.
The chi square statistic is 68.57 on 34 degrees of freedom.
The p-value is 0.000405
  • 因子数取3
> factanal(mtcars,factors = 3,rotation = "none")Call:
factanal(x = mtcars, factors = 3, rotation = "none")Uniquenesses:mpg   cyl  disp    hp  drat    wt  qsec    vs    am 
0.135 0.055 0.090 0.127 0.290 0.060 0.051 0.223 0.208 gear  carb 
0.125 0.158 Loadings:Factor1 Factor2 Factor3
mpg  -0.910   0.137  -0.136 
cyl   0.962          -0.135 
disp  0.937  -0.174         
hp    0.875   0.292   0.147 
drat -0.689   0.453   0.175 
wt    0.858  -0.382   0.242 
qsec -0.591  -0.754   0.177 
vs   -0.809  -0.309   0.164 
am   -0.522   0.719         
gear -0.459   0.729   0.365 
carb  0.594   0.517   0.471 Factor1 Factor2 Factor3
SS loadings      6.448   2.465   0.565
Proportion Var   0.586   0.224   0.051
Cumulative Var   0.586   0.810   0.862Test of the hypothesis that 3 factors are sufficient.
The chi square statistic is 30.53 on 25 degrees of freedom.
The p-value is 0.205 

此时可以发现,最大似然法在改变因子个数时,不同因子的方差贡献率发生改变(虽然改变很小),其中因子1达到58.6%,因子2达到22.4%,前两个因子累积方差贡献率为81%。

  • 因子数取3,进行因子旋转

对极大似然解,当因子数增加时,原来因子的估计载荷及对x的贡献将发生变化,这与主成分解不同。因子数可由主成分法初步确定。

> factanal(mtcars,factors = 3,rotation = "varimax")Call:
factanal(x = mtcars, factors = 3, rotation = "varimax")Uniquenesses:mpg   cyl  disp    hp  drat    wt  qsec    vs    am 
0.135 0.055 0.090 0.127 0.290 0.060 0.051 0.223 0.208 gear  carb 
0.125 0.158 Loadings:Factor1 Factor2 Factor3
mpg   0.643  -0.478  -0.473 
cyl  -0.618   0.703   0.261 
disp -0.719   0.537   0.323 
hp   -0.291   0.725   0.513 
drat  0.804  -0.241         
wt   -0.778   0.248   0.524 
qsec -0.177  -0.946  -0.151 
vs    0.295  -0.805  -0.204 
am    0.880                 
gear  0.908           0.224 
carb  0.114   0.559   0.719 Factor1 Factor2 Factor3
SS loadings      4.380   3.520   1.578
Proportion Var   0.398   0.320   0.143
Cumulative Var   0.398   0.718   0.862Test of the hypothesis that 3 factors are sufficient.
The chi square statistic is 30.53 on 25 degrees of freedom.
The p-value is 0.205 

因子数取3,进行因子旋转之后,因子1的方差解释率下降到39.8%,前两个因子累积贡献率达到71.8%,发生变化。

  • 最大似然法分析
因子数有无因子旋转因子1方差贡献率因子1方差贡献率两因子累积贡献率
因子数为2无因子旋转58.5%21.9%80.5%
因子数为2有因子旋转40.9%39.6%80.5%
因子数为3无因子旋转58.6%22.4%81%
因子数为3有因子旋转39.8%32%71.8%

结论1:进行因子旋转会改变各因子的方差贡献率以及总方差贡献率
结论2:因子数不同也会改变各因子的方差贡献率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/164231.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

创建QDialog工程

创建QDialog工程 换掉图标 添加一个组件 水平布局 所有原件横向布局完成后&#xff0c;选中外框&#xff0c;点击Dialog,进行纵向布局 调整文本字体的大小 清空按钮的槽函数 下划线的槽函数 斜体的槽函数 加粗的槽函数 或者使用快剪辑&#xff1a;…

广告牌安全传感器怎么用?为城市能起到什么效果?

随着城市的迅速发展和经济的快速增长&#xff0c;广告牌在城市中扮演着越来越重要的角色。但是近年来广告牌缺乏修缮和维护&#xff0c;广告牌所带来的安全隐患逐年增加。 广告牌作为城市的明信片&#xff0c;出现损坏&#xff0c;且具有一定的安全隐患之后&#xff0c;给城市带…

家装、家居两不误,VR全景打造沉浸式家装体验

当下&#xff0c;用户对生活品质要求日益提升&#xff0c;越来越多的用户对多功能家装用品需求较大&#xff0c;由此造就了VR全景家装开始盛行。VR全景家装打破传统二维空间模式&#xff0c;通过视觉、交互等功能让用户更加真实、直观的体验和感受家居布置的效果。 一般来说&am…

图详解第五篇:单源最短路径--Bellman-Ford算法

文章目录 单源最短路径--Bellman-Ford算法1. 算法思想2. 图解3. 代码实现4. 测试5. 优化循环的提前跳出队列优化 6. 负权回路&#xff08;负权环&#xff09;判定7. 源码 Dijkstra算法只能用来解决正权图的单源最短路径问题&#xff0c;但有些题目会出现负权图。这时这个算法就…

服务器中了locked勒索病毒怎么办,勒索病毒解密,数据恢复

最近一段时间内&#xff0c;相信很多使用金蝶或用友的办公软件的企业&#xff0c;有很多都经历了locked勒索病毒的攻击&#xff0c;导致企业服务器被加密无法正常使用&#xff0c;严重影响了企业的正常工作。通过云天数据恢复中心的解密恢复发现&#xff0c;在今年locked勒索病…

页面查询多项数据组合的线程池设计 | 京东云技术团队

背景 我们应对并发场景时一般会采用下面方式去预估线程池的线程数量&#xff0c;比如QPS需求是1000&#xff0c;平均每个任务需要执行的时间是t秒&#xff0c;那么我们需要的线程数是t * 1000。 但是在一些情况下&#xff0c;这个t是不好估算的&#xff0c;即便是估算出来了&…

解决 sharp: Installation error: unable to verify the first certificate

使用 plasmo 时报错如下&#xff1a; E:\chromeplugins>pnpm create plasmo ../.pnpm-store/v3/tmp/dlx-46852 | 2 ../.pnpm-store/v3/tmp/dlx-46852 | Progress: resolved 2, reused 2, downloaded 0, added 2, done &#x1f7e3; Plasmo v0.83.0 &…

华为---企业WLAN组网基本配置示例---AC+AP组网

ACAP组网所需的物理条件 1、无线AP---收发无线信号&#xff1b; 2、无线控制器(AC)---用来控制管理多个AP&#xff1b; 3、PoE交换机---能给AP实现网络连接和供电的交换机&#xff1b; 4、授权&#xff1a;默认AC管理的AP数量有限&#xff0c;买授权才能管控更多AP。 WLAN创建…

苹果开发者 Xcode发布TestFlight全流程

打包前注意事项 使用Xcode导出安装包之前&#xff0c;必须先确认账户的所有合约是否全部同意&#xff0c;如果有不同意的&#xff0c;在出包的时候会弹出报错 这是什么意思 这意味着您有一些需要在应用商店连接上验证的协议(protocol)/契约(Contract)。解决方案 连接到应用商店…

百度的新想象力在哪?

理解中国大模型&#xff0c;百度是一个窗口。这个窗口的特殊性不仅在于变化本身&#xff0c;而是在于百度本身就是那个窗口。 作者|皮爷 出品|产业家 沿着首钢园北区向西北步行10分钟&#xff0c;就能看到一个高约90米的大跳台&#xff0c;在工业园钢铁痕迹的印衬下&#…

Vue-vue项目Element-UI 表单组件内容要求判断

整体添加判断 <el-formref"ruleFormRef":model"formModel"class"demo-ruleForm"label-position"top"status-icon:rules"rules"><el-form-item label"姓名" prop"applyUsers" class"form-…

[云原生1.]Docker数据管理与Cgroups资源控制管理

文章目录 1. Docker的数据管理1.1 数据卷1.1.1 示例 1.2 数据卷容器 2. 容器互联3. Cgroups资源控制管理3.1 简介3.2 cgroups的主要功能3.3 cpu时间片的简单介绍3.4 对CPU使用的限制3.4.1 对CPU使用的限制&#xff08;基于单个容器&#xff09;3.4.2 对CPU使用的限制&#xff0…

vue3中computed的用法

一、完整代码 <template><div class"about"><h1>Computed的用法</h1><h3>姓:{{ person.firstName }}</h3><input type"text" v-model"person.firstName"><h3>名:{{ person.lastName }}</h3…

【PXIE301-211】基于PXIE总线的16路并行LVDS数据采集、4路低速、2路隔离RS422数据处理平台

板卡概述 PXIE301-211A是一款基于PXIE总线架构的16路高速LVDS、4路低速LVDS采集、2路隔离RS422数据处理平台&#xff0c;该平台板卡采用Xilinx的高性能Kintex 7系列FPGA XC7K325T作为实时处理器&#xff0c;实现各个接口之间的互联。板载1组64位的DDR3 SDRAM用作数据缓存。板卡…

【UE】纯蓝图实现:在游戏运行时设置关键点,然后让actor沿着关键点移动

前言 在上一篇博客(【UE】两步实现“从UI中拖出Actor放置到场景中”)中我们已经实现了如何从UI拖拽生成Actor ,本篇博客在此基础上要实现的是:从UI中拖出车,再从UI中拖出关键点,点击“开始移动”按钮后,车会沿着关键点移动,具体效果如下所示。 效果 步骤 1. 首先创建…

Flink学习之旅:(三)Flink源算子(数据源)

1.Flink数据源 Flink可以从各种数据源获取数据&#xff0c;然后构建DataStream 进行处理转换。source就是整个数据处理程序的输入端。 数据集合数据文件Socket数据kafka数据自定义Source 2.案例 2.1.从集合中获取数据 创建 FlinkSource_List 类&#xff0c;再创建个 Student 类…

ps或游戏提示d3dcompiler_47.dll缺失怎么修复?常见的修复方法总结

在当今这个信息化的时代&#xff0c;计算机已经成为我们生活和工作中不可或缺的一部分。然而&#xff0c;随着软件的不断更新和升级&#xff0c;一些技术问题也时常困扰着我们。其中&#xff0c;d3dcompiler_47.dll缺失就是一个常见的问题。本文将详细介绍五种修复方案&#xf…

性能超越 Clickhouse | 物联网场景中的毫秒级查询案例

1 物联网应用场景简介 物联网&#xff08;Internet of Things&#xff0c;简称 IoT&#xff09;是指通过各种信息传感、通信和 IT 技术来实时连接、采集、监管海量的传感设备&#xff0c;从而实现对现实世界的精确感知和快速响应&#xff0c;继而实现自动化、智能化管理。在查…

Visual Studio2019 与 MySQL连接 版本关系

Refer: VS 连接MySQL | mysql-for-visualstudio 的安装-CSDN博客 【精选】用VS2019&#xff08;C#&#xff09;连接MYSQL(从0入门&#xff0c;手把手教学&#xff09;_mysql-for-visualstudio-1.2.9.msi_Flying___rabbit的博客-CSDN博客 一、工具&#xff1a;VS2019需要连接M…

gin框架39--重构 BasicAuth 中间件

gin框架39--重构 BasicAuth 中间件 介绍gin BasicAuth 解析自定义newAuth实现基础认证注意事项说明 介绍 每当我们打开一个网址的时候&#xff0c;会自动弹出一个认证界面&#xff0c;要求我们输入用户名和密码&#xff0c;这种BasicAuth是最基础、最常见的认证方式&#xff0…