2016-04-29 5 views
0

私はデータセットを持っています。ここでは、各国をより広いレベルでグループ化したいのです。それでも、国は私のデータセットのid変数です。例:R:内部変換を使用する変数をplmに伝えることはできますか?

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) 

私は変態内mygroupではなくspecies上で起こるしたいことを、何とかplmを伝えることはできますか?私はインデックスとしてMYGROUP使用している場合は、私は推測しているIDごとに重複した年とのトラブルに遭遇し

など、個々の具体的な定数を計算する
test2 <- plm(Sepal.Length ~ Sepal.Width + Petal.Length,data=Data, model="within", index=c("time","mygroup")) 

をしようとしたとき、私は単にmygroupに基づいてダミーを構築し、含めることができplmを気にそれらの内部変換はより効率的でなければならず、またよりエレガントに見えます。私はplmヘルプファイルにこれのオプションが表示されません。どんな助けもありがとう!

答えて

2

通常のidと時間のディメンションの他に、内部の情報によって、plmで追加のエフェクトをスイープするオプションはありません。あなたが提案したように、mygroupのためにダミーを使用することができます。グループの数がそれほど多くない場合は、出力のマイナーな "汚染"という欠点はありません。

それ以外の場合は、変換内の別のエフェクトをスイープアウトするには、パッケージlfeを使用できます。掃除したいたくさんの追加エフェクトがある場合や、グループの数が非常に多く、出力の汚染を避け、大きなデータセットの方が計算が速い場合は、特に便利です(lfeは内部変換を実装していますC)。ところで

、あなたはあなたの例では"time""Species"を交換する必要があります

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