2014-02-14 24 views
3

我已經被要求通過使用方差分析和線性對比來檢查3組數據(每組5個點)是否存在線性趨勢。這3組代表在2010,20112012收集的數據。我想用R進行這個過程,我曾嘗試以下兩項:如何正確設置R中的對比度

contrasts(data$groups, how.many=1) <- contr.poly(3) 
contrasts(data$groups) <- contr.poly(3) 

這兩種方法似乎工作正常,但在它們的p值方面給予略有不同的答案。我不知道哪一個是正確的,在網上尋找幫助非常棘手。我希望找出幫助,找出不同答案背後的原因。我不確定它是否與劃分正方形或其他東西有關。

回答

3

兩種方法在使用二次多項式方面都不相同。

爲了說明的目的,看一下這個例子,xy都是一個有三個級別的因素。

x <- y <- gl(3, 2) 
# [1] 1 1 2 2 3 3 
# Levels: 1 2 3 

第一種方法創建一個二次多項式,即,具有線性(.L)和二次趨勢(.Q)對比度矩陣。 3表示:創建3 - 1 th多項式。

contrasts(x) <- contr.poly(3) 
# [1] 1 1 2 2 3 3 
# attr(,"contrasts") 
#    .L   .Q 
# 1 -7.071068e-01 0.4082483 
# 2 -7.850462e-17 -0.8164966 
# 3 7.071068e-01 0.4082483 
# Levels: 1 2 3 

相比之下,第二種方法產生一階多項式(即僅有線性趨勢)。這是由於參數how.many = 1。因此,僅創建了1對比度。

contrasts(y, how.many = 1) <- contr.poly(3) 
# [1] 1 1 2 2 3 3 
# attr(,"contrasts") 
#    .L 
# 1 -7.071068e-01 
# 2 -7.850462e-17 
# 3 7.071068e-01 
# Levels: 1 2 3 

如果您只對線性趨勢感興趣,那麼第二個選項似乎更適合您。

1

更改要求的對比度會更改模型的自由度。如果一個模型要求線性和二次對比,而第二個模型只需要指定線性對比度,那麼第二個模型具有額外的自由度:這將增加測試線性假設的能力(以防止模型擬合二次趨勢)。

使用完整的(「nlevels-1」)對比度集創建了一組正交對比度,探索整套(獨立)響應配置。削減到只有一個防止模型與二次成分,我們的數據實際上具備安裝一個配置(在這種情況下。

要看到這是如何工作的,使用內置的數據集mtcars,並測試(混淆)的齒輪加侖的關係,我們將假設越齒輪的更好(至少到某一點)

df = mtcars # copy the dataset 
df$gear = as.ordered(df$gear) # make an ordered factor 

有序因素默認爲多項式對比,但是我們在這裏將它們設置要明確。:

contrasts(df$gear) <- contr.poly(nlevels(df$gear)) 

然後我們可以建立關係的模型。

m1 = lm(mpg ~ gear, data = df); 
summary.lm(m1) 
#    Estimate Std. Error t value Pr(>|t|)  
# (Intercept) 20.6733  0.9284 22.267 < 2e-16 *** 
# gear.L  3.7288  1.7191 2.169 0.03842 * 
# gear.Q  -4.7275  1.4888 -3.175 0.00353 ** 
# 
# Multiple R-squared: 0.4292, Adjusted R-squared: 0.3898 
# F-statistic: 10.9 on 2 and 29 DF, p-value: 0.0002948 

注意,我們有F(2,29)= 10.9總體模型和p = 0.038我們估計有額外的3.7英里/齒輪線性效應。

現在我們只需要線性對比度,然後運行「相同」分析。

contrasts(df$gear, how.many = 1) <- contr.poly(nlevels(df$gear)) 
m1 = lm(mpg ~ gear, data = df) 
summary.lm(m1) 
# Coefficients: 
#    Estimate Std. Error t value Pr(>|t|)  
# (Intercept) 21.317  1.034 20.612 <2e-16 *** 
# gear.L   5.548  1.850 2.999 0.0054 ** 
# Multiple R-squared: 0.2307, Adjusted R-squared: 0.205 
# F-statistic: 8.995 on 1 and 30 DF, p-value: 0.005401 

齒輪的線性效應現在更大(5.5英里)和p < < 0.05 - 甲贏?除了整體模型適合現在顯着更糟糕:方差佔現在只有23%(是43%)!如果我們繪製的關係爲什麼是明確的:

plot(mpg ~ gear, data = df) # view the relationship 

(confounded) relationship of gears to gallons

所以,如果你有興趣的線性趨勢,但也希望(或者是不清楚)複雜的附加層,你也應該測試這些更高級的多項式。二次方(或者總體上趨向於-1級)。

請注意,在這個例子中,物理機制是混亂的:我們已經忘記了齒輪的數量與自動變速器和手動變速器以及重量,轎車與跑車混淆。

如果有人想測試4檔優於3的假設,他們可以回答this問題:-)