我正在努力解决Cameron和Trivedi" Microeconometrics使用Stata"的问题。这个问题涉及一个横截面数据集,其中包含两个关键变量,年收入记录(lnearns)和年工作时数(小时)。
我正在努力解决问题的第2部分,但我会为上下文输入整个内容。
数据按x排序后的y的移动平均值是y在x上的非参数回归的简单情况。
我不确定用于横截面数据移动平均值的命令。我也不明白一期数据的移动平均数是多少。
任何帮助都会很棒,请说明是否需要更多信息。 谢谢!
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 :(得分: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和小时上绘制图表,那么由于存在大量变化,您会看到一些看起来很疯狂的东西,但如果您绘制移动平均线,那么趋势就更清楚了。
答案 1 :(得分: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
。