我正在尝试使用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
我没有获得此专栏。
答案 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