目的 対数正規確率紙に累積相対度数をプロットする。 使用法 lnpp(x) 累積相対度数をプロットする 引数 x データベクトル ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/lnpp.R", encoding="euc-jp") # 対数正規確率紙に累積相対度数をプロットする lnpp <- function(x) # データベクトル { 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="gray") # 垂直格子線を入れる } n <- length(x) # データの個数 log.x <- log10(sort(x)) # データをプロットするときの横座標 y <- ((1:n)-0.5)/n # 累積確率 probs <- c(0.01, 0.1, 1, 5, 10, 20, 30, 40, 50, # 縦軸の目盛り 60, 70, 80, 90, 95, 99, 99.9, 99.99)/100 plot(log.x[c(1,n)], qnorm(probs[c(1,17)]), # 枠組み type="n", xaxt="n", yaxt="n", xlab="Observed Value", ylab="Cumulative Percent", main="Log Normal Probability Paper") log.axis(x) # 横軸(対数目盛)を描く axis(2, qnorm(probs), probs*100) # 縦軸(正規確立目盛)を描く abline(h=qnorm(probs), col="grey") # 水平格子線を描く points(log.x, qnorm(y)) # データ点を描く } 使用例 > x <- rlnorm(50)*10 > lnpp(x) # 50 個の対数正規乱数をプロットする > npp2(log(x)) # 正規確率紙のプログラムを使ってもよい(横軸の描き方が異なる) 出力結果例
lnpp(x) による |
npp(log(x)) による |