Stata: repeated ANOVA 作法

Stata 在repeated ANOVA方面,文件不多,最近因為一個計畫需要用到這種方析方式,花了不少時間學習。用完之後趕快寫下一點心得,以免以後健忘。

Stata 的repeated ANOVA必須將資料將寬格式轉換成長格式,如果不知道這些名詞,請參考這篇 Stata: reshape 將資料從寬格式改成長格式

下面的code有點複雜,請慢慢看。

anova dtest group / uid|group times times#group, repeated(times)

最前面的anova,是分析的指令,後面接的dtest,就是資料變成長格式之後,學生在不同時間的測試分數,所以就是要看不同時間測試分數的變化。

group的不同的組,這是一個categorical variable,不同的數值代表不同的實驗組別。
如果作一般的anova,就是這部分。

接下來會看到/,在stata 的說明文件裡是這麼說的:
The / symbol is allowed after a term and indicates that the following term is the error term for the preceding terms.

所以/後面放的是error term,在這例子裡,error term就是學生的id乘以組別。

你會發現前半部是uid,中間有一個| (這不是I,而是一直線的符號),這符號代表的是nesting:
The | symbol (indicating nesting) may be used in place of the # symbol (indicating interaction).
在這例子裡,subject是nested在組別裡面的。

在這之後,times是within subject的變數,而後面的times#group是這兩者的interaction (#代表interaction)。

在下了下面指令之後,出現的結果如下圖:
Repeated anova 1
group3 不顯著,代表組別之間沒有差異,uid|group3沒有顯著水準測試,因為是error term。
times顯著,代表測試在不同的時間呈顯著差異。

times#group3為顯著,代表時間與組別之間有交互作用,意思是組別之間在不同時間的成長並不一定相同。

接下來我們要繼續看這交互作用,這用下面的code
contrast times@group3, effect

contrast通常是在跑完基本分析之後作的estimation,這裡測試的是simple effect.
a@b 表示用contrast的指令,測試a在每一個b裡面的作用。

由於每一組都有時間,我們測試的是時間在每一組裡面的作用,所以時間放前面,@後面放組別。

下面是跑出來結果的上半部分:
Repeated anova 2
這圖一開始先測試的是組別之間的差異,控制組來說,時間並沒有影響,但對其它組來說,時間是有影響的。

後半部則是組內之間,時間不同的比較,2 vs base 就是第二次測量與第一次測量之間的差異,括號後面則是組別。
Repeated anova 3
如果你想要具體比較某一組,在不同時間的變化,那可以用如下指令:
margin times, at(group3=1) pwcompare(effects) noestimcheck

結果如下圖。如果你仔細看,contrast 2 vs 1 的結果,跟上圖 (2 vs base) control 的結果是一樣的,3 vs 1 與上圖 (3 vs base) control 是一樣的。

Repeated anova 4
另外一種比較方式是固定時間,然後比較組間差異,code與上面相似,但 at的部分不同:
margin group3, at(times=1) pwcompare(effects) noestimcheck

這結果就不截圖了,讓大家自己練習。

如果要畫圖的話,下面的相關文章有code,就讓大家自己學習。

相關文章

Why do I get an error message when I try to run a repeated-measures ANOVA?

Repeated Measures Analysis with Stata



標籤: