कैसे पता करें कि कोई डेटा R में एक पॉइसन डिस्ट्रीब्यूशन को फॉलो करता है?


25

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

मेरी प्रायिकता बुक में, (R के साथ प्रोबेबिलिटी एंड स्टैटिस्टिक्स) एक (पूर्ण नहीं) का उदाहरण है कि कैसे जांचा जाए कि डेटा पॉइसन डिस्ट्रीब्यूशन को फॉलो करता है, वे यह साबित करने की कोशिश करने लगते हैं कि इन 3 मानदंडों का पालन किया जाता है: (मेरी किताब, पेज से 120 (मानदंड) पृष्ठ 122-123 उदाहरण)

1- गैर-अतिव्यापी अंतराल में परिणामों की संख्या स्वतंत्र है। दूसरे शब्दों में, समय के अंतराल में परिणामों की संख्या (0, t] समय के अंतराल में परिणामों की संख्या से स्वतंत्र होती है (t, t + h], h> 0

2- पर्याप्त रूप से छोटे अंतराल में दो या दो से अधिक परिणामों की संभावना लगभग शून्य है। दूसरे शब्दों में, बशर्ते एच पर्याप्त रूप से छोटा हो, समय के एक ही अंतराल में एक या शून्य परिणाम प्राप्त करने की संभावना की तुलना में अंतराल (टी, टी + एच] में दो या अधिक परिणाम प्राप्त करने की संभावना नगण्य है।

3- पर्याप्त रूप से छोटे अंतराल या छोटे क्षेत्र में ठीक एक परिणाम की संभावना अंतराल या क्षेत्र की लंबाई के लिए आनुपातिक है। दूसरे शब्दों में, लंबाई h के अंतराल में एक परिणाम की संभावना lambda * h है।

लेकिन मानदंड 3 को "एक अभ्यास के रूप में" छोड़ दिया गया है।

A- क्या कोई यह बता सकता है कि क्या मेरे डेटासेट के पॉइज़न डिस्ट्रीब्यूशन का अनुसरण करने का कोई और "आसान" तरीका है?

बी- क्या कोई मुझे किसी प्रकार के उदाहरण के साथ मानदंड 1 और 3 समझा सकता है (यदि यह आर, शानदार के साथ है)?

धन्यवाद!

नोट: लंबी पोस्ट के लिए क्षमा करें। इसके अलावा, मुझे डेटा को बदलना होगा ताकि मेरे पास एक तालिका हो जैसे:

  number of hurricanes       | 0 | 1 | 2  etc.
  -----------------------------------------
  total years that have      |   |   |
  that number of hurricanes  |   |   |

आपकी पुस्तक में मानदंड अंतराल डेटा के लिए हैं; यह उपयोगी होगा यदि आपके पास तारीखें थीं जिन पर तूफान आया था ... इसके अलावा ये मानदंड निरंतर दर पॉइसन प्रक्रियाओं के लिए हैं, जो स्पष्ट रूप से है (या मुझे आशा है कि) तूफान के मामले में नहीं। यह जांचने के लिए कि क्या आपका गणना डेटा पोइसन वितरण का अनुसरण करता है, पहला प्राथमिक दृष्टिकोण ची-स्क्वायर टेस्ट है।
एल्विस

जवाबों:


33

एक वितरण के लिए अनंत तरीके हैं जो एक पॉइसन वितरण से थोड़ा अलग हैं; आप यह नहीं पहचान सकते हैं कि डेटा का एक सेट एक पॉइसन वितरण से लिया गया है। आप जो कर सकते हैं वह असंगतता की तलाश में है जिसे आपको पॉइसन के साथ देखना चाहिए, लेकिन स्पष्ट असंगतता की कमी इसे पॉइसन नहीं बनाती है।

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

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

इसलिए हम सांख्यिकीय तर्कों पर वापस आ गए हैं जो डेटा की स्वयं जांच करने से आते हैं। डेटा कैसे दिखाएगा कि वितरण पॉइसन था, बजाय इसके कुछ जैसा?

जैसा कि शुरू में उल्लेख किया गया है, आप जो कर सकते हैं वह यह है कि क्या डेटा स्पष्ट रूप से अंतर्निहित वितरण के साथ असंगत नहीं है, लेकिन यह नहीं बताया गया है कि वे एक पॉइसन से तैयार किए गए हैं (आप पहले से ही आश्वस्त हो सकते हैं कि वे हैं नहीं)।

आप इस जाँच को फिट परीक्षणों की अच्छाई के माध्यम से कर सकते हैं।

जिस चि-स्क्वायर का उल्लेख किया गया था, वह एक ऐसा है, लेकिन मैं इस स्थिति के लिए ची-स्क्वायर परीक्षण की सिफारिश नहीं करूँगा **; यह दिलचस्प विचलन के खिलाफ कम शक्ति है। यदि आपका उद्देश्य अच्छी शक्ति है, तो आप इसे उस तरह से प्राप्त नहीं करेंगे (यदि आप शक्ति की परवाह नहीं करते हैं, तो आप परीक्षण क्यों करेंगे)। इसका मुख्य मूल्य सादगी में है, और इसका शैक्षणिक मूल्य है; इसके बाहर, यह फिट टेस्ट की अच्छाई के रूप में प्रतिस्पर्धी नहीं है।

** बाद के संपादन में जोड़ा गया: अब जब यह स्पष्ट हो गया है कि यह होमवर्क है, तो संभावना है कि डेटा की जांच करने के लिए ची-स्क्वेर्ड टेस्ट करने की उम्मीद है कि पॉइसन असंगत नहीं है। मेरे उदाहरण ची-स्क्वायर फिटनेस का उदाहरण देखें, जो पहले पॉइज़ननेस प्लॉट के नीचे किया गया था


लोग अक्सर इन परीक्षणों को गलत कारण के लिए करते हैं (उदाहरण के लिए क्योंकि वे कहना चाहते हैं 'इसलिए डेटा के साथ कुछ अन्य सांख्यिकीय कार्य करना ठीक है जो मानता है कि डेटा पॉइज़न हैं')। असली सवाल यह है कि 'कितनी बुरी तरह से गलत हो सकता है?' ... और फिट परीक्षणों की अच्छाई वास्तव में उस सवाल से बहुत मदद नहीं करती है। अक्सर उस सवाल का जवाब सबसे अच्छा होता है जो नमूना आकार का स्वतंत्र (/ लगभग स्वतंत्र) होता है — और कुछ मामलों में, ऐसे परिणामों के साथ, जो नमूना आकार के साथ चले जाते हैं ... जबकि फिट परीक्षण की एक अच्छाई बेकार है छोटे नमूने (जहां मान्यताओं के उल्लंघन से आपका जोखिम अक्सर सबसे बड़ा होता है)।

यदि आपको एक पॉइसन वितरण के लिए परीक्षण करना चाहिए तो कुछ उचित विकल्प हैं। AD आँकड़ों के आधार पर एंडरसन-डार्लिंग टेस्ट के आधार पर कुछ करना होगा, लेकिन अशक्त वितरण का उपयोग करके (असतत वितरण की जुड़वां समस्याओं के लिए खाता है और आपको मापदंडों का अनुमान लगाना होगा)।

एक सरल विकल्प फिट की भलाई के लिए एक चिकना परीक्षण हो सकता है - ये बहुपदों के एक परिवार का उपयोग करके डेटा के मॉडलिंग के लिए व्यक्तिगत वितरण के लिए डिज़ाइन किए गए परीक्षणों का एक संग्रह है जो शून्य में संभाव्यता फ़ंक्शन के संबंध में ऑर्थोगोनल हैं। निम्न क्रम (यानी दिलचस्प) विकल्पों का परीक्षण करके पता लगाया जाता है कि क्या आधार के ऊपर के बहुपद के गुणांक शून्य से अलग हैं, और ये आमतौर पर परीक्षण से सबसे कम क्रम की शर्तों को छोड़ कर पैरामीटर अनुमान से निपट सकते हैं। पोइसन के लिए ऐसी परीक्षा है। मुझे एक संदर्भ खोद सकते हैं यदि आपको इसकी आवश्यकता है।

n(1-आर2)लॉग(एक्सकश्मीर)+लॉग(कश्मीर!)कश्मीर

यहाँ उस गणना (और प्लॉट) का एक उदाहरण है, जो R में किया गया है:

y=rpois(100,5)
n=length(y)
(x=table(y))
y
 0  1  2  3  4  5  6  7  8  9 10 
 1  2  7 15 19 25 14  7  5  1  4 

k=as.numeric(names(x))
plot(k,log(x)+lfactorial(k))

यहाँ छवि विवरण दर्ज करें

यहाँ मैंने जो आँकड़ा सुझाया है, वह एक पॉसन के फिट टेस्ट की अच्छाई के लिए इस्तेमाल किया जा सकता है:

n*(1-cor(k,log(x)+lfactorial(k))^2)
[1] 1.0599

बेशक, पी-मूल्य की गणना करने के लिए, आपको नल के तहत परीक्षण सांख्यिकीय के वितरण का अनुकरण करने की भी आवश्यकता होगी (और मैंने चर्चा नहीं की है कि मूल्यों की सीमा के भीतर शून्य-गणना से कैसे निपट सकते हैं)। यह एक बहुत शक्तिशाली परीक्षण उपज चाहिए। कई अन्य वैकल्पिक परीक्षण हैं।

यहाँ एक ज्यामितीय वितरण (p = .3) से 50 के आकार के नमूने पर एक Poissonness साजिश करने का एक उदाहरण है:

यहाँ छवि विवरण दर्ज करें

जैसा कि आप देख रहे हैं, यह एक स्पष्ट 'किंक' को प्रदर्शित करता है, जो अशुद्धता का संकेत देता है


Poissonness साजिश के लिए संदर्भ होगा:

डेविड सी। होग्लिन (1980),
"ए पोइसननेस प्लॉट",
द अमेरिकन स्टेटिस्टिशियन
वॉल्यूम। 34, नंबर 3 (अगस्त), पीपी 146-149

तथा

Hoaglin, डी और जे Tukey (1985),
"9. असतत वितरण का आकार जाँच हो रही है",
डाटा टेबल्स, रुझान और आकृतियाँ तलाश ,
(Hoaglin, Mosteller और Tukey एड्स)
जॉन विले एंड संस

दूसरे संदर्भ में छोटे गिनती के लिए भूखंड का समायोजन शामिल है; आप शायद इसे शामिल करना चाहेंगे (लेकिन मेरे पास हाथ का संदर्भ नहीं है)।


फिट परीक्षण के ची-स्क्वायर अच्छाई करने का उदाहरण:

फिट की ची-स्क्वायर अच्छाई करने के अलावा, जिस तरह से यह आम तौर पर बहुत सारी कक्षाओं में होने की उम्मीद की जाती है (हालांकि जिस तरह से मैं यह करूँगा वह नहीं है):

1: अपने डेटा के साथ शुरू, (जो मैं डेटा ले जाऊंगा जिसे मैंने बेतरतीब ढंग से ऊपर 'y' में उत्पन्न किया था, गणना की तालिका उत्पन्न करें:

(x=table(y))
y
 0  1  2  3  4  5  6  7  8  9 10 
 1  2  7 15 19 25 14  7  5  1  4 

2: प्रत्येक सेल में अपेक्षित मान की गणना करें, जो कि एमएल द्वारा लगाए गए एक पोइसन को मानते हैं:

 (expec=dpois(0:10,lambda=mean(y))*length(y))
 [1]  0.7907054  3.8270142  9.2613743 14.9416838 18.0794374 17.5008954 14.1173890  9.7611661
 [9]  5.9055055  3.1758496  1.5371112

3: ध्यान दें कि अंतिम श्रेणियां छोटी हैं; यह ची-स्क्वायर वितरण को टेस्ट स्टेटिस्टिक के वितरण के लिए एक सन्निकटन के रूप में कम अच्छा बनाता है (एक सामान्य नियम यह है कि आप कम से कम 5 के अपेक्षित मान चाहते हैं, हालांकि कई पत्रों ने दिखाया है कि नियम अनावश्यक रूप से प्रतिबंधात्मक है; मैं इसे ले जाऊंगा; करीब, लेकिन सामान्य दृष्टिकोण एक सख्त नियम के लिए अनुकूलित किया जा सकता है)। आसन्न श्रेणियों को संक्षिप्त करें, ताकि न्यूनतम अपेक्षित मान कम से कम 5 से बहुत कम न हों (10 से अधिक श्रेणियों में से 1 के पास अपेक्षित गणना के साथ एक श्रेणी बहुत खराब नहीं है, दो सुंदर सीमा रेखा है)। यह भी ध्यान दें कि हमने अभी तक "10" से अधिक संभावना के लिए जिम्मेदार नहीं है, इसलिए हमें इसे शामिल करने की भी आवश्यकता है:

expec[1]=sum(expec[1:2])
expec[2:8]=expec[3:9]
expec[9]=length(y)-sum(expec[1:8])
expec=expec[1:9]
expec
sum(expec) # now adds to n

4: इसी तरह, मनाया पर पतन श्रेणियों:

(obs=table(y))
obs[1]=sum(obs[1:2])
obs[2:8]=obs[3:9]
obs[9]=sum(obs[10:11])
obs=obs[1:9]

5: ची-स्क्वायर में योगदान के साथ (वैकल्पिक रूप से) एक टेबल में डालें(हेमैं-मैं)2/मैं

print(cbind(obs,expec,PearsonRes=(obs-expec)/sqrt(expec),ContribToChisq=(obs-expec)^2/expec),d=4)
  obs  expec PearsonRes ContribToChisq
0   3  4.618   -0.75282      0.5667335
1   7  9.261   -0.74308      0.5521657
2  15 14.942    0.01509      0.0002276
3  19 18.079    0.21650      0.0468729
4  25 17.501    1.79258      3.2133538
5  14 14.117   -0.03124      0.0009761
6   7  9.761   -0.88377      0.7810581
7   5  5.906   -0.37262      0.1388434
8   5  5.815   -0.33791      0.1141816

एक्स2=Σमैं(मैं-हेमैं)2/मैं

(chisq = sum((obs-expec)^2/expec))
[1] 5.414413
(df = length(obs)-1-1) # lose an additional df for parameter estimate
[1] 7
(pvalue=pchisq(chisq,df))
[1] 0.3904736

दोनों निदान और पी-मूल्य यहां फिट की कमी नहीं दिखाते हैं ... जो हम उम्मीद करेंगे, क्योंकि हमने जो डेटा वास्तव में उत्पन्न किया था, वह पॉइसन थे।


संपादित करें: यहाँ रिक विकलिन के ब्लॉग का लिंक दिया गया है, जो पॉसनेस प्लॉट पर चर्चा करता है, और एसएएस और मतलाब में कार्यान्वयन के बारे में बात करता है

http://blogs.sas.com/content/iml/2012/04/12/the-poissonness-plot-a-goodness-of-fit-diagnostic/


Edit2: अगर मेरे पास यह सही है, तो 1985 के संदर्भ से संशोधित Poissonness का प्लॉट * होगा:

y=rpois(100,5)
n=length(y)
(x=table(y))
k=as.numeric(names(x))
x=as.vector(x)
x1 = ifelse(x==0,NA,ifelse(x>1,x-.8*x/n-.67,exp(-1)))
plot(k,log(x1)+lfactorial(k))

* वे वास्तव में अवरोधन को भी समायोजित करते हैं, लेकिन मैंने यहां ऐसा नहीं किया है; यह कथानक की उपस्थिति को प्रभावित नहीं करता है, लेकिन आपको यह ध्यान रखना होगा कि यदि आप संदर्भ से कुछ और कार्यान्वित करते हैं (जैसे कि विश्वास अंतराल) यदि आप इसे उनके दृष्टिकोण से अलग तरीके से करते हैं।

(उपरोक्त उदाहरण के लिए पहले पॉइज़ननेस प्लॉट से उपस्थिति शायद ही बदलती है।)


2
आप उत्तर के लिए धन्यवाद! लेकिन मुझे कहना होगा कि मैं किसी भी विषय के बारे में नहीं जानता, जिसके बारे में आप बात कर रहे हैं। मैं सोच रहा था कि क्या एक QQplot इसके लिए मुट्ठी भर बन जाएगा। तुम क्या सोचते हो? आपके द्वारा दिए गए विकल्पों में से, जो आपको लगता है कि मुझे उपयोग करना चाहिए? अच्छाई फिट है? जहाँ मैं जानकारी और / या परीक्षण कि आप के बारे में बात कर रहे हैं पा सकते हैं? (गॉडनेस फिट के लिए स्मूथ टेस्ट) भी, क्या आपको पता है कि किसी के पास ब्लॉग कोड के लिए R कोड है? (मैं मतलाब या एसएएस नहीं जानता)। और, आपके उत्तर के लिए बहुत धन्यवाद!
शरीफ

इसके अलावा, कौन सा वितरण आपको लगता है कि मेरा डेटा "फिट" हो सकता है? (मेरे होमवर्क का हिस्सा नहीं है, लेकिन यह जानना अच्छा होगा :))
शरीफ

आप पैरामीटर को ग्रहण किए बिना पोइसन के लिए QQplot कैसे उत्पन्न करेंगे? (मुझे लगता है कि यदि आप पैरामीटर बहुत छोटा नहीं है, तो आप पॉइसन के एक परिवर्तन के साथ काम कर सकते हैं। या आप MLE का उपयोग अज्ञात पैरामीटर के लिए कर सकते हैं, लेकिन तब यह कथानक "से बेहतर" दिखता है, अन्यथा आपको समायोजित करने की आवश्यकता होगी - निर्णय जब आप ऐसा करते हैं)। Poissonness का प्लॉट QQplot की तरह कुछ कार्य करने के लिए है और इसका उद्देश्य कुछ इसी तरह की व्याख्या करना है। यदि आप एक नैदानिक ​​मूल्यांकन चाहते हैं, तो मैं सुझाव दूंगा कि प्लॉट (अधिमानतः उल्लिखित समायोजन के साथ अगर हम में से कोई भी उन्हें ढूँढ सकता है)।
Glen_b -Reinstate Monica

मैं यह नहीं कह सकता कि जो वितरण डेटा मैंने नहीं देखा है वह फिट हो सकता है - लेकिन जब तक इसमें बहुत कुछ नहीं है, कई वितरणों ने संभवतः डेटा उत्पन्न किया हो सकता है।
Glen_b -Reinstate Monica

ठीक है, हो सकता है कि मैं QQplot के डेटा के लिए देखे गए मानों के अनुमानित लंबोदा का उपयोग कर सकता हूं, लेकिन मैं थोड़ा पढ़ता हूं और लगता है कि QQplots निरंतर डेटा के लिए बेहतर हैं (असतत डेटा के लिए इतना अच्छा नहीं)। क्या आप कोड का अनुवाद कर सकते हैं? यह वास्तव में सराहना की जाएगी! मुझे पता है अगर आप कोड है! (मैं आपको कोड का श्रेय अवश्य दूँगा :))
शरीफ

5

फिट टेस्ट की ची-स्क्वायर्ड नेकी का प्रदर्शन करें। गणना डेटा के मामले में, हम goodfit()vcd पैकेज में शामिल का उपयोग कर सकते हैं । ध्यान दें कि यदि p मान 0.05 से बड़ा है, तो हम h0 को अस्वीकार नहीं कर सकते: प्रक्रिया एक पॉइसन प्रक्रिया है। या फिर, यह एक Poisson प्रक्रिया नहीं है।

# load the vcd package
library(vcd) ## loading vcd package

# generate two processes for test
set.seed(2014);y=rpois(200,5)
set.seed(2014);y=rnorm(100, 5, 0.3) # goodfit asks for non-negative values
# output the results
gf = goodfit(y,type= "poisson",method= "ML")
plot(gf,main="Count data vs Poisson distribution")
summary(gf)

# to automatically get the pvalue
gf.summary = capture.output(summary(gf))[[5]]
pvalue = unlist(strsplit(gf.summary, split = " "))
pvalue = as.numeric(pvalue[length(pvalue)]); pvalue

# to mannualy compute the pvalue
chisq = sum(  (gf$observed-gf$fitted)^2/gf$fitted )

df = length(gf$observed)-1-1
pvalue = pchisq(chisq,df)
pvalue

3
pchisqपी(एक्सएक्स)पी(एक्सएक्स)pvalue=1-pchisq(chisq,df)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.