2016-09-07 10 views
1

いくつかの不平衡パネルデータの最初の差分モデルを推定するためにplmを使用しようとしています。私のモデルは機能していると思われますが、私は係数の見積もりを取得しますが、使用する観測ごとの残差(または当てはめられた値)を得る方法があるかどうかを知りたいと思います。不平衡パネルの最初の差分回帰の残差

私は2つの問題に遭遇しました。私はそれらが関連付けられている観測に残差を付ける方法を知らず、残差の数が正しくないようです。

model.name $ residualsを使用して推定モデルから残差を取得すると、model.name $ modelよりも短いベクトルが得られます。

require(plm) 
X <- rnorm(14) 
Y <- c(.4,1,1.5,1.3,1,4,5,6.5,7.3,3.7,5,.7,4,6) 
Time <- rep(1:5,times=2) 
Time <- c(Time, c(1,2,4,5)) 
ID <- rep(1:2,each=5) 
ID <- c(ID,c(3,3,3,3)) 
TestData <- data.frame("Y"=Y,"X"=X,"ID"=ID,"Time"=Time) 
model.name <- plm(Y~X,data=TestData,index = c("ID","Time"),model="fd") 

> length(model.name$residuals) 
[1] 11 
> nrow(model.name$model) 
[1] 14 

:私はそれがIDの各メンバーのためのT = 1を含むすべての観測を含む参照model.nameの$モデルを見てみる

(注ID = 3、T = 3の観測が欠落しています)。最初の差分ではt = 1の観測値が削除されるため、この場合、すべての期間の両方のIDに残りの期間からの4つの残差が必要です。 ID = 3は、t = 2の場合は残差を、欠落している場合はt = 3でなく、(t = 3の値がないために)差に値がないのでt = 4のものはなく、t = 5。

これからは10個の残差があるようですが、11個あると思います。この残数が多い理由と残差を正しいインデックス(IDと時間)に結び付ける方法については助けてください。

答えて

2

model="fd"で実行される遅れは、時間インデックスの実際の値ではなく、隣接する行に基づいています。したがって、連続していない期間があると、予期しない結果が発生します。これを避けるには、遅延時間を尊重しながら差分を行い、プールモデルを推定してください。ここでデータの不均衡は問題になりません。

パッケージplmの開発版には、期間の値(https://r-forge.r-project.org/R/?group_id=406)に基づいて遅延を実行するための実験的な、エクスポートされていない関数があります。

はあなたの例を続ける:

pTestData <- pdata.frame(TestData, index=c("ID", "Time")) 

pTestData$Y_diff <- plm:::lagt.pseries(pTestData$Y) - pTestData$Y 
pTestData$X_diff <- plm:::lagt.pseries(pTestData$X) - pTestData$X 
fdmod <- plm(Y_diff ~ X_diff, data = pTestData, model = "pooling") 
length(residuals(fdmod)) # 10 
nrow(fdmod$model)  # 10 

ような何かだけで、差分データ(実際にモデルを計算するために使用される)に残差を強化するには:また dat <- cbind(fdmod$model, residuals(fdmod))

を、あなたが興味があるかもしれませんあなたのデータのconsectutivenessをチェックする機能is.pconsecutive

is.pconsecutive(pTestData) 
# 1  2  3 
# TRUE TRUE FALSE 

機能make.pconsecutiveは、欠落している期間の値をNAとした行を挿入してデータを連続させます。

+0

ありがとう、これは非常に役に立ち、質問に答えます。これは新しい質問としてはより適切かもしれませんが、 "fd"とIVでplmを使うとき、またはpgmmを使うときに同じ問題を解決する方法についての示唆がありますか? – Misophist

関連する問題