因子分析的一个小例子

2023-10-31 10:50
文章标签 例子 因子分析

本文主要是介绍因子分析的一个小例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是学习笔记的第 1997 篇文章


  今天做了下因子分析中的东东,本来想找一些公共网站的数据,限于时间和要做一些数据整理,时间来不及,就找了一个现成的数据源。 

这是洛杉矶等十二个大都市的人口调查获得的,包含了5个社会以经济变量:人口总数,居民受教育年限,佣人总数,服务行业人数,中等的房价。

为了方便我把数据集先提供出来。

人口(X1)教育年限(X2)佣人数(X3)服务人数(X4)房价(X5)
570012.8250027025000
100010.96001010000
34008.81000109000
380013.6170014025000
400012.8160014025000
82008.326006012000
120011.44001016000
910011.533006014000
990012.5340018018000
960013.7360039025000
96009.633008012000
940011.4400010013000

 我们把数据存储在excel里面,然后使用R语言来做分析。

首先导入数据,如果程序包openxlsx没有的话,就在R语言里安装下依赖。假设文件的路径是   D:\\yinzifenxi.xlsx

library(openxlsx)

读取excel的数据

data1 <- read.xlsx("D:\\yinzifenxi.xlsx" )

输出部分信息

> head(data1)

  人口(X1) 教育(X2) 佣人(X3) 服务(X4) 房价(X5)

1     5700     12.8     2500      270    25000

2     1000     10.9      600       10    10000

3     3400      8.8     1000       10     9000

4     3800     13.6     1700      140    25000

5     4000     12.8     1600      140    25000

6     8200      8.3     2600       60    12000

> data1_cor <- cor(data1)

> head(cor(data1),5)

         

> head(cor(data1),5)

           人口(X1)   教育(X2)  佣人(X3)  服务(X4)   房价(X5)

人口(X1) 1.00000000 0.00975059 0.9724483 0.4388708 0.02241157

教育(X2) 0.00975059 1.00000000 0.1542838 0.6914082 0.86307009

佣人(X3) 0.97244826 0.15428378 1.0000000 0.5147184 0.12192599

服务(X4) 0.43887083 0.69140824 0.5147184 1.0000000 0.77765425

房价(X5) 0.02241157 0.86307009 0.1219260 0.7776543 1.00000000

> library(psych)

确定因子数量

> fa.parallel(data1_cor, n.obs = 112, fa = "both", n.iter = 100)

Parallel analysis suggests that the number of factors =  2  and the number of components =  2 

There were 18 warnings (use warnings() to see them)

得到的碎石图如下:

640?wx_fmt=png

从这样的数据分析可以看到前2个会占据主要的部分,保留2个主成分即可。

接下来要做因子分析了,第一个参数是数据,第二个参数说明要保留两个主成分,第三个参数为旋转方法,为none,先不进行主成分旋转,第四个参数表示提取公因子的方法为最大似然法,不是机器学习的意思。 

> fa_model1 <- fa(data1_cor, nfactors = 2, rotate = "none", fm = "ml")

输出分析的结果内容:

> fa_model1

Factor Analysis using method =  ml

Call: fa(r = data1_cor, nfactors = 2, rotate = "none", fm = "ml")

Standardized loadings (pattern matrix) based upon correlation matrix

           ML2  ML1   h2    u2 com

人口(X1) -0.03 1.00 1.00 0.005 1.0

教育(X2)  0.90 0.04 0.81 0.193 1.0

佣人(X3)  0.09 0.98 0.96 0.036 1.0

服务(X4)  0.78 0.46 0.81 0.185 1.6

房价(X5)  0.96 0.05 0.93 0.074 1.0

                       ML2  ML1

SS loadings           2.34 2.16

Proportion Var        0.47 0.43

Cumulative Var        0.47 0.90

Proportion Explained  0.52 0.48

Cumulative Proportion 0.52 1.00

Mean item complexity =  1.1

Test of the hypothesis that 2 factors are sufficient.

The degrees of freedom for the null model are  10  and the objective function was  6.38

The degrees of freedom for the model are 1  and the objective function was  0.31 

The root mean square of the residuals (RMSR) is  0.01 

The df corrected root mean square of the residuals is  0.05 

Fit based upon off diagonal values = 1

Measures of factor score adequacy             

                                                   ML2  ML1

Correlation of (regression) scores with factors   0.98 1.00

Multiple R square of scores with factors          0.95 1.00

Minimum correlation of possible factor scores     0.91 0.99

为了减少误差,需要做因子旋转,这里使用的是正交旋转法,

> fa_model2 <- fa(data1_cor, nfactors = 2, rotate = "varimax", fm = "ml")

分析结果如下:

> fa_model2

Factor Analysis using method =  ml

Call: fa(r = data1_cor, nfactors = 2, rotate = "varimax", fm = "ml")

Standardized loadings (pattern matrix) based upon correlation matrix

          ML2  ML1   h2    u2 com

人口(X1) 0.02 1.00 1.00 0.005 1.0

教育(X2) 0.90 0.00 0.81 0.193 1.0

佣人(X3) 0.14 0.97 0.96 0.036 1.0

服务(X4) 0.80 0.42 0.81 0.185 1.5

房价(X5) 0.96 0.00 0.93 0.074 1.0

                       ML2  ML1

SS loadings           2.39 2.12

Proportion Var        0.48 0.42

Cumulative Var        0.48 0.90

Proportion Explained  0.53 0.47

Cumulative Proportion 0.53 1.00

Mean item complexity =  1.1

Test of the hypothesis that 2 factors are sufficient.

The degrees of freedom for the null model are  10  and the objective function was  6.38

The degrees of freedom for the model are 1  and the objective function was  0.31 

The root mean square of the residuals (RMSR) is  0.01 

The df corrected root mean square of the residuals is  0.05 

Fit based upon off diagonal values = 1

Measures of factor score adequacy             

                                                   ML2  ML1

Correlation of (regression) scores with factors   0.98 1.00

Multiple R square of scores with factors          0.95 1.00

Minimum correlation of possible factor scores     0.91 0.99

可以看到方差比例不变,但在各观测值上的载荷发生了改变

使用factor.plot函数对旋转结果进行可视化:

> factor.plot(fa_model2)

640?wx_fmt=png

继续渲染,得到一个较为清晰的列表

> fa.diagram(fa_model2, simple = FALSE)

640?wx_fmt=png

到了这里,我们可以看到,因子1和房价,教育年限和服务人口数相关,可以抽象为经济发展因子,而因子2和人口数,佣人数相关,我们可以抽象成人口规模因子。

以上仅供参考。 

640?

这篇关于因子分析的一个小例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/314840

相关文章

JavaFX环境的搭建和一个简单的例子

之前在网上搜了很多与javaFX相关的资料,都说要在Eclepse上要安装sdk插件什么的,反正就是乱七八糟的一大片,最后还是没搞成功,所以我在这里写下我搭建javaFX成功的环境给大家做一个参考吧。希望能帮助到你们! 1.首先要保证你的jdk版本能够支持JavaFX的开发,jdk-7u25版本以上的都能支持,最好安装jdk8吧,因为jdk8对支持JavaFX有新的特性了,比如:3D等;

javaScript日期相加减例子

当前时间加上2天 var d = new Date(“2015-7-31”); d.setDate(d.getDate()+2); var addTwo=d.getFullYear()+”年”+(d.getMonth()+1)+”月”+d.getDate()+”日”; “控制台输出===============”+”当前日期加2天:”+addTwo; 使用这种方法,月份也会给你计算.

设计模式大全和详解,含Python代码例子

若有不理解,可以问一下这几个免费的AI网站 https://ai-to.cn/chathttp://m6z.cn/6arKdNhttp://m6z.cn/6b1quhhttp://m6z.cn/6wVAQGhttp://m6z.cn/63vlPw 下面是设计模式的简要介绍和 Python 代码示例,涵盖主要的创建型、结构型和行为型模式。 一、创建型模式 1. 单例模式 (Singleton

JSP 简单表单显示例子

<html><!--http://localhost:8080/test_jsp/input.html --><head><meta http-equiv="Content-Type" content="text/HTML; charset=utf-8"><title>input页面</title></head><body><form action="input.jsp" method

shell循环sleep while例子 条件判断

i=1# 小于5等于时候才执行while [ ${i} -le 5 ]doecho ${i}i=`expr ${i} + 1`# 休眠3秒sleep 3doneecho done 参考 http://c.biancheng.net/cpp/view/2736.html

【ReactJS】通过一个例子学习React组件的生命周期

源代码 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Reac

简单的android Listview使用例子

为了熟悉Listview的使用,做了一个小例子联系一下, 主要步骤: 1. 在MainActivity中,创建一个adapter对象(可以是android自带的ArrayAdapter,也可以是自定义的如SongAdapter) 2. 如果自定义,就要创建ListView的子项,如song_listview_item.xml 3. 创建ListView对象,并用setAdapter方法把a

【 python pymongo】使用pymongo的例子

MongoDB优点 MongoDB是一个为当代web应用而生的noSQL数据库,它有如下优点: 1、文档型存储。可以把关系型数据库的表理解为一个电子表格,列表示字段,每行的记录其实是按照列的字段顺序排列的值得元组。而存储在MongoDB中的文档被存储为键-值对的形式,值却可以是任意类型且可以嵌套。之前在用关系型数据库的时候,我们把产品信息打散到不同的表中,要通过关系表或者使用join拼接成复杂

c:if test=/c:if如何判断空(使用例子)

userName是登录的时候放到session中了 <c:if test="${ not empty userName }">这表示userName判断不为null `<c:if test="${empty userName }"> ` 这表示userName判断为null 使用案例 <c:if test="${ not empty userName }"><ul><li><a

CSS学习6--背景图片、颜色、位置、附着、简写、透明、缩放、多背景、凹凸文字、导航栏例子

CSS背景 一、背景颜色和图片二、背景位置三、背景附着四、背景简写五、背景透明六、背景缩放七、多背景八、凹凸文字九、导航栏例子 一、背景颜色和图片 background-color: pink; 背景颜色backgroundoimage: url(##.jpg); 背景图片background-repeat: 平铺 repeat-x横向平铺,repeat-y纵向平铺; 平铺不到