2012-06-21 8 views
6

मैं quantmod :: chart_Series का उपयोग कर SPX चार्ट बनाने के लिए करना चाहते हैं। कोई फर्क नहीं पड़ता कि कैसे मैं यह करने के लिए (क्या संयोजन मैं का उपयोग करें) eithe त्रुटियां होती हैं या quantmod :: chart_Series() सिर्फ आंशिक साजिश को प्रदर्शित करता है की कोशिश करो।क्वांटमोड :: chart_Series() बग?() और सकल घरेलू उत्पाद में ड्रा परिवर्तन और सकल घरेलू उत्पाद का परिवर्तन की 12 महीने की एसएमए नीचे

require(quantmod) 

FRED.symbols <- c("GDPC96") 

getSymbols(FRED.symbols, src="FRED") 
SPX <- getSymbols("^GSPC", auto.assign=FALSE, from="1900-01-01") 

subset="2000/" 

chart_Series(SPX, subset=subset) 
add_TA(GDPC96) 
add_TA(ROC(GDPC96, type="discrete")) 
add_TA(SMA(ROC(GDPC96, type="discrete"), n=4), on=3, col="blue") 

संपादित करें: वास्तव में, मुझे लगता है कि यह एक quantmod :: chart_series() समस्या है जब त्रैमासिक डेटा का उपयोग कर रहा है:

subset <- "2000/" 
chart_Series(to.quarterly(SPX, drop.time=TRUE), subset=subset) 
add_TA(SMA(Cl(to.quarterly(SPX, drop.time=TRUE)))) 

> subset <- "2000/" 
> chart_Series(to.quarterly(SPX, drop.time=TRUE), subset=subset) 
> add_TA(SMA(Cl(to.quarterly(SPX, drop.time=TRUE)))) 
Error in xy.coords(x, y) : 'x' and 'y' lengths differ 
In addition: Warning messages: 
1: In as_numeric(H) : NAs introduced by coercion 
2: In as_numeric(H) : NAs introduced by coercion 
3: In as_numeric(H) : NAs introduced by coercion 

यह मुख्य पैनल पर SPX साजिश का उत्पादन करता है, लेकिन खाली हो जाती है दूसरा और तीसरा पैनल।

> chart_Series(head(to.quarterly(SPX, drop.time="TRUE"), -1), subset=subset) 
> add_TA(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE)) 
Error in xy.coords(x, y) : 'x' and 'y' lengths differ 
In addition: Warning messages: 
1: In as_numeric(H) : NAs introduced by coercion 
2: In as_numeric(H) : NAs introduced by coercion 
3: In as_numeric(H) : NAs introduced by coercion 
> add_TA(ROC(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE), type="discrete")) 
Error in xy.coords(x, y) : 'x' and 'y' lengths differ 
In addition: Warning messages: 
1: In as_numeric(H) : NAs introduced by coercion 
2: In as_numeric(H) : NAs introduced by coercion 
3: In as_numeric(H) : NAs introduced by coercion 
> add_TA(SMA(ROC(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE), type="discrete"), n=4), on=3, col="blue") 
Error in xy.coords(x, y) : 'x' and 'y' lengths differ 
In addition: Warning messages: 
1: In as_numeric(H) : NAs introduced by coercion 
2: In as_numeric(H) : NAs introduced by coercion 
3: In as_numeric(H) : NAs introduced by coercion 

tail(to.quarterly(SPX, drop.time="TRUE")) 
tail(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE)) 
tail(ROC(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE), type="discrete")) 
tail(SMA(ROC(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE), type="discrete"), n=4)) 

dput(to.quarterly(SPX, drop.time="TRUE")) 
dput(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE)) 
dput(ROC(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE), type="discrete")) 
dput(SMA(ROC(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE), type="discrete"), n=4)) 

का उपयोग करते हुए सब अच्छा लग रहा: तो मैं डेटा पर एक ही सूचकांक, एक ही लंबाई आदि

chart_Series(head(to.quarterly(SPX, drop.time="TRUE"), -1), subset=subset) 
add_TA(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE)) 
add_TA(ROC(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE), type="discrete")) 
add_TA(SMA(ROC(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE), type="discrete"), n=4), on=3, col="blue") 

और परिणाम होने के साथ चारों ओर खेलने के लिए करने की कोशिश की सब कुछ खत्म हो त्रुटियों है मेरे लिए।

मेरे sessionInfo():

> sessionInfo() 
R version 2.15.0 (2012-03-30) 
Platform: x86_64-pc-linux-gnu (64-bit) 

locale: 
[1] LC_CTYPE=en_US.UTF-8   LC_NUMERIC=C     
[3] LC_TIME=en_US.UTF-8   LC_COLLATE=en_US.UTF-8  
[5] LC_MONETARY=en_US.UTF-8  LC_MESSAGES=en_US.UTF-8  
[7] LC_PAPER=en_US.UTF-8   LC_NAME=en_US.UTF-8   
[9] LC_ADDRESS=en_US.UTF-8  LC_TELEPHONE=en_US.UTF-8  
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] quantmod_0.3-18 TTR_0.21-0  xts_0.8-7  zoo_1.7-7  
[5] Defaults_1.1-1 rj_1.1.0-4  

loaded via a namespace (and not attached): 
[1] grid_2.15.0 lattice_0.20-0 tools_2.15.0 
कोई भी विचार क्या इन मुद्दों के लिए समाधान हो सकता है

?

संपादित करें: यह एक quantmod :: chart_Series() बग हो रहा है। अगर मैं ऐसा करता हूं:

subset <- "1990/" 
test <- cbind(head(to.quarterly(SPX, drop.time="TRUE"), -1)[subset], 
      to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE)[subset], 
      ROC(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE),  type="discrete")[subset], 
      SMA(ROC(to.quarterly(GDPC96, drop.time="TRUE", OHLC=FALSE), type="discrete"), n=4)[subset]) 

test$test <- 1 

subset <- "2000/" 
chart_Series(OHLC(test), subset=subset) 
add_TA(test$test) 
add_TA(test$GDPC96) 

> test$test <- 1 
> subset <- "2000/" 
> chart_Series(OHLC(test), subset=subset) 
> add_TA(test$test) 
Error in xy.coords(x, y) : 'x' and 'y' lengths differ 
In addition: Warning messages: 
1: In as_numeric(H) : NAs introduced by coercion 
2: In as_numeric(H) : NAs introduced by coercion 
3: In as_numeric(H) : NAs introduced by coercion 
> add_TA(test$GDPC96) 
Error in xy.coords(x, y) : 'x' and 'y' lengths differ 
In addition: Warning messages: 
1: In as_numeric(H) : NAs introduced by coercion 
2: In as_numeric(H) : NAs introduced by coercion 
3: In as_numeric(H) : NAs introduced by coercion 
> traceback() 
14: stop("'x' and 'y' lengths differ") at chart_Series.R#510 
13: xy.coords(x, y) at chart_Series.R#510 
12: plot.xy(xy.coords(x, y), type = type, ...) at chart_Series.R#510 
11: lines.default(ta.x, as.numeric(ta.y[, i]), col = col, ...) at chart_Series.R#510 
10: lines(ta.x, as.numeric(ta.y[, i]), col = col, ...) at chart_Series.R#510 
9: plot_ta(x = current.chob(), ta = get("x"), on = NA, taType = NULL, 
     col = 1) at replot.R#238 
8: eval(expr, envir, enclos) at replot.R#238 
7: eval(aob, env) at replot.R#238 
6: FUN(X[[12L]], ...) at replot.R#230 
5: lapply(x$Env$actions, function(aob) { 
     if (attr(aob, "frame") > 0) { 
      x$set_frame(attr(aob, "frame"), attr(aob, "clip")) 
      env <- attr(aob, "env") 
      if (is.list(env)) { 
       env <- unlist(lapply(env, function(x) eapply(x, eval)), 
        recursive = FALSE) 
      } 
      eval(aob, env) 
     } 
    }) at replot.R#230 
4: plot.replot(x, ...) 
3: plot(x, ...) 
2: print.replot(<environment>) 
1: print(<environment>) 

यह तय करने के तरीके पर कोई विचार?

उत्तर

3

मैं बस, एक लंबे "जवाब" अपनी समस्याओं की पुष्टि लिखा कुछ डेटा मालिश के बाद भी, और यहां तक ​​कि पुराने chartSeries समारोह का उपयोग कर। तब मुझे एहसास हुआ कि add_TA() शायद गलत कार्य है। यह दृष्टिकोण काम करता है:

par(mfrow=c(2,1)) 
chart_Series(SPX) 
chart_Series(GDPC96) 

(layout आदेश का उपयोग कर एक वैकल्पिक दृष्टिकोण के लिए R/quantmod: multiple charts all using the same y-axis देखें।)

या सबसेट के साथ:।

par(mfrow=c(2,1)) 
chart_Series(SPX,subset="2000/") 
chart_Series(GDPC96,subset="2000/") 

(एनबी दोनों डेटासेट अलग अलग जगह पर समाप्त है, तो काफी लाइन नहीं है)

संयोग से, वहाँ त्रैमासिक डेटा के साथ chart_Series में एक निश्चित बग है:। X- अक्ष लेबल लो ठीक है "% n% b% n2010"।

q.SPX=to.quarterly(SPX) 
chart_Series(q.SPX) 
+2

अच्छा काम के आसपास।पुन: अक्ष लेबल स्वरूपण बग, समस्या यह है कि 'zoo ::: format.yearqtr' '% n' _conversion विनिर्देश_ का समर्थन नहीं करता है। 'chart_Series' 'xts ::: axTicksByTime' का उपयोग करता है जो सामान्य' प्रारूप' का उपयोग करता है। चूंकि 'to.quarterly' ने इंडेक्स को' yearqtr' का वर्ग दिया, 'प्रारूप' प्रेषण 'format.yearqtr' एक स्ट्रिंग के साथ जिसमें '% n' शामिल है (लेकिन आपके ओएस के आधार पर अलग है)। एक, स्वीकार्य रूप से महान नहीं, उपयोगकर्ता स्तर पर इसके आसपास काम करने का तरीका इंडेक्स क्लास को बदलना है: 'indexClass (q.SPX) <-" तिथि "; चार्ट_Series (q.SPX) ' – GSee

5

मुझे कई दिन पहले एक ही त्रुटि हुई थी। मैंने पाया कि समस्या लाइन के साथ add_TA में था:

ta.x <- as.numeric(na.approx(ta.adj[, 1])) 

na.approx लगभग शासन के साथ उपयोग करता = 1 डिफ़ॉल्ट रूप से है, जो सूची में अनुगामी NAS छोड़ देता है, तो मूल डेटा में पिछले टाइमस्टैम्प पिछले से पहले है टीए डेटा में टाइमस्टैम्प। नियम = 2 सेट करने के लिए उस पंक्ति को बदलना समस्या को हल करता है।

ta.x <- as.numeric(na.approx(ta.adj[, 1], rule=2)) 
+0

[आर 581] में एसवीएन के लिए लागू (https://r-forge.r-project.org/scm/viewvc.php/pkg/R/chart_Series.R?view=markup&revision=581&root= quantmod)। धन्यवाद @ माइकल 741। –

+0

एसओ, मैडॉग में आपका स्वागत है! :) – GSee

+0

+1, दुर्भाग्यवश, यह अभी भी @ समो के पहले उदाहरण के साथ काम नहीं करता है जहां एसपीएक्स जीडीपीसी 6 9 की तुलना में उच्च आवृत्ति है। लेकिन, 'to.quarterly' दोनों को परिवर्तित करना एक बहुत ही सरल काम है। साथ ही, पैच कोड अभी भी 'as_numeric (एच) 'से बहुत सारी चेतावनियां फेंकता है जो' parse.side' फ़ंक्शन से आता है जो '.parseISO8601' के लिए स्थानीय है। (हाँ, हाँ, मुझे पता है, वे सिर्फ चेतावनियां हैं) – GSee

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