【问题标题】:How to obtain consistently sign direction using rollcall and ideal from pscl package?如何使用 pscl 包中的 rollcall 和 Ideal 获得一致的符号方向?
【发布时间】:2019-05-13 18:31:26
【问题描述】:

我正在使用 pscl 包中的 idealrollcall 函数,但相同的选民会收到负号值或正号值,具体取决于(在列表中)数据集的顺序。当我计算几个时期时,我需要它的行为每年都保持一致。 有没有办法控制这方面?

【问题讨论】:

  • 问题在于,这种模型通常存在可识别性,因此解决方案相同。看起来使用 ``constrain.legis`` 参数,您可以将最保守的人设置为 -3,将最不保守的人设置为 +3,这应该可以解决您的符号问题。

标签: r pscl


【解决方案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 函数时,您可以在priors 参数中指定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

【讨论】:

  • 在我第一次尝试时,它不起作用。我在点名期间使用名称为“legis.names”参数值的字符向量,并且对于此测试,使用数字向量作为先验值,除了范围位置等于与立法者对应的 legis.names 的元素之外被视为最极端的。我将它们的值从 -3 切换到 +3,但结果非常相似,没有符号变化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
相关资源
最近更新 更多