代码之家  ›  专栏  ›  技术社区  ›  Dr. Fabian Habersack

用R中的层次模型检验区域相互作用效应

  •  0
  • Dr. Fabian Habersack  · 技术社区  · 7 年前

    我想测试castig one投票给某个政党“XY”背后的选民动机,以及居住在某个地区是否会产生重大影响。问题是,A区(编码为“1”)的选民与B区(编码为“0”)的选民在动机上是否存在显著差异。

    以下是我的数据结构(过于简化):

    region_AB   motive   voter_attribute  vote_for_party_XY
    1           1        1                1
    1           0        1                1
    1           1        0                0
    0           0        0                0
    0           0        1                0
    0           1        0                0
    

    我的猜测是在R区运行一个二元逻辑分层模型,但接下来我如何找出不同的动机和选民特征是否对a区和B区的公民起作用?我不只是想测试区域效应,而是测试区域在整个模型中产生的差异。

    或者我可以简单地在标准逻辑回归模型中加入交互项(例如。 region*motive1 , region*motive2 ...)?

    但在这种情况下,我可以添加多少交互术语?我是否需要将“区域”中的零重新编码为 0.0000000001 因为与零相乘会扭曲结果吗?最后,我是否必须将交互项与该交互项的两个组成部分(例如。 region , motive region*motive )或者这只会导致多重共线性?

    非常感谢。

    1 回复  |  直到 7 年前
        1
  •  1
  •   IRTFM    7 年前

    结果是二元的,因此自然建模框架是逻辑回归。我没有看到数据收集的层次结构,因此我建议使用区域和动机之间形成的互动术语,使用 * -接线员。

     glm( vote_for_party_XY ~ region_AB * motive +  voter_attribute, family = "binomial")
    

    请注意,当使用“*”运算符时,R公式界面包含两个“主效应”项。您可以通过以下方式获得相同的效果:

     region_AB + motive + region_AB : motive 
    

    将有(至少)三个系数描述区域激励结果:一个系数仅用于区域(适用于区域=1和激励=0的人员),第二个系数仅用于激励(适用于区域0和激励=1的人员),第三个系数(适用于区域=1和激励=1的人员)。所有估计都将与适用于所有因素均处于0-(参考)水平的人的截距项相关。要计算region=1和region=1的人的投票率,请添加Intercept、region=1和交互系数的系数。如果有两个以上级别的“区域”(比如n)和“动机”(比如m),那么系数的数量将是 1 +(n-1) +(m-1)+(n-1)*(m-1) ,我想这就是 n*m (包括拦截)。