通过使用ANOVA和线性对比,我被要求查看3组数据(每组5个点)是否存在线性趋势。这3个组代表在2010
,2011
和2012
中收集的数据。我想在这个程序中使用R,我尝试了以下两种方法:
contrasts(data$groups, how.many=1) <- contr.poly(3)
contrasts(data$groups) <- contr.poly(3)
两种方式似乎都能正常工作,但就p值而言,答案略有不同。我不知道哪个是正确的,在网上找到这方面的帮助真的很棘手。我想帮助弄清楚不同答案背后的原因是什么。我不确定它是否与分割平方和或诸如此类的东西有关。
答案 0 :(得分:5)
两种方法在是否使用二次多项式方面都不同。
为了便于说明,请查看此示例,x
和y
都是三个级别的因素。
x <- y <- gl(3, 2)
# [1] 1 1 2 2 3 3
# Levels: 1 2 3
第一种方法为二次多项式创建对比矩阵,即具有线性(.L
)和二次趋势(.Q
)。 3
表示:创建3 - 1
多项式。
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 :(得分: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 = .038,估计额外增加3.7 mpg /齿轮。
现在让我们只请求线性对比,并运行“相同”分析。
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 mpg)并且p <&lt;&lt; .05 - 一场胜利?除了整体模型拟合现在显着更差:差异占现在只有23%(是43%)!如果我们绘制关系,为什么很清楚:
plot(mpg ~ gear, data = df) # view the relationship
因此,如果您对线性趋势感兴趣,但也期望(或不清楚)额外的复杂程度,您还应该测试这些更高的多项式。二次方(或者,一般来说,趋势直到水平-1)。
另外请注意,在这个例子中,物理机制是混乱的:我们忘记了自动与手动变速器相混淆的齿轮数量,以及重量和轿车与跑车的混淆。
如果有人想测试4档比3档好的假设,他们可以回答this问题: - )