Расчет ошибки для временного ряда с использованием автокорреляцииPython

Программы на Python
Anonymous
Расчет ошибки для временного ряда с использованием автокорреляции

Сообщение Anonymous »

Я пытаюсь вычислить время автокорреляции для временного ряда, полученного на основе кадров траектории молекулярной динамики. Я использовал несколько методов для оценки времени автокорреляции, поскольку оно мне нужно для вычисления статистической ошибки наблюдаемой величины. Моей первой попыткой было усреднение блоков. График блочного усреднения стандартной ошибки среднего (SEM) не показывает четкого плато. Код, который я использовал для усреднения блоков:
sem=[]

#return sems
for i in range(1,1000):
block_size.append(i)
block_mean=[]
no_blocks=0
for l in range(0, len(nums),i):
if len(nums[l:l+i])==i:
block_mean.append(np.mean(nums[l:l+i]))
no_blocks=no_blocks+1
sem.append(np.std(block_mean)/np.sqrt(no_blocks))


Пример вывода (SEM для усреднения блоков и размер блока):
Изображение
Мой вопрос: если в SEM нет четкого плато в результате усреднения блоков, имеет ли смысл пытаться оценить статистическую ошибку для этих данных? Если да, то какие методы/меры предосторожности мне следует использовать, чтобы получить надежную оценку ошибки (или консервативную границу) на основе одной длинной траектории кадров MD?
Я пробовал использовать другие методы, такие как statsmodel.tsa.stattools.acf, для расчета времени автокорреляции, и в конечном итоге я получаю ошибку 0,0008712, что, на мой взгляд, немного нереально. Есть ли другой способ более точного расчета ошибки для этих данных?
Я использовал следующий код для расчета ошибки с помощью statsmodel.tsa.stattools.acf,
def tau_cal(acf_out,nums):
positive_acf =np.where(acf_out > 0.0000)[0]

result = [acf_out[x] for x in positive_acf]
tau = 1 + 2 * np.sum(result[1:-1])
Neff = len(nums)/tau
error = (statistics.stdev(nums))/np.sqrt(Neff)
return error
time = statsmodel.tsa.stattools.acf(nums)
error = tau_cal(acf_out,nums)


Подробнее здесь: https://stackoverflow.com/questions/797 ... orrelation

Вернуться в «Python»