ワイブル確率紙     Last modified: Apr 13, 2004

目的

測定値をワイブル確率紙にプロットする。

使用法

weibull(x, plt=TRUE, color="gray")

引数

x     データベクトル
color グリッド線を描く色(省略した場合には灰色で描かれる)

ソース

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/weibull.R", encoding="euc-jp")

# 測定値をワイブル確率紙にプロットする
weibull <- function( x,                              # データベクトル
                        color="gray")                   # 格子線を描く色
{
        weib <- function(p) log10(log10(1/(1-p)))    # ワイブル分布の尺度に変更
        log.axis <- function(z)                              # 対数軸を描く関数
        {
                z <- floor(log10(z))                 # 対数にしたときの整数部
                log.min <- min(z)                    # 最小値
                z2 <- 1:10*10^log.min                        # 値の範囲をカバーするように
                n <- max(z)-log.min                  # 10 倍しながら順次,右の位置に目盛りを描く
                z2 <- rep(z2, n+1)*10^rep(0:n, each=10)      # 対数目盛り位置の数値
                log.z2 <- log10(z2)                  # 目盛りを描く位置
                axis(1, at=log.z2, labels=z2)           # log.z2 の位置に,z2 という数値を描く
                abline(v=log.z2, col=color)             # 垂直格子線を描く
        }

        x <- x[!is.na(x)]                            # 欠損値を除く
        n <- length(x)                                       # 有効データ数
        x <- sort(x)                                 # 昇順に並べ替える
        log.x <- log10(x)                            # 常用対数を取る
        y <- weib(1:n/n)                             # ワイブル分布における累積密度の位置
        y0 <- c(10^(-10:0), 5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 99, 99.9, 99.99, 99.999)
        y0 <- y0[y0 > 10/n]
        probs <- weib(y0/100)                                # 目盛数値の位置
        plot(c(log.x[1], log.x[n]), c(probs[1], probs[length(probs)]), type="n", xaxt="n", yaxt="n",
                xlab="Observed Value", ylab="Cumulative Percent",
                main="Weibull Probability Paper")
        abline(h=probs, col="grey")                     # 水平の格子線
        log.axis(x)                                     # 横軸を描く
        axis(2, at=probs, labels=y0)                    # 縦軸を描く
        points(log.x, y)                                #データ点を描く
}


使用例

> x <- rweibull(90, 1.5, scale=3)	# 90 個のワイブル乱数を発生させる
> weibull(x)	# ワイブル確率紙に描く

出力結果例

graph

・ 解説ページ


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI ( @si.gunma-u.ac.jp )

Made with Macintosh