1

次のような大きな時系列データを扱っています。

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

unique( x$ProcessName) の数が 500 を超えています。すべての をグラフ化することはできませんProcessName。アナモリーを選んでグラフにしたいと思います。

私はサンプルを試しました:

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

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

sampleこの分析を実行するのが正しい選択かどうかわかりません。異常のみの母集団からグラフを作成するために似たようなことをした人はいますか?

4

1 に答える 1

1

答えというよりはコメントですが、プロセスがそのプロセスの 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)
于 2012-10-16T19:15:30.033 に答える