2016-07-21 17 views
6

Seti numarası kodunu

import numpy as np 
from pandas.tools.plotting import autocorrelation_plot 
import matplotlib.pyplot as plt 
nobs = 10000 
xx = np.random.normal(size=nobs) 
autocorrelation_plot(xx) 
plt.show() 

araziler xx otokorelasyonlar autocorrelation_plot ama hepsi 10000 gecikmelere çizer. Sadece ilk 10'u nasıl çizebilirim? gecikme sayısı ** kwds argümanı kullanarak çizilen ayarlamak için bir yol

def autocorrelation_plot(series, ax=None, **kwds): 
    """Autocorrelation plot for time series. 
    Parameters: 
    ----------- 
    series: Time series 
    ax: Matplotlib axis object, optional 
    kwds : keywords 
     Options to pass to matplotlib plotting method 

var mı şu şekildedir:

fonksiyon autocorrelation_plot başlar?

cevap

0

Otomatik ilişki dağılımı işlevi yüksek düzey bir işlevdir. Kodu panda kitaplığından görüntüleme:

def autocorrelation_plot(series, ax=None, **kwds): 
"""Autocorrelation plot for time series. 

Parameters: 
----------- 
series: Time series 
ax: Matplotlib axis object, optional 
kwds : keywords 
    Options to pass to matplotlib plotting method 

Returns: 
----------- 
ax: Matplotlib axis object 
""" 
import matplotlib.pyplot as plt 
n = len(series) 
data = np.asarray(series) 
if ax is None: 
    ax = plt.gca(xlim=(1, n), ylim=(-1.0, 1.0)) 
mean = np.mean(data) 
c0 = np.sum((data - mean) ** 2)/float(n) 

def r(h): 
    return ((data[:n - h] - mean) * 
      (data[h:] - mean)).sum()/float(n)/c0 
x = np.arange(n) + 1 
y = lmap(r, x) 
z95 = 1.959963984540054 
z99 = 2.5758293035489004 
ax.axhline(y=z99/np.sqrt(n), linestyle='--', color='grey') 
ax.axhline(y=z95/np.sqrt(n), color='grey') 
ax.axhline(y=0.0, color='black') 
ax.axhline(y=-z95/np.sqrt(n), color='grey') 
ax.axhline(y=-z99/np.sqrt(n), linestyle='--', color='grey') 
ax.set_xlabel("Lag") 
ax.set_ylabel("Autocorrelation") 
ax.plot(x, y, **kwds) 
if 'label' in kwds: 
    ax.legend() 
ax.grid() 
return ax 

İşlevdeki tüm satırlardan eksik bir sekme var. uç değiştirme ax.plot (x, y, ** kwds) ax.plot önce 4 paralel olarak

from pandas.compat import lmap 

(x [: 10] başlığına ekleme

y [: 10], ** kwds)

I ekledik bir N_SAMPLES değişkenler:

from pandas.compat import lmap 


def autocorrelation_plot(series, n_samples=None, ax=None, **kwds): 
    """Autocorrelation plot for time series. 

    Parameters: 
    ----------- 
    series: Time series 
    ax: Matplotlib axis object, optional 
    kwds : keywords 
     Options to pass to matplotlib plotting method 

    Returns: 
    ----------- 
    ax: Matplotlib axis object 
    """ 
    import matplotlib.pyplot as plt 
    n = len(series) 
    data = np.asarray(series) 
    if ax is None: 
     ax = plt.gca(xlim=(1, n_samples), ylim=(-1.0, 1.0)) 
    mean = np.mean(data) 
    c0 = np.sum((data - mean) ** 2)/float(n) 

    def r(h): 
     return ((data[:n - h] - mean) * 
       (data[h:] - mean)).sum()/float(n)/c0 
    x = (np.arange(n) + 1).astype(int) 
    y = lmap(r, x) 
    z95 = 1.959963984540054 
    z99 = 2.5758293035489004 
    ax.axhline(y=z99/np.sqrt(n), linestyle='--', color='grey') 
    ax.axhline(y=z95/np.sqrt(n), color='grey') 
    ax.axhline(y=0.0, color='black') 
    ax.axhline(y=-z95/np.sqrt(n), color='grey') 
    ax.axhline(y=-z99/np.sqrt(n), linestyle='--', color='grey') 
    ax.set_xlabel("Lag") 
    ax.set_ylabel("Autocorrelation") 
    if n_samples: 
     ax.plot(x[:n_samples], y[:n_samples], **kwds) 
    else: 
     ax.plot(x, y, **kwds) 
    if 'label' in kwds: 
     ax.legend() 
    ax.grid() 
    return ax