Python: вычисление параметров Z score

#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()