忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

反復測定分散分析のチュートリアル…を集めたブログ記事より
Repeated measures ANOVA with r (tutorials)

Good Tutorials

personality-project: Rをつかった分散分析の基本。最後のほうに反復測定の例 (原文: A basic tutorial about ANOVA with R (only the last bit holds some example of repeated measures) on personality-project)

motor control lab
: さらに詳しいチュートリアル (原文: A thorough tutorial on motor control lab)

UCLA seminar page: さらに詳しいチュートリアル (原文: A thorough tutorial on UCLA seminar page)


平方和のタイプに関する解説
http://prometheus.scp.rochester.edu/zlab/sites/default/files/InteractionsAndTypesOfSS.pdf


このブログに、数学/統計のグラフを踊ってみた、という大変どうでもいい動画のリンクがあったので貼っておこう。30秒あたりから


PR
UCLAのページを見ていたら、aov関数の誤差項の指定は簡単にできると初めて知った
うーむ、奥が深い
http://www.ats.ucla.edu/stat/R/seminars/Repeated_Measures/repeated_measures.htm

# 松井先生のサイトの例からコピペさせていただく。感謝

# 対応がある1要因分散分析(RBデザイン) (p.91)
RB <- data.frame(
  a = factor(c(rep(1,8), rep(2,8), rep(3,8), rep(4,8))),
  s = factor(rep(1:8, 4)),
  result = c(9,7,8,8,12,11,8,13, 6,5,6,3,6,7,10,9,
             10,13,8,13,12,14,14,16, 9,11,13,14,16,12,15,14))
print(summary(aov(result ~ a + s + Error(a:s), RB)))
print(summary(aov(result ~ a + Error(s), RB))) # Error(s)だけでよい

# 1要因に対応がある2要因分散分析(SPFp.qデザイン) データ数が同じ(p.107)
SPFp.q <- data.frame(
  a = factor(c(rep(1,20), rep(2,20))),
  b = factor(rep(c(rep(1,5), rep(2,5), rep(3,5), rep(4,5)),2)),
  s = factor(c(rep(1:5, 4), rep(6:10, 4))),
  result = c(3,3,1,3,5, 4,3,4,5,7, 6,6,6,4,8, 5,7,8,7,9,
             3,5,2,4,6, 2,6,3,6,4, 3,2,3,6,5, 2,3,3,4,6))
print(summary(aov(result ~ a * b + Error(s:a + s:a:b), SPFp.q)))
print(summary(aov(result ~ a * b + Error(s), SPFp.q))) # 上に同じ

# 反復測定要因が2要因以上のときは結果が異なる。松井先生のコードどおりにやらなくてはならない。うーむ、奥が深い。
Jonathan Baronの解説をいつか読もう
LearnR
http://www.fort.usgs.gov/brdscience/LearnR.htm

どっかでやった集中講義らしい

r-help検索。tolstoyやfinziよりも見やすい
http://www.mail-archive.com/r-help@stat.math.ethz.ch/info.html
http://tolstoy.newcastle.edu.au/R/
http://finzi.psych.upenn.edu/search.html

r-site searchのFirefox アドイン。未導入
http://addictedtor.free.fr/rsitesearch/

UCLAのRトップ

UCLA R learning module

Rのコーディングシステム

Practical Regression and Anova using R
by Julian J. Faraway
http://cran.r-project.org/doc/contrib/Faraway-PRA.pdf

Using R for Data Analysis and Graphics: Introduction, Examples and Commentary
by John Maindonald
http://wwwmaths.anu.edu.au/~johnm/r/usingR-3.pdf
http://wwwmaths.anu.edu.au/~johnm/r/

R 入門
http://brieger.esalq.usp.br/CRAN/doc/contrib/manuals-jp/R-intro-170.jp.pdf

Using SAS Proc Mixed to Fit Multilevel Models, Hierarchical Models, and Individual Growth Models という論文の例をRでやってみた
http://www.ats.ucla.edu/stat/R/paperexamples/singer/default.htm
元の論文: http://gseweb.harvard.edu/~faculty/singer/Papers/sasprocmixed.pdf
ここがわかりやすかったので、覚書。というかコピペ。官舎

dv <- c(8,6,7,7,6,4,5,5,6,3,5,3,3,6,2,3,4,2,2,3,6,7,5,4,6)
grp <- gl(5,5)

aovres <- aov(dv~grp)
summary(aovres)
model.tables(aovres)

# デフォルトの対比
options()$contrasts
contrasts(grp)

# ヘルマート対比で検定
coef.hel <- contr.helmert(5)
coef.hel
contrasts(grp)  <- coef.hel
aovres.h <- aov(dv~grp)
summary(aovres.h, split=list(grp=c(1,2,3,4)))
#  grp: C1    1 12.100  12.100  9.0299 0.0069971 ** grp1 vs. grp2
#  grp: C2    1 12.033  12.033  8.9801 0.0071289 ** grp1&2 vs. grp3
#  grp: C3    1 19.267  19.267 14.3781 0.0011441 ** grp1&2&3 vs. grp4
#  grp: C4    1  4.840   4.840  3.6119 0.0718780 .  grp1&2&3&4 vs. grp5

# 多項式対比で検定
coef.ply <- contr.poly(5)
coef.ply
contrasts(grp) <- coef.ply
aovres.p <- aov(dv~grp)
summary(aovres.p, split=list(grp=c(1,2,3,4)))

# 自分で対比を設定する
coef.s <- cbind(c(1,-1,1,0,-1), c(-1,-1,-1,4,-1))
coef.s
sum(coef.s)
contrasts(grp) <- coef.s
aovres.s <- aov(dv~grp)
summary(aovres.s, intercept=T, split=list(grp=c(1,2)))
#  grp: C1    1   0.20    0.20   0.1493 0.7033289     # grp1&3 vs. grp2&5
#  grp: C2    1  23.04   23.04  17.1940 0.0004994 *** # grp4 vs. grp1&2&3&5

dat <- data.frame(
ps=paste("p", 1:27, sep=""),
trt=gl(3, 9, labels=c("a1", "a2", "a3")), # "notreat", "spaced", "massed"
grp=rep(gl(3, 3, labels=c("b1", "b2", "b3")),3), #"washers", "checkers", "seekers"
value=c(5,4,5,4,5,3,3,5,4,5,6,3,4,6,3,12,10,13,10,12,16,11,10,12,13,12,10)
)

agdat <- aggregate(dat[4], list(dat[,2], dat[,3]), mean)

lmres <- lm(value~trt*grp, dat)
library(car)
Anovares <- Anova(lmres)
Anovares
smry <- summary(lmres)
mse <- smry$sigma^2 # 残差の平均平方和
by(dat, dat$trt, function(x) Anova(lm(value~grp, data=x), error=lmres))
by(dat, dat$grp, function(x) Anova(lm(value~trt, data=x), error=lmres))

vnm <- paste(agdat[,1], agdat[,2], sep="")
for (i in 1:9) assign(vnm[i], agdat[,3][i])

cv <- c(1,-1,1,-1) # 対比係数
n <- 3 # 各群の人数

nm <- (sum(cv*c(a1b1, a2b1, a1b3, a2b3)))^2 # (a1b1-a2b1+a1b3-a2b3) b1水準のa1, a2の差とb3水準のa1, a2の差の差をとって二乗しただけ
dn <- (sum((cv^2)*mse))/n
(fv <- nm/dn)
(tv <- sqrt(fv))
1-pf(fv, df1=1, df2=18) # 分子の自由度は1。分母の自由度は分散分析の誤差自由度
# F(1, 18) = 18.03, p < .001. b1群とb3群はa1 -> a2への反応に違いがあるということ (原文: The significant F indicates that Washers (b1)  and Seekers (b3)  respond differently at the two levels of Factor A (a1 and a2) .
(1-pt(tv, 18))*2


参考:
http://www.psychology.emory.edu/clinical/mcdowell/PSYCH560/factorw.htm
http://core.ecu.edu/psyc/wuenschk/docs30/Factorial-Computations.doc
http://www.sprweb.org/articles/Keselman98.pdf


プロフィール
HN:
tao
HP:
性別:
非公開
職業:
会社員
趣味:
アウトドア、自転車、ジョギング、英語学習
自己紹介:
・千葉在住のサラリーマンです。データ分析っぽいことが仕事。
・今年英検1級取得。今はTOEIC高得点を目指して勉強中。
・興味のあることは野球、アウトドア、英語学習、統計、プログラミング、PC関係などなど。
ブログ内検索
freead
順位表
プロ野球データFreak
セリーグ順位表
パリーグ順位表