我正在对一些树木数据进行多元回归。
trees
Index DBH Height Merch.Vol.
1 1 8.3 70 10.3
2 2 8.6 65 10.3
3 3 8.8 63 10.2
4 4 10.5 72 16.4
5 5 10.7 81 18.8
6 6 10.8 83 19.7
7 7 11.0 66 15.6
8 8 11.0 75 18.2
9 9 11.1 80 22.6
10 10 11.2 75 19.9
11 11 11.3 79 24.2
12 12 11.4 76 21.0
13 13 11.4 76 21.4
14 14 11.7 69 21.3
15 15 12.0 75 19.1
16 16 12.9 74 22.2
17 17 12.9 85 33.8
18 18 13.3 86 27.4
19 19 13.7 71 25.7
20 20 13.8 64 24.9
21 21 14.0 78 34.5
22 22 14.2 80 31.7
23 23 14.5 74 36.3
24 24 16.0 72 38.3
25 25 16.3 77 42.6
26 26 17.3 81 55.4
27 27 17.5 82 55.7
28 28 17.9 80 58.3
29 29 18.0 80 51.5
30 30 18.0 80 51.0
31 31 20.6 87 77.0
attach(trees)
我可以轻松地运行回归,但我在预测时遇到了麻烦。我正在随机删除 3 个观察结果并重新运行回归,然后预测这三个观察结果以计算 MAPE。
g = sample(2:31,3);g
mbreg = lm(trees$Merch.Vol[-g]~DBH[-g]+Height[-g])
p2 = predict(mbreg,trees[g,2:3])
MAPE[2] = MAPE[2] + sum(abs((trees$Merch.Vol[g]-p2)/trees$Merch.Vol[g]))/3
j = sample(2:31,3);j
mLR = lm(log(trees$Merch.Vol[-j])~log(DBH[-j])+log(Height[-j]))
p4 = exp(predict(mLR,trees[j,2:3]))
MAPE[4] = MAPE[4] + sum(abs((trees$Merch.Vol[j]-p4)/trees$Merch.Vol[j]))/3
正如我所期望的那样,这在大约 80% 的时间里有效,为三个删除的观察返回三个预测值。但偶尔我会收到警告:
Warning message:
'newdata' had 3 rows but variable(s) found have 2 rows
我不知道这是从哪里来的,因为代码大部分时间都在工作,而且我没有任何有 2 行的对象。我有 3 个像这样的单独计算,每个都使用树数据。我试图在没有公共变量的情况下将它们分开,但它们是否会相互干扰?警告是否来自 g 的采样?有没有更好的方法来删除观察或进行多变量预测?谢谢。
PS - 另外,当我附加树时,尽管我可以自己打电话,Merch.Vol
但我仍然不能直接打电话。没什么大不了的,但如果有一个明显的解释(我敢肯定)我想听听。trees$Merch.Vol
DBH
Height