Data Science

Python में पॉइसन और ऋणात्मक द्विपद वितरण फिटिंग में महारथ

Spread the love

पॉइसन वितरण गणना डेटा के मॉडलिंग के लिए एक बहुमूल्य उपकरण है, जो एक निश्चित समय सीमा या स्थान के भीतर घटनाओं की एक विशिष्ट संख्या की प्रायिकता का प्रतिनिधित्व करता है, एक स्थिर औसत दर और घटना स्वतंत्रता मानते हुए। हालांकि, वास्तविक दुनिया के डेटासेट अक्सर इन आदर्श स्थितियों से विचलित होते हैं। यह लेख पायथन में विविध डेटासेट में पॉइसन वितरण को फिट करने का पता लगाता है, जिसमें अतिविसरण जैसी चुनौतियों का समाधान किया जाता है।

विषयवस्तु की तालिका

पायथन में बेसिक पॉइसन वितरण फिटिंग

आइए scipy.stats लाइब्रेरी का उपयोग करके पॉइसन वितरण को फिट करने की मूल प्रक्रिया से शुरू करते हैं। मुख्य फ़ंक्शन poisson.fit() है, जो λ (लैम्ब्डा) का अनुमान लगाता है, जो औसत घटना दर का प्रतिनिधित्व करता है।


import numpy as np
from scipy.stats import poisson
import matplotlib.pyplot as plt

# नमूना डेटा: प्रति मिनट एक बिंदु से गुजरने वाली कारों की संख्या (100 मिनट)
data = np.random.poisson(lam=5, size=100)

# पॉइसन वितरण को फिट करें
lambda_fit, = poisson.fit(data)

# फिट किए गए लैम्ब्डा को प्रदर्शित करें
print(f"Fitted lambda: {lambda_fit}")

# प्लॉटिंग के लिए तैयार करें
x = np.arange(0, max(data) + 1)

# हिस्टोग्राम और फिट किए गए वितरण को प्लॉट करें
plt.hist(data, bins=range(max(data) + 2), density=True, alpha=0.6, label='Data')
plt.plot(x, poisson.pmf(x, lambda_fit), 'r-', label=f'Fitted Poisson (λ={lambda_fit:.2f})')
plt.xlabel('कारों की संख्या')
plt.ylabel('प्रायिकता')
plt.legend()
plt.title('पॉइसन वितरण फिट')
plt.show()

यह सीधा सा तरीका तब अच्छा काम करता है जब डेटा पॉइसन वितरण का बारीकी से पालन करता है। हालाँकि, वास्तविक दुनिया का डेटा अक्सर विचलित होता है।

बिन किए गए न्यूनतम वर्ग विधि

जबकि poisson.fit() सुविधाजनक है, बिन किए गए न्यूनतम वर्ग विधि एक अधिक मजबूत विकल्प प्रदान करती है, विशेष रूप से सीमित डेटा या पॉइसन मान्यताओं से महत्वपूर्ण विचलन के साथ। इस पद्धति में डेटा को बिन करना और देखे गए और अपेक्षित आवृत्तियों के बीच वर्ग अंतर को कम करना शामिल है। कार्यान्वयन के लिए पुनरावृति अनुकूलन (जैसे, scipy.optimize.minimize का उपयोग करके) की आवश्यकता होती है और यह संक्षिप्त उदाहरण के दायरे से परे है लेकिन इसे समर्पित सांख्यिकीय पैकेजों में आसानी से पाया जा सकता है।

ऋणात्मक द्विपद वितरण के साथ अतिविसरण को संबोधित करना

अतिविसरण तब उत्पन्न होता है जब डेटा प्रसरण इसके माध्य से अधिक हो जाता है, एक प्रमुख पॉइसन धारणा (प्रसरण बराबर माध्य) का उल्लंघन करता है। ऋणात्मक द्विपद वितरण, अतिविसरण को समायोजित करते हुए, ऐसे मामलों में एक बेहतर फिट प्रदान करता है।


from scipy.stats import nbinom

# अतिविसरण डेटा का उदाहरण
overdispersed_data = np.random.negative_binomial(n=2, p=0.5, size=100)

# ऋणात्मक द्विपद वितरण को फिट करें
n_fit, p_fit = nbinom.fit(overdispersed_data)

# फिट किए गए मापदंडों को प्रदर्शित करें
print(f"Fitted n: {n_fit}")
print(f"Fitted p: {p_fit}")

# प्लॉटिंग के लिए तैयार करें
x = np.arange(0, max(overdispersed_data) + 1)

# हिस्टोग्राम और फिट किए गए वितरण को प्लॉट करें
plt.hist(overdispersed_data, bins=range(max(overdispersed_data) + 2), density=True, alpha=0.6, label='Data')
plt.plot(x, nbinom.pmf(x, n_fit, p_fit), 'r-', label=f'Fitted Negative Binomial (n={n_fit:.2f}, p={p_fit:.2f})')
plt.xlabel('घटनाओं की संख्या')
plt.ylabel('प्रायिकता')
plt.legend()
plt.title('अतिविसरण डेटा के लिए ऋणात्मक द्विपद फिट')
plt.show()

यह दर्शाता है कि कैसे ऋणात्मक द्विपद वितरण प्रभावी रूप से अतिविसरण डेटा की विशेषताओं को पकड़ता है, पॉइसन फिट को मजबूर करने की तुलना में अधिक सटीक मॉडल प्रदान करता है।

निष्कर्ष

प्रभावी पॉइसन वितरण फिटिंग के लिए सावधानीपूर्वक डेटा विश्लेषण की आवश्यकता होती है। जबकि poisson.fit() एक सरल शुरुआती बिंदु प्रदान करता है, ऋणात्मक द्विपद वितरण का उपयोग करके अतिविसरण को पहचानना और संबोधित करना सटीक गणना डेटा मॉडलिंग के लिए महत्वपूर्ण है। वितरण का चुनाव डेटासेट की विशिष्ट विशेषताओं पर निर्भर करता है। प्लॉट का उपयोग करके फिट का दृश्य निरीक्षण सुनिश्चित करता है कि चुना गया वितरण डेटा का सटीक प्रतिनिधित्व करता है।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *