média móvel ponderada com numpy.convolve
Estou escrevendo uma função de média móvel que usa a função convolve em numpy, que deve ser equivalente a (média móvel ponderada). Quando meus pesos são todos iguais (como em uma média aritmética simples), funciona bem:
data = numpy.arange(1,11)
numdays = 5
w = [1.0/numdays]*numdays
numpy.convolve(data,w,'valid')
dá
array([ 3., 4., 5., 6., 7., 8.])
No entanto, quando tento usar uma média ponderada
w = numpy.cumsum(numpy.ones(numdays,dtype=float),axis=0); w = w/numpy.sum(w)
em vez do (para os mesmos dados) 3.667,4.667,5.667,6.667, ... eu espero, eu fico
array([ 2.33333333, 3.33333333, 4.33333333, 5.33333333, 6.33333333,
7.33333333])
Se eu remover o sinalizador "válido", nem vejo os valores corretos. Eu realmente gostaria de usar convolve para o WMA, bem como MA, pois torna o código mais limpo (mesmo código, pesos diferentes) e caso contrário, eu acho que vou ter que percorrer todos os dados e tomar fatias.
Alguma idéia sobre esse comportamento?