温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh
Source: http://www.statalist.org/forums/forum/general-stata-discussion/general/17996-substitute-rows-with-average-of-row-above-and-below
问题描述
我有一份面板数据,有些年份上的数据有两行或多行记录 (例如,本例中 2007 年的数据)。棘手的是,这两行数据存在差异,且无法判断哪一个记录是正确的。此时,比较稳妥的选择是:将这两汉数据都舍弃,使用相邻年度 (2006 和 2008 年) 的均值作为 2007 年的观察值 (插值)。
clear
input ID year var1 var2 var3
1 2006 34 45 65
1 2007 45 43 41
1 2007 3 56 59
1 2008 39 54 76
1 2009 41 57 68
end
save "data00.dta", replace
原始数据详情:
. list
+--------------------------------+
| ID year var1 var2 var3 |
|--------------------------------|
1. | 1 2006 34 45 65 |
2. | 1 2007 45 43 41 |
3. | 1 2007 3 56 59 |
4. | 1 2008 39 54 76 |
5. | 1 2009 41 57 68 |
+--------------------------------+
解决方法1: 使用 tssmooth ma 命令
思路:
- 先删除重复的观察值 (2007 年的数据)
- 继而使用
tsfill
填充年份,让数据变成平行面板; - 最后用
tssmooth ma
命令插值 (用前后两年的平均值代替 2007 年的缺失值)。
说明:此处 ma 是 moving average 的简写。
命令如下ÿ