我将使用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
答案 0 :(得分:2)
原因是winsorize
中的robustHD
使用solve
。如果您仔细查看代码,数据框上的winsorize
会调用winsorize.data.frame
方法,该方法只是运行as.matrix
的脚本,然后使用winsorize.matrix
方法。这反过来做了很多事情,但这里的问题是它使用solve
函数。
您收到的错误来自solve
。可能会发生错误,因为您包含了一些非常高度相关的变量/列,或者说它们是彼此的线性组合。您可能想要检查是否有重复的变量或变量是彼此的变换。
你可以做几件事:
winsorize
。 第二步的最快捷方式:
require(sos)
findFn("winsorize")
这将生成描述中包含“winsorize”一词的所有函数的概述。只需查看描述用于winsorization的函数。