階段関数、経験分布関数

(グラフィックス参考実例集に戻る。Rのグラフィックスパラメータを参照する。)

R の標準ライブラリの一つである stepfun は階段関数を扱うライブラリで、特に経験分布関数の作図ができる。関数 stepfun, ecdf は関数を返す関数である。plot 関数はクラス stepfun (階段状関数) とクラス ecdf (経験分布関数) のオブジェクトからそのグラフを描く(実際は関数 plot.stepfun が呼び出される)。


データから経験分布関数を計算する関数 ecdf()

R の標準ライブラリの一つである stepfun は階段関数を扱うライブラリで、特に経験分布関数の作図ができる。

Fn(t) = #{x_i <= t} / n  =  1/n sum(i=1,n) Indicator(xi <= t).

返り値 クラス "ecdf" の関数で、"stepfun" クラスを継承する。

例1

> sf <- ecdf(sort(runif(15))) # ecdf そして stepfun は実際は関数である
> sf(0.23)
[1] 0.2666667

例2

library(stepfun) # ライブラリ stepfun を読み込み   
y <- round(rnorm(12),1); y[3] <- y[1] # 参考データ(わざとタイを作る)
Fn12 <- ecdf(y) # クラス ecdf のオブジェクトに変換
par(mfrow=c(3,1), mgp=c(1.5, 0.8,0), mar= .1+c(3,3,2,1)) # 画面三分割
F10 <- ecdf(rnorm(10)) # もう一つの参考データ
plot(F10)
plot(F10, verticals= TRUE, do.p = FALSE)
plot(Fn12)# , lwd=2) dis-regarded
 left

例3

library(stepfun) # ライブラリ stepfun を読み込み   
xx <- unique(sort(c(seq(-3,2, length=201), knots(Fn12))))
lines(xx, Fn12(xx), col='blue')
abline(v=knots(Fn12),lty=2,col='gray70')
plot(xx, Fn12(xx), type='b', cex=.1) #- plot.default
plot(Fn12, col.h='red', add= TRUE)  # データ位置に縦線を加える
abline(v=knots(Fn12),lty=2,col='gray70')
plot(Fn12, verticals=TRUE, col.p='blue', col.h='red',col.v='bisque')
 left

例4

library(stepfun) # ライブラリ stepfun を読み込み   
plot.ecdf(rnorm(24)) # 自動的に ecdf(.) を呼び出す
 left

与えられた結び目を通る階段関数を計算する stepfun() 関数

定数 c[i] の値は「連続性パラメータ」f に依存する。既定である 'right = FALSE, f = 0' では関数は cadlag (左連続) となる。一般には c[i] は c[i] = (1-f)*y[i] + f*y[i+1] と補間される。零以外の f 値では、関数は区切り点の左右から不連続となり、本来の意味での階段関数には、ならない、例外は 'right = TRUE, f = 1' の場合で右連続となる。

library(stepfun)
par(mfrow=c(2,2))
x <- sort(runif(10)); y <- runif(11)
plot(stepfun(x, y, f=0))
plot(stepfun(x, y, f=0.3))
plot(stepfun(x, y, f=0.7))
plot(stepfun(x, y, f=1.0))
 left

添付ファイル: filestepfun1.jpg 3506件 [詳細] filestepfun4.jpg 2995件 [詳細] filestepfun2.jpg 3234件 [詳細] filestepfun3.jpg 3221件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:16