2012-07-11 15 views
9

Có gói thống kê python hỗ trợ tính toán hiệp phương sai trọng số (tức là mỗi quan sát có trọng số) không? Unumpuantely numpy.cov không hỗ trợ trọng số.Gói Python hỗ trợ tính toán hiệp phương sai trọng số

Tốt hơn là làm việc theo khuôn khổ gumpy/scipy (tức là, có thể sử dụng các mảng có nhiều mảng để tăng tốc độ tính toán).

Cảm ơn rất nhiều!

+0

http://www-pcmdi.llnl.gov/svn/repository/cdat/trunk/Packages/genutil/Lib/statistics.py - hãy dùng thử? –

+0

mô hình thống kê gần như có nó – user333700

Trả lời

6

mô hình thống kê có tính toán hiệp phương sai trọng số trong stats.

Nhưng chúng ta vẫn có thể tính toán nó cũng trực tiếp:

# -*- coding: utf-8 -*- 
"""descriptive statistic with case weights 

Author: Josef Perktold 
""" 

import numpy as np 
from statsmodels.stats.weightstats import DescrStatsW 


np.random.seed(987467) 
x = np.random.multivariate_normal([0, 1.], [[1., 0.5], [0.5, 1]], size=20) 
weights = np.random.randint(1, 4, size=20) 

xlong = np.repeat(x, weights, axis=0) 

ds = DescrStatsW(x, weights=weights) 

print 'cov statsmodels' 
print ds.cov 

self = ds #alias to use copied expression 
ds_cov = np.dot(self.weights * self.demeaned.T, self.demeaned)/self.sum_weights 

print '\nddof=0' 
print ds_cov 
print np.cov(xlong.T, bias=1) 

# calculating it directly 
ds_cov0 = np.dot(self.weights * self.demeaned.T, self.demeaned)/\ 
       (self.sum_weights - 1) 
print '\nddof=1' 
print ds_cov0 
print np.cov(xlong.T, bias=0) 

này in:

cov statsmodels 
[[ 0.43671986 0.06551506] 
[ 0.06551506 0.66281218]] 

ddof=0 
[[ 0.43671986 0.06551506] 
[ 0.06551506 0.66281218]] 
[[ 0.43671986 0.06551506] 
[ 0.06551506 0.66281218]] 

ddof=1 
[[ 0.44821249 0.06723914] 
[ 0.06723914 0.68025461]] 
[[ 0.44821249 0.06723914] 
[ 0.06723914 0.68025461]] 

biên tập lưu ý

Câu trả lời đầu tiên chỉ ra một lỗi trong statsmodels đã được cố định trong thời gian chờ đợi.

+0

Dường như lỗi thống kê mô hình đã được [cố định vào năm 2013] (https://github.com/statsmodels/statsmodels/issues/370#issuecomment-15357376). – drevicko

+0

@ Mayou36 Cảm ơn bạn đã chỉnh sửa. Nó đã bị từ chối bởi thời gian tôi nhìn thấy nó. Tôi đã cập nhật câu trả lời của mình để phản ánh phiên bản mô hình thống kê đã sửa – user333700

Các vấn đề liên quan