2017-03-09 111 views
0

我與卡梅倫和特里維迪的「使用的Stata微觀計量經濟學」問題掙扎。這個問題涉及一個包含兩個關鍵變量的橫截面數據集,即年收入(年收入)和年工時(小時)的對數。移動平均使用forvalues - 塔塔

我有問題的部分2掙扎,但我會鍵入整個事情的背景。

y的移動平均後的數據由X排序是在x和y的非參數迴歸的簡單情況。

  1. 排序小時的數據。
  2. 創建lnearns與第i個觀察yma_i = 1/25(總和從j = -12至j + Y_I j的= 12)居中的15週期的移動平均值。這是使用forvalues命令的最簡單方法。
  3. 使用雙向連接圖命令將此移動平均線與小時圖相比較。

我不確定哪些命令用於橫斷面數據的移動平均值。我也不瞭解一個時期數據顯示的移動平均數。

任何幫助將是偉大的,請說如果需要更多的信息。 謝謝!

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和數小時,你會得到一些看起來很瘋狂的東西,因爲它有很多變化,但是如果你繪製移動平均值,它就更加清楚趨勢是什麼。

+0

感謝您的時間!這是一個非常優雅和清晰的做法。 –

+1

看看'tsegen'(SSC)作爲避免這裏的循環的一種方式。代碼實質上就是'sort genm ='tsset id'之後的'tsegen movave = rowmean(L(-12/12).lnearns)'。 –

0

實際上該數據集可通過

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

被讀入一個合適的目錄該平滑方法是在sort hours問題不具有獨特的結果在響應的值來被平滑。但與rangestat(SSC)具有相似精神的實現是可能的。

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

還有很多其他方法可以平滑。一種是

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