首页 > 解决方案 > 如何使用 pscl 包中的 rollcall 和 Ideal 获得一致的符号方向?

问题描述

我正在使用函数idealrollcallfrom psclpackage 但相同的选民根据数据集的顺序(在列表中)接收交替的负号值或正号值。当我计算几个时期时,我需要它的行为每年都保持一致。有没有办法控制这方面?

标签: rpscl

解决方案


好的,所以查看文档,您似乎可以使用priors参数来指定您希望哪个立法者成为您的负面锚,以及哪个立法者作为正面锚。见https://cran.r-project.org/web/packages/pscl/pscl.pdf

例如,假设您知道立法者 1 是最保守的,而立法者 50 是最不保守的,您可以制作一个方法矩阵作为先验。根据文档,您未指定的任何内容都将使用默认先验。

# 50 legislators
my_mean <- rep(0, 50)

my_mean[1] <- -3
my_mean[50] <- 3

现在,当您进入ideal函数时,您可以xp在先验参数中指定如下:

ideal(object, codes = object$codes,
dropList = list(codes = "notInLegis", lop = 0),
d = 1, maxiter = 10000, thin = 100, burnin = 5000,
impute = FALSE,
normalize = FALSE,
meanzero = normalize,
priors = list(xp = my_mean),  # Here, all defaults used for other args
startvals = "eigen",
store.item = FALSE, file = NULL,
verbose=FALSE, use.voter=NULL)

没有一些数据,我无法对其进行测试,但这应该可以。此外,您可以使用 ifelse 语句并将先验分配给一方,而不仅仅是固定两个人:

my_mean <- ifelse(party == "Conservative", -3, 3)

或者类似的东西。我在这里有一个上面的例子,但它使用rstan.


推荐阅读