0

我想测试选民投票支持特定政党“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*motive1region*motive2...)?

但在这种情况下,我可以添加多少交互项?我是否必须将“区域”中的零重新编码为类似于0.0000000001零的乘法会扭曲结果?最后,我是否必须将交互项与该交互项的两个组成部分(例如regionmotiveregion*motive)一起放入模型中,还是只会导致多重共线性?

谢谢!

4

1 回答 1

1

结果是二元的,因此自然建模框架将是逻辑回归。我没有看到数据收集的层次结构,因此建议使用 -*运算符在区域和动机之间形成的交互项。

 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(包括拦截)。

于 2018-06-04T21:02:26.040 回答