2012-07-06 57 views
0

我要分析的數據的研究設計很簡單。有1個對照組(CTRL)和2個不同的治療組(TREAT_1和TREAT_2)。數據還包括2個協變量COV1和COV2。我被要求檢查數據中是否存在線性或二次處理效應。Anova 2型和對比

我創建了一個僞數據組來解釋我的情況:

df1 <- data.frame(

Observation = c(rep("CTRL",15), rep("TREAT_1",13), rep("TREAT_2", 12)), 

COV1 = c(rep("A1", 30), rep("A2", 10)), 

COV2 = c(rep("B1", 5), rep("B2", 5), rep("B3", 10), rep("B1", 5), rep("B2", 5), rep("B3", 10)), 

Variable = c(3944133, 3632461, 3351754, 3655975, 3487722, 3644783, 3491138, 3328894, 
      3654507, 3465627, 3511446, 3507249, 3373233, 3432867, 3640888, 

      3677593, 3585096, 3441775, 3608574, 3669114, 4000812, 3503511, 3423968, 
      3647391, 3584604, 3548256, 3505411, 3665138, 

      4049955, 3425512, 3834061, 3639699, 3522208, 3711928, 3576597, 3786781, 
      3591042, 3995802, 3493091, 3674475) 
) 

plot(Variable ~ Observation, data = df1) 

正如你可以看到的情節有控制和治療組之間的線性關係。要檢查是否這種線性效果統計顯著我更改使用contr.poly()函數的對比度,適合這樣的線性模型:

contrasts(df1$Observation) <- contr.poly(levels(df1$Observation)) 

lm1 <- lm(log(Variable) ~ Observation, data = df1) 
summary.lm(lm1) 

從我們可以看到,線性效應在統計上顯著摘要:

Observation.L 0.029141 0..355 0.024 * 
Observation.Q 0.002233 0.012482 0.179 0.859 

但是,這第一個模型不包括任何兩個協變量。包括它們在內的結果爲非顯着的p值爲線性關係:

lm2 <- lm(log(Variable) ~ Observation + COV1 + COV2, data = df1) 
summary.lm(lm2) 

Observation.L 0.04116 0.02624 1.568 0.126  
Observation.Q 0.01003 0.01894 0.530 0.600  
COV1A2  -0.01203 0.04202 -0.286 0.776  
COV2B2  -0.02071 0.02202 -0.941 0.354  
COV2B3  -0.02083 0.02066 -1.008 0.320 

到目前爲止這麼好。但是,我被告知要進行II型Anova而不是I型。爲了進行II型Anova,我使用了汽車包裝中的Anova()功能。

Anova(lm2, type="II") 

Anova Table (Type II tests) 

Response: log(Variable) 
       Sum Sq Df F value Pr(>F) 
Observation 0.006253 2 1.4651 0.2453 
COV1  0.000175 1 0.0820 0.7763 
COV2  0.002768 2 0.6485 0.5292 
Residuals 0.072555 34 

這裏使用類型II的問題是,您沒有得到線性和二次效應的p值。所以我不知道這個效應是統計線性的還是二次的。

我發現下面的代碼與Anova()函數產生Observation相同的p值。但結果還沒有包括爲線性或二次效應任何p值:

lm2 <- lm(log(Variable) ~ Observation + COV1 + COV2, data = df1) 
lm3 <- lm(log(Variable) ~ COV1 + COV2, data = df1) 
anova(lm2, lm3) 

是否有人知道如何進行II型方差分析和對比功能以獲得線性和二次的p值效果如何?

幫助將非常感激。

最佳 彼得

回答

4

我發現這一個部分解決辦法,但它可能需要進一步修正。來自stats包的函數drop1()的文檔表明這個函數產生了Type II的正方形總和(雖然這個頁面:http://www.statmethods.net/stats/anova.html)聲明drop1()產生了Type III的正方形總和,並且我沒有花費太多時間仔細研究這個(http://afni.nimh.nih.gov/sscc/gangc/SS.html)來交叉檢查平方和計算。你可以用它來手動計算所有東西,但我懷疑你是在問這個問題,因爲如果有人已經完成了它,那將會很好。

不管怎麼說,我添加了第二個向量稱爲Observation2虛擬數據,並設置了只是的線性對比(你只能在給定的時間指定一組對比對於給定的載體):

df1[,"Observation2"]<-df1$Observation 
contrasts(df1$Observation2, how.many=1)<-contr.poly 

然後創建第三個線性模型:

lm3<-lm(log(Variable)~Observation2+COV1+COV2, data=df1) 

而且隨着drop1到F統計量從II型方差分析的兩種模式之間進行比較,F檢驗: LM2,其中包含兩者是叔他的線性和二次項:

drop1(lm2, test="F") 

LM3,其中包含只是的線性對比:

drop1(lm3, test="F") 

這還不包括對彼此的車型直接比較,雖然F統計量對於線性模型而言更高(並且p值相應更低),這將導致人們依賴於它而不是二次模型。