(在)正确使用线性时间趋势变量,以及最有效的修复?

(In)correct use of a linear time trend variable, and most efficient fix?

我有 3133 行代表在 7/1/2000 和 12/31/2014 之间的 5296 天中的某些天进行的付款;也就是说,"Date" 特征是不连续的:

> head(d_exp_0014)
  Year Month Day    Amount Count     myDate
1 2000     7   6  792078.6     9 2000-07-06
2 2000     7   7  140065.5     9 2000-07-07
3 2000     7  11  190553.2     9 2000-07-11
4 2000     7  12  119208.6     9 2000-07-12
5 2000     7  16 1068156.3     9 2000-07-16
6 2000     7  17       0.0     9 2000-07-17

我想拟合线性时间趋势变量,

t <- 1:3133

到解释支出金额变化的线性模型。

fit_t <- lm(Amount ~ t + Count, d_exp_0014)

然而,这显然是错误的,因为 t 在日期之间的增量不同:

> head(exp)
  Year Month Day    Amount Count       Date t
1 2000     7   6  792078.6     9 2000-07-06 1
2 2000     7   7  140065.5     9 2000-07-07 2
3 2000     7  11  190553.2     9 2000-07-11 3
4 2000     7  12  119208.6     9 2000-07-12 4
5 2000     7  16 1068156.3     9 2000-07-16 5
6 2000     7  17       0.0     9 2000-07-17 6

对我来说,这与线性趋势完全相反。

将此 data.frame 合并到连续日期索引的最有效方法是什么?日期向量会像

CTS_date_V <- as.data.frame(seq(as.Date("2000/07/01"), as.Date("2014/12/31"), "days"), colnames = "Date")

产生不同的结果?

我对任何包都持开放态度(使用 fpp、forecast、timeSeries、xts、ts,截至目前);只是在寻找一个以功能形式部署的好答案,因为这些付款每周都会更新,我想自动添加到这个 data.frame.

我认为对规则(连续)时间序列进行某种转换是个好主意。 可以使用xts转换时间序列数据(很方便,因为它可以在其他包中作为常规ts使用)

填补空白

# convert myDate to POSIXct if necessary
# create xts from data frame x 
ts1 <- xts(data.frame(a = x$Amount, c = x$Count), x$myDate )
ts1

# create empty time series
ts_empty <- seq( from = start(ts1), to = end(ts1), by = "DSTday")

# merge the empty ts to the data and fill the gap with 0
ts2 <- merge( ts1, ts_empty, fill = 0)

# or interpolate, for example:
ts2 <- merge( ts1, ts_empty, fill = NA)
ts2 <- na.locf(ts2)

# zoo-xts ready functions are:
#     na.locf - constant previous value
#     na.approx - linear approximation
#     na.spline - cubic spline interpolation

删除重复的日期

在您的示例中,现在有重复值的迹象。但是基于 这是很有可能的。我认为您想使用 sum 函数聚合值:

ts1 <- period.apply( ts1, endpoints(ts1,'days'), sum)