用最接近的平均值填充缺失

时间:2017-05-21 21:31:09

标签: stata missing-data

我想用最接近的值的平均值填充缺失值。我之前使用的是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    

谢谢!

1 个答案:

答案 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)