裏 RjpWiki

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

ちょっと前の記事の数値が妥当だというシミュレーション

2012年06月08日 | ブログラミング

「前の記事」で指摘したことについて,その正しさを検証しておこう。

簡単なことだ。一行でできる。

> mean(replicate(1000000, sum(runif(100) < 0.1518244) >= 10))
[1] 0.950551

解説しておこうか?

runif(100) < 0.1518244

は,100 回試行して,設定した確率 0.1518244 を満たすかどうかの論理値ベクトル

sum(runif(100) < 0.1518244)

は,TRUE になった回数を数えれば,それは,アイテムを得られる回数

sum(runif(100) < 0.1518244) >= 10

は,得られたアイテムが 10 個以上であるかどうかの論理ベクトル

replicate(1000000, sum(runif(100) < 0.1518244) >= 10)

は,それを 1000000 回繰り返す。

mean(replicate(1000000, sum(runif(100) < 0.1518244) >= 10))

は,そのうち,成功した割合(0/1ベクトルの平均は,1である割合のこと)を表す。

結局,確率が 0.1518244 のときは,10 個以上のアイテムを得られる確率が 0.950551 ということ。

この数値は,試行ごとに変わるが 0.95 前後の値になることは簡単に確かめることができる。
正規近似は,近似に過ぎないこともわかる。

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

ブログ記事の免責について--書くのを控えていたけど

2012年06月08日 | 雑感

ガチャコンプ問題で,SNSゲームの実体というか問題点が白日の下にさらされて,それに,しぶしぶ?対応したのかとは思うが,その背景が,こんないい加減な,間違った意思決定によるものだとしたら,腹が立つ以前に笑っちゃうね。(今回は,消費者には不利でない方向で間違えているからまだまし?だけど,そう言う問題じゃない。企業側から見れば企業利益を毀損する方向の間違いだ。)

ブログの著者の所属を明らかにしてブログを書くというのは責任の所在を明らかにすると言う点では正しい選択だろうが,その記事の内容ががいい加減なもの・間違ったものだとすれば所属企業のイメージを落とすことになるよね。

自信を持って書いた記事なのだろうけど,企業はその記事の正確性について疑義があれば,著者を糾弾すべきではないかな。

よく,「この記事は,所属団体の意見とは無関係です」なんて言い逃れのおまじないを書いておくということがあるけど,この記事はそのような免責事項についての言及もないなあ。馘にされても文句は言えないのではないかな?

まあ,あんなくだらないゲームにうつつを抜かす奴の気もしれないけど,それにつけ込む奴らは許せない。

「100匹モンスターを倒せば95%の人はアイテムを10個以上手に入れられるようにする」って書いてあるけど,裏返せば「5%の人は100匹モンスターを倒してもアイテムを10個以上手に入れられない」ということですがな。モンスターを倒すのにお金が必要かは知らないが,もし,1匹のモンスターを倒すのに100円必要なら,1万円費やしても目的は達成できない人が5%いると言うことだよ。「ほとんどの人がアイテムを10個以上手に入れられるように」なんて,きれい事言っているけど,あなたが「ほとんどの人ではなかった場合の事」を考えていないと言うことが問題ではないのかということ。

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

ブートストラップ

2012年06月08日 | ブログラミング

どこかにあるけど,そこは別に最適化をしようといっているのではないので,明示しない。

for は遅い。replicate も for と同じくらい。やはり,colMeans は速い。
という,つまらない結果だけど,掲示しておく。

> library(rbenchmark)
> n <- 100000
> x <- c(1, 2, 3, 5, 3, 4, 4, 7, 8, 10, 1)

> prog1 <- function() {
+     x.boot <- numeric(n)
+     for(i in 1:n){
+         x.boot[i] <- mean(sample(x, 10, replace=T))
+     }
+     hist(x.boot)
+ }

> prog2 <- function() {
+     x.boot <- replicate(n, mean(sample(x, 10, replace=TRUE)))
+     hist(x.boot)
+ }

> prog3 <- function() {
+     x <- matrix(sample(x, n*10, replace=TRUE), 10)
+     x.boot <- colMeans(x)
+     hist(x.boot)
+ }

> benchmark(prog1(), prog2(), prog3(), replications=10)
     test replications elapsed relative user.self sys.self
1 prog1()           10  18.274 24.07642    18.140    0.195
2 prog2()           10  17.894 23.57576    17.792    0.147
3 prog3()           10   0.759  1.00000     0.697    0.054

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

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

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