我跑了一些樹木數據的多元迴歸。Predict.lm for Multiple Regression;麻煩new.data
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個觀測值並重新運行迴歸,然後預測這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
我不知道這是來自作爲代碼工作的大部分時間,我沒有說有兩行的任何對象。我有3個獨立的計算,每個都使用樹數據。我試圖讓他們分開,沒有共同的變數,但是他們可以互相干擾嗎?警告是否來自g的抽樣?是否有更好的方法去除觀察或進行多變量預測?謝謝。
P.S. - 此外,當我附上的樹,我仍然不能直接調用Merch.Vol
沒有trees$Merch.Vol
雖然我可以通過自己打電話DBH
和Height
。沒什麼大不了的,但如果有明確的解釋(我敢肯定),我想聽聽。
完美地工作!非常感謝。我仍然不能說我理解子集問題,但我在將來的兩個步驟中沒有問題。並抓住變量名稱。這很尷尬,因爲我以Merch.Vol命名。再次感謝,我知道一個比我更精通的人可以在一分鐘內解決它。 – Jibber3 2013-05-07 14:12:08
@ Jibber3我有問題,當我預測使用較少沒有。的觀察比在訓練模型中的觀察。我實際上是從文件中獲取數據,並使用t = read.table(「input.txt」)而不是數據框。我得到一個警告,指出:警告消息: 1:「newdata」有45行,但發現變量具有8676行 2:在predict.lm(REG,錫):從秩虧配合 預測可能會產生誤導 >我該怎麼辦? – charvi 2014-11-26 18:24:52