Tôi muốn tính toán hiệp phương sai tự động của 3 mảng X1, X2 và Y, tất cả đều là quá trình ngẫu nhiên cố định. Có chức năng nào trong sciPy hoặc thư viện khác có thể giải quyết vấn đề này không?Cách tính toán hiệp phương sai tự động trong Python
Trả lời
Statsmodels có auto và hiệp phương sai chéo chức năng
http://statsmodels.sourceforge.net/devel/generated/statsmodels.tsa.stattools.acovf.html http://statsmodels.sourceforge.net/devel/generated/statsmodels.tsa.stattools.ccovf.html
cộng với chức năng tương quan và tự tương quan từng phần http://statsmodels.sourceforge.net/devel/tsa.html#descriptive-statistics-and-tests
Theo ước tính tiêu chuẩn của hệ số autocovariance cho tín hiệu rời rạc, mà có thể được biểu diễn theo phương trình:
... nơi x(i)
là một tín hiệu nhất định (ví dụ cụ thể vector 1D), k
tượng trưng cho sự thay đổi của x(i)
tín hiệu bằng k
mẫu, N
là chiều dài của x(i)
tín hiệu, và:
... đó là trung bình đơn giản, chúng ta có thể viết:
'''
Calculate the autocovarriance coefficient.
'''
import numpy as np
Xi = np.array([1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
N = np.size(Xi)
k = 5
Xs = np.average(Xi)
def autocovariance(Xi, N, k, Xs):
autoCov = 0
for i in np.arange(0, N-k):
autoCov += ((Xi[i+k])-Xs)*(Xi[i]-Xs)
return (1/(N-1))*autoCov
print("Autocovariance:", autocovariance(Xi, N, k, Xs))
Nếu bạn muốn chuẩn hóa hệ số autocovariance, mà sẽ trở thành hệ số tự tương quan thể hiện dưới dạng:
... hơn bạn chỉ cần thêm vào đoạn code trên chỉ là hai dòng bổ sung:
def autocorrelation():
return autocovariance(Xi, N, k, Xs)/autocovariance(Xi, N, 0, Xs)
Đây là kịch bản đầy đủ:
'''
Calculate the autocovarriance and autocorrelation coefficients.
'''
import numpy as np
Xi = np.array([1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
N = np.size(Xi)
k = 5
Xs = np.average(Xi)
def autocovariance(Xi, N, k, Xs):
autoCov = 0
for i in np.arange(0, N-k):
autoCov += ((Xi[i+k])-Xs)*(Xi[i]-Xs)
return (1/(N-1))*autoCov
def autocorrelation():
return autocovariance(Xi, N, k, Xs)/autocovariance(Xi, N, 0, Xs)
print("Autocovariance:", autocovariance(Xi, N, k, Xs))
print("Autocorrelation:", autocorrelation())
Nhận mẫu tự hiệp phương sai:
# cov_auto_samp(X,delta)/cov_auto_samp(X,0) = auto correlation
def cov_auto_samp(X,delta):
N = len(X)
Xs = np.average(X)
autoCov = 0.0
times = 0.0
for i in np.arange(0, N-delta):
autoCov += (X[i+delta]-Xs)*(X[i]-Xs)
times +=1
return autoCov/times
Một tinh chỉnh nhỏ cho các câu trả lời trước, tránh các vòng python for
và sử dụng các hoạt động mảng numpy thay thế. Điều này sẽ nhanh hơn nếu bạn có nhiều dữ liệu.
def lagged_auto_cov(Xi,t):
"""
for series of values x_i, length N, compute empirical auto-cov with lag t
defined: 1/(N-1) * \sum_{i=0}^{N-t} (x_i - x_s) * (x_{i+t} - x_s)
"""
N = len(time_series)
# use sample mean estimate from whole series
Xs = np.mean(Xi)
# construct copies of series shifted relative to each other,
# with mean subtracted from values
end_padded_series = np.zeros(N+t)
end_padded_series[:N] = Xi - Xs
start_padded_series = np.zeros(N+t)
start_padded_series[t:] = Xi - Xs
auto_cov = 1./(N-1) * np.sum(start_padded_series*end_padded_series)
return auto_cov
So sánh điều này chống lại các mã @bluevoxel 's, sử dụng một chuỗi thời gian của 50.000 điểm dữ liệu và tính toán tự động tương quan cho một giá trị cố định duy nhất của lag, mã vòng lặp python for
trung bình khoảng 30 milli-giây và sử dụng các mảng có dải màu trung bình nhanh hơn 0,3 milli giây (chạy trên máy tính xách tay của tôi).
- 1. Tính toán ma trận hiệp phương sai
- 2. Tính hiệp phương sai với Python và Numpy
- 3. Gói Python hỗ trợ tính toán hiệp phương sai trọng số
- 4. hiệp phương sai trong C#
- 5. xây dựng trong chức năng cho hiệp phương sai
- 6. NET Hiệp phương sai
- 7. Eigen: Có một cách sẵn có để tính toán mẫu hiệp phương sai
- 8. Cách xác định lại cov để tính toán ma trận hiệp phương sai dân số
- 9. C++ Mẫu hiệp phương sai
- 10. generics java hiệp phương sai
- 11. Tính toán phương sai của một python ảnh hiệu quả
- 12. Tại sao hiệp phương sai và hiệp phương sai được đặt tên như vậy?
- 13. Delegate Hiệp phương sai lầm Confusion!
- 14. Ma trận hiệp phương sai LARGE trong R
- 15. Phương sai hiệp phương sai kiểu trả về trong các phương thức giao thức
- 16. Làm cách nào để tính toán phương sai của danh sách trong python?
- 17. Câu hỏi về C# hiệp phương sai
- 18. Phương thức hiệp phương sai tùy chọn hoạt động như thế nào trong Swift
- 19. Hiệp phương sai và các loại chung
- 20. đại biểu hiệp phương sai và Contavariance
- 21. Hiệp phương sai chung và đối nghịch
- 22. Toán sai với Python?
- 23. Hiệp phương sai trong lập trình loại cấp
- 24. Chứng minh hiệp phương sai và contravariance trong Java?
- 25. Hiệp phương sai và contravariance trong ngôn ngữ lập trình
- 26. C# Đúc generics (hiệp phương sai và contravariance?)
- 27. Tại sao hiệp phương sai không được phép với ReadOnlyCollection?
- 28. "Hiệp phương sai" của System.Nullable <> struct
- 29. tính toán trung bình và phương sai với một lặp
- 30. Sự khác biệt giữa hiệp phương sai và Contra-phương sai
Numpy đã có mọi thứ cần thiết để tính [tương quan] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.correlate.html). (Mà thậm chí có thể được tăng tốc với [scipy.signal.fftconvolve] (http://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.signal.fftconvolve.html).) Chỉ sau đó cần được nhân với [phương sai] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.var.html) để có được tính tự động. – Celelibi