我有不规则时间间隔的数据点
我需要根据最后 k 条记录为每个这些数据点找到加权移动平均值 (WMA)。具体来说,在计算点 p 的 WMA 时,对应于第 p 个记录的值应分配权重为 1,分配给前 k 个点中的每一个的权重应与这些点与第 p 个点之间的日期差成反比。历史记录越旧,分配给该记录价值的权重就越小。
如何在 Excel 中实现此目的?
根据我的理解,我缺少的关键部分是转换单元格范围的能力。如果有办法做到这一点,我可以计算倒数 日期差异并将其用作权重。
数据示例
这是一个示例,说明了仅对一个数据点(对应于 21 年 2 月 11 日的数据点)所需的计算。这需要对所有数据点重复。
使用的公式:
Weight = 1/(1+ Date diff 11-Feb-21 与当前数据点的数据)
加权值 = 值 * 权重
加权平均值 = 加权值总和/权重总和
答案 0 :(得分:0)
这能解决您的问题吗?
假设 1-Jan-21 在单元格 A2 中,
(价值 * 权重)D2 = B2 * C2
(价值 * 权重的运行总和)E2 = IF(ROW()=2,0,E1)+D2
(权重的运行总和)F2 = IF(ROW()=2,0,F1)+B2
(WMA) G2 = E2/F2
现在将 D:G 的公式拖到工作表中,它应该会为您提供加权平均值。
更好的是使用表格。如果突出显示数据集并单击插入 - 表并通过将 D1 更改为“VW”并将 E1 更改为“RSVW”来添加新列,则
在 D2 中,您需要 =[@Value]*[@[Day of Year]]
的公式(方括号表示我们正在讨论此表,“@”符号指定当前行,“年中的一天”有额外的方括号,因为列名中有一个空格。)
在 E2 中,您需要 =IF(ROW()=2,0,OFFSET([@RSVW],-1,0))+[@VW]
的公式,因为只要您不通过像“E1”这样的单元格地址进行相对单元格引用,那么公式就不会自动填充右列,因此我们通过使用 OFFSET 来引用“高于当前行的 RSVW 值”来获得相同的值
亚达亚达
完成此操作后,您将每列存储这些公式一次,而不是在每个单元格中重复。只要您不在这些列中放置绝对值,您就可以调整/更改它们,而无需将公式拖到列中,并且您可以重命名列标题。另外,我不确定第一种方法在排序时是否会中断,但是您使用表格公式,那么即使从表格中间删除一行也不会中断。
答案 1 :(得分:0)