Как использовать коррелограмму для оценки дисперсии? - PullRequest
2 голосов
/ 28 октября 2009

Из книги по компьютерному моделированию я получил это уравнение.

alt text

Первое - это вычисление коррелограммы , второе - как использовать коррелограмму для оценки дисперсии.

Общий подход к оценке дисперсии наблюдений часто не является неправильным при компьютерном моделировании, поскольку наблюдения часто связаны между собой.

У меня вопрос, значение, которое я вычислил из моей программы, очень большое, поэтому оно не может быть правильным.

Я думаю, потому что 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

1 Ответ

1 голос
/ 07 ноября 2009

Коррелограмма также может быть рассчитана с помощью функции acf().

-k

...