Из книги по компьютерному моделированию я получил это уравнение.
Первое - это вычисление коррелограммы , второе - как использовать коррелограмму для оценки дисперсии.
Общий подход к оценке дисперсии наблюдений часто не является неправильным при компьютерном моделировании, поскольку наблюдения часто связаны между собой.
У меня вопрос, значение, которое я вычислил из моей программы, очень большое, поэтому оно не может быть правильным.
Я думаю, потому что r [k] будет приближаться к 0, когда k становится больше, второе уравнение даст довольно большое значение, поэтому, возможно, уравнение неверно?
Как вы и просили, вот вся программа (написанная на Python):
@property
def autocorrelation(self):
n = self.packet_sent
mean = self.mean
waiting_times = self.waiting_times
R = [ sum([(x - mean) ** 2 for x in waiting_times[:-1]]) / n ]
#print R
for k in range(1, n / 4 + 1):
R.append(0)
for i in range(0, n - k):
R[k] += (waiting_times[i] - mean) * (waiting_times[i + k] - mean)
R[k] /= n
auto_cor = [r / R[0] for r in R]
return auto_cor
@property
def standard_deviation_wrong(self):
'''This must be a wrong method'''
s_x = self.standard_deviation_simple
auto_cor = self.autocorrelation
s = 0
n = self.packet_sent
for k, r in enumerate(auto_cor[1:]):
s += 1 - (k + 1.0) * r / n
#print "%f %f %f" % (k, r, s)
s *= 2
s += 1
s = ((s_x ** 2) * s) ** 0.5
return s