いくつかの木のデータで多変量回帰を実行しています。
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 を計算するためにこれら 3 つの観測値を予測しています。
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% の確率で期待どおりに機能し、削除された 3 つの観測値に対して 3 つの予測値を返します。しかし、時折、次の警告が表示されます。
Warning message:
'newdata' had 3 rows but variable(s) found have 2 rows
コードはほとんどの場合機能し、2 行のオブジェクトがないため、これがどこから来たのかわかりません。このように、それぞれが木のデータを使用する3つの個別の計算があります。私はそれらを共通の変数なしで別々に保とうとしましたが、とにかくお互いに干渉している可能性はありますか? 警告は g のサンプリングの結果ですか? 観測を削除したり、多変量予測を行うより良い方法はありますか? ありがとうございます。
PS - また、ツリーをアタッチすると、自分で呼び出すことはできますが、ツリーMerch.Vol
なしで直接呼び出すことはできません。大したことではありませんが、明確な説明があれば (きっと) 聞きたいです。trees$Merch.Vol
DBH
Height