2011-04-04 83 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