如何消除R中的极端异常值?

时间:2015-01-13 16:46:26

标签: r boxplot outliers

我有一个R脚本,它使用csv文件作为源数据来创建十六个单独的箱图。十六个箱图中的每一个都具有不同的y轴刻度,这使得难以将一般的ylim定义应用于脚本。我尝试将coor_cartesian函数与ylim语句以及scale_y_continuous函数一起使用,但同样,这太普遍了,无法应用于具有不同y轴刻度的16个箱图(我不想在16个箱图中规范化刻度,仅带有“极端”异常值的情节。

下面是我用来创建十六个盒子图的数据。 'SE_Data'是我上面提到的csv源文件。我还要提一下,十六个箱图被导出为单个pdf文件(我不知道是否需要这种详细程度)。

# Enter csv input file:
SE_Data<-read.csv("SE_DATA.csv",header=T)

# Enter output file name:
pdf(file="SE_Box_Plots.pdf", onefile=TRUE)

x=c("A","B","C","D","E","F","G","H")

SE_Data$ACO_Desc <- factor(SE_Data$ACO_Desc , x) #Ensures x-axis is ordered from A through H

#Creates sixteen individual boxplots 
for (i in 5:ncol(SE_Data)) { 

  p<-ggplot(SE_Data, aes(x=Group_Desc, y=SE_Data[,i])) + geom_boxplot() +
  ylab(gsub("\\_", " ", colnames(SE_Data)[i])) + 
  xlab("") +
  theme(axis.text.x=element_text(angle = 0))
  print(p)

}

dev.off()  

dev.list()

我不确定是否需要创建一个IF ELSE语句来解决这个问题,然而,作为一个仍然相当新的R的人,这似乎远高于我的技能水平。下面,我将16个箱形图中的两个用于说明它们的y轴刻度如何相互不同。

方框图1: Box Plot 1

方框图2: Box Plot 2

从两个箱形图中可以看出,它们都具有非常不同的y轴刻度。在我看来,'boxplot 2'看起来不错,但是,'boxplot 1'包含极端异常值。我想开发一段代码,可以删除这些极值,以减少盒子图上的“死空间”;因此,降低y轴的比例并使其对眼睛更有吸引力。

重要的是要强调我仍然希望将异常值包含在我的箱形图中,但是,我想只删除极端异常值。如果您需要我的更多信息,请务必告诉我。

在此先感谢您的帮助,非常感谢。

克里斯

1 个答案:

答案 0 :(得分:0)

如果没有数据,我无法重现你的图表,但包括

geom_boxplot( outlier.shape=NA )

应该隐藏异常值。您可以使用

手动调整yscale
scale_y_continuous(limits=c(-5, 1)) # or whatever values you want to use.