#python #pandas #statistics
#python #pandas #Статистика
Вопрос:
Я знаю о скользящем вычислении z-балла с использованием Python.
Учитывая исходную оценку и z баллов, возможно ли вычислить скользящее окно, используемое для вычисления среднего значения исходной оценки? Пожалуйста, предложите дальнейший путь.
def zscore(x, window):
r = x.rolling(window=window)
m = r.mean().shift(1)
s = r.std(ddof=0).shift(1)
z = (x-m)/s
return z
import pandas as pd
import numpy as np
raw1 = pd.DataFrame(np.random.randn(100, 1), columns=list('A'))
z_score1=zscore(raw1,20)
Теперь у меня есть только необработанная оценка и z-оценка с равным количеством наблюдений.
raw2 = pd.DataFrame(np.random.randn(100, 1), columns=list('A'))
z_score2 = pd.DataFrame(np.random.randn(100, 1), columns=list('A'))
Как вычислить количество наблюдений, используемых для вычисления z score, учитывая, что оба raw2 и z_score 2 имеют одинаковое количество наблюдений?
Заранее благодарю вас.
Ответ №1:
К сожалению, я не знаю ни о каких функциях оптимизации, которые будут обрабатывать требуемое целочисленное ограничение.
В зависимости от размера ваших данных я бы предложил подход грубой силы. Следующее работает нормально.
raw2 = pd.Series(np.random.randn(100))
zscore2 = zscore(raw2, 30)
err = pd.Series()
for widow in range(1, zscore2.shape[0]):
err.loc[widow] = (zscore2 - zscore(raw2, widow)).abs().sum()
err.idxmin()