2009-10-28 50 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