2011-04-04 29 views
-1

我創造了這個計劃估計均方誤差(MSE),平均絕對誤差百分比(MAPE): 一切都好這件事? pune是一個包含22個數據點的.csv文件。計算錯誤,MSE和MAPE?

pune <- read.csv("C:/Users/ervis/Desktop/Te dhenat e konsum energji/pune.csv", header=T,dec=",", sep=";") 
pune <- data.matrix(pune,rownames.force=NA) 
m1 <- seq(from = 14274.19, to = 14458.17, length.out = 10000) 
MSE1 <- numeric(length = 10000) 
for(i in seq_along(MSE1)) { 
MSE1[i] <- 1/length(pune) * sum((pune-m1[i])^2) 
} 
MAPE1 <- numeric(length = 10000) 
for(i in seq_along(MAPE1)) { 
MAPE1[i] <- 1/length(pune) * sum(abs((pune-m1[i])/pune)) 
} 

對嗎?

+2

請不要複製粘貼您的工作區,而是嘗試提供真實的代碼。還有一個具體問題,只是詢問您的計算是否正確不是本網站的目的。 – 2011-04-04 13:41:10

+0

@ user687286:在編寫問題時,嘗試刪除任何不相關的代碼行。例如,我們並不需要知道你叫你的數據文件(只是給我們的數據),或者你不小心扔了錯誤,或關於無直接關係到計算MSE任何其他計算。 – 2011-04-04 13:43:50

回答

2

好像很多的代碼,一個簡單的計算。這裏是我會怎麼做一個數據載體a

a = c(1:10) 
mse_a = sum((a - mean(a))^2)/length(a) 

從我可以看到您的MSE公式是正確的,但只應針對整個數據集一個值,而不是多個值。

如果您的數據僅包含22分,我不明白爲什麼你需要創建一個10000的項目載體,無論您使用的是循環與否。

+0

我使用的間隔從14274.19至14458.17,我想知道這是從這個區間,誰給我分(MSE) – Silda 2011-04-04 20:35:20

+0

我不明白是最好的。您正在尋找能夠讓您獲得最低MSE的平均值?如果是這樣,那是沒有意義的,因爲平均值取決於用於計算MSE的數據,所以不能選擇任意平均值。它唯一有效的值是當它等於數據點的實際平均值時。 – Benjamin 2011-04-04 20:42:41

+0

對不起,也許我不清楚。 我有22個數據,並假設我有10,000個近似值,其中我會選擇給我最低MSE的那個人 – Silda 2011-04-04 20:50:33

9

Mean squared error似乎有在不同環境下不同的含義。

對於取自總體的隨機樣本,樣本均值的MSE只是方差由樣本的數目,即,劃分,

mse <- function(sample_mean) var(sample_mean)/length(sample_mean) 
mse(pune) 

對於迴歸,MSE是指殘差的平方之和除以這些殘差的自由度。

mse.lm <- function(lm_model) sum(residuals(lm_model)^2)/lm_model$df.residual 
#or 
mse.lm <- function(lm_model) summary(lm_model)$sigma^2