议员是如何投票的?

[latexpage]

一、议员投票

这个数据在近几年的图模型文章中常能见到,并且已有很多深入的讨论——包括图结构随时间变化、多图联合估计等情况。本文只涉及单个图结构的估计,此外笔者对政治不了解,因此文中摘录wiki的相关评论。

从 http://www.senate.gov 可以看到senators每次投票的结果。那么,你关心的议员在每次投票中起到怎样的作用?有怎样的政治立场?本文数据选取美国第111届议会(2009年、2010年)roll-call vote数据,涉及110位参议员696个议案的投票结果(点击此处下载数据)。利用图模型,我们可以对议员投票行为作图。下图中,每个点代表一个议员,每条边表示两个议员的投票行为“很相似”——他们常常同时投赞成票或反对票。

图中,两派阵营的状态很明显。绿色的是Democrat,红色的是Republican,蓝色的是Independent。一般认为,民主党在政治上偏左,主张社会自由与进步;而共和党偏右,“reflects American Conservatism”。可以从图中获得很多信息,下面我们对此图做一点深究。

abc

首先,红绿交界处的Lincoln、Nelson、Collins等人是否代表了某种“中间力量”?以下从维基摘录的一段话(http://en.wikipedia.org/wiki/Bill_Nelson)或许回答这个问题。

Nelson’s votes have tended to be more liberal than conservative. He has received high ratings from left-of-center groups such as Americans for Democratic Action, and low ones from right-of-center groups such as the Eagle Forum and the Club for Growth. According to ratings by the National Journal, Nelson’s votes have been liberal on economic matters, moderate on social issues, and liberal but close to the center on foreign policy.

其次,我们再来看另一个极端。选取图中远离红点的一个绿点(图中左下角)——Cantwell;以及远离绿色区域的红点(图中右下角)——Enzi。同样是摘自wiki的两段话,验证了他们的“极左”和“极右”。

While she(Cantwell) scores high on a progressive chart from ProgressivePunch.org,[25] Cantwell has made several controversial votes during her time in the Senate that have created friction between her and members of the Democratic Party.

Enzi was ranked by National Journal as the sixth-most conservative U.S. Senator in its March 2007 conservative/liberal rankings.[7] Despite his strong support of the War in Iraq, he was one of 14 U.S. Senators to vote against the Iraq War funding bill in May 2007 because he opposes the clauses of the bill which increase domestic spending.

此外,被绿点包围的蓝点Lieberman——“A former member of the Democratic Party, he was the party’s nominee for Vice President in the 2000 election. Currently an independent, he remains closely affiliated with the party.”

除了以上分析,还可以获得很多信息。比如可以分析图中的重要节点、用局部估计的方法了解投票关联是如何随时间变化的,等等。

二、图模型——罚极大似然

如何才能获得这幅“议员投票图”呢?它的理论依据是什么?估计图结构的方法也有很多,这里只介绍罚极大似然的方法。

图结构估计得常用假设是数据来自正态分布——注意上例的数据为二项分布,banerjee(2007)在论文中探讨了二项分布数据的问题,最终所求解的最优化表达式和正态类似;本文中暂且忽略banerjee(2007)中的细节,把投票数据用正态分布处理。正态分布的概率密度函数为
\[
f(x)=\frac{1}{(2\pi)^{p/2}|\Sigma|^{1/2}}\exp\Big\{-\frac{1}{2}(X-\mu)^T\Sigma^{-1}(X-\mu)\Big\}
\]
假设数据$x_1, x_2, \cdots, x_n$来自正态分布,每个$x_i$(p维向量)记录p位议员的一次投票结果。如果用协方差矩阵描述议员投票的相关关系,那么它的极大似然估计为,
\[
S=\frac{1}{n}\sum_{i=1}^N(x_i-\bar{x})(x_i-\bar{x})^T
\]
协方差矩阵的逆$\Omega=\Sigma^{-1}=\big(\omega_{ij}\big)_{p\times p}$在图模型中被称为Concentration Matrix或者Precision Matrix。该矩阵与偏相关系数有如下关系:
\[
\rho_{ij|\\\{i,j\}}=-\frac{\omega_{ij}}{\sqrt{\omega_{ii}\omega_{jj}}}
\]

由此可以看出,$\Omega$矩阵中的零元素代表了对应议员投票行为的条件独立关系。

为了在高维问题中更精确地估计$\Omega$矩阵,可以采用罚极大似然估计。首先回顾对数似然函数的表达式
\[
\begin{split}
\sum_{i=1}^n\log & f(x_i)=\frac{np}{2}\log(2\pi)-\frac{n}{2}\log|\Sigma|
-\frac{1}{2}\sum_{i=1}^n(x_i-\bar{x})^T\Sigma^{-1}(x_i-\bar{x})\\
&=\frac{np}{2}\log(2\pi)-\frac{n}{2}\log|\Sigma|
-\frac{1}{2}tr\Big(\sum_{i=1}^n(x_i-\bar{x})(x_i-\bar{x})^T\Sigma^{-1}\Big)\\
&\propto p\log(2\pi)-\log|\Sigma|-tr\big(S\Sigma^{-1}\big)
\end{split}
\]
此外,由于$\Omega=\Sigma^{-1}$,令上式最大等价于求解下式的最小值
\[
tr(S\Omega)-\log|\Omega|
\]
在$\Omega$矩阵非零元素稀疏的假定下,通过加罚,我们可以得到以下的最优化问题(解空间为正定矩阵):
\begin{equation}
\min_{\Omega\succ 0}\Big\{tr(S\Omega)-\log|\Omega|+\lambda\sum_{i\neq j}|\omega_{ij}|\Big\} \label{obj:main}
\end{equation}

针对此最优化问题,Yuan and Lin(2007)通过maxdet最优化算法求解,banerjee(2007)则借用内点搜索方法(interior point method),此外Friedman(2007)则将它转化为Lasso 的表达形式再通过shooting 算法求解。还有一类算法是从贝叶斯角度考虑,Bayesian Graphical Lasso,思想很像 Bayesian Lasso.

 求解(1)式,得到$\Omega$矩阵,它的非零元素便对应“投票图”中的一条边。

 

三、数据与代码

R数据下载——数据中包含三个矩阵(数据来自http://www.senate.gov)。

  • idList矩阵为参议员信息。每行对应一个参议员。5列分别对应:议员id,last name, first name, state, party(Democrat, Republican or Independent)
  • bilInfo为投票议案信息(bil info)。每行对应一项议案信息,4列分别为:议案编号、投票时间、议案描述、投票结果。
  • voteMatrix矩阵为投票信息,每行对应bilInfo的议案,每列对于idList的一个议员。若voteMatrix的第i行第j列数值为1,表示议员j对议案i投了赞成票;-1表示反对票;NA表示未投票。

代码很简单,只有以下几行:

library(spaceExt)
library(igraph)
load("senate.RData")
#移除投票缺失较多的议员
sel=which(!(colSums(is.na(voteMatrix))>100))
partyD=as.numeric(idList[sel,5]=="D")
partyI=as.numeric(idList[sel,5]=="ID" | idList[sel,5]=="I")
#用spaceExt做计算
res=glasso.miss(voteMatrix[,sel],20,rho=0.1,penalize.diagonal=FALSE)
#计算偏相关系数矩阵
p=-res\$wi
d=1/sqrt(diag(res\$wi))
p=diag(d)%*%p%*%diag(d)
diag(p)=0
#igraph包生成图模型、作图
g=graph.adjacency((p>(0.055)),mode="undirected",diag=F)
V(g)\$color=(partyD+2+partyI*2)
V(g)\$label=idList[sel,3]
par(mar=c(0,0,0,0))
plot(g,layout=layout.fruchterman.reingold, edge.color=grey(0.5),vertex.size=10)

相关文章补充:

  1. Yuan, M., and Lin, Y. (2007) Model selection and estimation in the Gaussian graphical model. Biometrika , 94, 1, pp. 19–35
  2. Friedman, J. H., Hastie T, Tibshirani R. “Sparse inverse covariance estimation with the graphical lasso.” Biostat (2008) 9 (3): 432-441.
  3. Banerjee, O., Ghaoui, L. E. and d’Aspremont, A. (2007), Model selection through sparse maximum likelihood Estimation, J. Machine Learning Research 101.
  4. Wang, H. The Bayesian Graphical Lasso
  5. Mladen Kolar, Le Song, Amr Ahmed, Eric P. Xing. Estimating time-varying networks. Annals of Applied Stat. arXiv:0812.5087v2

议员是如何投票的?》有37个想法

  1. 看不懂。。
    但是对主页感兴趣。。
    改主题了?wordpress还是没变呀 ?

      1. 没备案嘛。。
        wordpress 和bbpress的服务器都在国外吗?

  2. 写的清晰简单,赞一个!不过如果能把这些引用的话用自己的中文稍微概括一下,看起来就更流畅了。而且如果把几次大选的数据都囊括,然后做一个动态的关系分析就更完整了,说不定对这次大选有预测效果:)

  3. 求偏相关矩阵的时候,由“求最大”向“最小”变化得到的表达式中间那个符号应该是“+”吧,另外,“Yuan and Lin(2007)通过maxdet最优化算法求解”中的Yuan是袁亚湘吗,求文章!

      1. 那块前几天刚给别人讲了一遍,比较熟,嘿嘿。看到后面的内点法,我主观地以为前面那篇是袁亚湘的文章呢。今晚各种不顺,别人电脑都能跑好的程序,我的不行,死活没找出来原因。

  4. 唱个黑脸 。。。

    好的理论应该追求更好的图形呈现,这图是典型的’hairball’,更多的细节其实局外人基本看不清。推荐使用circos或HiveR重制,以期用更清晰的方式阐明观点。

  5. 红脸方:赞给出程序和数据!
    黑脸方:建议在文章最后加个引用文章列表,或者引用时[比如Yuan and Lin(2007),banerjee(2007),Friedman(2007)]给个链接。这样有兴趣的(或比较钻牛角尖)读者可以准确的找到原文,也可做个客观评价。
    学术方:如果不用模型,而有简单的(投票相同次数/总投票次数)作为相似性度量[latex] d_{ij}[/latex],再在矩阵[latex] A_{ij}= 1-e^{d_{ij}} [/latex] 上做MultiDimensional Scaling,效果会怎样呢?(reference: HORSESHOES IN MULTIDIMENSIONAL SCALING AND LOCAL KERNEL METHODS, by Persi Diaconis, Sharad Goel and Susan Holmes 链接: http://arxiv.org/pdf/0811.1477.pdf)

    1. 啊,原来不支持latex. 好吧,原code如下:
      如果不用模型,而有简单的(投票相同次数/总投票次数)作为相似性度量 [latex]d_{ij}[/latex],再在矩阵 [latex]A_{ij}= 1-e^{d_{ij}}[/latex] 上做MultiDimensional Scaling,效果会怎样呢?

      1. 支持LaTeX的,只不过使用[latex][\text{latex}][/\text{latex}][/latex]
        框起来,已帮老师修改

  6. 高斯无向图中是否有边,对应的含义,不一定和这个实际问题相吻合。

    图模型固然好看,但是不是万能。

      1. 无向图中,节点之间有边或者无边表示什么含义?

      2. 最基本的是成对马尔科夫独立性。一对节点无边,那么给定其他节点,这两个节点条件独立。例如,在这个例子中,就是排除总体趋势的影响,看某两个节点“特有因素”的相关性。为何会不适用呢?什么是我没有考虑到的?

  7. 赞一个。另外有人下载上面的数据重复实验了吗?为什么我下载下来用R导入说文件损坏呢?

  8. 两点之间有边的条件是偏相关系数p>0.055,这个阈值是怎么确定的?这个值怎么这么小呢,是不是由于数据的稀疏性的原因?

    1. 首先,非零的偏相关系数就应该有边,选取0.055这个值比较随机,也许只是为了画出的图边不要太多,让人能看清主要关系。
      也许,这里更关键的问题是如何选取[latex]\lambda[/latex],以及如何检验偏相关系数“显著地非零”。
      这个数据有缺失,如果根据BIC选择[latex]\lambda[/latex],EM算法又收敛得很慢。。。所以,现在程序中的[latex]\lambda[/latex]也不是某种意义的最优吧。
      据说,图模型这块的假设检验理论还比较欠缺,因为各条边的相关关系,所以理论推导比较困难。

  9. 这是一个很有趣的问题。高维相关矩阵的MLE估计不稳健,所以一般还要考虑加入秩限制,比如使用NUCLEAR NORM惩罚项。不知R里面有什么包可以实现?

      1. 对的,原来原文已经提到了,之前没有看到。不过是不是代码里penalize.diagonal FALSE意味着没有使用惩罚项?我觉得可以试着把使用惩罚项的结果也算一下.因为在经典估计不一致的情况下,惩罚项不是可加可不加的问题,可能得到完全迥异的结果

    1. 嗯,只是对矩阵对角元没有惩罚。Banerjee文章中最后对二项分布给出的最优化式子,和正态相比,就对角元计算结果不同。代码中不对对角元惩罚,计算完后对角元再加1/3,应该就能得到Banerjee文章中二项分布的计算结果——至少我是这么认为吧。

  10. 就边角料提一点微小的意见:画图时红配绿不好,尤其是对男银,色盲色弱比例高。而且颜色在美帝政党里有常规含义,蓝色和红色分别对应民主和共和。

发表评论

邮箱地址不会被公开。 必填项已用*标注