我正在做一个大学项目,我试图在一个有 722 行和 9 列的数据集中找到异常值,所以有超过 6000 个变量。
我尝试了很多方法:
首先是发生这种情况的 Z 分数。
z_scores<-(concrete_strength_test-mean(concrete_strength_test))/sd(concrete_strength_test)
Error in is.data.frame(x) :
'list' object cannot be coerced to type 'double'
In addition: Warning message:
In mean.default(concrete_strength_test) :
argument is not numeric or logical: returning NA
第二个分位数:
Q1 <- quantile(concrete_strength_test, .25)
Error in quantile.default(concrete_strength_test, 0.25) :
missing values and NaN's not allowed if 'na.rm' is FALSE
由于缺少或 NA 值,我使用 mouse 函数运行代码并摆脱了它们,但随后出现了此错误:
Q1 <- quantile(concrete_strength_test_imputed, .25)
Error in xtfrm.data.frame(x) : cannot xtfrm data frames
我只是不确定下一步该去哪里,因此我们将不胜感激。
如果我理解正确的话,您想将 9 列视为一大袋值,而不是在每一列中找到分位数和异常值?
如果是这种情况,则
concrete_strength_test
的数据结构是错误的。您将其作为 data.frame/list 但需要它作为向量。为此,请先将其转换。然后就可以进行各种分析了:
values = c(as.matrix(concrete_strength_test))
z_scores = (values-mean(values))/sd(values)
q1 = quantile(values,c(.25),na.rm=T)