जिपफ के लिए मापदंडों का अनुमान कैसे लगाया जाए एक डेटा सैंपल से वितरण को काट दिया?


10

मुझे जिप्फ़ के लिए अनुमान पैरामीटर के साथ एक समस्या है। मेरी स्थिति निम्नलिखित है:

मेरे पास एक नमूना सेट है (एक प्रयोग से मापा जाता है जो कॉल उत्पन्न करता है जिसे एक ज़िप वितरण का पालन करना चाहिए)। मुझे प्रदर्शित करना है कि यह जनरेटर वास्तव में ज़िप वितरण के साथ कॉल उत्पन्न करता है। मैंने पहले ही इस प्रश्नोत्तर को पढ़ा कि शीर्ष आवृत्तियों के सेट से जिप्फ़ के नियम गुणांक की गणना कैसे करें? लेकिन मैं बुरे परिणामों तक पहुँचता हूँ क्योंकि मैं एक कम वितरण का उपयोग करता हूँ। उदाहरण के लिए यदि मैं "s" का मान "जनरेशन प्रोसेस के लिए" 0.9 "पर सेट करता हूँ, अगर मैं रिपोर्ट करने के लिए" s "मान का अनुमान लगाने की कोशिश करता हूँ, जैसा कि रिपोर्ट की गई Q & A में लिखा है, तो मुझे 0.2 ca के बराबर" s "प्राप्त होता है। मुझे लगता है कि यह इस तथ्य के कारण है कि मैं एक ट्रेंक्यूलेटेड वितरण का उपयोग करता हूं (मुझे एक ट्रंकेशन बिंदु के साथ जिपफ को सीमित करना है, यह सही-छंटनी है)।

मैं छंटनी किए गए ज़िप वितरण के साथ मापदंडों का अनुमान कैसे लगा सकता हूं?


स्पष्ट होने के लिए, आप सही-सही क्या कर रहे हैं? मूल्यों का वितरण या स्वयं जिप्फ़ प्लॉट? क्या आप ट्रंकेशन पॉइंट जानते हैं? ट्रंकेशन डेटा की एक विरूपण साक्ष्य या डेटा प्रोसेसिंग की एक कलाकृति है (उदाहरण के लिए, कुछ निर्णय जो आप या प्रयोग किया जाता है)? कोई अतिरिक्त विवरण सहायक होगा।
कार्डिनल

@cardinal। (भाग 1/2) धन्यवाद कार्डिनल। मैं और अधिक विवरण दूंगा: मेरे पास एक वीओआईपी जनरेटर है जो प्रति कॉलर वॉल्यूम के लिए ज़िपफ (और अन्य वितरण) के बाद कॉल उत्पन्न करता है। मुझे यह सत्यापित करना होगा कि यह जनरेटर वास्तव में इन वितरणों का अनुसरण करता है। जिपफ वितरण के लिए मुझे ट्रंकेशन बिंदु को परिभाषित करने की आवश्यकता है (इसलिए यह ज्ञात है और यह मूल्यों के वितरण को संदर्भित करता है) जो उपयोगकर्ता द्वारा अधिकतम कॉल की गई संख्या और स्केल पैरामीटर है। विशेष रूप से मेरे मामले में यह मूल्य 500 के बराबर है, यह दर्शाता है कि एक उपयोगकर्ता अधिकतम 500 कॉल उत्पन्न कर सकता है।
मौरिजियो

(भाग 2/2) सेट करने के लिए अन्य पैरामीटर ज़िपफ के लिए स्केल पैरामीटर है जो वितरण के प्रसार को परिभाषित करता है (मेरे मामले में यह मान 0.9 है)। मेरे पास सभी पैरामीटर (आकार, नमूना प्रति उपयोगकर्ता आवृत्ति आदि) हैं, लेकिन मुझे यह सत्यापित करना होगा कि मेरा डेटासेट zipf वितरण का अनुसरण करता है।
मौरिजियो

ताकि आप जाहिरा तौर पर द्वारा वितरण renormalizing रहे , के लिए के बाद से, मैं क्या के बारे में सोच से 'छोटा कर दिया Zipf "के रूप में, 0.9 का एक स्केलिंग पैरामीटर असंभव होगा। यदि आप इनमें से बहुत सारे डेटा उत्पन्न कर सकते हैं और आपके पास "केवल" 500 संभावित परिणाम हैं, तो सिर्फ ची-स्क्वायर अच्छाई-से-फिट परीक्षण का उपयोग क्यों न करें? चूंकि आपके वितरण में एक लंबी-पूंछ है, इसलिए आपको बहुत बड़े नमूना आकार की आवश्यकता हो सकती है। लेकिन, यह एक तरीका होगा। एक और त्वरित और गंदी विधि यह जांचने के लिए होगी कि आपको कॉल की संख्या के छोटे मूल्यों के लिए सही अनुभवजन्य वितरण मिलता है । Σमैं=1500मैं-0.9
कार्डिनल

जवाबों:


14

अद्यतन : covers अप्रैल २०११ यह उत्तर काफी लंबा हो रहा है और हाथ में समस्या के कई पहलुओं को शामिल करता है। हालाँकि, मैंने अब तक अलग-अलग उत्तरों में इसे तोड़ते हुए विरोध किया है।

मैं पियर्सन की के प्रदर्शन के सबसे निचले भाग में एक चर्चा में शामिल कर लिया है इस उदाहरण के लिए।χ2


ब्रूस एम। हिल ने लिखा, शायद, जिपफ जैसे संदर्भ में अनुमान पर "सेमिनल" पेपर। उन्होंने विषय पर 1970 के मध्य में कई पत्र लिखे। हालांकि, "हिल अनुमानक" (जैसा कि अब कहा जाता है) अनिवार्य रूप से नमूना के अधिकतम क्रम के आंकड़ों पर निर्भर करता है और इसलिए, वर्तमान में छंटनी के प्रकार पर निर्भर करता है, जो आपको कुछ परेशानी में डाल सकता है।

मुख्य कागज है:

बीएम हिल, एक वितरण की पूंछ के बारे में एक साधारण सामान्य दृष्टिकोण , एन। स्टेट। , 1975।

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

विशेष रूप से, डिग्री वितरण केवल प्रत्येक पूर्णांक प्रतिक्रिया को देखे जाने की संख्या का अनुभवजन्य वितरण है,

मैं=#{जे:एक्सजे=मैं}n

अगर हम के खिलाफ इस साजिश एक लॉग-लॉग भूखंड पर, हम एक ढलान स्केलिंग गुणांक के लिए इसी के साथ एक रैखिक रुझान मिल जाएगा।मैं

दूसरी ओर, अगर हम जिपफ प्लॉट की साजिश करते हैं , जहां हम नमूने को सबसे बड़े से सबसे छोटे तक छांटते हैं और फिर उनके रैंकों के खिलाफ मूल्यों की साजिश करते हैं, तो हमें एक अलग ढलान के साथ एक अलग रैखिक प्रवृत्ति मिलती है । हालांकि ढलान संबंधित हैं।

यदि जिपफ वितरण के लिए स्केलिंग-कानून गुणांक है, तो पहले भूखंड में ढलान है - α और दूसरे भूखंड में ढलान है - 1 / ( α - 1 ) । नीचे α = 2 और n = 10 6 के लिए एक उदाहरण प्लॉट है । बाएं हाथ का फलक डिग्री वितरण है और लाल रेखा का ढलान है - 2 । दाएँ हाथ की ओर, Zipf साजिश है की एक ढलान होने आरोपित लाल रेखा के साथ - 1 / ( 2 - 1 ) = -α-α-1/(α-1)α=2n=106-2-1/(2-1)=-1

ज़िप वितरण से आईआईडी नमूने के लिए डिग्री वितरण (बाएं) और जिपफ (दाएं) भूखंड।

इसलिए, यदि आपका डेटा तो छोटा कर दिया गया है कि आप कोई मान कुछ सीमा से बड़ा देखने , लेकिन डेटा अन्यथा Zipf-वितरित कर रहे हैं और τ यथोचित बड़ी है, तो आप अनुमान लगा सकते हैं α से डिग्री वितरण । लॉग-लॉग प्लॉट के लिए एक लाइन को फिट करने और संबंधित गुणांक का उपयोग करने के लिए एक बहुत ही सरल दृष्टिकोण है।ττα

यदि आपके डेटा को छोटा कर दिया जाता है ताकि आपको छोटे मान दिखाई न दें (जैसे, बड़े वेब डेटा सेटों के लिए बहुत अधिक फ़िल्टरिंग किया जाता है), तो आप लॉग-लॉग स्केल पर ढलान का अनुमान लगाने के लिए Zipf प्लॉट का उपयोग कर सकते हैं और फिर " वापस बाहर स्केलिंग घातांक। कहो Zipf साजिश से ढलान के अपने अनुमान है β । फिर, स्केलिंग जी गुणांक में से एक सरल अनुमान है α = 1 - 1β^

α^=1-1β^

@csgillespie ने इस विषय के बारे में एक हालिया पेपर मार्क न्यूमैन द्वारा मिशिगन में सह-लेखक को दिया। वह इस पर बहुत सारे समान लेख प्रकाशित करता है। नीचे कुछ अन्य संदर्भों के साथ एक और है जो ब्याज की हो सकती है। न्यूमैन कभी-कभी सांख्यिकीय रूप से सबसे समझदार काम नहीं करता है, इसलिए सतर्क रहें।

एमईजे न्यूमैन, पावर कानून, पेरेटो डिस्ट्रीब्यूशन और जिपफ का कानून , समकालीन भौतिकी 46, 2005, पीपी। 323-351।

एम। मिटज़ेनमाकर, पावर लॉ और लॉगनॉर्मल डिस्ट्रीब्यूशन , इंटरनेट मैथ के लिए जनरेटिव मॉडल्स का संक्षिप्त इतिहास , वॉल्यूम। 1, नहीं। 2, 2003, पीपी। 226-251।

के। नाइट, मजबूती और पूर्वाग्रह में कमी , 2010 के अनुप्रयोगों के साथ पहाड़ी अनुमानक का एक सरल संशोधन


परिशिष्ट :

आर105

> x <- (1:500)^(-0.9)
> p <- x / sum(x)
> y <- sample(length(p), size=100000, repl=TRUE, prob=p)
> tab <- table(y)
> plot( 1:500, tab/sum(tab), log="xy", pch=20, 
        main="'Truncated' Zipf simulation (truncated at i=500)",
        xlab="Response", ylab="Probability" )
> lines(p, col="red", lwd=2)

परिणामी साजिश है

"काटे गए" ज़िप कथानक (i = 500 पर काट दिया गया)

मैं30

फिर भी, एक व्यावहारिक दृष्टिकोण से, इस तरह के एक भूखंड को अपेक्षाकृत सम्मोहक होना चाहिए।


α=2n=300000एक्सएक्स=500

χ2

एक्स2=Σमैं=1500(हेमैं-मैं)2मैं
हेमैंमैंमैं=nपीमैं=nमैं-α/Σजे=1500जे-α

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

nपी

पी

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

आर

# Chi-square testing of the truncated Zipf.

a <- 2
n <- 300000
xmax <- 500

nreps <- 5000

zipf.chisq.test <- function(n, a=0.9, xmax=500, bin.size = 40)
{
  # Make the probability vector
  x <- (1:xmax)^(-a)
  p <- x / sum(x)

  # Do the sampling
  y <- sample(length(p), size=n, repl=TRUE, prob=p)

  # Use tabulate, NOT table!
  tab <- tabulate(y,xmax)

  # unbinned chi-square stat and p-value
  discrepancy <- (tab-n*p)^2/(n*p)
  chi.stat <- sum(discrepancy)
  p.val    <- pchisq(chi.stat, df=xmax-1, lower.tail = FALSE)

  # binned chi-square stat and p-value
  bins <- seq(bin.size,xmax,by=bin.size)
  if( bins[length(bins)] != xmax )
    bins <- c(bins, xmax)

  tab.bin  <- cumsum(tab)[bins]
  tab.bin <- c(tab.bin[1], diff(tab.bin))

  prob.bin <- cumsum(p)[bins] 
  prob.bin <- c(prob.bin[1], diff(prob.bin))

  disc.bin <- (tab.bin - n*prob.bin)^2/(n * prob.bin)
  chi.stat.bin <- sum(disc.bin)
  p.val.bin <- pchisq(chi.stat.bin, df=length(tab.bin)-1, lower.tail = FALSE)

  # Return the binned and unbineed p-values
  c(p.val, p.val.bin, chi.stat, chi.stat.bin)
}

set.seed( .Random.seed[2] )

all <- replicate(nreps, zipf.chisq.test(n, a, xmax))

par(mfrow=c(2,1))
hist( all[1,], breaks=20, col="darkgrey", border="white",
      main="Histogram of unbinned chi-square p-values", xlab="p-value")
hist( all[2,], breaks=20, col="darkgrey", border="white",
      main="Histogram of binned chi-square p-values", xlab="p-value" )

type.one.error <- rowMeans( all[1:2,] < 0.05 )

+1, हमेशा की तरह शानदार जवाब। आपको अपने आप को एक मध्यस्थ के रूप में नामांकित करना चाहिए, अभी भी 1 घंटा बाकी है :)
mpiktas

@mpiktas, प्रशंसा और प्रोत्साहन के लिए धन्यवाद। मुझे यकीन नहीं है कि मैं अपने आप को पहले ही बहुत मजबूत स्लेट वाले उम्मीदवारों के साथ नामांकित करने का औचित्य साबित कर सकता हूं, जिनके पास समान रूप से और अधिक से अधिक समय तक भाग लिया है।
कार्डिनल

@कार्डिनल, यहां हिल के अनुमानक के विकल्प के लिए कुछ लिंक दिए गए हैं: पॉलॉस्कस द्वारा मूल लेख और वैस्कुलिस और गेडिकिस और पॉलॉस्कस द्वारा अनुवर्ती । यह अनुमानक मूल हिल की तुलना में बेहतर गुण वाला था।
20

@mpiktas, लिंक के लिए धन्यवाद। हिल अनुमानक के कुछ "नए और बेहतर" संस्करण हैं। मूल दृष्टिकोण का मुख्य दोष यह है कि इसे "कटऑफ" के विकल्प की आवश्यकता होती है, जहां औसत रोकना है। मुझे लगता है कि ज्यादातर यह "नेत्रगोलक" द्वारा किया गया है जो इसे व्यक्तिपरकता के आरोपों को खोलता है। लंबे समय से टिके हुए वितरण पर रेसनिक की पुस्तकों में से एक पर कुछ विस्तार से चर्चा की गई है, अगर मुझे याद है। मुझे लगता है कि यह उसकी हाल की बात है।
कार्डिनल

@ कार्डिनल, बहुत बहुत धन्यवाद, आप बहुत दयालु और बहुत विस्तृत हैं! आर में आपका उदाहरण मेरे लिए बहुत उपयोगी था, लेकिन मैं इस मामले में औपचारिक ची-स्क्वायर परीक्षण कैसे कर सकता हूं? (मैंने यूनि, घातांक, सामान्य जैसे अन्य वितरणों के साथ ची-स्क्वायर परीक्षण का उपयोग किया, लेकिन मुझे zipf के बारे में कई संदेह हैं। सोरी लेकिन यह इन विषयों के लिए मेरा पहला दृष्टिकोण है)। मॉडरेटर से प्रश्न: क्या मुझे एक और प्रश्नोत्तर लिखना है जैसे "छंटनी किए गए जिप वितरण के लिए ची-स्क्वायर टेस्ट कैसे करें?" या इस क्यू एंड ए में जारी हो सकता है शायद टैग और शीर्षक अपडेट कर रहा है?
मारीज़ियो

5

कागज़

क्लॉसेट, ए एट अल , एम्पिरिकल डेटा में पावर-लॉ डिस्ट्रीब्यूशन । 2009

फिटिंग पावर लॉ मॉडल के बारे में जाने का बहुत अच्छा विवरण है। संबंधित वेब-पेज में कोड नमूने हैं। दुर्भाग्य से, यह काटे गए वितरण के लिए कोड नहीं देता है, लेकिन यह आपको एक संकेतक दे सकता है।


एक तरफ के रूप में, कागज इस तथ्य पर चर्चा करता है कि लॉग सामान्य या घातीय वितरण के साथ कई "पावर-लॉ डेटासेट" को समान रूप से अच्छी तरह से (और कुछ मामलों में बेहतर) मॉडल किया जा सकता है!


दुर्भाग्य से इस पत्र में काटे गए वितरण के बारे में कुछ भी नहीं कहा गया है..मैं आर में कुछ संकुल पाया है कि एक सामान्य तरीके से ज़िपफ अनुमान पैरामीटर (zipfR, VGAM) के साथ सौदा करते हैं, लेकिन काटे गए वितरण को "विशेष उपचार" की आवश्यकता होती है। अपने आखिरी वाक्य के साथ क्या आपका मतलब है कि एक उदाहरण-घातीय वितरण के साथ पावर-लॉ डेटासेट को मॉडल करना संभव है और फिर "अनुमानित" घातीय वितरण के लिए कुछ अनुमान पैरामीटर प्रक्रिया को लागू करना है? मैं इस विषय में बहुत नौसिखिया हूँ!
मॉरिजियो

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

2

उपयोगकर्ता कार्डिनल के विस्तृत उत्तर के बाद मैंने अपने प्रकल्पनीय काट-छाँट ज़िप वितरण पर ची-स्क्वायर परीक्षण किया। ची-स्क्वायर परीक्षण के परिणाम निम्न तालिका में बताए गए हैं:

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

जहां StartInterval और EndInterval उदाहरण के लिए कॉल की श्रेणी का प्रतिनिधित्व करते हैं और अवलोकन 0 से 19 कॉल करने वाले कॉल करने वालों की संख्या है, और इसी तरह .. अंतिम वर्ग तक पहुंचने तक ची-वर्ग परीक्षण अच्छा है, वे अंतिम वृद्धि करते हैं। गणना, अन्यथा उस बिंदु तक "आंशिक" ची-वर्ग मूल्य स्वीकार्य था!

अन्य परीक्षणों के साथ परिणाम समान होता है, अंतिम कॉलम (या अंतिम 2 कॉलम) हमेशा अंतिम मूल्य बढ़ाता है और मुझे नहीं पता कि क्यों और मुझे नहीं पता कि क्या (और कैसे) एक और सत्यापन परीक्षण का उपयोग करें।

पुनश्च: पूर्णता के लिए, अपेक्षित मूल्यों की गणना करने के लिए ( अपेक्षित ) मैं इस तरह से कार्डिनल के सुझाव का पालन करता हूं:

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

जहां x_i की गणना करने के लिए उपयोग किया जाता है: x <- (1:n)^-S, p_i 'की गणना करने के एस p <- x / sum(x)और अंत में E_i (कॉल की प्रत्येक एन.आर. के लिए उपयोगकर्ताओं की अपेक्षित एन.आर.) द्वारा प्राप्त किया जाताP_i * Total_Caller_Observed

और स्वतंत्रता की डिग्री = 13 के साथ ची-स्क्वायर अच्छाई हमेशा हाइफ़ोटिस को खारिज कर देता है कि नमूना सेट जिपफ वितरण का पालन करता है क्योंकि टेस्ट सांख्यिकी (इस मामले में 64,14) ची-स्क्वायर तालिकाओं में रिपोर्ट की गई तुलना में बड़ा है, "डीमेरिट" अंतिम कॉलम के लिए। आलेखीय परिणाम यहाँ बताया गया है: यहां छवि विवरण दर्ज करें

यद्यपि ट्रंकेशन बिंदु 500 पर सेट है, अधिकतम मूल्य 294 है। मुझे लगता है कि अंतिम "फैलाव" ची-स्क्वायर परीक्षण की विफलता का कारण है।

अपडेट करें!!

मैं उपर्युक्त उत्तर में बताए गए आर कोड के साथ उत्पन्न एक अनुमान योग्य जिपफ डेटा नमूने पर ची-स्क्वायर परीक्षण करने की कोशिश करता हूं।

> x <- (1:500)^(-2)
> p <- x / sum(x)
> y <- sample(length(p), size=300000, repl=TRUE, prob=p)
> tab <- table(y)
> length(tab)
[1] 438
> plot( 1:438, tab/sum(tab), log="xy", pch=20, 
        main="'Truncated' Zipf simulation (truncated at i=500)",
        xlab="Response", ylab="Probability" )
> lines(p, col="red", lwd=2)

संबंधित प्लॉट निम्नलिखित है: यहां छवि विवरण दर्ज करें

ची-स्क्वायर परीक्षण के परिणाम निम्नलिखित आंकड़े में बताए गए हैं: यहां छवि विवरण दर्ज करें

और चि-वर्ग परीक्षण आँकड़ा (44,57) स्वतंत्रता की चुनी हुई डिग्री के साथ मान्यता के लिए बहुत अधिक है। इस मामले में भी डेटा का अंतिम "फैलाव" उच्च ची-वर्ग मूल्य का कारण है। लेकिन इस ज़िप वितरण को मान्य करने की एक प्रक्रिया है (मेरे "गलत" जनरेटर की परवाह किए बिना, मैं आर डेटा नमूने पर ध्यान केंद्रित करना चाहता हूं)


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

@ कार्डिनल, मैंने परिणाम अपडेट किए! तुम क्या सोचते हो? वर्दी वितरण के बारे में एक और बात यह है कि मुझे एक बेहतर तरीके से निर्दिष्ट करना है और मैं इसे आज या कल करूँगा;)
मौरिज़ियो

एस=0.9

@Maurizio, परिणाम मैं पोस्ट समझाने के लिए, कि पर विचार पी=पी(एक्समैं=500)4.05×10-4n=845484544.0510-43.431-(1-0.000405)84540.9675। ध्यान दें कि ऊपर दिए गए सिमुलेशन से कितनी बारीकी से मेल खाता है।
कार्डिनल

@कार्डिनल, मुझे यह भी लगता है कि पीढ़ी प्रक्रिया में कुछ "गलत" है (मेरा लक्ष्य यह प्रमाणित करना है कि यह जनरेटर वास्तव में जिपफ वितरण का अनुसरण करता है)। मुझे इन दिनों परियोजना के डिजाइनरों के साथ बात करनी है।
मौरीज़ियो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.