2017-03-09 55 views
0

私はCameronとTrivediの "Stataを使った微視的計量"の質問に苦労しています。この質問は、2つの重要な変数、年間収益(lnearns)および年間労働時間(時間)のログを含む断面データセットに関する。forvalues - Stataを使用した移動平均

私は質問のパート2と苦労していますが、文脈のためにすべてを入力します。

データをxでソートした後のyの移動平均は、xのyのノンパラメトリック回帰の単純なケースです。

  1. 時間単位でデータを並べ替えます。
  2. i番目の観測yma_i = 1/25(y_i + jのj = -12からj = 12までの合計)を持つ15の移動平均を作成します。これは、forvaluesコマンドを使用すると最も簡単です。
  3. twoway connected graphコマンドを使用して、時間に対するこの移動平均をプロットします。

クロスセクションデータの移動平均に使用するコマンドが不明です。また、1期間のデータに比べて移動平均が何を示しているのかも分かりません。

さらに詳しい情報が必要な場合は、どんな助けでも大歓迎です。 ありがとう!

EDIT1:

ここhttps://www.dropbox.com/s/5d8qg5i8xdozv3j/mus02psid92m.dta?dl=0からデータセットをダウンロードすることができるはずです。これは、教科書に使用されている所得動向のパネルスタディからの1992年の個人レベルのデータからの小さな抜粋です。

それでも構文に使用されるが、ここではそれ

sort hours 
gen yma=0 
1. forvalues i = 1/4290 { 
2. quietly replace yma = yma + (1/25)(lnearns[`i'-12] to lnearns[`i'+12]) 
3. } 
+0

必要なのは、データセットまたはダウンロード可能なデータセットが見つかる場所の表示です。また、あなたが試したコード。 –

+0

こんにちはニック、私はダウンロード可能なデータセットと私の試みでオリジナルの投稿を編集しました。 –

+0

あなたが知っていることを他の人に伝えるだけです。番号2のコード行は法的には不十分です。あなたが働く提案を与えられたので、私はそれを解剖しません。 –

答えて

1

あり、これを行うために他の方法がありますが、私は、各ラグとリードのための変数を作成し、その後、全ての合計を取るに私の試みであるばかりこれらの変数と、元の、あなたが提供する式のように25で割る:

sort hours 

// generate variables for the 12 leads and lags 
forvalues i = 1/12 { 
    gen lnearns_plus`i' = lnearns[_n+`i'] 
    gen lnearns_minus`i' = lnearns[_n-`i'] 
} 

// get the sum of the lnearns variables 
egen yma = rowtotal(lnearns_* lnearns) 

// get the number of nonmissing lnearns variables 
egen count = rownonmiss(lnearns_* lnearns) 

// get the average 
replace yma = yma/count 

// clean up 
drop lnearns_* count 

これはあなたが捜している変数(移動平均)を与え、また、あなたが多くを持っているので、単純に25で割ることはありません観測が見当たらない。

これが示していることのあなたの質問に関して、私の解釈は、各時間変数のローカル平均を示すということです。 xのyと時間にlnearnをグラフ化すると、多くのバリエーションがあるので狂ったように見えますが、移動平均をプロットすれば、その傾向がはっきりします。

+0

お時間をありがとう!それはそれを行うための本当にエレガントかつ明確な方法です。 –

+1

ループを回避する方法として、 'tsegen'(SSC)を見てください。このコードは、 'sort time'' gen id = _n'' tsset id'のようなものの後に、本質的に 'tsegen movave = rowmean(L(-12/12).nearns)'になります。 –

0

は、実際にこのデータセットは、この平滑化方法は、応答の値の点で平滑化されたユニークな結果を有していないことsort hours問題がある

net from http://www.stata-press.com/data/musr 
net install musr 
net get musr 
u mus02psid92m, clear 

によって適当ディレクトリに読み込むことができます。しかし、rangestat(SSC)と同様の精神を持つ実装が可能です。

sort hours 
gen counter = _n 
rangestat (mean) mean=lnearns (count) n=lnearns, interval(counter -12 12) 

滑らかにする方法は他にもたくさんあります。1つは

gen binhours = round(hours, 50) 
egen binmean = mean(lnearns), by(binhours) 
scatter lnearns hours, ms(Oh) mc(gs8) || scatter binmean binhours , ms(+) mc(red) 

lpolyを使用することもできます。