==== 信頼性データ図 Reliability Data Diagram ====
横軸に経過時間を取り、縦軸に個人、製品、IDなどを取って、寿命データの中の個々の対象の寿命の長さを横線で表した図を、信頼性データ図というらしい。これを、データの並び順と、小さい順の2種類の順序、描けるようにした関数が次のplot.reliability.data.diagramである。
データを最初の引数xで与える。ベクトルデータならそのまま、行列やデータフレームであれば1列目が時刻、2列目が状態(故障なら1、打ち切りなら0)を持っていることを仮定している。
plot.reliability.data.diagram <- function(x,sort=TRUE,xlab=NULL,ylab=NULL,cex.plot=1,...) {
if(is.numeric(x)==TRUE) {
n <- length(x)
if(sort==TRUE) {
x.time <- x[sort.list(x,decreasing=TRUE)]
x.status <- rep(1,n)
id <- c(1:n)
} else {
x.time <- x
x.status <- rep(1,n)
id <- c(1:n)
}
} else if (is.data.frame(x)==TRUE) {
n <- dim(x)[1]
if(sort==TRUE) {
x.time <- x[sort.list(x[,1],decreasing=TRUE),1]
x.status <- x[sort.list(x[,1],decreasing=TRUE),2]
id <- row.names(x)[sort.list(x[,1],decreasing=TRUE)]
} else {
x.time <- x[,1]
x.status <- x[,2]
id <- row.names(x)
}
} else if (is.matrix(x)==TRUE) {
n <- dim(x)[1]
if(sort==TRUE) {
x.time <- x[sort.list(x[,1],decreasing=TRUE),1]
x.status <- x[sort.list(x[,1],decreasing=TRUE),2]
id <- rawnames(x)[sort.list(x[,1],decreasing=TRUE)]
} else {
x.time <- x[,1]
x.status <- x[,2]
id <- rawnames(x)
}
}
if(is.null(xlab)) {
xlab = "Time"
}
if(is.null(ylab)) {
ylab = "#"
}
par(cex=cex.plot)
plot(x.time,c(1:n),
xlim=c(0,max(x.time)),
type="n",
ylab=ylab,
xlab=xlab,
yaxt="n",
cex=cex.plot)
axis(2,1:n,labels=c(n:1),
cex=cex.plot)
points(x.time,c(1:n),pch=c(1,4)[x.status+1],
cex=cex.plot,...)
for( i in c(1:n) ) {
lines(c(0,x.time[i]),c(i,i),
cex=cex.plot,...)
}
}
使い方は
X = data.frame(time=c(1.5,5.3,2.5,7.8,6.2,4.1,8.2,10.3,1.5,13.4),
status=c(1,1,1,1,1,1,1,1,1,1))
plot.reliability.data.diagram(X,sort=TRUE)
これで次のグラフが描かれる。
{{:r:survival:reliability-data-diagram-1.png|}}
もしくは
X = data.frame(time=c(1.5,5.3,2.5,7.8,6.2,4.1,8.2,10.3,1.5,13.4),
status=c(1,1,1,1,1,1,1,1,1,1))
plot.reliability.data.diagram(X,sort=FALSE)
データの並びが変わる。
{{:r:survival:reliability-data-diagram-2.png|}}
軸ラベルを指定したり、グラフの文字や打点の大きさを変えることもできる。
X = data.frame(time=c(1.5,5.3,2.5,7.8,6.2,4.1,8.2,10.3,1.5,13.4),
status=c(1,1,1,1,1,1,1,1,1,1))
plot.reliability.data.diagram(X,sort=TRUE,cex.plot=0.8,xlab="Time (days)",ylab="No.")
{{:r:survival:reliability-data-diagram-3.png|}}
==== レキシスダイヤグラム Lexis Diagram ====
いつか加筆予定。