2011-08-11 9 views
5

मैं स्टॉक (जोड़े ट्रेडिंग) के जोड़ों पर विश्लेषण का एक सा से शुरू होने वाले कर रहा हूँ और यहाँ है समारोह मैं एक ग्राफ (pairs.report - नीचे सूचीबद्ध) के उत्पादन के लिए लिखा था।स्थान जोड़ना, किंवदंतियों और XTS का उपयोग कर भूखंडों के लिए पाठ वस्तुओं

मैं एक ही प्लॉट में तीन अलग-अलग लाइनों साजिश की जरूरत है। जो फ़ंक्शन मैंने सूचीबद्ध किया है वह वह करता है जो मैं करना चाहता हूं, लेकिन यदि मैं एक्स-अक्ष (समय रेखा) में एक अच्छा अनुकूलन चाहता हूं तो यह थोड़ा सा काम करेगा। जैसा कि है, यह x-axis में केवल वर्षों (डेटा के 10 वर्षों के लिए) या महीनों (डेटा के 6 महीने के लिए) प्रिंट करता है, जिसमें टिक के लिए कोई स्वरूपण नहीं होता है।

अगर मैं एक XTS वस्तु, यानी उपयोग करते हैं, अगर मैं

plot(xts-object-with-date-asset1-asset2, ...) 
बजाय

plot(date, asset2, ...) 

का उपयोग मैं तुरंत (एक ठीक से स्वरूपित x- अक्ष मिल ग्रिड और बॉक्स के साथ), लेकिन प्वाइंट(), टेक्स्ट(), लाइन() जैसे फ़ंक्शंस का उपयोग करके साजिश के बाद के जोड़े विफल हो जाते हैं। मुझे लगता है कि points.xts() और text.xts() जल्द ही बाहर नहीं आ रहे हैं।

मैं XTS वस्तुओं की सुविधा चाहते हैं, लेकिन मैं अपने भूखंड पर एक ठीक बेहतर नियंत्रण की आवश्यकता होगी। तो मेरा काम-प्रवाह कैसा होना चाहिए? क्या मुझे बुनियादी ग्राफिक्स से चिपकना है और मैन्युअल रूप से सभी अनुकूलन करना है? या क्या कोई तरीका है कि मैं xts मेरे लिए काम कर सकता हूं?

मैं जाली और ggplot2 के बारे में पता कर रहा हूँ, लेकिन मैं अब उन्हें इस्तेमाल नहीं करना चाहती। यहाँ समारोह मैंने कहा है (किसी भी आलोचना/कोड के सुधार के लिए सुझाव का स्वागत है) -

library(xts) 

pairs.report <- function(asset1, asset2, dataset) { 

#create data structures 
attach(dataset) 
datasetlm <- lm(formula = asset1 ~ asset2 + 0, data = dataset) 
beta = coef(datasetlm)[1] 

#add extra space to right margin of plot within frame 
par(mar=c(5, 4, 4, 4) + 0.1) 

# Plot first set of data and draw its axis 
ylim <- c(min(asset2,asset1), max(asset2,asset1)) 
plot(date, 
    asset2, 
    axes=T, 
    ylim=ylim, 
    xlab="Timeline", 
    ylab="asset2 and asset1 equity", 
    type="l", 
    col="red", 
    main="Comparison between asset2 and asset1") 
lines(date, asset1, col="green") 
box() 
grid(lwd=3) 

# Allow a second plot on the same graph 
par(new=T) 

# Plot the second plot and 
ylim <- c(min(asset1-beta*asset2), max(asset1-beta*asset2)) 
plot(date, 
    asset1-beta*asset2, 
    xlab="", ylab="", 
    ylim=ylim, 
    axes=F, 
    type="l", 
    col="blue") 

#put axis scale on right 
axis(side=4, 
    ylim=ylim, 
    col="blue", 
    col.axis="blue") 
mtext("Residual Spread",side=4,col="blue",line=2.5) 

abline(h=mean(asset1-beta*asset2)) 
} 
+0

शायद इस धागे में अपने स्वयं के प्रश्न का मेरा जवाब आपको भी मदद करता है: http://stackoverflow.com/questions/7009711/how-to-get-years-from-a-time-series-index-when -इस-अंतर्निहित-समय श्रृंखला-है-की-मीटर कम से कम आप केवल 10 साल फैला अलावा अन्य timespans मिलना चाहिए। बेशक एक ही काम के साथ काम करता है। –

+2

'plot.zoo' xts ऑब्जेक्ट्स के साथ काम करता है और आपको बहुत अधिक नियंत्रण देता है। 'plot.zoo' में कई उदाहरण हैं। –

उत्तर

3

plot.xts एक आधार भूखंड समारोह, जिसका अर्थ है आप points.default() और lines.default() उपयोग कर सकते हैं यदि आप के रूप में ही एक्स तर्कों का इस्तेमाल किया है plot.xts का उपयोग करता है। लेकिन यह जरूरी नहीं है। यह पहले से ही XTS और चिड़ियाघर संकुल क्योंकि जब उन पैकेज लोड किए गए हैं में बाहर मिश्रित होता है, और आप methods(lines) और विधियों (अंक) पर अमल आपको दिखाई देने वाले कार्यों को पहले से ही उपलब्ध हैं। points.zoo को plot.zoo पृष्ठ पर प्रलेखित किया गया है।

+0

lines.default, जबकि इसे निष्पादित किया गया, साजिश में कुछ भी नहीं किया। मैंने प्लॉट (पेट्रोक्सट्स) का उपयोग पहली बार उस एक्सटीएस ऑब्जेक्ट में पहली बार टाइम्स बनाने के लिए किया था, और जब मैं लाइन.डेफॉल्ट (पेट्रो $ डेट, पेट्रोक्सट्स $ एचपीसीएल, कोल = "हरी") निष्पादित करता हूं तो पैरा (नया = टी) के बाद, प्रॉम्प्ट होता है किसी भी संदेश के बिना वापस आ गया और साजिश पर कुछ भी नहीं होता है। तो मैं लाइनों का उपयोग कैसे करूं? डिफॉल्ट? – Soumendra

+0

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

संबंधित मुद्दे