No.04792 反復測定されたデータの解析  【波音】 2007/11/24(Sat) 13:45

反復測定されたデータの解析方法について教えてください。例えば,以下のようなデータセットについて考えます。被験者は2 群(変数group)に別けられており,1人の被験者(変数subject)に対して異なる4つの処置(変数treat)を施したときの結果(変数 record)をまとめたものです。
group <- rep(c(1, 2), c(20, 20))
subject <- rep(1:10, rep(4, 10))
treat <- rep(1:4, 10)
record <- c(
3,4,6,5,
3,3,6,7,
1,4,6,8,
3,5,4,7,
5,7,8,9,
3,2,3,2,
5,6,2,3,
2,3,3,3,
4,6,6,4,
6,4,5,6)
myData <- data.frame(group, subject, treat, record)
これは特に変哲のない典型的なデータセットといえるかもしれませんが,これについて,recordを目的変数,groupとtreatを説明変数としてlm()を用いて解析するとつぎのようになります。
attach(myData)
model1 <- lm(record ~ group + treat) #反復測定を独立であると仮定して解析
当然ながら,これは独立性の仮定が損なわれているわけですから誤った解析法です。ではこれを正しく解析するためにどうすればよいかということで悩んでいるのですが,私の結論としてたどりついたのが「一般化線形混合モデル」です。

それをRでやるとなると,どうやらlme()という関数を使うようなのですが,これの使い方がイマイチよく分かりません。これでもかなり時間を要して次のようなやり方に行き着いたのですが,,,
library(nlme)
model2 <- lme(record ~ group + treat, #ランダム切片モデル
random = ~ 1|subject, data = myData, method = "ML")
model3 <- lme(record ~ group + treat, #ランダム切片-傾きモデル
random = ~ treat|subject, data = myData, method = "ML")
model2は各被験者の測定値(record)に対して回帰直線を当てはめるときに「切片のみがランダムに変化し,傾きは同じである」とするものですよね?また,model3は「切片と傾きがランダムに変化する」というものだと理解しています。

結局,model2では「被験者によって差が認められるかどうか」ということに着目しており,model3では「被験者によって差が認められるかどうかに加えて,被験者内で処置によってどれ程変動があるか」ということに着目しているということなのでしょうか。

No.04795 Re: 反復測定されたデータの解析  【ごう】 2007/11/24(Sat) 18:23

GLMMでしたら,glmmML, lmer(ライブラリlme4) あたりがよく使われるところだと思います。今回は従属変数の分布がgaussianなのかpoissonなのかよくわかりませんが,最初にlm()しているということはlmerの方がいいのかな。

この辺が参考になるかもしれません。
http://www7.atwiki.jp/hayatoiijima/pages/33.html

No.04798 Re: 反復測定されたデータの解析  【波音】 2007/11/24(Sat) 23:41

回答ありがとうございます。

> GLMMでしたら,glmmML, lmer(ライブラリlme4) あたりがよく使われるところだと思います。

glmmML は知っていましたが,lmerというのもあるのですね。手元に3冊これに関する参考書があるのですが,いずれもlmeを使っていたのでlmeがもっとも一 般的なのかと思っていました(というか,とりあえずこれを理解するので精一杯だったというのもあるのですが)。

> 今回は従属変数の分布がgaussianなのかpoissonなのかよくわかりませんが,最初にlm()しているということはlmerの方がいいのかな。

ちなみに,これは参考書に載っているものです。森・吉田「心理学のためのデータ解析テクニカルブック」北大路書房という本のp117(2要因とも対応がある場合RBFpqデザイン)に載っているデータです。

古典的な実験デザインを一般線形モデルで扱うとどのようになるかを色々と試しているわけなんですが,,, とりあえず,紹介していただいたURLにあるやり方を試行錯誤している最中でして,もう少し考えてみます。

No.04799 Re: 反復測定されたデータの解析  【ごう】 2007/11/25(Sun) 08:49

ランダム傾きまではやったことがないのですが,ランダム切片モデルなら
> library(lme4)
> model.lmer <- lmer(record~group+treat+(1|subject),family=gaussian,data=myData)
> summary(model.lmer)
Linear mixed-effects model fit by REML
Formula: record ~ group + treat + (1 | subject)
Data: myData
AIC BIC logLik MLdeviance REMLdeviance
158.7 165.4 -75.34 150.4 150.7
Random effects:
Groups Name Variance Std.Dev.
subject (Intercept) 0.92809 0.96337
Residual 2.11193 1.45325
number of obs: 40, groups: subject, 10

Fixed effects:
Estimate Std. Error t value
(Intercept) 4.9500 1.3115 3.774
group -1.3000 0.7632 -1.703
treat 0.6200 0.2055 3.017

Correlation of Fixed Effects:
(Intr) group
group -0.873
treat -0.392 0.000
こんな感じでしょうか。ここで各変数の有意性を知りたいところですが,ここに少し記載があります。gaussianの場合ちょっと面倒みたいですね。
http://www.geocities.jp/iijima_web/study/study.html
2007年11月7日(水)の部分

No.04804 Re: 反復測定されたデータの解析  【波音】 2007/11/25(Sun) 22:52

度々の回答ありがとうございます。

結局,紹介していただいたlmer()が一番分かりやすいとい うか使い勝手が良かったです。lme()では変量効果(ランダム効果)をどのように指定するのかイマイチ分かりにくかったのですが,lmer()は記述の 仕方が非常に分かりやすかったです(もっとも,それはごう先生が例を提示してくださったからなのですが)。

そもそも,私が最初やっていたようにlme()を使っては,手元にある参考書の出力結果と同じものがでなくて困っていましたが,これで問題解決しました。あとは理論的なことをもっと深く勉強していきたいと思います。

● 「統計学関連なんでもあり」の過去ログ--- 041 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る