0

我有面板数据,需要应用 spml,但我一直遇到同样的错误,尽管我尝试过,但我无法克服它。

基本上,我有一个由 36 个单位和 261 天的观察组成的平衡小组。我创建了一个包含6列的data.frame(名为aaa

银行、日期、CDS、X1、X2、X3

9396行(如果考虑列标签,则为 9397)。

这里: * 单位和日期是我的索引 * CDS 是因变量 * X1、X2 和 X3 是自变量。

  • 银行是一个具有36 个级别的因素,
  • Date 是一个整数向量int [1:9396],
  • CDS、X1、X2 和 X3 都是数字向量num [1:9396]。

我还创建了一个“矩阵”类和结构 num [1:9396, 1:9396] 的 listw 对象(名为 W2)。

我通过使用以下代码将Kronecker应用于初始矩阵 W 来获得我的 listw 对象:

(Kronecker (diag(261), W)

然后我这样表达“公式”:

fm <- (Cds) ~ (X1) + (X2) + (X3)

并且,随后应用了 splm:

spmltest<-spml(fm, data = aaa, index = c("Bank","Date"), listw = w2)

这是我得到的错误:

lag.listw(listw, u, zero.policy = zero.policy) 中的错误:对象长度不同。

我试图检查,但在我看来,对象实际上并没有不同的长度。

知道我错在哪里了吗?任何帮助或建议将不胜感激。谢谢你。

(Ps:我知道我也应该指定模型(如果是固定的或随机的),但我认为这不能解决这个特定问题。如果我错了,请告诉我)

(Pss:我也发现有人问过同样的问题,是这样解决的:“包“splm”的作者指出,panel ids的设置方式有误,空间单位一定是较慢 (1,1,1,.....; 2,2,2...;....;77,77,77,....) 并且时间 id 必须更快 (1,2 ,3,....,31;....; 1,2,3...31) 的两个。在相应地设置数据后,我可以得到结果“。我只是不明白它是什么意味着越来越慢。如果这意味着数据应该按空间单位而不是按时间排序,那么我的数据已经按这种方式排序了)。

4

3 回答 3

0

我的模型中有同样的问题。

我通过将数据库的前两列设置为“id”和“time”来解决(特别感谢 Millo Giovanni)。您也不需要进行克罗内克积,R 自动扩展空间矩阵 W。

并且不要忘记通过index = c(“id”,“time”)以相同的顺序识别“id”和“time”的数据。

有我的代码:

SEM <- spml(formula = gdp ~ oivrev, data = data, index = c("id", "year"), listw = W, model = "within", lag = F, spatial.error = "b")

我希望它对你有帮助。

于 2018-05-07T16:32:36.560 回答
0

你需要设置 index=Null 因为你做 Kronecker 产品

于 2019-05-02T21:10:36.447 回答
0

我的经验是,当我使用包含 NA 值的面板时,我遇到了同样的错误。当我使用 NA 删除数据时,代码工作正常。祝你好运!

于 2018-11-21T15:04:32.553 回答