【发布时间】:2020-06-11 11:12:25
【问题描述】:
我已经使用该代码在观察到的数据点之间线性插值数据:
df2 <- df %>%
group_by(iso3)%>%
mutate_at(vars(anc4), list(inter = ~na.approx(., na.rm = FALSE)))%>%
ungroup()%>%
mutate_cond(is.na(anc4),anc4=inter)%>%
dplyr::select(-c(inter))"
它给了我一个数据集,我在这里展示了一个摘录,但我的数据集包含 2000 年至 2018 年 194 个国家/地区的数据。
ID iso3 year anc4
<chr> <chr> <dbl> <dbl>
1 AFG2000 AFG 2000 NA
2 AFG2001 AFG 2001 NA
3 AFG2002 AFG 2002 NA
4 AFG2003 AFG 2003 NA
5 AFG2004 AFG 2004 NA
6 AFG2005 AFG 2005 NA
7 AFG2006 AFG 2006 NA
8 AFG2007 AFG 2007 NA
9 AFG2008 AFG 2008 16.1
10 AFG2009 AFG 2009 9.9
11 AFG2010 AFG 2010 14.6
12 AFG2011 AFG 2011 18.6
13 AFG2012 AFG 2012 22.7
14 AFG2013 AFG 2013 17.8
15 AFG2014 AFG 2014 16.3
16 AFG2015 AFG 2015 17.8
17 AFG2016 AFG 2016 19.4
18 AFG2017 AFG 2017 20.9
19 AFG2018 AFG 2018 NA
20 AGO2000 AGO 2000 39.8
21 AGO2001 AGO 2001 41.5
22 AGO2002 AGO 2002 43.1
23 AGO2003 AGO 2003 44.8
24 AGO2004 AGO 2004 46.4
25 AGO2005 AGO 2005 48.1
26 AGO2006 AGO 2006 49.8
27 AGO2007 AGO 2007 51.4
28 AGO2008 AGO 2008 53.1
29 AGO2009 AGO 2009 54.8
30 AGO2010 AGO 2010 56.4
31 AGO2011 AGO 2011 58.1
32 AGO2012 AGO 2012 59.7
33 AGO2013 AGO 2013 61.4
34 AGO2014 AGO 2014 NA
35 AGO2015 AGO 2015 NA
36 AGO2016 AGO 2016 NA
37 AGO2017 AGO 2017 NA
38 AGO2018 AGO 2018 NA
我现在想做的是在国家一级使用线性回归进行前后推断。我知道函数 na.locf 和 na.approx 但找不到任何可以做到这一点的选项。小鼠或 Amelia 似乎无法做到这一点,因为它们需要协变量。我只有一个变量。
复杂性在于我有 194 个国家/地区,因此我正在寻找可以为所有国家/地区执行此操作的东西。如果您能提供帮助,我将不胜感激!
我已经尝试过了,首先尝试提取斜率:
df_slope <- df2 %>%
mutate(slope=NA)%>%
group_by(iso3)%>%
mutate_cond(is.na(slope),slope=lm(anc4 ~year,.)$coefficients[[2]])%>%
ungroup()
..这当然行不通..
非常感谢!
【问题讨论】:
标签: r linear-regression missing-data