在R中运行factanal()处理相关矩阵时报计算奇异错误的解决咨询
解决R中factanal()处理奇异相关矩阵的报错问题
问题原因
你输入的Reise是奇异的相关矩阵,而factanal()默认将传入的第一个参数视为原始观测数据,会基于它重新计算协方差矩阵,这会触发矩阵求逆时的计算奇异错误。
解决方案
方案1:修正factanal()的用法
明确指定传入的是相关矩阵,并允许处理奇异矩阵:
library("psych") data(Reise) # 用covmat参数传入相关矩阵,同时开启奇异矩阵允许选项 Reise.fa <- factanal(covmat = Reise, factors = 5, control = list(singular.ok = TRUE))
方案2:使用psych包专用的fa()函数
psych包的fa()函数专门适配心理测量领域的因子分析,默认支持相关矩阵输入,对奇异矩阵的兼容性更好:
library("psych") data(Reise) # 直接传入相关矩阵,指定因子数量即可 Reise.fa <- fa(Reise, nfactors = 5)
补充说明
factanal()的covmat参数用于直接传入协方差/相关矩阵,避免函数错误地将矩阵当成原始数据处理。singular.ok = TRUE会放宽函数对矩阵非奇异性的检查,适配相关矩阵常存在的线性相关特征。fa()函数默认使用主轴因子法或最小残差法,比factanal()默认的极大似然法更适合处理奇异的相关矩阵,结果也更贴合心理测量的分析需求。
内容的提问来源于stack exchange,提问作者ColeHarry
相关产品推荐
相关产品推荐

