ジャックナイフ

基本的には、データから1つデータを取り出して、擬似値を計算する。それから、その擬似値の集合(データと同じ分だけできる)から統計量を計算する。

jack.mean <- function(data)
{
Mean.obs <- mean(data)
Pseudovalues <- c(rep(0, i))
for (i in 1:length(data))
{
Data.minus.one <- data[-i]
Mean.minus.one <- mean(Data.minus.one)
Pseudovalues[i,] <- i * Mean.obs - (i - 1) * Mean.minus.one
}
Pseudovalues
}

こんな感じで。
ブートストラップより計算量が少なく、R等を使えば、自由に擬似値を発生できるのが強みでしょうか。
仮説検定等にも柔軟に対応できる利点があるとのこと。



lme4パッケージの分散成分は

VarCorr(model)$'randameffect'[1]

で。

残差は

(attr(VarCorr(model), "sc"))^2

で。

ちなみに最近は遺伝率とかの計算をしたり、簡単にGLMM+ベイズをやる場合は、
MCMCglmmパッケージがよく使われているみたい。

prior.poi <- list(R = list(V = diag(1), nu = 0.002),
G = list(G1 = list(V = diag(4) * 0.02, nu = 4),
G2 = list(V = 1, nu = 0.002)))

このように初期値を設定する必要有り。
Rがいわゆる固定効果、Gがいわゆる変量効果の変数数*1。上で4とあるのは、今回変量効果1と2(今回はカテゴリカル)を別の変数ごとにみるようにしているからパラメータを4つ独立で推定(usじゃなく、idhでやるとそれぞれの変数がゆるーい関係を持つように推定してくれる)。G2が、もうひとつの変量効果。

m.poi1 <- MCMCglmm(y ~ 1,
random = ~ us(insect:plant):population:location + location,
family = "poisson",
data = data, prior = prior.poi,
verbose = F
)

VCVはパラメータの推定値

V.poi1 <- matrix(colMeans(m.poi1$VCV)[1:16], 4, 4)
colnames(V.poi1) <- colnames(m.poi1$VCV)[1:4]

で、行列に変換する。

*1:追記;2012/6/9ここの記述は誤りです