【发布时间】:2017-01-11 12:52:53
【问题描述】:
我正在尝试使用 pglm 包中的 pglm 函数来获得有序逻辑模型的随机效应面板估计。
在测试独立函数pglm 时,它给了我想要的结果。这是我的规格:
pglm::pglm(as.numeric(y)~x1+x2+x3, df,family = pglm::ordinal('logit'),
model = "random", method = "bfgs", print.level = 3, R = 5, index = 'Year')
在哪里: 1. 所有解释变量 {x1,x2,x3} 都是数值双精度数 2. y是1到22的有序分类变量
该表还包括一个从 1996 年到 2014 年的“年份”变量,用于构建面板数据。
当尝试在另一个函数中使用pglm 函数时:
pglm_fun <- function(df){
df <- data.frame(df)
pglm::pglm(as.numeric(y)~x1+x2+x3, data = df,family = pglm::ordinal('logit'),
model = "random", method = "bfgs", print.level = 3, R = 5, index = 'Year')
}
计算时出现错误消息
pdata.frame(data, index)
x[, !na.check] 中的错误:“闭包”类型的对象不是可子集的。
尝试在控制台中运行代码时,我没有出现这样的错误,pdata.frame() 函数有效。
数据框示例:
df = data.frame(y = sort(rep(1:4,20)),
x1 = rnorm(80),
x2 = rnorm(80),
x3 = rnorm(80),
Year = rep(sample(1995:1998, replace = FALSE),20))
【问题讨论】:
-
您的代码中的
index是什么?plm中还有一个index()函数,这可能是造成混淆的原因。还有什么是data?它与df有什么关系?简而言之:您应该发布一个可重现的示例stackoverflow.com/questions/5963269/… -
我将变量
'Year'设置为索引,data就是我给函数pglm_fun作为参数的数据框。我将使用数据框 df 的示例编辑帖子 -
那么
pdata.frame(data, index = "Year")呢? -
对我来说不可重现,运行
pglm_fun(df)对我有用。 -
好的,我的 RStudio 编译器非常不稳定。有时有效,有时无效,在这个数据框下给了我不同类型的错误。我实际上正在测试一个更大、更复杂的数据框,大约有 2k 行,是否可以以某种方式共享它?
标签: r logistic-regression plm