set.seed(123)こ のDというデータセットを用いて解析例を示します。categoryは個体を表し(合計4個体分のデータ),timesは各個体から50回づつ反復して データを取ったと解釈してください。すると,この場合,timesはcategoryにネストされていると言えると思います。ですからcategoryと timesは独立ではないはずです。
###それぞれのカテゴリー内に含まれる数を設定###
each_number <- 50
category <- 1:4
category_rep <- rep(category, each=each_number)
###値の分散を決定###
variance <- 10
error <- rnorm(4*each_number, 0, variance)
###各カテゴリーの平均値###
each_mean <- c(0, 30, 100, 300)
each_mean_rep <- rep(each_mean, each = each_number)
###反復回数の作成###
times = seq(1, each_number, each = max(category))
###傾きの作成###
b <- 2
times2 <- seq(-each_number/2,each_number/2,len=each_number)
times3 <- rep(times2, 4)
###値の作成###
val <- b*times3 + each_mean_rep + error
D <- data.frame(val=val, category = category_rep, times=times)
D$category <- as.factor(D$category)
###データ概観###
plot(D$times, D$val, col=D$category)
res_glm_nest <- glm(val ~ category/times, data=D)しかし,上記のsummaryでもわかるように,出力結果に交互作用項のような表記(A:Bのような)が見受けられます。そこで交互作用だとした場合も解析してみました。
summary(res_glm_nest)
beta0 <- coef(res_glm_nest)[2:4]+coef(res_glm_nest)["(Intercept)"]
beta0 <- c(coef(res_glm_nest)["(Intercept)"], beta0)
for (i in 1 : 4) {
points(beta0[i] + #カテゴリー変数と切片
coef(res_glm_nest)[i + 4] * seq(1,50), #傾き
type="l", col="red")
}
res_test_nest <- glm(val ~ category*times, data=D)すると,全く同じ解析結果を示し,AICも同じとなります。
summary(res_test_nest)
beta02 <- coef(res_test_nest)[2:4]+coef(res_glm_nest)["(Intercept)"]
beta02 <- c(coef(res_test_nest)["(Intercept)"], beta02)
alpha <- coef(res_test_nest)[6:8]+coef(res_test_nest)["times"]
alpha <- c(coef(res_test_nest)["times"], alpha)
for (i in 1 : 4) {
points(beta02[i] +
alpha[i] * seq(1,50),
type="l", col="blue")
}
library(DAAG)ネストと交互作用がどういった関係にあるのか調べてみたところ,以下のサイトを見つけました。
vif(res_glm_nest)
vif(res_test_nest)
No.09945 Re: ネストと交互作用 【マスオ】 2009/05/27(Wed) 00:43
times が category 内にネストされた効果は,Rの表記では
times %in% category
これは
times:category
とも書けて,両者の交互作用そのものです(timesは categoryに含まれているわけですから).
val ~ category / times
val ~ category + times %in% category
val ~ category + category:times
は表記が異なるだけで,皆同じ.
一方,フルモデル
val ~ category * times は,
val ~ category + times + category:times
ネストされた効果と交互作用の関係は計画行列を見ればわかりやすいかと思います.
SASの解説ですが参考になるでしょうか(Rとモデル式の表記が似て否なのでかえって混乱するかもしれませんが).
http://support.sas.com/onlinedoc/913/getDoc/en/statug.hlp/glm_sect29.htm
No.09947 Re: ネストと交互作用 【Sai】 2009/05/27(Wed) 11:10
マスオさんありがとうございます。
理解しました!つまり,ネストの項は主効果を含んでいるのですね。
category とtimesは独立ではないため,category+timesとそれぞれ独立変数として扱うのは微妙。そのため,category:timesとすれ ば,交互作用の項になるため新たな独立変数を生成できる。その際,timesはcategoryごとに変化するとデザインしたため,timesの主効果は 存在しない(これがネストの概念)。
それで,
val ~ category + category:timesとなるわけですか。なるほど。
一方,今回はフルモデルも同じ結果となりました。これは,timesという主効果を入れてもなお,category:timesの交互作用項が説明する分散があるのか,ということを見ていたわけです。
ネ ストしたモデルと同じ結果になったのはむしろ当然で,説明される分散は一緒で,その分散を,交互作用のみで説明するのか,主効果と交互作用に分けて説明す るのか,という違いですね。ということは解析者の目的に合わせてネストモデルと交互作用モデルの使い分けを行う必要がありそうですね。
参考URL,とてもわかりやすかったです。私の提示したモデルはそれぞれ,
category/times→Continuous-Nesting-Class Effects
caterogy*times→Continuous-by-Class Effects
ということですね。
今までネストの概念を交互作用とバラバラに考えていましたが,これで合点が行きました。つまり,最初の質問「何故モデルが違うのに説明される分散は一緒なのか」の答えは,「説明される分散は一緒でよい」のですね。どうもありがとうございました。
● 「統計学関連なんでもあり」の過去ログ--- 042 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る