使用Python库sklearn.decomposition.FactorAnalysis对1个因子和2个载荷模型的负因子载荷?

时间:2018-10-23 06:59:40

标签: python r scikit-learn factor-analysis r-lavaan

我正在尝试使用验证性因子分析(CFA)从两个变量(按5点李克特量表测量)中获得一个因子。我知道具有1个因子和2个负载的模型的自由度是-1,因此该模型的规格不足。但是,我已经看到了模型,其中两个变量用作单个基础因素的负荷。

我尝试使用sklearn在Python中运行CFA,但是对于这两种负载,它都返回负因子负载,我认为这是不正确的。

Python代码(带有数据):

import sklearn.decomposition as skd
x = [[2., 4.], [1., 2.], [1., 1.], [2., 2.], [2., 2.], [2., 1.], [1., 1.], [2., 2.], [3., 2.], [2., 2.], [1., 2.], [1., 1.], [2., 2.], [2., 2.], [1., 1.], [3., 3.], [1., 1.], [1., 1.], [1., 1.], [1., 1.], [1., 1.], [0., 0.], [2., 2.], [2., 2.], [2., 2.], [2., 2.], [2., 2.], [1., 1.], [2., 2.], [2., 2.], [2., 2.], [2., 2.], [2., 2.], [2., 2.], [1., 1.], [2., 2.], [2., 2.], [1., 1.], [2., 2.], [2., 1.], [2., 2.], [3., 2.], [1., 1.], [1., 1.], [1., 1.], [2., 2.], [1., 1.], [1., 1.], [1., 1.], [1., 1.], [2., 2.], [1., 1.], [2., 4.], [2., 2.], [1., 1.], [2., 2.], [2., 2.], [3., 2.], [3., 2.], [1., 1.], [1., 1.], [2., 2.], [1., 1.], [1., 1.], [1., 2.], [1., 1.], [1., 1.], [2., 2.], [3., 3.], [1., 1.], [1., 1.], [1., 1.], [1., 1.], [2., 3.], [3., 3.], [2., 2.], [2., 2.], [1., 1.], [1., 1.], [1., 1.], [1., 1.], [1., 1.], [2., 2.], [1., 1.], [2., 2.], [1., 1.], [3., 3.], [2., 2.], [2., 2.], [2., 2.], [2., 2.], [1., 1.], [1., 1.], [2., 2.], [1., 1.], [1., 1.], [1., 1.], [1., 1.], [2., 2.], [2., 2.], [2., 2.], [1., 1.], [1., 2.], [2., 2.], [2., 2.], [2., 2.], [2., 2.], [2., 1.], [2., 2.], [1., 1.], [1., 1.], [2., 2.], [1., 1.], [1., 1.], [1., 1.], [1., 1.], [2., 2.], [2., 2.], [1., 2.], [1., 1.], [1., 1.], [2., 2.]]

skd.FactorAnalysis(n_components=1).fit(x).components_[0]

输出:

array([-0.55779804, -0.58890195])

我还尝试使用'lavaan'库在R中运行CFA,它返回以下错误:

  

lav_model_vcov中的警告消息(lavmodel = lavmodel,lavsamplestats   = lavsamplestats,:“ lavaan警告:       无法计算标准错误!信息矩阵可以       不可倒转。这可能是模型不存在的症状       确定。”

我是CFA和结构方程模型(SEM)的新手,如果有人能向我解释我的错误(或者我应该说错了!),我将不胜感激。

1 个答案:

答案 0 :(得分:0)

最新答案,我知道。...

正如您所说,真正的问题是您没有足够的自由度:您需要三个指标来单独估计潜在变量。是的,对于给定的潜在变量,存在具有两个指标的模型,但只有在该潜能与一个或多个其他潜在相关时,它们才起作用。

具有足够的自由度,您将永远不会遇到所有荷载均为负的问题,因为一个荷载总是(任意)固定为1。请注意,如果一个或多个荷载为负,则可以切换通过切换哪个指标的固定负载为1来确定潜在标度的方向-但这不会改变模型的基础数学。 (当然,如果您将一个荷载固定为-1或其他任何负数,则肯定会遇到所有荷载均为负的情况,但是很少有这样做的充分理由,无论如何,再次,基本数学将是相同的。)

但是,如果您正在执行CFA,我不希望您使用该特定的scikit-learn类,该类旨在用于探索性因子分析(EFA)。我想这可能仅适用于一个潜在因素(而且sklearn没有CFA类)。