簡體   English   中英

在 Excel 中計算加權移動平均線

[英]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 中,

  1. (價值 * 重量) D2 = B2 * C2

  2. (價值*權重的運行總和)E2 = IF(ROW()=2,0,E1)+D2

  3. (權重的運行總和)F2 = IF(ROW()=2,0,F1)+B2

  4. (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 值的值”來獲得相同的值

  • 亞達亞達

完成此操作后,您將每列存儲一次這些公式,而不是在每個單元格中重復。 只要您不在這些列中放置絕對值,您就可以調整/更改它們,而無需將公式拖到列中,並且您可以重命名列標題。 另外,我不確定第一種方法在排序時是否會中斷,但是您使用表格公式,那么即使從表格中間刪除一行也不會破壞它。

好的,這里是使用兩個大矩陣的蠻力方法,這對於 200 行數據應該沒問題,並且可以使用大約 5K。 這是無限的 k,使用所有以前的可用行:

=MMULT(IF(TRANSPOSE(ROW(A2:A13))>ROW(A2:A13),0,1/(1+B2:B13-TRANSPOSE(B2:B13))),C2:C13)/
MMULT(IF(TRANSPOSE(ROW(A2:A13))>ROW(A2:A13),0,1/(1+B2:B13-TRANSPOSE(B2:B13))),ROW(A2:A13)^0)

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM