प्रसार के माप

Python में Statistics परिचय

Maggie Matsui

Content Developer, DataCamp

प्रसार क्या है?

दो हिस्टोग्राम: एक संकरा जिसमें डेटा कुछ ही मानों तक फैला है, और एक चौड़ा जिसमें डेटा ज्यादा मानों तक फैला है.

Python में Statistics परिचय

वैरिएंस

हर डेटा बिंदु से औसत तक की औसत दूरी

7 डेटा बिंदुओं का डॉट प्लॉट, बीच में औसत दर्शाती लाल रेखा.

Python में Statistics परिचय

वैरिएंस

हर डेटा बिंदु से औसत तक की औसत दूरी

7 डेटा बिंदुओं का डॉट प्लॉट, बीच में औसत दर्शाती लाल रेखा. हर डॉट और औसत रेखा के बीच तीर.

Python में Statistics परिचय

वैरिएंस की गणना

1. हर डेटा बिंदु से औसत घटाएँ

dists = msleep['sleep_total'] - 
        np.mean(msleep['sleep_total'])
print(dists)
0     1.666265
1     6.566265
2     3.966265
3     4.466265
4    -6.433735
      ...

2. हर दूरी का स्क्वायर करें

sq_dists = dists ** 2
print(sq_dists)
0      2.776439
1     43.115837
2     15.731259
3     19.947524
4     41.392945
      ...
Python में Statistics परिचय

वैरिएंस की गणना

3. स्क्वायर्ड दूरियों को जोड़ें

sum_sq_dists = np.sum(sq_dists)
print(sum_sq_dists)
1624.065542

4. डेटा बिंदुओं की संख्या - 1 से भाग दें

variance = sum_sq_dists / (83 - 1)
print(variance)
19.805677

np.var() इस्तेमाल करें

np.var(msleep['sleep_total'], ddof=1)
19.805677

ddof=1 के बिना, population variance निकलेगा, sample variance नहीं:

np.var(msleep['sleep_total'])
19.567055
Python में Statistics परिचय

स्टैंडर्ड डिविएशन

np.sqrt(np.var(msleep['sleep_total'], ddof=1))
4.450357
np.std(msleep['sleep_total'], ddof=1)
4.450357
Python में Statistics परिचय

मीन एब्सोल्यूट डिविएशन

dists = msleep['sleep_total'] - np.mean(msleep['sleep_total'])

np.mean(np.abs(dists))
3.566701

स्टैंडर्ड डिविएशन बनाम मीन एब्सोल्यूट डिविएशन

  • स्टैंडर्ड डिविएशन दूरियों का स्क्वायर करता है, बड़ी दूरियों को ज्यादा दंडित करता है.
  • मीन एब्सोल्यूट डिविएशन हर दूरी को बराबर वज़न देता है.
  • कोई भी दूसरे से बेहतर नहीं है, पर SD, MAD से अधिक प्रचलित है.
Python में Statistics परिचय

क्वांटाइल्स

np.quantile(msleep['sleep_total'], 0.5)
10.1

$$

                        0.5 quantile = median

क्वार्टाइल्स:

np.quantile(msleep['sleep_total'], [0, 0.25, 0.5, 0.75, 1])
array([ 1.9 ,  7.85, 10.1 , 13.75, 19.9 ])
Python में Statistics परिचय

बॉक्सप्लॉट क्वार्टाइल्स का उपयोग करते हैं

import matplotlib.pyplot as plt
plt.boxplot(msleep['sleep_total'])
plt.show()

sleep_total boxplot.png

Python में Statistics परिचय

np.linspace() से क्वांटाइल्स

np.quantile(msleep['sleep_total'], [0, 0.2, 0.4, 0.6, 0.8, 1])
array([ 1.9 ,  6.24,  9.48, 11.14, 14.4 , 19.9 ])

 

np.linspace(start, stop, num)

np.quantile(msleep['sleep_total'], np.linspace(0, 1, 5))
array([ 1.9 ,  7.85, 10.1 , 13.75, 19.9 ])
Python में Statistics परिचय

इंटरक्वार्टाइल रेंज (IQR)

बॉक्सप्लॉट में बॉक्स की ऊँचाई

np.quantile(msleep['sleep_total'], 0.75) - np.quantile(msleep['sleep_total'], 0.25)
5.9
from scipy.stats import iqr
iqr(msleep['sleep_total'])
5.9
Python में Statistics परिचय

आउटलायर्स

आउटलायर: ऐसा डेटा बिंदु जो बाकियों से काफी अलग हो

कैसे जानें कि फर्क "काफी" है? कोई बिंदु आउटलायर है अगर:

  • $\text{data} < \text{Q1} - 1.5\times\text{IQR}$    या
  • $\text{data} > \text{Q3} + 1.5\times\text{IQR}$
Python में Statistics परिचय

आउटलायर्स खोजना

from scipy.stats import iqr
iqr = iqr(msleep['bodywt'])

lower_threshold = np.quantile(msleep['bodywt'], 0.25) - 1.5 * iqr upper_threshold = np.quantile(msleep['bodywt'], 0.75) + 1.5 * iqr
msleep[(msleep['bodywt'] < lower_threshold) | (msleep['bodywt'] > upper_threshold)]
                    name   vore  sleep_total    bodywt
4                    Cow  herbi          4.0   600.000
20        Asian elephant  herbi          3.9  2547.000
22                 Horse  herbi          2.9   521.000
...
Python में Statistics परिचय

सब एक साथ

msleep['bodywt'].describe()
count      83.000000
mean      166.136349
std       786.839732
min         0.005000
25%         0.174000
50%         1.670000
75%        41.750000
max      6654.000000
Name: bodywt, dtype: float64
Python में Statistics परिचय

अभ्यास करते हैं!

Python में Statistics परिचय

Preparing Video For Download...