【问题标题】:Factor Analysis in Python and StataPython和Stata中的因子分析
【发布时间】:2021-10-19 14:12:22
【问题描述】:

我有一个包含 29 个项目的数据集要运行探索性因素分析。我已经在 Python 和 Stata 中使用相同的因素实现了这个数据集,但我有两个不同的结果。实际上它们是不同的,因为我确定了特征值:在 Python 中是 4,​​但在 Stata 中只有 2。

为什么会有这样的差异,我应该采取哪种结果? 这是我的代码 蟒蛇

df = df[df.g1 == 3]
fa = FactorAnalyzer()
fa.set_params(n_factors=6) # so factor
fa.fit(df)
fa.loadings_
fa_loading_df = pd.DataFrame(fa.loadings_, columns=['Factor 1', 'Factor 2', 'Factor 3', 'Factor 4', 'Factor 5', 'Factor 6'])

状态

factor k2x1-k2x29 if g1==3, factor(6)
rotate, varimax norm blanks(.40)

【问题讨论】:

  • 因子分析并不像您想象的那样标准化。有关更多详细信息,我认为您需要在两个程序中发布一个包含数据集和代码的可重现示例。
  • 我会把它放在问题中。正如已经编辑过的,请注意拼写是 Stata,而不是 STATA。更重要的是,您希望有人同时使用 Python 和 Stata 来回答——那不是我——而且如果不显示任何数据或结果,您可能得不到太多帮助。
  • @NickCox 谢谢,我已经编辑了这个问题。我是新手。感谢您的支持

标签: python stata factor-analysis


【解决方案1】:

您需要了解每个命令执行什么类型的探索性因子分析 (EFA),以及您希望它执行什么类型。 EFA有多种类型,如主因子、主成分因子、ML等。

我猜 Python 和 Stata 有不同的默认方法,因此你会得到不同的结果。在您的命令中,您没有指定要使用的方法,因此使用默认方法。

在 Stata 中,默认是主要因素,而在 Python 中,我猜默认是 minres,根据这个网站:https://factor-analyzer.readthedocs.io/en/latest/factor_analyzer.html

【讨论】:

  • 非常感谢。我已经阅读了您发送的网站,我忘记使用我在 Stata 中执行的 varimax(正交旋转),因此没有执行任何旋转!你对特征值的差异有什么解释吗?
  • 很高兴您找到了解释。正如您所提到的,因子载荷的差异是由于旋转造成的。特征值的差异很可能是由于因子计算(Stata 中的命令“因子”)。您可以指定所需的因子计算类型: factor k2x1-k2x29 if g1==3, factor(6) pcf Stata 提供了几个选项:pf, pcf, ipf, ml - 您需要确保您的因子计算方法是在 Stata 和 Python 中相同,以获得相同的特征值。
  • 所以,在Python中,你需要修改选项“method”来改变特征值:classfactor_analyzer.factor_analyzer.FactorAnalyzer(n_factors=3, rotation='promax', method='minres', use_smc= True, is_corr_matrix=False, bounds=(0.005, 1), impute='median', rotation_kwargs=None)
  • 你可以在 Python 中使用方法 'principal',它应该对应于 Stata 中的 'pcf' 方法(或者它可能是 'pf',我不是 100% 确定这个)。或者在 Python 中使用方法“ml”,它应该对应于 Stata 中的“ml”。我认为 Stata 不支持“minres”方法。
  • 您的指导对像我这样没有太多背景的人来说真的很有帮助!我可以根据你的建议搜索文档,我发现了很多有用的东西!!!我会读更多!!!衷心感谢,来自 Diep
猜你喜欢
  • 2011-01-19
  • 2019-06-18
  • 2010-12-24
  • 2010-12-21
  • 2013-11-30
  • 2020-09-24
  • 2017-12-30
  • 2019-04-13
  • 2017-04-24
相关资源
最近更新 更多