裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

octave にある vander 関数

2012年01月18日 | ブログラミング

vander <- function(x, n = length(x)) {
    stopifnot(as.integer(n) == n && n > 0)
    z <- matrix(rep(x, n), length(x))
    for (i in 1:n) {
        z[, i] <- z[, i] ^ (i - 1)
    }
    return(z[, n:1, drop = FALSE])
}

のように定義する。実行例は,

> vander(1:5, 1)
     [,1]
[1,]    1
[2,]    1
[3,]    1
[4,]    1
[5,]    1

> vander(1:5, 2)
     [,1] [,2]
[1,]    1    1
[2,]    2    1
[3,]    3    1
[4,]    4    1
[5,]    5    1

> vander(1:5)
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    1    1    1
[2,]   16    8    4    2    1
[3,]   81   27    9    3    1
[4,]  256   64   16    4    1
[5,]  625  125   25    5    1

> vander(runif(5))
             [,1]         [,2]        [,3]      [,4] [,5]
[1,] 4.578474e-02 0.0989784306 0.213973690 0.4625729    1
[2,] 8.531321e-01 0.8876917796 0.923651483 0.9610679    1
[3,] 4.391669e-02 0.0959339217 0.209563093 0.4577806    1
[4,] 3.281008e-05 0.0004335163 0.005728008 0.0756836    1
[5,] 6.778974e-01 0.7470900815 0.823345243 0.9073837    1


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ダメ出し:シミュレーションの条件設定

2012年01月18日 | ブログラミング

http://d.hatena.ne.jp/foo22222/20120115

Nt <- 1000
df1 <- 1
set.seed(101)
ts1 <- rchisq(Nt, df1)
set.seed(101)  # set.seed()で生成される乱数を同じものにする。
ts2 <- rchisq(Nt, df1)
t1 <- sample(ts1, 500, replace = FALSE)
t2 <- sample(ts2, 500, replace = FALSE)
p1 <- pchisq(t1, df1, lower.tail = FALSE)
p2 <- pchisq(t2, df1, lower.tail = FALSE)
plot(p1, p2)

としているが,
ts1 と ts2 は全く等しい(等しいようにしているから等しいのだけど)
ならば,ts1, ts2 の区別はする必要はないので余計なことは不要で

Nt <- 1000
df1 <- 1
set.seed(101)
ts1 <- rchisq(Nt, df1)
t1 <- sample(ts1, 500, replace = FALSE)
t2 <- sample(ts1, 500, replace = FALSE)

でよいし,そもそも rchisq( ) は無限母集団からの乱数抽出なのだから,そこから Nt 個取り出してそれを母集団として sample( ) により無作為抽出をするというような二段階の乱数生成をする必要はない。つまり,

Nt <- 1000
df1 <- 1
set.seed(101)
t1 <- rchisq(500, df1)
t2 <- rchisq(500, df1)
p1 <- pchisq(t1, df1, lower.tail = FALSE)
p2 <- pchisq(t2, df1, lower.tail = FALSE)
plot(p1, p2)

で十分。

コメント (1)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村