use*_*211 4 r outliers quantile pca
我有一个132 x 107的数据集,包括2个患者类型 - (患者1的33)和(患者2的99).
我正在寻找异常值,所以我在数据集上运行了pca,并使用以下命令完成了前4个组件的qqplots
pca = prcomp(data, scale. = TRUE)
plot(pca$x, pch = 20, col = c(rep("red", 33), rep("blue", 99)))
Run Code Online (Sandbox Code Playgroud)
当我使用以下内容执行第二个组件的qqplot时:
qqPlot(pca$x[,2],pch = 20, col = c(rep("red", 33), rep("blue", 99)))
Run Code Online (Sandbox Code Playgroud)
下图显示了2个明确的异常值 - 左下角的红点是患者1.

有没有直接的方法来计算数据中这些点的索引,以便可以删除它们?
出于某种原因,我不相信car包中支持识别方法(来源qqPlot())
让我们来看看USArrests数据的PCA ......
pca <- prcomp(USArrests)
Run Code Online (Sandbox Code Playgroud)
这种使用的情节qqPlot很简单.
require(car)
qqPlot(pca$x[,2],pch = 20, col = c(rep("red", 33), rep("blue", 99)))
Run Code Online (Sandbox Code Playgroud)
但是,qqPlot()不允许通过点选择identify().
identify(qqPlot(pca$x[,2],pch = 20, col = c(rep("red", 33), rep("blue", 99))))
# numeric(0)
Run Code Online (Sandbox Code Playgroud)
但是,您可以qqnorm()在stats包中使用.
identify(qqnorm(pca$x[,2],pch = 20, col = c(rep("red", 33), rep("blue", 99))))
Run Code Online (Sandbox Code Playgroud)
这将生成一个不太复杂的图形,但您应该能够通过qqline()(也在stats)和更多的数学手动添加线和置信区间.