Ggplot2 में प्रतिगमन लाइनों की भविष्यवाणी या विस्तार कैसे करें?


18

मेरे पास एक डेटा फ्रेम है जिसमें दो टाइम सीरीज़ हैं: एमएसीएस और फ़ायरफ़ॉक्स रिलीज़ की तारीख और संस्करण संख्या। एक ggplot2 कमांड का उपयोग करना आसान है जो चार्ट का उपयोग करता है (एक तरह से जो थोड़ा मनोरंजक लग रहा है, जिसका मुझे कोई मतलब नहीं है) अंक को लाइनों में बदलना।

मैं भविष्य में लाइनों का विस्तार कैसे कर सकता हूं? मैं यह निर्धारित करना चाहता हूं कि Emacs और Firefox संस्करण संख्याएँ कब और कहाँ से पार होंगी, और यदि कोई त्रुटि सीमा दिखाने का कोई तरीका है, तो सब बेहतर होगा।

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

> library(ggplot2)
> programs <- read.csv("http://www.miskatonic.org/files/se-program-versions.csv")
> programs$Date <- as.Date(programs$Date, format="%B %d, %Y")
> head(programs)
  Program Version       Date
1   Emacs    24.1 2012-06-10
2   Emacs    23.4 2012-01-29
3   Emacs    23.3 2011-03-10
4   Emacs    23.2 2010-05-08
5   Emacs    23.1 2009-07-29
6   Emacs    22.3 2008-09-05
> head(subset(programs, Program == "Firefox"))
   Program Version       Date
18 Firefox      16 2012-10-09
19 Firefox      15 2012-08-28
20 Firefox      14 2012-06-26
21 Firefox      13 2012-06-15
22 Firefox      12 2012-04-24
23 Firefox      11 2012-03-13
> ggplot(programs, aes(y = Version, x = Date, colour = Program)) + geom_point() + geom_smooth(span = 0.5, fill = NA)

Emacs और फ़ायरफ़ॉक्स संस्करण तिथि द्वारा

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

जवाबों:


22

जैसा कि @ गेलन में उल्लेख किया गया है कि आपको एक ऐसी stat_smoothविधि का उपयोग करना होगा जो एक्सट्रपलेशन का समर्थन करता है, जो loessनहीं करता है। lmहालाँकि करता है। आपको जिस चीज की आवश्यकता है, उसके fullrangeपैरामीटर का उपयोग stat_smoothकरें और एक्स-एक्सिस का विस्तार करके उस सीमा को शामिल करें, जिस पर आप भविष्यवाणी करना चाहते हैं। मेरे पास आपका डेटा नहीं है, लेकिन यहाँ mtcars डेटासेट का उपयोग कर एक उदाहरण दिया गया है:

ggplot(mtcars,aes(x=disp,y=hp)) + geom_point() + xlim(0,700) +
stat_smooth(method="lm",fullrange=TRUE)

1
धन्यवाद, यह काम करता है (कुछ डेटा को छोड़कर ताकि फ़ायरफ़ॉक्स लाइन काम करे): ggplot (सबसेट (प्रोग्राम; - (कार्यक्रम == "फ़ायरफ़ॉक्स" और संस्करण <4))), anes (y = संस्करण, x = दिनांक) color = कार्यक्रम)) + geom_point () + ylim (0,30) + xlim (as.Date ("1985-01-01"), as.Date ("2015-01-01")) + stat_smooth (विधि =) एलएम, फुलेंज = ट्रू)
विलियम डेंटन

3

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

लोस फ़ंक्शन को देखें, हालांकि मुझे यकीन नहीं है कि यह आपके डेटा रेंज के बाहर की भविष्यवाणी करता है, मुझे यकीन है कि कुछ चिकनी फ़ंक्शन हालांकि करता है।

हालाँकि यह आमतौर पर आपकी डेटा सीमा के बाहर के मूल्यों की भविष्यवाणी करने के लिए बुद्धिमान नहीं है। मैं इन भविष्यवाणियों पर ज्यादा भरोसा नहीं करूंगा।

आप टाइम सीरीज़ मॉडल का उपयोग करके पूर्वानुमानित मूल्यों की जांच करना चाहते हैं।

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