我想用最接近的值的平均值填充缺失值。我之前使用的是described by Nick Cox方法,但这次我的设置稍微复杂一点,我认为运行它的标准方法不起作用。
如示例所示,缺失数据的块长度不相等或不是单个单元格。为了用他们观察到的最接近的值的平均值来填充它们,我想我需要一个两步解决方案:(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
谢谢!
答案 0 :(得分:1)
这是一个自包含的示例,假设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)