2015-10-13 4 views
14

मैंने पांडों और scipy.stats में skew और kurtosis कार्यों की तुलना करने का फैसला किया, और समझ में नहीं आता क्यों मुझे पुस्तकालयों के बीच अलग-अलग परिणाम मिल रहे हैं।पांडा बनाम scipy में skew और kurtosis कार्यों के बीच क्या अंतर है?

जहां तक ​​मैं प्रलेखन से कह सकता हूं, दोनों कुर्टोसिस फ़िशर की परिभाषा का उपयोग करके गणना करते हैं, जबकि स्कू के लिए यह बताने के लिए पर्याप्त विवरण नहीं लगता है कि उनके गणना के तरीके में कोई बड़ा अंतर है या नहीं।

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) 

इस रिटर्न:

skewness: -0.393524456473 
kurtosis: -0.330672097724 

जबकि अगर मैं एक पांडा dataframe में बदलने का:

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

इस रिटर्न:

skewness: 0 -0.466663 
kurtosis: 0 0.379705 

क्षमा याचना अगर मैं पोस्ट किया है इस गलत जगह में; सुनिश्चित नहीं है कि यह आंकड़े या प्रोग्रामिंग प्रश्न है या नहीं।

उत्तर

18

अंतर भिन्न सामान्यीकरण के कारण है। डिफ़ॉल्ट रूप से Scipy पूर्वाग्रह के लिए सही नहीं है, जबकि पांडा करता है।

आप bias=False तर्क पारित करके पूर्वाग्रह के लिए सही करने के लिए scipy बता सकते हैं:

>>> 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 

वहाँ एक तरह से पूर्वाग्रह सुधार दूर करने के लिए पांडा बताने के लिए होने के लिए प्रकट नहीं होता।

संबंधित मुद्दे