फॉर्म मॉडल के लिए प्रतिगमन ?


22

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

"num_replies","count"
0,627568
1,156371
2,151670
3,79094
4,59473
5,39895
6,30947
7,23329
8,18726

यदि मैं एक लॉग-लॉग प्लॉट पर डेटासेट की साजिश रचता हूं, तो मुझे वह मिलता है जो मूल रूप से एक सीधी रेखा है:

लॉग-लॉग स्केल पर डेटा प्लॉट किया गया

(यह जिप्फ़ियन वितरण है )। विकिपीडिया मुझे बताता है कि लॉग-लॉग भूखंडों पर सीधी रेखाएं एक ऐसे फ़ंक्शन का संकेत देती हैं जिसे प्रपत्र एक मोनोमियल द्वारा मॉडलिंग की जा सकती है । और वास्तव में मैं इस तरह के एक समारोह नेत्रगोलक है:y=axk

lines(data$num_replies, 480000 * data$num_replies ^ -1.62, col="green")

नेत्रगोलक मॉडल

मेरे नेत्रगोलक स्पष्ट रूप से आर के रूप में सटीक नहीं हैं। तो मुझे इस मॉडल के मापदंडों को अधिक सटीक रूप से फिट करने के लिए आर कैसे मिल सकता है? मैंने बहुपद प्रतिगमन की कोशिश की, लेकिन मुझे नहीं लगता कि आर एक्सपोनेंट को एक पैरामीटर के रूप में फिट करने की कोशिश करता है - मुझे जो मॉडल चाहिए, उसका उचित नाम क्या है?

संपादित करें: सभी के उत्तर के लिए धन्यवाद। जैसा कि सुझाव दिया गया है, मैं अब इस रेसिपी का उपयोग करके इनपुट डेटा के लॉग के खिलाफ एक रेखीय मॉडल फिट कर रहा हूँ:

data <- read.csv(file="result.txt")

# Avoid taking the log of zero:
data$num_replies = data$num_replies + 1

plot(data$num_replies, data$count, log="xy", cex=0.8)

# Fit just the first 100 points in the series:
model <- lm(log(data$count[1:100]) ~ log(data$num_replies[1:100]))

points(data$num_replies, round(exp(coef(model)[1] + coef(model)[2] * log(data$num_replies))), 
       col="red")

इसका परिणाम यह है, मॉडल को लाल रंग में दिखाना:

फिट मॉडल

यह मेरे उद्देश्यों के लिए एक अच्छा सन्निकटन जैसा दिखता है।

यदि मैं इस ज़िपफ़ियन मॉडल (अल्फा = 1.703164) का उपयोग यादृच्छिक संख्या जनरेटर के साथ करता है, तो मूल मापा डेटासेट के रूप में कुल विषयों (1400930) को उत्पन्न करने के लिए इसमें मूल रूप से मापा गया डेटासेट ( इस सी कोड का उपयोग करके मुझे वेब पर मिला ), परिणाम दिखता है पसंद:

यादृच्छिक संख्या उत्पन्न परिणाम

मापित बिंदु काले रंग में हैं, मॉडल के अनुसार अनियमित रूप से उत्पन्न लाल रंग में हैं।

मुझे लगता है कि यह दिखाता है कि इन 1400930 अंकों को बेतरतीब ढंग से पैदा करने वाला साधारण संस्करण मूल ग्राफ के आकार के लिए एक अच्छी व्याख्या है।

यदि आप स्वयं कच्चे डेटा के साथ खेलने में रुचि रखते हैं, तो मैंने इसे यहाँ पोस्ट किया है


2
क्यों न केवल दोनों संख्याओं और संख्याओं के लॉग लें, और उनके लिए एक मानक रैखिक मॉडल फिट करें?
गुंग - को पुनः स्थापित मोनिका

3
10000 उत्तरों से नीचे की गिनती में इतना बड़ा स्पाइक क्या है?
Glen_b -Reinstate मोनिका

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

1
यह दिलचस्प स्पाइक कई मंचों में मानव-प्रवर्तित "अधिकतम विषय लंबाई" के कारण है।
तत्कालीन

2
ठगना स्वादिष्ट है :) अधिक अभियोगात्मक रूप से, (num_replies + 1) और (num_posts_in_topic) के बीच कोई अंतर नहीं है।
तत्पश्चात

जवाबों:


22

आपका उदाहरण एक बहुत अच्छा है क्योंकि यह स्पष्ट रूप से ऐसे डेटा के साथ आवर्ती मुद्दों को इंगित करता है।

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

मैं यहां एक अच्छे शब्द के रूप में मोनोमियल को नहीं मानता, जैसा कि मैं पूर्णांक शक्तियों के साथ जोड़ता हूं। उसी कारण से यह बहुपद का विशेष मामला नहीं माना जाता है।

दो अलग-अलग वेरिएबल्स के बीच संबंध के लिए एक पावर लॉ फिट करने की समस्याओं में एक वितरण लॉयर की पूंछ को पावर लॉ फिट करने की समस्याएं।

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

इसके अलावा, हमेशा त्रुटि संरचना के बारे में मान्यताओं का सवाल है। फिर से, यहाँ उदाहरण एक मामले में है क्योंकि त्रुटियां स्पष्ट रूप से विषमलैंगिक हैं। इससे पता चलता है कि अधिक भारित-वर्ग जैसे कुछ और।

एक उत्कृष्ट समीक्षा http://www.ncbi.nlm.nih.gov/pubmed/16573844 है

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

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


2
धन्यवाद, यह बताता है कि मैं ऐसा कुछ भी क्यों नहीं खोज पा रहा था जहाँ लोग "बहुपद प्रतिगमन" पर चर्चा कर रहे थे। मैंने उस मॉडल को फिट करने के परिणामों के साथ अपना प्रश्न अपडेट किया है!
तत्पश्चात

: आप बिजली कानून, और सज्जित मॉडल के लिए महत्व परीक्षणों के फिटिंग के लिए एक से थोड़ा अधिक कठोर दृष्टिकोण के लिए देख रहे हैं, तो आप शायद इस पत्र चाहते arxiv.org/abs/0706.1062 और साथ कोड: tuvalu.santafe.edu/ ~ एरोनक / पावरलॉव्स
मार्टिन ओ'लेरी

2
ऊपर उद्धृत कागज उन वितरणों के लिए है जो शक्ति कानून हैं, न कि चर के बीच संबंध जो कि बिजली कानून हैं। इस प्रश्न का शीर्षक उत्तरार्द्ध बेहतर है; इस सवाल का उदाहरण पहले से बेहतर है।
निक कॉक्स

1

यदि आप मानते हैं कि एक बिजली फिट करने के लिए एक अच्छा मॉडल है, तो आप log(y) ~ log(x)अपने मॉडल के रूप में उपयोग कर सकते हैं , और एक रेखीय प्रतिगमन का उपयोग कर फिट कर सकते हैं lm():

इसे इस्तेमाल करे:

# Generate some data
set.seed(42)

x <- seq(1, 10, 1)

a = 10
b = 2
scatt <- rnorm(10, sd = 0.2)


dat <- data.frame(
  x = x,
  y = a*x^(-b) + scatt
)

एक मॉडल फिट करें:

# Fit a model
model <- lm(log(y) ~ log(x) + 1, data = dat) 
summary(model)

pred <- data.frame(
  x = dat$x,
  p = exp(predict(model, dat))
)

अब एक प्लॉट बनाएं:

# Create a plot
library(ggplot2)
ggplot() +
  geom_point(data = dat, aes(x=x, y=y)) +
  geom_line(data = pred, aes(x=x, y=p), col = "red")

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

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