【问题标题】:fill the missings with the average of the closest observed用最近观察到的平均值填充缺失
【发布时间】:2017-05-22 16:51:29
【问题描述】:

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

谢谢!

【问题讨论】:

标签: stata missing-data


【解决方案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)  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 2021-10-25
    • 2021-12-25
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多