ぱらぱらめくる『The BUGS Book』

The BUGS Book: A Practical Introduction to Bayesian Analysis (Chapman & Hall/CRC Texts in Statistical Science)

The BUGS Book: A Practical Introduction to Bayesian Analysis (Chapman & Hall/CRC Texts in Statistical Science)

  • Appendix A BUGS言語文法(Rに似ている)
    • ~は「…の分布に従う」、 <-は「…を付値する」
    • 分布に採用範囲を定めるときに、打ち切り・不採用 censoringする
    • 非実装分布を作成する
    • 計算に使いつつ、最終分布の作成に反映しないようにする関数cut()
    • devianceはどんなモデルにも付けられて、実行結果の良しあしに関する情報を提供する値をとる確率変数ノード
    • for loop
    • ベクトルと行列とアレイ。そのインデックスルール
    • 値を変換して使うときは、新たに変数(ノード)を立てる
    • コメントは#
  • Appendix B 関数
    • 基本関数
      • y=|x|
y <- abs(x)
      • y=\ln{(-\ln{(1-x)})};x \in (0,1),\ln{(-\ln{(1-z)})} = a+ bx
y <- cloglog(x)
cloglog(z) <- a + b*x
      • y = \cos{x}
y <- cos(x)
      • y = 1 \text{if } a=b, y=0 \text{otherwise}
y <- equals(a,b)
      • y=e^x
y <- exp(x)
      • y = \sum_i a_i b_i
y <- inprod(a[],b[])
      • Y = X^{-1}; X, Yはnxn行列
y[1:n,1:n] <- inverse(x[,])
      • y = \ln{x} ; x>0,\ln{z} = a+bx
y <- log(x)
log(z) <- a + b*x
      • y=\ln{|X|},Xはsymmetric and positive definite
y <- logdet(x[,])
      • y = \ln{(x!)};x=0,1,2,...
y <- logfact(x)
      • y=\ln{(\Gamma(x))};x >0
y <- loggam(x)
      • y = \ln{(\frac{x}{1-x})}; x \in (0,1),\ln{(\frac{z}{1-z})}=a+bx
y <- logit(x)
logit(z) <- a+b*x
      • y=max(a,b)
y <- max(a,b)
      • y = \frac{1}{n}\sum_i x_i
y <= mean(x[])
      • y = min(a,b)
y <- min(a,b)
      • y = \Phi(x) = \int_{-\infty}^x \frac{1}{\sqrt{2\pi}}e^{-\frac{1}{2}t^2 dt
y <- phi(x)
      • y=a^b
y <- pow(a,b)
      • \Phi^{-1}(z)=a+bx
probit(z) <- a+b*x
      • y=\sqrt{x};x\ge 0
y <- sqrt(x)
      • y=\sum_j I(x_j \le x_i)
y <- rank(x[],i)
      • y = \text{ith smallest value in x}
y <- ranked(x[],i)
      • y=\lfloor x+0.5 \rfloor
y <- round(x)
      • y = \sqrt{\frac{1}{n-1}\sum_i (x_i-\frac{1}{n}\sum_i x_i)^2}
y <- sd(x[])
      • y = 1 if x \ge 0,y=0 otherwise
y <- step(x)
      • y = \sum_i x_i
y <- sum(x)
      • y = \lfloor x + (1-\epsilon I (x<0)\rfloor
y <- trunc(x)
    • 三角関数
    • 行列計算
      • t(): 転置
      • %*% : 積
      • mexp() : 指数行列
      • eigen.vals(x) : 固有値ベクトルを返す
    • 分布に関する関数
      • 確率変数を割り当てたノードs1,s2があって、s2の値がx、s1の値が\thetaであるときの、条件付き確率に関して
        • density(s1,s2) : p(x|\theta)
        • cumulative(s1,s2) : \int_{-\infty}^x p(u|\theta) du
        • deviance(s1,s2) : -2 \log{(p(x|\theta))}
      • その他、確率変数ノードを重複して作る(何のときに使うのか、わかっていない…)
        • replicate.post(),replicate.prior(),post.p.value(),prior.p.value()
    • 関数を引数にする関数、微積
      • integral(F(s),s1,s2,s3)はs1からs2までのsの積分数値計算的に、精度s3で返す
      • solution(F(s),s1,s2,s3)はs1からs2の間にあるF(s)=0の根を精度s2で返す
      • ode(v1,v2,D(v3,s1),s2,s3)は(ちょっとわかっていないのだけれど)v1を初期値点としてv2幅グリッドと刻み、時刻s2における常微分方程式の解を精度s3で数値計算するらしい。解かれるのは、D()という関数が定める何かしらの系…
    • その他
      • sort(x)。ilogit(x): \frac{e^x}{1+e^x}。icloglog(x): 1-e^{-e^{x}}
      • 不完全ガンマ関数 gammap(a,x) : \int_0^x \frac{t^{a-1}e^{-t}}{\Gamma(a)} dt
      • 線形補間関数 interp.lin(e,x,y) : (\mathbf{x},\mathbf{y})という値組があったときに、近接二点間のxの値eに対して、一次線形補間する関数
  • Appendix C 分布はこちらがwinBUGSのそれ