如何将不跨越一整天的半小时数据转换为 R 中的时间序列?

How to I transform half-hourly data that does not span the whole day to a Time Series in R?

这是我在 Whosebug 上的第一个问题,如果问题提得不好,请见谅。

我目前正在开发一个项目,预测一个人每天喝多少酒。我目前的数据如下所示:

menge 列表示一个人在 30 分钟内实际喝了多少水(因此第一个值表示从 8:00 到 8:30 之前的水量等等)。这是来自 3 个月数据的 1 天样本。一天从早上 8 点开始,到晚上 8 点结束。

我正在尝试预测每一天的时间序列。例如,给定前一两个时间步长,我们可以预测一整天,然后我们知道这个人在晚上 8 点之前总共喝了多少酒。 我正在尝试将此数据建模为 R (Google Colab) 中的时间序列对象,以便使用克罗斯顿方法进行预测。使用ts()函数,我应该设置什么频率知道:

  1. 数据为半小时
  2. 每天从8:00到20:00的数据(不跨越一整天)

我是否需要通过添加 0 个值来使数据跨越一整天?有没有更好的方法呢?提前谢谢你。

当使用ts()函数时,frequency用于定义给定时间段内(通常是规则间隔的)观测值的数量。对于您的示例,您的观察时间为上午 8 点到晚上 8 点之间每 30 分钟一次,时间段为 1 天。 1 天的时间段假设这里最感兴趣的是每天的模式,您也可以在这里使用 1 周。

因此,在数据的每一天(上午 8 点至晚上 8 点)内,您有 24 个观测值(24 个半小时)。所以这个数据的合适频率是 24.

您也可以用 0 值填充数据,但这不是必需的,而且会使模型复杂化。如果您填充数据以使其具有一天中所有半小时的观测值,则频率将为 48。