用R绘制总体异常图

用R绘制总体异常图,r,R,我正在处理一个大的时间序列数据,它看起来像: ProcesID ProcessName StartDate EndDate Duration 10 httpd 1/1/2012 1/2/1012 12 Hours 11 ftp 1/1/2012 1/2/1012 10 Hours 12 snmp 1/1/2012 1/2/1012 5 Hours 13 email

我正在处理一个大的时间序列数据,它看起来像:

ProcesID ProcessName  StartDate  EndDate   Duration
   10       httpd      1/1/2012   1/2/1012  12 Hours
   11       ftp        1/1/2012   1/2/1012  10 Hours
   12       snmp       1/1/2012   1/2/1012  5 Hours
   13       email      1/1/2012   1/2/1012  2 Hours
   14       java       1/1/2012   1/2/1012  5 Hours
   15       perl       1/1/2012   1/2/1012  7 Hours
   20       php        1/1/2012   1/2/1012  6 Hours
唯一(
x$ProcessName
)的数量大于500。我无法绘制每个
ProcessName
。我想选择anamolies并绘制它们的图表

我确实尝试了以下示例:

 y<-x[sample(nrow(x), 50, prob = NULL),]

 ggplot(subset(x, ProcessName %in% y$ProcessName), 
       aes(StartDate, Duration, group=ProcessName)) + geom_point()

y与其说是一个答案,不如说是一个评论,我会先看看那些流程运行时间超过其第75个百分位的日子。这些只是虚拟数据,因此不太可能按照数据的方式“计算”,但您可以将其用作自己数据的框架。我希望您会看到一些进程在特定的日子里运行繁重。您可能希望将数据子集为50个进程的组,然后绘制它们。所有500+都太多了,无法一次现实地审查

如果您希望将一天与前一天进行比较,我会考虑使用
diff()
函数

基本上,该图显示了每个进程运行的时间比其第75个百分点长的天数

library(plyr)
library(ggplot2)
dat <- data.frame(ProcessID=factor(sample(1:50,10000,replace=TRUE)),
                  StartDate=as.Date(sample(1:5,10000,replace=TRUE), origin="2012-01-01"),
                  Duration=round(rexp(10000,rate=2)*6))

fourq.dat <- ddply(dat, .(ProcessID), summarize, fourq_hours = quantile(Duration)[4])
dat <- merge(dat,fourq.dat)
dat$plot <- ifelse(dat$Duration > dat$fourq_hours,1,0)

dat <- subset(dat, plot == 1)

ggplot(dat, aes(StartDate, Duration)) + geom_point() + facet_wrap(~ProcessID)
库(plyr)
图书馆(GG2)

dat与其说是一个答案,不如说是一个评论。首先,我要看看那些流程运行时间超过其第75个百分位的日子。这些只是虚拟数据,因此不太可能按照数据的方式“计算”,但您可以将其用作自己数据的框架。我希望您会看到一些进程在特定的日子里运行繁重。您可能希望将数据子集为50个进程的组,然后绘制它们。所有500+都太多了,无法一次现实地审查

如果您希望将一天与前一天进行比较,我会考虑使用
diff()
函数

基本上,该图显示了每个进程运行的时间比其第75个百分点长的天数

library(plyr)
library(ggplot2)
dat <- data.frame(ProcessID=factor(sample(1:50,10000,replace=TRUE)),
                  StartDate=as.Date(sample(1:5,10000,replace=TRUE), origin="2012-01-01"),
                  Duration=round(rexp(10000,rate=2)*6))

fourq.dat <- ddply(dat, .(ProcessID), summarize, fourq_hours = quantile(Duration)[4])
dat <- merge(dat,fourq.dat)
dat$plot <- ifelse(dat$Duration > dat$fourq_hours,1,0)

dat <- subset(dat, plot == 1)

ggplot(dat, aes(StartDate, Duration)) + geom_point() + facet_wrap(~ProcessID)
库(plyr)
图书馆(GG2)

你能定义你所说的反常是什么意思吗?我们是在谈论异常值吗?如果是这样的话,是不是有大量的小时会使它成为一种异常现象?如果这个过程的持续时间出现峰值,则会出现异常情况。我想将这些流程数据点绘制成图表。@BrandonBertelsen,例如,2012年1月1日,流程httpd的持续时间是12小时。这个过程每天都在运行。比如说,如果这个过程的持续时间是2012年1月30日的20小时,这是一个异常,我想用图表来描述这个过程的持续时间,等等。你能定义你所说的异常是什么意思吗?我们是在谈论异常值吗?如果是这样的话,是不是有大量的小时会使它成为一种异常现象?如果这个过程的持续时间出现峰值,则会出现异常情况。我想将这些流程数据点绘制成图表。@BrandonBertelsen,例如,2012年1月1日,流程httpd的持续时间是12小时。这个过程每天都在运行。比如说,如果这个过程的持续时间是2012年1月30日的20个小时,这是一个异常,我想用图表显示这个过程的持续时间,等等。