ぱらぱらめくる『Rによる計算機統計学』と『生物学のための計算機統計学』

Rによる計算機統計学

Rによる計算機統計学

n<-1000
m1<-0
m2<-10
sd1<-1
sd2<-5
x1<-rnorm(n,m1,sd1)
x2<-rnorm(n,m2,sd2)
tatamikomi<-x1+x2
k<-as.integer(runif(n)>0.5)
kongou<-x1*k+x2*(1-k)
par(mfcol=c(1,2))
hist(tatamikomi,prob=TRUE)
hist(kongou,prob=TRUE)
par(mfcol=c(1,1))

    • 多変量分布
      • 多変量正規乱数
### Example 3.18 (Choleski factorization method)
# 標本データから各確率変数の平均と分散共分散行列を出して、それをもとに多変量正規分布乱数を発生する
rmvn.Choleski <-
    function(n, mu, Sigma) {
        # generate n random vectors from MVN(mu, Sigma)
        # dimension is inferred from mu and Sigma
        d <- length(mu)
        Q <- chol(Sigma) # Choleski factorization of Sigma
        Z <- matrix(rnorm(n*d), nrow=n, ncol=d)
        X <- Z %*% Q + matrix(mu, n, d, byrow=TRUE)
        X
    }
    
    #generating the samples according to the mean and covariance 
    #structure as the four-dimensional iris virginica data
    y <- subset(x=iris, Species=="virginica")[, 1:4]
    mu <- colMeans(y)
    Sigma <- cov(y)
    mu
    Sigma

    #now generate MVN data with this mean and covariance
    X <- rmvn.Choleski(200, mu, Sigma)
    pairs(X)
        • こちらでMASSパッケージのmvrnorm()を紹介されているので、その中身と比較してみよう
          • eigen()を使うかchol()を使うかは、ひとまず置いて置くとして、
          • 教科書の方は『どういうつもりでこのソースを書いていますよ』という書き方になっていて、
          • mvrnorm()の方はRのパッケージにするにあたっての不備がないようにする行が多い
library(MASS)
mvrnorm
> mvrnorm
function (n = 1, mu, Sigma, tol = 1e-06, empirical = FALSE) 
{
    p <- length(mu)
    if (!all(dim(Sigma) == c(p, p))) 
        stop("incompatible arguments")
    eS <- eigen(Sigma, symmetric = TRUE, EISPACK = TRUE)
    ev <- eS$values
    if (!all(ev >= -tol * abs(ev[1L]))) 
        stop("'Sigma' is not positive definite")
    X <- matrix(rnorm(p * n), n)
    if (empirical) {
        X <- scale(X, TRUE, FALSE)
        X <- X %*% svd(X, nu = 0)$v
        X <- scale(X, FALSE, TRUE)
    }
    X <- drop(mu) + eS$vectors %*% diag(sqrt(pmax(ev, 0)), p) %*% 
        t(X)
    nm <- names(mu)
    if (is.null(nm) && !is.null(dn <- dimnames(Sigma))) 
        nm <- dn[[1L]]
    dimnames(X) <- list(nm, NULL)
    if (n == 1) 
        drop(X)
    else t(X)
}
<bytecode: 0x09bde874>
<environment: namespace:MASS>
        • と思ったら、本では、(rmvn.eigen(),rmvn.svd()も作って、それらとともに)パフォーマンスを比較していた
>     set.seed(100)
>     system.time(for (i in 1:N)
+         rmvn.eigen(n, mu, cov(matrix(rnorm(n*d), n, d))))
   ユーザ   システム       経過  
      2.95       0.00       2.95 
>     set.seed(100)
>     system.time(for (i in 1:N)
+         rmvn.svd(n, mu, cov(matrix(rnorm(n*d), n, d))))
   ユーザ   システム       経過  
      3.79       0.00       3.81 
>     set.seed(100)
>     system.time(for (i in 1:N)
+         rmvn.Choleski(n, mu, cov(matrix(rnorm(n*d), n, d))))
   ユーザ   システム       経過  
       2.2        0.0        2.2 
>     set.seed(100)
>     system.time(for (i in 1:N)
+         mvrnorm(n, mu, cov(matrix(rnorm(n*d), n, d))))
   ユーザ   システム       経過  
      3.03       0.00       3.02 
>     set.seed(100)
>     system.time(for (i in 1:N)
+         rmvnorm(n, mu, cov(matrix(rnorm(n*d), n, d))))
   ユーザ   システム       経過  
      3.82       0.00       3.84 
>     set.seed(100)
>     system.time(for (i in 1:N)
+         cov(matrix(rnorm(n*d), n, d)))
   ユーザ   システム       経過  
      0.97       0.00       0.97 
m<-10000
x<-runif(m)
theta.hat<-mean(exp(-x))
theta.hat
1-exp(-1)
> theta.hat
[1] 0.6321605
> 1-exp(-1)
[1] 0.6321206
        • \theta =\int_{2}^{4} e^{-x}dx=exp^{-2}-e^{-4}
m<-10000
L<-2
U<-4
x<-runif(m,min=L,max=U)
theta.hat<-mean(exp(-x))*(U-L)
> theta.hat
[1] 0.1164698
> exp(-L)-exp(-U)
[1] 0.1170196

生物学のための計算統計学 ?最尤法,ブートストラップ,無作為化法?

生物学のための計算統計学 ?最尤法,ブートストラップ,無作為化法?

  • 上記の『Rによる計算機統計学』がモンテカルロ概論とすると、こちらの本『生物学のための計算統計学』はそれの生物学(生態学)での利用法解説
  • Rの親戚(親?)であるS-PLUSを使って解説している
  • 第2章
    • 最尤法
      • 生物学の現象モデルが変数で表される
      • データに基づいて変数を推定する
      • 点推定・区間推定を最尤法で実施する
      • 最小二乗法と最尤法の関係
      • 仮説検定も尤度の枠組みで
  • 第3章
  • 第4章
  • 第5章
    • パーミュテーション法
  • 第6章
    • 回帰する
    • 複数のパラメタ
      • 逐次回帰法
        • 変数減少法
        • 変数増加法
        • 逐次過程を中止する基準としてのAIC
    • 交差検定
      • 2分割法
      • K分割法
      • 1個抜き交差検定
    • 平滑化
    • 一般化線形回帰
    • 分類木・回帰木解析
    • ベイズ