如何使用pscl包中的rollcall和ideal获得一致的符号方向?

时间:2019-05-13 18:31:27

标签: r pscl

我正在使用ideal包中的函数rollcallpscl,但是同一选民会根据数据集的顺序(在列表中)交替接收负号或正号值。由于我要在多个期间进行计算,因此我需要每年的行为保持一致。 有什么办法可以控制这方面的?

1 个答案:

答案 0 :(得分:1)

好吧,所以看一下文档,您似乎可以使用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函数时,可以在befores参数中指定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)

或者类似的东西。我有上面here的示例,但它使用了rstan