Stata 用最近观察到的平均值填充缺失
我想用最接近值的平均值来填充缺少的值。我以前使用过这种方法,但是,这次我有一个稍微复杂的设置,我认为运行这种方法的标准方法不起作用 如示例所示,缺失数据块的长度不相等或不是单个单元格。为了用观察到的最接近值的平均值填充它们,我想我需要一个两步解决方案:1确定两个最接近的值-前一个值和后一个值,如果这两个值中有一个缺失,只需使用步骤2中观察到的值,而不是它们的平均值2计算它们的平均值,并用该平均值填充缺失的值。数据是年度数据,嵌套在国家/地区。我发布了第一个国家阿尔巴尼亚的价值观 我需要对多个变量执行此操作,因此循环解决方案可能最有效。但这只是一个次要问题,请毫不犹豫地发布一个没有循环的答案Stata 用最近观察到的平均值填充缺失,stata,missing-data,Stata,Missing Data,我想用最接近值的平均值来填充缺少的值。我以前使用过这种方法,但是,这次我有一个稍微复杂的设置,我认为运行这种方法的标准方法不起作用 如示例所示,缺失数据块的长度不相等或不是单个单元格。为了用观察到的最接近值的平均值填充它们,我想我需要一个两步解决方案:1确定两个最接近的值-前一个值和后一个值,如果这两个值中有一个缺失,只需使用步骤2中观察到的值,而不是它们的平均值2计算它们的平均值,并用该平均值填充缺失的值。数据是年度数据,嵌套在国家/地区。我发布了第一个国家阿尔巴尼亚的价值观 我需要对多个变量
country_name year gini
Albania 1990
Albania 1991
Albania 1992
Albania 1993
Albania 1994
Albania 1995
Albania 1996 28
Albania 1997
Albania 1998
Albania 1999
Albania 2000
Albania 2001
Albania 2002 31.74
Albania 2003
Albania 2004
Albania 2005 30.6
Albania 2006
Albania 2007
Albania 2008 29.98
Albania 2009
Albania 2010
Albania 2011
Albania 2012 28.96
Albania 2013
Albania 2014
Albania 2015
Albania 2016
谢谢大家! 这里有一个独立的示例,假设mipolate是由ssc inst mipolate安装的。pchip方法通常非常有效;然而,对于这些数据,我倾向于使用线性插值
clear
input str7 country_name year gini
Albania 1990 .
Albania 1991 .
Albania 1992 .
Albania 1993 .
Albania 1994 .
Albania 1995 .
Albania 1996 28
Albania 1997 .
Albania 1998 .
Albania 1999 .
Albania 2000 .
Albania 2001 .
Albania 2002 31.74
Albania 2003 .
Albania 2004 .
Albania 2005 30.6
Albania 2006 .
Albania 2007 .
Albania 2008 29.98
Albania 2009 .
Albania 2010 .
Albania 2011 .
Albania 2012 28.96
Albania 2013 .
Albania 2014 .
Albania 2015 .
Albania 2016 .
end
mipolate gini year, gen(linear) epolate by(country)
mipolate gini year, gen(pchip) pchip by(country)
line linear pchip year || scatter gini year, ms(Oh)
已经实现了几种插值方法。没有必要发明你自己的。太好了,谢谢!我不知道mipolate命令。我添加了一个工作示例,使线程更有用。