2015-10-13 23 views
14

Tôi quyết định so sánh các hàm nghiêng và kurtosis trong gấu trúc và scipy.stats, và không hiểu tại sao tôi nhận được kết quả khác nhau giữa các thư viện. Theo như tôi có thể nói từ tài liệu, cả hai hàm kurtosis đều tính toán bằng định nghĩa của Fisher, trong khi nghiêng có vẻ không đủ mô tả để biết liệu có bất kỳ sự khác biệt lớn nào với cách chúng được tính toán hay không.Sự khác nhau giữa hàm nghiêng và kurtosis trong gấu trúc so với scipy là gì?

import pandas as pd 
import scipy.stats.stats as st 

heights = np.array([1.46, 1.79, 2.01, 1.75, 1.56, 1.69, 1.88, 1.76, 1.88, 1.78]) 

print "skewness:", st.skew(heights) 
print "kurtosis:", st.kurtosis(heights) 

này trả về:

skewness: -0.393524456473 
kurtosis: -0.330672097724 

trong khi nếu tôi chuyển đổi sang một dataframe gấu trúc:

heights_df = pd.DataFrame(heights) 
print "skewness:", heights_df.skew() 
print "kurtosis:", heights_df.kurtosis() 

này trả về:

skewness: 0 -0.466663 
kurtosis: 0 0.379705 

Xin lỗi nếu tôi đã đăng này ở sai chỗ; không chắc đó là số liệu thống kê hay câu hỏi lập trình.

Trả lời

18

Sự khác biệt là do các chuẩn hóa khác nhau. Scipy theo mặc định không chính xác cho sai lệch, trong khi gấu trúc thì không.

Bạn có thể nói scipy để sửa chữa cho thiên vị bằng cách lập luận bias=False:

>>> x = pandas.Series(np.random.randn(10)) 
>>> stats.skew(x) 
-0.17644348972413657 
>>> x.skew() 
-0.20923623968879457 
>>> stats.skew(x, bias=False) 
-0.2092362396887948 
>>> stats.kurtosis(x) 
0.6362620964462327 
>>> x.kurtosis() 
2.0891062062174464 
>>> stats.kurtosis(x, bias=False) 
2.089106206217446 

Dường như không phải là một cách để nói với gấu trúc để loại bỏ các hiệu chỉnh sai lệch.

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