R:我可以告诉plm在变换中使用哪些变量?

时间:2016-04-29 10:09:24

标签: r plm

我有一个数据集,我希望按国家/地区更广泛地对国家/地区进行分组。不过,该国家/地区是我的数据集中的id变量。例如:

library(plm)
Data <- data.frame(iris)
Data$time <- c(rep(1951:2000,3))
Data$mygroup <- c(rep("a",100),rep("b",50))

test <- plm(Sepal.Length ~ Sepal.Width + Petal.Length,data=Data, model="within", index=c("time","Species"))
summary(test)

我能以某种方式告诉plm我希望内部转换发生在mygroup而不是species吗?如果我使用mygroup作为索引,我遇到了每个id重复年数的问题,我在尝试计算个别特定常量等时猜测错误plm

test2 <- plm(Sepal.Length ~ Sepal.Width + Petal.Length,data=Data, model="within", index=c("time","mygroup"))

我可以简单地根据mygroup构建虚拟对象并包含它们,但内部转换应该更有效并且看起来更优雅。我虽然没有在plm帮助文件中看到此选项。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

没有选项可以通过内部转换(除了常规的id和时间维度)扫除plm中的其他效果。正如您所建议的那样,您可以使用假人mygroup来做到这一点。如果组的数量不是很大,我看不出任何缺点 - 只是输出的轻微“污染”。

否则,如果您想通过内部转换扫除其他效果,可以使用包lfe。如果您想要扫描大量额外的效果和/或如果组的数量非常大,以避免污染我们的输出并且对于大型数据集计算速度更快(lfeC)中实现内部转换。

顺便说一下,您应该在示例中交换"time""Species"

test <- plm(Sepal.Length ~ Sepal.Width + Petal.Length,data=Data, model="within", index=c("Species", "time"))