You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中基于Spearman相关性用principal()做因子分析及报错解决

解决因子分析中Spearman相关与Varimax旋转的参数冲突问题

我明白你遇到的困扰了——当用psych包的principal函数做基于Spearman相关的因子分析,且设置nfactors>1时,因为参数传递错误触发了varimax函数的报错。让我一步步帮你搞定这个问题:

报错原因

你设置的spearman="cor"并不是principal函数的合法参数,当函数执行到Varimax旋转步骤时,会把这个多余参数传递给stats::varimax,但varimax根本不支持这个参数,因此就出现了unused argument的错误提示。

正确解决方案

最稳妥的方式是先手动计算Spearman相关矩阵,再将这个矩阵传入principal函数,这样能彻底避免参数传递的冲突。如果需要计算因子得分,记得同时传入原始数据集。

具体代码示例(以mtcars数据集为例)

# 第一步:预计算Spearman相关矩阵
spearman_corr <- cor(mtcars, method = "spearman", use = "all.obs")

# 第二步:执行因子分析,传入相关矩阵与原始数据(用于生成因子得分)
root.fa2 <- principal(
  mtcars, 
  nfactors = 3, 
  rotate = 'varimax', 
  scores = TRUE, 
  residuals = TRUE, 
  oblique.scores = TRUE, 
  method = "regression",
  cor = spearman_corr  # 指定使用预计算的Spearman相关矩阵
)

为什么原来的写法行不通?

principal函数本身没有spearman这个参数,你试图用它指定相关计算方法是无效的。虽然principal允许通过...传递参数给内部的cor函数,但principal自己的method参数是用来指定因子得分的计算方式(比如你用的"regression"),直接传递method="spearman"会造成参数名冲突,反而容易出错。手动预计算相关矩阵是最清晰、最不容易踩坑的方式。

内容的提问来源于stack exchange,提问作者cnauber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 23:32:31