档案

Posts Tagged ‘共线性’

如何控制或考虑“控制变量”的影响?(续篇)

2011/08/03 3 条评论

keykure @ 2011-08-01:

非常感谢庄主的解答,我想我的问题应该是属于第三种情况,至少要先考虑交互影响。我还有一个非常简单的问题就是,在spss里输入自变量的时候怎么来区分fixed factors, random factors 和covariates,我经常搞混淆这三者。比如我的问题中X是连续变量,是不是就不能放到fixed factors中去,只能放到covariates中?

另外,因为涉及到的数据变量比较多,所以我主要用Matlab来做统计分析,我建立了如下模型(其中X为IQ),不知道和您解释的模型是否一致?

1) to detect main effect of Age, using sex and IQ as covariates:
Yi= mean(Y)+ a1i*Age + a2i*Sex + a3i*IQ + ei;

2) to detect main effect of Sex, using IQ and Age as covariates, as well including interactions (Age*Sex, Sex*IQ):
Yi= mean(Y)+ a1i*Age + a2i*Sex + a3i*IQ + a4i*(Age*Sex) + a5i*(Sex*IQ) + ei;

3) to detect main effect of IQ, using Age and Sex as covariates, as well including interactions (Age*IQ, Sex*IQ):
Yi= mean(Y)+ a1i*Age + a2i*Sex + a3i*IQ + a4i*(Age*IQ) + a5i*(Sex*IQ) + ei.

特别是第三个模型,就是我在帖子里咨询的问题,这样的模型再做线性回归,然后考察IQ的系数a3i以及其它交互影响的系数a4i,a5i的统计意义,是否就能达到我希望分析的目的(IQ对Y的影响)?

庄主 @ 2011-08-03:

你有关如何区别fixed factors, random factors, covariates的问题,我过几天另外写个帖子回答。

你模型1是一个三项main effects模型 (”主影响“或我原文中说的”直接影响“模型),同时检验了三个自变量 (Age、IQ和Sex)的直接影响。

模型2是一个三项主影响加两项second-order interactions(二阶交互影响)的模型,这个模型其实是多余的(理由见下)。

模型3也是一个主影响加两项二阶交互影响模型,与模型2的区别在于其中一项交互影响涉及到不同变量。这个模型不是检验IQ的主影响(这在模型1中已检验)、而是检验IQ与其它两个自变量的交互影响。接下来是一个极其重要的技术细节:如何判断交互影响的显著性?这也就是你下面的问题。请往下看。

Keykure @ 2011-08-02:

庄主您好,关于上面的三个模型,再补充问一个问题,关于模型1的:模型1中没有包含任何交互影响,得到的结果是Age对Y有显著影响;但是如果在模型1中加入Age*IQ的交互影响,Age的影响就变得没有显著意义了;因此模型1(主要看Age对Y的影响)需不需要加入交互影响呢?如果加入的话,显著性消失,是否就能说明Age对Y无显著影响呢?

庄主 @ 2011-08-03:

Age对Y是否有显著的主影响?这个问题与如何检验交互影响直接有关。具体来说,有以下几个相关的问题需要考虑:

一、交互项Age*IQ与Age高度共线性,所以当Age和Age*IQ同时出现在模型3中时,低阶的Age会被人为的提高其p值(即变得不容易显著)而高阶的Age*IQ则会人为的降低其p值(即变得更容易显著)。结论:不要轻易相信模型3的各回归系数的显著性。

二、克服上述偏差的方法之一是先分别对Age和IQ进行centering(中心化转换),然后将两个中心化自变量以及它们的乘积输入模型3。我先后写过两、三个有关帖子,请参考具体操作。

三、中心化转换的前提是有关自变量的原始数值服从正态分布(至少要对称分布),否则,中心化值与其交互项之间还是有共线性,无法解决问题一。这时,可改用比较模型1与模型3的拟合度(即两个R平方)之间的差别。也请参考我的有关前贴。

四、有一种很流行的说法,即如果两个自变量之间有显著的交互影响,那么就不需要考虑自变量的主影响了。这种说法在ANOVA框架下有其道理,因为这时涉及到的是实验数据,自变量之间以及与其交互项是独立的;但在回归分析框架下是不对的,因为即自变量之间以及与其交互项之间往往存在共线性。我应该也写过一个有关帖子的。

五、重复一下:先对所有自变量做中心化转换,然后用模型1检验所有主影响,再与模型3比较来检验交互影响。

变量的标准化与中心化有何不同?

2011/06/05 1条评论

ZFB @ 2011-06-05:

现想问您一个问题,希望您能在百忙之间能给予回答,谢谢!我在看以下文献

Scott W. Campbell & Nojin Kwak, Mobile Communication and Civic Life: Linking Patterns of Use to Civic and Political Engagement, Journal of Communication 中,其中有段话:

Interaction terms
In order to carry out analyses corresponding to RQ3, this study created interaction terms between the different usage patterns and competence with mobile telephony. To reduce potential problems with multicollinearity between interaction terms and their components, all the component variables were standardized prior to the formation of the interaction terms (Cronbach, 1987; Eveland, 1997; Jaccard, Turrisi, & Wan, 1990).

这里,我想问一个问题是,为什么交互效应会跟他们的组成元素会产生多重共线性,而“all the component variables were standardized prior to the formation of the interaction terms”指的是什么呢?是标准化了组成元素变量后再进行交互效应吗?这样能减少它们之间的多重共线性吗?如何进行标准化及产生交互效应呢?

庄主 @ 2011-06-06:

你的问题涉及交互影响的理解及其操作。我曾写过几个贴子讨论有关问题,今天简单解答其中涉及到概念,有关操作细节请查一下前贴,如尚有不解之处,望再提出。

在下述回归模型中,

Y = b0 + b1X + b2Z + b3XZ + b4W                                 (公式1)

Y是因变量,XZW是自变量,而XZ是前两个自变量之间的交互项。你的第一个问题是:为什么XZ分别与XZ之间有共线性?答案很简单:因为XZXZ的乘积。你可以用自己的数据试一下。或者执行一下我附录中的SPSS文件的第一部分,XZ并不相关(r = 0.006),但XZ的乘积XZ却分别与XZ高度相关(0.673和0.679)。

降低此类共线性的一个方法是将自变量XZ分别进行如下的中心化(centering)转换,并由此而生成新的交互项:

Xc = X – Xm                                 (公式2)

Zc = Z – Zm                                 (公式3)

XZc = XcZc                                  (公式4)

其中XcZc分别是XZ的中心化值,XmZm分别为XZ的均值,XZc是中心化之后的XZ的交互项。如果用附录的第二部分来检验,可以得到以下结果:

  1. XcZc的均值都成了0、但其标准差没有变(2.051和2.012);
  2. XXc或者ZZc均是线性相关的(r = 1.000),这是因为公式2和3对XZ仅仅作了线性转换,故不会(也不应该)改变中心化值与原始值的相关关系;
  3. XcZc的相关关系还是0.006;
  4. 最重要的是:新交互项XZc与中心化值XcZc的共线性大大降低了(-0.092和-0.076)。

你引用的文献中,作者用了”standardize”(标准化)方法,即

Xz = (X – Xm) / Xs                        (公式5)

Zz = (Z – Zm) / Zs                        (公式6)

XZz = XzZz                                   (公式7)

比较公式2与5或3与6,可知标准化与中心化的区别在于前者还除以原始值的标准差(XsZs),因为标准差是一个常数,所以标准化值(公式5和6)也是原始值的线性转换,因此我们可以预期以下结果:

  1. XzZz的均值还是为0、但其标准差变了(应该为1.000);
  2. X、XcXz三者或者Z、ZcZz三者之间应该是线性相关的(r = 1.000);
  3. XzZz的相关关系还是0.006;
  4. 最重要的是:标准化值之间的交互项XZz与标准化值XzZz的共线性也降低到同样程度(-0.092和-0.076)。

如果执行附录的第三部分,可以验证上述预期。

你也许会问,标准化和中心化哪种方法更好?中心化是更普遍使用的方法,其好处是XcZc保留了原始值XZ的测量单位(如年龄的岁数、上网时间的小时数等等),所以在使用中心化值的回归模型中,

Y = b0 + b1Xc + b2Zc + b3XZc + b4W                                 (公式8)

b1b2b3分别代表的是XZ的一个单位的增加导致Y的绝对变化量。相反,标准化是通过除了标准差而消除了原始值的测量单位,所以所以在使用标准化值的回归模型中(如你引用的文献),

Y = b0 + b1Xz + b2Zz + b3XZz + b4W                                 (公式9)

b1b2b3分别代表的是XZ的一个标准差的增加导致Y的相对变化量。相比之下,中心化值更直观、更接近研究现象。当然,如果XZ的测量单位本来就是人为设置的值(如态度量表),那么两种方法之间也就没有任何差别了。

最后重复一下我在前贴中多次提到的两个问题:第一、中心化(或标准化)不是解决所有变量之间共线性的灵丹妙药,其要求原始值XZ服从对称分布 (distributed symmetrically),如果XZ的分布不对称,中心化值(或标准化值)与其交互项之间还会有共线性。如附录中的XZ不是完全对称,所以其转换值与其交互项之间还有轻度相关。XZ的分布越不对称、其转换值与交互项之间的共线性越高。这时就需要先对XZ作纠偏转换、然后再做中心化或标准化。(记住:纠偏转换是非线性转化,会对最后的回归系数之解读带来一定的困难。)

第二、中心化或标准化不会改变原始值变量XZ之间的共线性。附录数据中已反复显示这一点。事实上,原始自变量之间的共线性是一个更大的问题。我在其它帖子中已讨论过,这里就不展开了。

附录、生成一个400个案数据并检验上述假设的SPSS Syntax文件

20110606_Appendix_SPSSSyntax

如何处理和报告含高度相关自变量的回归分析?

2009/03/28 4 条评论

>

Michael @ 2009-03-27:

祝老师您好,我看到很多多元线性回归没有报告自变量之间的相关性,是否只需要通过共线性检验就可以忽略自变量之间的相关性呢?另,我想分析两个高度相关(相关系数=0.8)的自变量A、B与Y的关系;CFA分析显示A、B具有显著差异(卡方值变化),我能否先用其中一个变量如A作用因变量,B作为自变量构建一个回归模型F,然后,用B和F模型形成的残差与Y回归呢?还是直接把AB放入回归模型?非常感谢!

庄主 @ 2009-03-28:

一、是否需要报告自变量之间相关程度?据我所知,绝大部分期刊确实没有将其作为必须报告之信息,也许是因为这一信息并不影响读者对回归模型的总解释力(即R平方)的理解。当然,高度相关的自变量即使能通过共线性检验,其统计显著性甚至系数的正负符号还是有可能受到影响(参见“如何在回归分析中检验和解读交互影响”和其他前贴)。所以,作为作者,不但有责任报告自变量之间的相关程度(但并不一定需要一个表格,用一两句话注明那些相关系数高于0.5的自变量即可),更需要根据R平方之变化值(“如何用block方法检验交互影响?”)或semi-partial R平方(“ΔR2与Semipartial R2”)等结果来检验和解读有关自变量的显著性。

二、如何将高度相关的自变量输入回归模型?一般的做法是将所有自变量(即你的A和B)同时引入回归分析,然后用上述方法来检验各自的显著性和独立贡献程度。这些方法不但在统计理论是成熟的,而且在解读时也是便利的。你建议的方法,其实就是将A和B之间的共同影响部分全部划归为B(这种做法与我在block方法中讲的先引入B、再引入A的结果一模一样),这就需要你有充分的理论根据(如B是A的自变量)才有意义,不然会导致人为夸大B的影响而缩小A的影响。

为了便于其他读者理解我们这里的讨论,让我用几个公式来说明一下。你的回归模型是

Y = b0 + b1A + b2B + e (公式一)

其中e是Y中无法被A和B解释的残差。因为A和B高度相关(r = 0.8),你打算分两步来检验公式一:

A = c0 + c1B + f (公式二)

Y = b0′ + b1’f + b2’B + e’ (公式三)

其中公式二中的f是A中无法被B解释的残差(也即A与B无关的部分),因此当作一个自变量进入公式三。如果用R平方来考察上述模型,其与block方法中的部分结果是一样的。在block方法中,你可以先检验

Y = b0 + b2B + e (公式四)

得到R42,它反映了B对Y的影响(其中包括了B和A的共同影响),然后再加入A(即检验公式一)而得到R12,而ΔR = R12 – R42的差即反映了A对Y的独立影响。

注意,R12,与公式三的R32应该是等值的、e和e’也应该相同;但b0和b’0、b1和b’1、b2和b’2则有可能不同,一般来说,b2’会大于b2、b1’则小于b1,因此我认为你的方法可能会“人为夸大B的影响而缩小A的影响”。当然,这种风险在上述的(不完整)block方法中也同样存在。

那么,应该如何处理呢?我在上述的几贴中已详细介绍过,这里只简单重复一下。先分别检验公式一、四和五(见下),

Y = b0 + b1A + e (公式五)

然后分别计算Δ1 = R12 – R42、Δ2 = R12 – R52和Δ3 = R12– R42 – R52,其中Δ1反映了B的独立影响;Δ2反映了A的独立影响;Δ3反映了A和B的共同影响。如果A和B完全无关,Δ3则为0,但在本例中,因为A和B高度相关,所以Δ3可能远远大于Δ1和Δ2。因此,这部分影响归功于谁,是十分重要而又复杂的问题,不能随意处置。