如何使用预测功能获取新列

时间:2018-12-22 14:19:59

标签: r regression predict

我正在尝试使用lm填充一列并预测函数。我需要用24个新值创建一个名为“估计”的新列。

My data looks like:

first    second    third
   17        44       50
  788       890     1409
  968       218      344
  212       185      306
  333       355       NA
    0         4       10
  160       156      184
    4         4        8
   12         4        4
   21         2        0
    3         0        0
   35        32       NA
   22        18       59
   97       150       40
   1         18       79
  12         32       23
  42         21       22
   8          2        5
  24         17        0
   4          2        2 
   0          0        0
  29         19       21
  15         20       NA
   0          1       NA

首先,我使用随机回归模型和函数lm获得b和一个系数(ax + b)。我知道了接下来,使用函数预测,我要填充新列“估计”。但是我得到一个错误。

data<- X12_5_3
regr <- lm(X12_5_3$third ~ X12_5_3$second)
regr
X12_5_3$estimation<-predict(regr, na.action=TRUE)
X12_5_3$estimation


Error in `$<-.data.frame`(`*tmp*`, estimation, value = c(`1` = 
57.4742893243486,  : 
replacement has 20 rows, data has 24

我没有获得此专栏。

1 个答案:

答案 0 :(得分:1)

尚不清楚您想要的结果是什么。一方面,您可能更喜欢的是

(X12_5_3$estimation <- predict(regr, newdata = X12_5_3))
#  [1]   57.474289 1380.179615  329.520065  277.925177  543.717027   -5.064970
#  [7]  232.584214   -5.064970   -5.064970   -8.191932  -11.318895   38.712512
# [13]   16.823771  223.203325   16.823771   38.712512   21.514215   -8.191932
# [19]   15.260290   -8.191932  -11.318895   18.387253   19.950734   -9.755414

在这种情况下,除了20个拟合值之外,您还可以通过使用regr得到4个实际预测。另一方面,如果您实际上只想用四个NA来拟合值,那么

regr <- lm(X12_5_3$third ~ X12_5_3$second, na.action = "na.exclude")
(X12_5_3$estimation <- predict(regr))
#           1           2           3           4           5           6           7 
#   57.474289 1380.179615  329.520065  277.925177          NA   -5.064970  232.584214 
#           8           9          10          11          12          13          14 
#   -5.064970   -5.064970   -8.191932  -11.318895          NA   16.823771  223.203325 
#          15          16          17          18          19          20          21 
#   16.823771   38.712512   21.514215   -8.191932   15.260290   -8.191932  -11.318895 
#          22          23          24 
#   18.387253          NA          NA