我将使用数据包winsorize
将数据集robustHD
除去一些异常值。这是我第一次遇到此错误。数据集包含50多个变量和100多个观察值。
我怎样才能解决这个问题?为什么矩阵奇异性对于像winsorize
这样的计算很重要?谢谢。
df_win<-winsorize(df,prob=0.95)
Error in solve.default(R) : system is computationally singular: reciprocal condition number = 1.26103e-18
最佳答案
原因是winsorize
中的robustHD
使用solve
。如果您深入研究代码,则数据帧上的winsorize
将调用winsorize.data.frame
方法,该方法只是运行as.matrix
然后使用winsorize.matrix
方法的脚本。这反过来会做很多事情,但是这里的问题是它使用了solve
函数。
您收到的错误来自solve
。由于您包括了一些高度相关的变量/列,或者更确切地说,它们是彼此线性组合,因此可能发生错误。您可能要检查是否有重复的变量或相互转换的变量。
您可以执行以下几项操作:
winsorize
。 进行第二步的最快方法:
require(sos)
findFn("winsorize")
这将概述其描述中带有“winsorize”一词的所有功能。只需查找描述用于winsorization的功能。
关于r - 使用“system is computationally singular”时出现'winsorize'错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36403293/