Как получить новый столбец с функцией прогнозирования - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь заполнить один столбец, используя функции 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 голосов
/ 22 декабря 2018

Не совсем ясно, каков ваш желаемый результат.С одной стороны, вы можете предпочесть

(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 подобранным значениям вы также получаете 4 фактических прогноза при использовании regr.С другой стороны, если вы на самом деле хотите просто установить значения с четырьмя 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...