Data-Transformation

從移動平均線中提取數據點?

  • August 20, 2013

是否可以從移動平均數據中提取數據點?

換句話說,如果一組數據只有前30個點的簡單移動平均線,是否有可能提取出原始數據點?

如果是這樣,怎麼做?

對fabee的回答+1,這是完整的。根據我發現的用於執行手頭操作的包,只需將其翻譯成 R 即可。就我而言,我有 NOAA 三個月的溫度預測數據:1 月至 2 月至 3 月、2 月至 3 月至 4 月、3 月至 4 月至 5 月等,我想將其分解為(近似值)月值,假設每三個月的溫度基本上是一個平均值。

library (Matrix)
library (matrixcalc)

# Feb-Mar-Apr through Nov-Dec-Jan temperature forecasts:

qtemps <- c(46.0, 56.4, 65.8, 73.4, 77.4, 76.2, 69.5, 60.1, 49.5, 41.2)

# Thus I need a 10x12 matrix, which is a band matrix but with the first
# and last rows removed so that each row contains 3 1's, for three months.
# Yeah, the as.matrix and all is a bit obfuscated, but the results of
# band are not what svd.inverse wants.

a <- as.matrix (band (matrix (1, nrow=12, ncol=12), -1, 1)[-c(1, 12),])
ai <- svd.inverse (a)

mtemps <- t(qtemps) %*% t(ai) * 3

這對我很有用。謝謝@fabee。

編輯:好的,將我的 R 翻譯回 Python,我得到:

from numpy import *
from numpy.linalg import *

qtemps = transpose ([[46.0, 56.4, 65.8, 73.4, 77.4, 76.2, 69.5, 60.1, 49.5, 41.2]])

a = tril (ones ((12, 12)), 2) - tril (ones ((12, 12)), -1)
a = a[0:10,:]

ai = pinv (a)

mtemps = dot (ai, qtemps) * 3

(與 R 版本相比,它的調試時間要長得多。首先是因為我對 Python 不像對 R 那樣熟悉,還因為 R 在交互上更有用。)

引用自:https://stats.stackexchange.com/questions/67907

comments powered by Disqus