R:DSA套餐(每日季节性调整)的时间序列,DSA功能问题和2月29日



我有一个从 2018 年 1 月 30 日开始到 2020 年 6 月 14 日结束的时间序列,我想根据印度假期进行季节性调整。为此,我想根据我所做的研究使用 DSA 包和 dsa 函数(这是一个可以处理每日时间序列的模型,例如 X-13(。

首先,我导入包含 2 列和 867 行的 csv 文件,并将其转换为 xts 对象(使用 dsa 函数的必要形式(。

library(dsa)
library(xts)
daily_demand_df = read.table(file = file.path(file_path,"Demand data - daily.csv"),
sep = ";", row.names = NULL, header = FALSE,
encoding = 'utf-8', skip = 1, 
colClasses = c("character", "character"),
col.names = c("Date","Demand_Value"))
daily_demand_df$Demand_Value <- as.numeric(gsub(',', '.', daily_demand_df$Demand_Value))
daily_demand_df$Date<-as.Date(daily_demand_df$Date, format = "%d/%m/%Y")
daily_demand_df <- daily_demand_df[order(daily_demand_df$Date),]
rownames(daily_demand_df) <- 1:nrow(daily_demand_df)
head(x = daily_demand_df)
Date Demand_Value
1 2018-01-29       3242.5
2 2018-01-30       3269.5
3 2018-01-31       3276.9
4 2018-02-01       3274.1
5 2018-02-02       3291.3
6 2018-02-03       3286.1
daily_demand_timeserie <- xts(x = daily_demand_df$Demand_Value,
order.by = daily_demand_df$Date,
frequency=365.2425)

然后我尝试在时间序列上应用 dsa 函数(暂时没有假期效果(,但出现以下错误:

adjusted <- dsa(series = daily_demand_timeserie)
Error in xts::xts(s1, order.by = xts::last(times, n = length(s1))) : NROW(x) must match length(order.by)

我试图探索DSA函数源代码,以了解问题可能出在哪里,我发现在函数中,在某个时候,2月29日从时间序列中删除。然后我修改了 dsa 函数的源代码以打印 dsa 函数中使用的s1time系列的长度,它返回了 869 和 868,因此出现了长度问题。

有谁知道如何解决这个问题?

提前谢谢你,这是我使用的文档。

DSA理论论文链接

每日生活津贴参考手册

DSA 函数源代码

首先,您不需要在 xts(( 定义中指定频率变量。但我不认为这导致了问题。

我在包装中更改了一些内容,所以我希望问题不再发生。

通常,请检查序列的开头和结尾是否有缺失值,因为这可能会导致 dsa 处理和插值缺失数据的方式出现问题。

最新更新