2014-02-14 22 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问题:-)