使用R中另一个变量的线性回归的斜率对单个变量的缺失数据进行处理

问题描述 投票:0回答:1

[这里是我的数据集(df8)的摘录,其中包含194个国家/地区从2000年到2018年的时间序列。

   iso3   year   anc4 median
   <chr> <dbl>  <dbl>  <dbl>
 1 BIH    2000 NA      0.739
 2 BIH    2001 NA      0.746
 3 BIH    2002 NA      0.763
 4 BIH    2003 NA      0.778
 5 BIH    2004 NA      0.842
 6 BIH    2005 NA      0.801
 7 BIH    2006 NA      0.819
 8 BIH    2007 NA      0.841
 9 BIH    2008 NA      0.845
10 BIH    2009 NA      0.840
11 BIH    2010  0.842  0.856
12 BIH    2011 NA      0.873
13 BIH    2012 NA      0.867
14 BIH    2013 NA      0.889
15 BIH    2014 NA      0.879
16 BIH    2015 NA      0.883
17 BIH    2016 NA      0.854
18 BIH    2017 NA      0.891
19 BIH    2018 NA      0.920
20 BWA    2000 NA      0.739
21 BWA    2001 NA      0.746
22 BWA    2002 NA      0.763
23 BWA    2003 NA      0.778
24 BWA    2004 NA      0.842
25 BWA    2005 NA      0.801
26 BWA    2006  0.733  0.819
27 BWA    2007 NA      0.841
28 BWA    2008 NA      0.845
29 BWA    2009 NA      0.840
30 BWA    2010 NA      0.856
31 BWA    2011 NA      0.873
32 BWA    2012 NA      0.867
33 BWA    2013 NA      0.889
34 BWA    2014 NA      0.879
35 BWA    2015 NA      0.883
36 BWA    2016 NA      0.854
37 BWA    2017 NA      0.891
38 BWA    2018 NA      0.920

[我想做的是使用基于区域中位数(中位数)的线性回归的斜率来估算变量anc4的缺失数据。我想在国家/地区一级这样做,因为每个国家/地区都不属于同一地区。

这是我尝试过的。。

df_model <-  df8

predictions <- vector()

for(i in unique(df_model$iso3)) {
  temp <- df_model[df_model[,2]==i,]
  predictions <- c(predictions,predict(lm(median~year,temp),df8[is.na(df8$anc4) & df8$iso3==i,]))
}

df8[is.na(df8$anc4),]$anc4 <- predictions

[我使用我观察到的anc4数据点的线性回归来插补缺失的anc4数据时所使用的代码,并尝试使用中位数来对此进行改编..但效果不佳!

非常感谢!

这里是我的数据集(df8)的摘录,其中包含194个国家/地区从2000年到2018年的时间序列。 iso3年anc4中位数1 BIH 2000 ...

r linear-regression missing-data
1个回答
0
投票

您的最后一条评论清楚了您的问题:您从中位数的线性回归中获得了斜率,而从唯一的非缺失值中得到了截距。

© www.soinside.com 2019 - 2024. All rights reserved.