因子分析类
factor-analyzer的Python项目详细描述
工厂分析器
这是一个python模块,用于执行探索性和因素分析(efa),其中有几个 可选旋转。它还包括一个类来执行确认因子 分析(CFA),具有某些预定义的约束。在指数因子分析中, 可以使用各种估计技术来执行因子提取。这个 factor_analyzer包允许用户至少使用(1)个 残差(MILRESs)解,(2)最大似然(ML)解,或(3)主元 因子解。然而,cfa只能使用ml溶液进行。
这个包中的efa和cfa类都与scikit learn完全兼容。 部分代码从优秀的r库psych和sem移植而来。 包装为CFA课程提供了灵感。
请参阅official documentation了解更多详细信息。
说明
探索性因素分析(EFA)是一种用于 识别一组观测变量之间的潜在关系 数据集。特别是,efa试图建立一个观察到的 变量是一些未观测到的较小集合的线性组合, 潜在因素。生成的权重矩阵或因子载荷 从一个efa模型描述了 变量和潜在因素。
验证性因素分析(cfa)是一种密切相关的技术。 用于检验集合之间潜在关系的先验假设 观察到的变量。在cfa中,研究人员指定了预期的模式 因子加载(可能还有其他约束),并根据 符合本规范。
通常,在EFA或CFA模型中选择若干因子(k) 这样它就大大小于变量的数目。这个 因子分析模型可以使用多种标准进行估计 估计方法,包括但不限于minres或ml。
因子负荷与标准回归系数相似,且 对某一特定因素具有较高负荷的变量可以解释为 解释了这个因素变化的更大比例。在 对于efa,因子加载矩阵通常在因子之后旋转 分析模型是为了产生一个更简单,更易于解释的 结构以确定哪些变量加载到特定因子上。
两种常见的旋转类型是:
- 旋转varimax旋转因子加载矩阵,从而 为了最大化平方载荷方差的和,而 保持加载矩阵的正交性。
- promax旋转,一种用于斜旋转的方法,它构建 在varimax旋转时,但最终允许因子 相关的。
此包包含一个factor_analyzer模块,其中包含一个独立的 FactorAnalyzer类。类包括fit()和transform() 使用户能够执行因子分析和为新数据评分的方法 使用拟合因子模型。用户还可以执行可选的旋转 在因子加载矩阵上使用Rotator类。
以下旋转选项在^{tt3}中都可用$ 以及Rotator:
- varimax (orthogonal rotation)
- promax (oblique rotation)
- oblimin (oblique rotation)
- oblimax (orthogonal rotation)
- quartimin (oblique rotation)
- quartimax (orthogonal rotation)
- equamax (orthogonal rotation)
此外,包还包括一个confirmatory_factor_analyzer 具有独立ConfirmatoryFactorAnalyzer类的模块。这个 类包括fit()和transform(),它们允许用户执行 验证性因素分析,并使用拟合模型评分新数据。 执行cfa要求用户预先指定一个模型规范 与预期的因子加载关系。这可以用 ModelSpecificationParser类。
示例
探索性因素分析实例。
In[1]:importpandasaspd...:fromfactor_analyzerimportFactorAnalyzerIn[2]:df_features=pd.read_csv('tests/data/test02.csv')In[3]:fa=FactorAnalyzer(rotation=None)In[4]:fa.fit(df_features)Out[4]:FactorAnalyzer(bounds=(0.005,1),impute='median',is_corr_matrix=False,method='minres',n_factors=3,rotation=None,rotation_kwargs={},use_smc=True)In[5]:fa.loadings_Out[5]:array([[-0.12991218,0.16398151,0.73823491],[0.03899558,0.04658425,0.01150343],[0.34874135,0.61452341,-0.07255666],[0.45318006,0.7192668,-0.0754647],[0.36688794,0.44377343,-0.01737066],[0.74141382,-0.15008235,0.29977513],[0.741675,-0.16123009,-0.20744497],[0.82910167,-0.20519428,0.04930817],[0.76041819,-0.23768727,-0.12068582],[0.81533404,-0.12494695,0.17639684]])In[6]:fa.get_communalities()Out[6]:array([0.5887579,0.00382308,0.50452402,0.72841182,0.33184336,0.66208429,0.61911037,0.73194557,0.64929612,0.71149718])
验证性因素分析实例。
In[1]:importpandasaspdIn[2]:fromfactor_analyzerimport(ConfirmatoryFactorAnalyzer,...:ModelSpecificationParser)In[3]:df_features=pd.read_csv('tests/data/test11.csv')In[4]:model_dict={"F1":["V1","V2","V3","V4"],...:"F2":["V5","V6","V7","V8"]}In[5]:model_spec=ModelSpecificationParser.parse_model_specification_from_dict(df_features,...:model_dict)In[6]:cfa=ConfirmatoryFactorAnalyzer(model_spec,disp=False)In[7]:cfa.fit(df_features.values)In[8]:cfa.loadings_Out[8]:array([[0.99131285,0.],[0.46074919,0.],[0.3502267,0.],[0.58331488,0.],[0.,0.98621042],[0.,0.73389239],[0.,0.37602988],[0.,0.50049507]])In[9]:cfa.factor_varcovs_Out[9]:array([[1.,0.17385704],[0.17385704,1.]])In[10]:cfa.transform(df_features.values)Out[10]:array([[-0.46852166,-1.08708035],[2.59025301,1.20227783],[-0.47215977,2.65697245],...,[-1.5930886,-0.91804114],[0.19430887,0.88174818],[-0.27863554,-0.7695101]])
要求
- python 3.4或更高版本
- ^{tt(TT)14}$
- pandas
- scipy
- scikit-learn
贡献
非常欢迎向factor_analyzer捐款。请提出问题 在github上,或者联系jbiggs@ets.org如果您想贡献。
安装
您可以通过pip使用以下命令安装此软件包:
$ pip install factor_analyzer
或者,您也可以通过conda安装:
$ conda install -c ets factor_analyzer
许可证
GNU通用公共许可证(>;=2)