美国参议员如何聚类?
在现代历史中,美国第111届国会在意识形态上的两极分化最为严重。正如布鲁金斯学会的高级研究员威廉·A·加尔松(William A. Galston)所说:“在众议院和参议院,最保守的民主党人比最自由的共和党人还要自由。如果将国会的‘中间派’定义为两党之间的重叠部分,那么中间派已经消失了。”
我们经常听到类似的言论,声称美国国会的两极分化达到了历史最高水平。这不难理解,因为大众媒体常常描绘这样的景象,美国主流媒体也倾向于放大两党之间的差异。如果将立法僵局视为这种两极分化的副产品,那么立法成果可以作为衡量两极分化的一个粗略指标。例如,在第110届国会中,近14000项立法提案被提出,但只有449项法案(占3.3%)最终成为法律,其中144项仅仅是更改了联邦建筑的名称。
但美国国会现在真的比以往任何时候都更加两极分化吗?尽管我们可能相信这是事实,并且有像加尔松教授这样的言论作为轶事证据,但我们更希望有一个更严谨的方法来回答这个问题。我们的方法是使用多维尺度分析(MDS)来可视化参议员按党派的聚类情况,以查看两党成员之间是否存在混合。
1. 数据来源与准备
美国国会是世界上最开放的立法机构之一,我们可以利用议员的公共记录来构建一个合理的距离度量。这里我们使用议员的投票记录,特别是唱名表决记录,它可以衡量议员对提案的赞成或反对。
对于不熟悉美国立法程序的人来说,唱名表决是美国国会两院最基本的议会程序之一。它是众议院和参议院议员对提交到议会的任何提案进行投票的过程。两院发起唱名表决的机制不同,但结果基本相同。唱名表决记录了每位议员对特定提案的投票行动,通常表现为赞成(Yea)或反对(Nay),但实际情况更为复杂。
政治科学家基思·普尔(Keith Poole)和霍华德·罗森塔尔(Howard Rosenthal)维护着网站 http://www.voteview.com/,该网站提供了从第一届国会到第111届国会的所有唱名表决数据。我们将分析第101届到第111届国会的参议院唱名表决数据。
以下是加载数据的R代码:
library(foreign)
library(ggplot2)
data.dir <- "data/roll_call/"
data.files <- list.files(data.dir)
数据文件的扩展名为
.dta
,这是Stata数据文件的扩展名。Stata是一款在学术界,特别是政治科学领域非常流行的商业统计计算程序。为了将这些数据加载到R中,我们使用
foreign
包中的
read.dta
函数。
rollcall.data <- lapply(data.files,
function(f) read.dta(paste(data.dir, f, sep=""), convert.factors=FALSE))
现在,我们将第101届到第111届国会的唱名表决数据存储在
rollcall.data
变量中。以第101届国会的数据为例,它有103行和647列。前九列包含议员的身份信息,其余列是实际的投票记录。
2. 数据编码与简化
在分析之前,我们需要理解这些身份信息和投票记录的编码。Poole和Rosenthal提供了一份代码手册,解释了每列的含义。例如,投票记录的编码如下:
| 编码 | 含义 |
| ---- | ---- |
| 0 | 非议员 |
| 1 | 赞成(Yea) |
| 2 | 配对赞成(Paired Yea) |
| 3 | 宣布赞成(Announced Yea) |
| 4 | 宣布反对(Announced Nay) |
| 5 | 配对反对(Paired Nay) |
| 6 | 反对(Nay) |
| 7 | 出席(某些国会使用,某些不使用) |
| 8 | 出席(某些国会使用,某些不使用) |
| 9 | 未投票 |
为了创建一个合理的距离度量,我们需要简化投票数据的编码。我们的目标是将所有赞成票编码为 +1,所有反对票编码为 -1,所有非投票记录编码为 0。以下是实现这一目标的函数:
rollcall.simplified <- function(df) {
no.pres <- subset(df, state < 99)
for(i in 10:ncol(no.pres)) {
no.pres[,i] <- ifelse(no.pres[,i] > 6, 0, no.pres[,i])
no.pres[,i] <- ifelse(no.pres[,i] > 0 & no.pres[,i] < 4, 1, no.pres[,i])
no.pres[,i] <- ifelse(no.pres[,i] > 1, -1, no.pres[,i])
}
return(as.matrix(no.pres[,10:ncol(no.pres)]))
}
rollcall.simple <- lapply(rollcall.data, rollcall.simplified)
在这个函数中,我们首先移除了状态码为99的观测,因为这对应美国副总统,副总统很少投票。然后使用
ifelse
命令对剩余矩阵的所有列进行向量化数值比较,按照特定顺序将非投票记录设为0,赞成票设为1,反对票设为 -1。
3. 多维尺度分析(MDS)
接下来,我们使用简化后的参议员 - 投票矩阵创建参议员 - 参议员距离矩阵,并进行MDS分析。
rollcall.dist <- lapply(rollcall.simple, function(m) dist(m %*% t(m)))
rollcall.mds <- lapply(rollcall.dist,
function(d) as.data.frame((cmdscale(d, k=2)) * -1))
在MDS操作中,
cmdscale
函数默认计算二维的MDS,我们设置
k = 2
是为了代码的明确性。乘以 -1 是为了可视化,将民主党人放在左侧,共和党人放在右侧,符合美国政治中对两党意识形态的普遍认知。
然后,我们需要将议员的身份信息添加回
rollcall.mds
中的坐标点数据框,以便在党派背景下进行可视化。
congresses <- 101:111
for(i in 1:length(rollcall.mds)) {
names(rollcall.mds[[i]]) <- c("x", "y")
congress <- subset(rollcall.data[[i]], state < 99)
congress.names <- sapply(as.character(congress$name),
function(n) strsplit(n, "[, ]")[[1]][1])
rollcall.mds[[i]] <- transform(rollcall.mds[[i]], name=congress.names,
party=as.factor(congress$party), congress=congresses[i])
}
4. 可视化分析
我们以第110届参议院为例进行可视化。以下是绘制第110届参议院唱名表决MDS聚类图的代码:
cong.110 <- rollcall.mds[[9]]
base.110 <- ggplot(cong.110, aes(x=x, y=y))+scale_size(to=c(2,2), legend=FALSE)+
scale_alpha(legend=FALSE)+theme_bw()+
opts(axis.ticks=theme_blank(), axis.text.x=theme_blank(),
axis.text.y=theme_blank(),
title="Roll Call Vote MDS Clustering for 110th U.S. Senate",
panel.grid.major=theme_blank())+
xlab("")+ylab("")+scale_shape(name="Party", breaks=c("100","200","328"),
labels=c("Dem.", "Rep.", "Ind."), solid=FALSE)+
scale_color_manual(name="Party", values=c("100"="black","200"="dimgray",
"328"="grey"),
breaks=c("100","200","328"), labels=c("Dem.", "Rep.", "Ind."))
print(base.110+geom_point(aes(shape=party, alpha=0.75, size=2)))
print(base.110+geom_text(aes(color=party, alpha=0.75, label=cong.110$name, size=2)))
我们创建了一个基础对象
base.110
,包含了所有绘图的格式设置,然后分别添加
geom_point
和
geom_text
层来绘制两种不同的图:一种是用点的形状表示党派的图,另一种是用议员姓名作为点,文本颜色表示党派的图。
从这些图中可以明显看出,不同党派的参议员在唱名表决记录聚类时几乎没有混合,民主党和共和党之间存在很大的差距。同时,一些被认为是极端派的参议员确实是离群点,如佛蒙特州的独立参议员桑德斯(Sanders)在最左侧,科伯恩(Coburn)和德明特(DeMint)参议员在最右侧。而柯林斯(Collins)和斯诺(Snowe)参议员在第111届国会中紧密聚集在中心,他们是温和的共和党人,在最近美国参议院的许多重大立法斗争中成为核心人物。
此外,第110届参议院中奥巴马(Obama)和麦凯恩(McCain)参议员的位置也很有趣。奥巴马在图的左上角单独出现,而麦凯恩与威克(Wicker)和托马斯(Thomas)参议员聚集在更靠近中心的位置。这可能是由于两人在竞选期间错过了许多相同的投票,而不是因为他们的投票记录非常互补。
为了从更宏观的角度分析参议院的两极分化情况,我们将所有国会的MDS数据合并成一个数据框,并使用
facet_wrap
按国会顺序展示MDS图。
all.mds <- do.call(rbind, rollcall.mds)
all.plot <- ggplot(all.mds, aes(x=x, y=y))+
geom_point(aes(shape=party, alpha=0.75, size=2))+
scale_size(to=c(2,2), legend=FALSE)+
scale_alpha(legend=FALSE)+theme_bw()+
opts(axis.ticks=theme_blank(), axis.text.x=theme_blank(),
axis.text.y=theme_blank(),
title="Roll Call Vote MDS Clustering for U.S. Senate
(101st - 111th Congress)",
panel.grid.major=theme_blank())+
xlab("")+ylab("")+
scale_shape(name="Party", breaks=c("100","200","328"),
labels=c("Dem.", "Rep.", "Ind."),
solid=FALSE)+facet_wrap(~ congress)
all.plot
从这个可视化结果来看,美国参议院实际上一直保持着较高的党派性。虽然可能会有人认为第101届和第102届国会的两极分化程度较低,因为聚类看起来更接近,但这可能是坐标轴尺度的假象。MDS过程只是基于计算的距离矩阵来最小化成本函数,不同国会的尺度差异可能由多种因素导致,如观测数量。
重要的是,通过唱名表决聚类时,两党之间几乎没有混合。尽管党内可能存在轻微的差异,但两党之间的差异非常小。在几乎所有情况下,我们都看到民主党人聚集在一起,共和党人也聚集在一起。当然,除了党派归属之外,还有许多其他有趣的信息可以添加到这个分析中,例如来自同一地理区域的参议员是否会聚集在一起,或者委员会成员身份是否会导致聚类。这些都是值得进一步探索的问题。
综上所述,通过对美国第101届到第111届国会参议院唱名表决数据的分析,我们可以更深入地了解美国参议院的党派聚类情况和两极分化程度。这种基于数据的分析方法为我们提供了一个更客观、更严谨的视角,帮助我们理解美国政治中的党派动态。同时,也为进一步的研究提供了基础,鼓励读者深入挖掘这些数据,探索更多有趣的问题。
美国参议员如何聚类?
5. 结果解读与深入思考
从上述可视化结果中,我们得到了许多关于美国参议院党派聚类和两极分化的信息。但为了更深入地理解这些结果,我们还需要对一些关键发现进行解读,并思考其背后的政治含义。
5.1 党派聚类的稳定性
通过对第101届到第111届国会的MDS图进行观察,我们发现民主党和共和党在唱名表决聚类时始终保持着明显的分离状态。这表明两党在立法立场上存在着根深蒂固的差异,这种差异在较长的时间跨度内保持相对稳定。这种稳定性可能源于多种因素,如两党的意识形态、政策目标和选民基础等。
例如,民主党通常更倾向于社会福利、环境保护和少数族裔权益等议题,而共和党则更关注经济自由、国防安全和传统价值观等方面。这些不同的政策偏好导致两党在立法过程中往往采取不同的立场,从而在唱名表决中表现出明显的聚类。
5.2 极端派与中间派的角色
在MDS图中,我们可以看到一些被认为是极端派的参议员处于离群点的位置,而一些温和派参议员则聚集在中心区域。极端派参议员的存在可能会加剧两党的对立,因为他们的立场往往更加坚定和极端,难以与对方达成妥协。而中间派参议员则可能在立法过程中发挥调和作用,促进两党之间的合作。
以第111届国会为例,柯林斯和斯诺等温和的共和党参议员在一些重大立法斗争中成为核心人物。他们的中间立场使得他们能够在两党之间找到平衡点,推动一些重要法案的通过。这表明中间派参议员在缓解两极分化、促进立法进程方面具有重要作用。
5.3 投票缺席的影响
奥巴马和麦凯恩在第110届参议院中的位置表明,投票缺席可能会对MDS分析结果产生影响。由于两人在竞选期间错过了许多相同的投票,导致他们在MDS图中的位置出现了特殊的分布。这提醒我们,在分析投票数据时,需要考虑到投票缺席的因素,以免对结果产生误解。
投票缺席可能是由于多种原因造成的,如个人事务、竞选活动或对某些议题的不感兴趣等。这些因素可能会导致参议员在某些投票中无法表达自己的真实立场,从而影响到MDS分析的准确性。因此,在进行更深入的研究时,我们可以考虑对投票缺席的数据进行进一步处理,以提高分析结果的可靠性。
6. 进一步研究的方向
虽然我们通过对第101届到第111届国会参议院唱名表决数据的分析,对美国参议院的党派聚类和两极分化有了一定的了解,但仍有许多问题值得进一步研究。以下是一些可能的研究方向:
6.1 地理因素的影响
除了党派归属之外,地理因素也可能会影响参议员的投票行为和聚类情况。例如,来自同一州或同一地区的参议员可能会因为共同的利益和选民需求而在立法立场上更加接近。我们可以通过在MDS图中添加地理信息,如州名或地区代码,来观察地理因素对参议员聚类的影响。
具体操作步骤如下:
1. 从原始数据中提取参议员的州名或地区信息。
2. 将这些地理信息添加到
rollcall.mds
数据框中。
3. 在可视化时,使用不同的颜色或形状来表示不同的地理区域,观察地理区域与党派聚类之间的关系。
6.2 委员会成员身份的作用
美国参议院的各个委员会在立法过程中扮演着重要的角色。委员会成员通常会在特定的领域进行深入研究和讨论,并对相关法案提出建议和修正案。因此,委员会成员身份可能会导致参议员在立法立场上更加接近,从而影响到他们的聚类情况。
为了研究委员会成员身份的作用,我们可以按照以下步骤进行:
1. 从原始数据中提取参议员的委员会成员信息。
2. 根据委员会成员身份对参议员进行分组。
3. 分别对不同委员会的成员进行MDS分析,观察他们在聚类上的差异。
4. 比较不同委员会之间的聚类情况,分析委员会成员身份对党派聚类的影响。
6.3 时间序列分析
我们目前的分析是基于多个国会的横截面数据,虽然可以观察到不同国会之间的差异,但无法捕捉到两极分化随时间的动态变化。为了更深入地了解美国参议院两极分化的演变趋势,我们可以进行时间序列分析。
时间序列分析的步骤如下:
1. 将第101届到第111届国会的数据按时间顺序排列。
2. 计算每个国会的两极分化指标,如两党聚类的距离、中间派参议员的比例等。
3. 绘制两极分化指标随时间的变化曲线,观察其演变趋势。
4. 使用时间序列模型,如ARIMA模型或GARCH模型,对两极分化的未来趋势进行预测。
7. 总结与展望
通过对美国第101届到第111届国会参议院唱名表决数据的分析,我们利用多维尺度分析(MDS)方法成功地可视化了参议员的党派聚类情况,并发现了美国参议院存在着明显的两极分化现象。两党在立法立场上的差异在较长时间内保持相对稳定,极端派和中间派参议员在立法过程中分别扮演着不同的角色,而投票缺席也可能会对分析结果产生影响。
为了更深入地理解这些结果,我们对关键发现进行了解读,并提出了一些进一步研究的方向,如考虑地理因素、委员会成员身份和进行时间序列分析等。这些研究方向将有助于我们更全面地了解美国参议院的政治动态,为解决两极分化问题提供更有针对性的建议。
在未来的研究中,我们可以继续探索更多的数据来源和分析方法,以提高对美国参议院党派聚类和两极分化的理解。同时,我们也可以将这种分析方法应用到其他国家的立法机构中,比较不同国家之间的政治差异和相似之处。希望通过这些研究,我们能够为促进政治合作、减少两极分化提供有益的参考。
以下是整个分析过程的流程图:
graph LR
A[数据收集] --> B[数据加载与准备]
B --> C[数据编码与简化]
C --> D[多维尺度分析(MDS)]
D --> E[可视化分析]
E --> F[结果解读与深入思考]
F --> G[进一步研究方向]
G --> H[总结与展望]
通过这个流程图,我们可以清晰地看到整个分析过程的步骤和逻辑关系,有助于我们更好地理解和复现这个研究。同时,也为未来的研究提供了一个清晰的框架,方便我们在不同的环节进行拓展和深入研究。
超级会员免费看
72

被折叠的 条评论
为什么被折叠?



