[英]Computing Weighted Moving Average in Excel
我有來自不規則時間間隔的數據點
我需要根據最后 k 個記錄找到每個這些數據點的加權移動平均值 (WMA)。 具體來說,在計算點 p 的 WMA 時,對應於 pth 記錄的值應分配為 1 的權重,分配給前 k 個點中的每一個的權重應與這些點與第 p 個點之間的日期差成反比。 歷史記錄越舊,賦予該記錄價值的權重就越小。
如何在 Excel 中實現這一點?
據我了解,我缺少的關鍵部分是轉換單元格范圍的能力。 如果有辦法做到這一點,我可以計算日期差異的倒數並將其用作權重。
數據示例
這是一個示例,說明僅對一個數據點(對應於 21 年 2 月 11 日)所需的計算。 這需要對所有數據點重復。
使用的公式:
權重 = 1/(1+ 21 年 2 月 11 日與當前數據點的數據之間的日期差異)
加權值 = 值 * 權重
加權平均值 = 加權值總和/權重總和
這能解決你的問題嗎?
假設 21 年 1 月 1 日在單元格 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]]
的公式(方括號表示我們正在討論此表,“@”符號指定當前行,“Day of Year” Year" 有額外的方括號,因為列名中有一個空格。)
在 E2 中,您需要=IF(ROW()=2,0,OFFSET([@RSVW],-1,0))+[@VW]
的公式,因為只要您不制作相對單元格通過像“E1”這樣的單元格地址引用,那么公式將不會自動填充右側的列,因此我們通過使用 OFFSET 來引用“高於當前行的 RSVW 值的值”來獲得相同的值
亞達亞達
完成此操作后,您將每列存儲一次這些公式,而不是在每個單元格中重復。 只要您不在這些列中放置絕對值,您就可以調整/更改它們,而無需將公式拖到列中,並且您可以重命名列標題。 另外,我不確定第一種方法在排序時是否會中斷,但是您使用表格公式,那么即使從表格中間刪除一行也不會破壞它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.