無敵(不死)タイムのある指数分布っぽい確率分布からのサンプリング
こいつ
の応用で、
- 時点1〜5までは無敵(不死)
になるような確率分布からのサンプリングをやってみた。
具体的には
lambda <- function(t){ifelse(t > 1 & t < 5, 0, 0.75)}
というように、デフォルト強度(ポアソン分布の平均値に相当する量)を一時的に0と設定する。こうすると単位時間当たりの死亡率が0になるので、この間は無敵となるのだ。んで、この形からサンプリングすると、以下のように絶対死なない”無敵タイム付”の指数分布からのサンプリングになる。ちゃんと1〜5の間は確率密度が0になるので、この間は死なないよと。
コードは以下、コピペすれば同じ結果を再現できるぞい。
#int_0^t \lambda(u)du - \xi #な関数。無理やり根を探す形で書くのでこうした objective <- function(t, lambda, xi){ integrate(lambda, 0, t)$value - xi } #適当な強度の関数形 lambda <- function(t){ifelse(t > 1 & t < 5, 0, 0.75)} #描画範囲 range_plot <- c(0, 15) #サンプリング set.seed(100) x <- sapply( 1:10^3, function(i){ uniroot(objective, range_plot, tol=10^(-3), lambda=lambda, xi=rexp(1))$root } ) library(ggplot2) qplot(x, geom="blank") + geom_histogram(aes(y=..density..), fill="lightpink2") + scale_x_continuous(limits=range_plot)