2009-10-28 47 views
2

从计算机模拟的书中,我得到了这两个等式。如何使用相关图估计方差?

alt text http://i37.tinypic.com/x2ugxz.jpg

首先是计算correlogram,第二个是如何使用相关图来估计方差。

估计观测方差的常用方法在计算机模拟中通常不是不正确的,因为观测往往是相关的。

我的问题是,我从我的程序计算的值非常大,所以它不可能是正确的。

我想因为当k变大时r [k]会接近0,第二个方程会给出一个相当大的值,所以也许方程是不正确的?

至于你问,这里是整个程序(用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 
+0

如果没有您编程的实际功能,很难说清楚。 – nlucaroni 2009-10-28 20:31:58

+0

你有没有检查过其他软件?这些公式是否描述了一个上限?你能给我们一个链接到这本书,或其他来源? – 2009-10-28 20:44:01

+0

我们需要查看数据。当你的方差接近零时,r [k]将接近无穷大。 – Paul 2009-10-28 23:03:01

回答

1

相关图可以用函数acf()太来计算。

-k

+0

你的意思是R语言中的acf()吗?我试过了。 – ablmf 2009-11-07 07:33:15

+0

噢,我记住的只是你可以尝试使用acf()(希望它的实现是正确的)来缩小搜索空间,以确定错误的原因。 – knguyen 2009-11-07 17:05:30