R语言 | 多元回归分析中的对照编码(contrast coding) | 第二节 deviation coding(偏差编码)

Deviation coding(或称为Effect Coding)是一种contrast编码方式。因为采用该contrast的回归方程的回归系数之和等于0,又称作sum contrast。


Deviation Coding的定义是每个Level的反应变量的均值(Mean_per_Level)每个Level的反应变量的均值的均值(Grand_Mean)进行对比。


参考dummy coding文中的例子。

如下是每个Level在反应变量weight上的均值(Mean_per_Level)


Grand_Mean=(102.6455+122.6167+142.9500+135.2627) / 4=125.8687


对于Deviation Coding,R会创建从第1个Level到第K-1个Level的dummy variable,并将之与Grand_Mean进行对照(求差)而得到该Level上的dummy variable的系数。这个系数的含义是:该Level上的反应变量的均值 与 总体的均值的偏差大小。(注:dummy coding,即treatment,的含义是该Level上的反应变量的均值与第一个Level的均值的偏差大小)

另外,第K个Level的dummy variable是不需要的,因为可以通过其他的dummy variable推导。


我们先来看个例子(还是用dummy coding文中的例子)


这个contrasts matrix用来创建dummy variable并作为赋值的依据。Level4全部赋值为-1,表示不参与对比。


来看模型:

截距就是Grand_Mean

根君Deviation coding的定义,Diet1的系数 -23.223 = Mean_of_Weight_Given_Diet1 - Grand_Mean = 102.6455 - 125.869 = -23.223

也就是说我们想知道在Diet1下的Weight的均值只要把截距+Diet1的系数即可:125.869 +(-23.223) = 102.646

以此类推,可以轻易获知Diet2、Diet3下的weight的均值。

那么,Diet4的系数怎么计算内?推导如下(共4步):

  1. Intercept(grand mean) = (Level1 mean+Level2 mean+Level3 mean+Level4 mean)/4 = [((Intercept(grand mean) + Diet1) + (Intercept(grand mean) + Diet2) +( Intercept(grand mean) + Diet3) +Level4 mean)] / 4
  2. Level4 mean = Intercept(grand mean) - (Diet1+Diet2+Diet3)
  3. Level4 mean = Intercept(grand mean) + Diet4
  4. Diet4 = Intercept(grand mean) - (Diet1+Diet2+Diet3) - Intercept(grand mean) = -(Diet1+Diet2+Diet3)

通过推导,Diet4的系数其实就是Diet1,Diet2,Diet3的系数求和的负数,这就是本文开篇称之为Sum Contrast的原因。这样可以轻易算出在Diet4下的weight的均值。


Sum Contrast可以通过每个dummy variable的系数查看在每个Level上的效用的大小(这里的效用是比较与总体的均值的偏差,主要用于比较各个Level的影响程度;而treatment方法下的系数的效用是指当给定该Level后,其他因素不考虑,该Level对反应变量提升(或降低)的偏差)


参考文献

http://www.ats.ucla.edu/stat/r/library/contrast_coding.htm

http://www.jds-online.com/files/JDS-563.pdf

你可能感兴趣的:(R语言)