目的
対数正規確率紙に累積相対度数をプロットする。
使用法
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)) による |