当某些子集的观测值为 0 时,如何将模型应用于多个子集。

How to apply model to multiple subsets when some have 0 observations.

我希望在一个特定字段上使用指数平滑进行预测,但将其分组到一个或多个其他字段上。我想我已经设法做到了,但是我需要帮助来克服错误:

Error in ts(x) : 'ts' object must have one or more observations

我认为这是因为对于某些组组合可能没有任何观察结果。每当发生这种情况时,有没有办法离开 NA?

这是我用来创建 exp 平滑的代码。 workingexp1 工作正常,但一旦我引入更多字段作为分组依据,我就会在 failingexp1 上收到错误。

library(forecast)
workingexp1 = ave(match$Score, FUN = function(x)fitted(ses(x, alpha = 0.1)))
failingexp1 = ave(match$Score, match$area, match$Student, FUN = function(x)fitted(ses(x, alpha = 0.1)))

这是我正在处理的数据:

school <- c('I','B','B','B','B','I','I','I','I','B','I','I','B','I','B','I','B','B','I','I','B','I','B','I','B','B','I')
Student <- c('S','S','S','O','O','O','O','S','O','S','S','O','S','O','O','S','S','O','S','O','S','O','O','S','S','O','J')
area <- c('A','A','A','A','B','A','B','A','A','A','A','A','A','A','A','A','A','A','A','B','A','A','A','A','A','A','A')
Score <- c(5,2,7,3,9,6,3,7,1,7,3,8,3,4,1,9,4,6,3,8,3,4,1,9,4,6,6)
match <- data.frame(school, Student, area,  Score)

非常感谢任何帮助!!!!

当特定组合的元素数量太少时,您可以将函数修改为 return NA 值(似乎小于 4,指数不起作用):

myfun = function(x) {
  if (NROW(x) < 4) {
    res <- NA
  } else {
    res <- fitted(ses(x, alpha = 0.1))
  }
  return(res)
}
failingexp1 = ave(match$Score, match$area, match$Student, FUN = myfun)