2017-10-06 11 views
0

遅れた変数、先行変数、および差異変数を使用してパネル分析をいくつか試みようとしています。しかし、plm関数は、個体上でループしないので、望ましい結果を提供しません。私はオンラインで見ましたが、pdata.frame()を使って次の投稿(Answer_Stack)を使っても同じ問題が発生しました。 dplyrに私がgroup_by(i)を入れると、私は望みの結果を得ます。誰でも何が起こっているのか説明できますか?plmデータフレームで遅延変数、先行変数、差変数を作成します

# Variables 
i <- c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7) 
t <- c(2001, 2002, 2003, 2001, 2002, 2003, 2001, 2002, 2003, 2001, 2002, 2003, 2001, 2002, 2003, 2001, 2002, 2003, 2001, 2002, 2003) 
y <- c(0.047136, 0.044581, 0.040973, 0.045536, 0.043952, 0.038797, 0.049942, 0.047440, 0.042193, 0.048503, 0.046816, 0.040292, 0.056089, 0.052054, 0.047078, 0.044223, 0.041516, 0.036947, 0.045608, 0.042028, 0.037878) 
x <- c(0.32691, 0.33013, 0.32888, 0.40301, 0.40337, 0.40326, 0.29692, 0.29982, 0.29790, 0.30380, 0.30698, 0.30668, 0.27942, 0.28696, 0.28616, 0.31218, 0.31424, 0.31382, 0.34592, 0.34738, 0.34782) 

# Create plm dataframe 
dta <- data.frame(i, t, y, x) 
pdta <- plm.data(dta, indexes = c("i", "t")) 

# Create lagged variable with plm 
pdta$l.x <- lag(pdta$x)    # Does not work 

# Create using dplyr 
pdta <- pdta %>% 
    group_by(i) %>% 
    mutate(lag.x = lag(x)) 

View(pdta) 

注答えるために:でも手順は示唆し、以下の後、私はこれを取得:

一つには、あなたがPDATAにdata.frameを変換するには、右の機能を使用していない
> pdta <- pdata.frame(dta, index= c("i", "t")) 
    > head(cbind(pdta$i, pdta$y, lag(pdta$y)), 10) 
      [,1]  [,2]  [,3] 
    1-2001 1 0.047136  NA 
    1-2002 1 0.044581 0.047136 
    1-2003 1 0.040973 0.044581 
    2-2001 2 0.045536 0.040973 
    2-2002 2 0.043952 0.045536 
    2-2003 2 0.038797 0.043952 
    3-2001 3 0.049942 0.038797 
    3-2002 3 0.047440 0.049942 
    3-2003 3 0.042193 0.047440 
    4-2001 4 0.048503 0.042193 
+0

以下に見られるように、それは私のために働く。私は最初のパスとしてパッケージを更新することをお勧めします。私は 'plm'をインストールしたばかりなので、私は最新版を持っています。最新バージョンを使用している場合は、 'plm'をロードした後に' dplyr'をロードした可能性があります。 'dplyr'はそれ自身の' lag'関数で、基底Rの 'lag'関数を上書きします。 'plm'は基底Rのラグ関数を使用するため、' dplyr'を読み込むとこの機能が破壊されます。 – lmo

答えて

1

。フレーム。 plm.dataは、見積もり関数で直接使用できるdata.frameを返しますが、データ変換関数に直接影響されません。代わりにpdata.frameを使用してください:

pdta <- pdata.frame(dta, index= c("i", "t")) 

を次にlag試してみてください。また

head(cbind(pdta$i, pdta$y, lag(pdta$y)), 10) 
     [,1]  [,2]  [,3] 
1-2001 1 0.047136  NA 
1-2002 1 0.044581 0.047136 
1-2003 1 0.040973 0.044581 
2-2001 2 0.045536  NA 
2-2002 2 0.043952 0.045536 
2-2003 2 0.038797 0.043952 
3-2001 3 0.049942  NA 
3-2002 3 0.047440 0.049942 
3-2003 3 0.042193 0.047440 
4-2001 4 0.048503  NA 

を、私たちはdplyrをロードし、コメントで考え出したとして、あなたはまた、

pdta <- pdata.frame(plm.data(dta, indexes= c("i", "t"))) 

セカンドを行うことができます」あなたが言及したものを含むいくつかの基底R関数を(上書きして)覆います。 plmは、これらの基底R関数を基に、pdata.frameオブジェクトで目的の操作を実行します。 helix123には、dplyrがロードされていても、plm::<function name>を使用してplmの実装を参照できます。

+0

私は私の質問を編集しましたが、これらの手順を踏んだ後でも、まだ間違った遅れがあります – Gooze

+0

新しいRセッションでコードを実行してみてください。 'dplyr'を読み込まないでください。 – lmo

+1

上記のあなたのコメントは、特定の問題を解決するようですので、dplyrをロードしてplmを再インストールしないでください。おそらくそれを引き起こしているdplyrの問題だと私は思う!ありがとう! – Gooze

関連する問題