2013-02-22 12 views
14

पर गैरपरैमेट्रिक क्वांटाइल रिग्रेशन वक्र IV=time, DV=concentration के साथ मैंने स्कैटरप्लॉट (एकाधिक समूह जीआरपी) बनाया है। मैं अपनी साजिश में क्वांटाइल रिग्रेशन वक्र (0.025,0.05,0.5,0.95,0.975) जोड़ना चाहता था।स्कैटरप्लॉट

और वैसे, यह है कि क्या मैं बिखराव-साजिश बनाने के लिए किया था:

attach(E) ## E is the name I gave to my data 
## Change Group to factor so that may work with levels in the legend 
Group<-as.character(Group) 
Group<-as.factor(Group) 

## Make the colored scatter-plot 
mycolors = c('red','orange','green','cornflowerblue') 
plot(Time,Concentration,main="Template",xlab="Time",ylab="Concentration",pch=18,col=mycolors[Group]) 

## This also works identically 
## with(E,plot(Time,Concentration,col=mycolors[Group],main="Template",xlab="Time",ylab="Concentration",pch=18)) 

## Use identify to identify each point by group number (to check) 
## identify(Time,Concentration,col=mycolors[Group],labels=Group) 
## Press Esc or press Stop to stop identify function 

## Create legend 
## Use locator(n=1,type="o") to find the point to align top left of legend box 
legend('topright',legend=levels(Group),col=mycolors,pch=18,title='Group') 

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

मुझे लगता है कि पैकेज quantreg से उत्तर हो सकता है, लेकिन मुझे समझ में नहीं आता कि जब मैं अपने चर के बीच संबंध नहीं जानता तो फ़ंक्शन का उपयोग कैसे करें।

मैं एक विज्ञान लेख से इस ग्राफ मिल जाए, और मैं ठीक ग्राफ उसी तरह क्या करना चाहते हैं: Goal

फिर से, आपकी मदद के लिए धन्यवाद!

अद्यतन

Test.csv मैं बताया गया कि मेरी नमूना डेटा प्रतिलिपि प्रस्तुत करने योग्य नहीं है। यहां मेरे डेटा का एक नमूना है।

library(evd) 
qcbvnonpar(p=c(0.025,0.05,0.5,0.95,0.975),cbind(TAD,DV),epmar=T,plot=F,add=T) 

मैं भी qcbvnonpar :: ईवीडी कोशिश की, लेकिन वक्र बहुत चिकनी प्रतीत नहीं होता।

+8

उपलब्ध कराने में असमर्थ हैं अपना खुद का डेटा, यादृच्छिक संख्याओं का डेटासेट बनाने का प्रयास करें और अपनी समस्या का प्रदर्शन करें। हमें दिखाएं कि आपने क्या प्रयास किया है। यह हमें अच्छे विश्वास के संकेत के साथ-साथ काम करने के लिए कुछ देता है। –

+0

ओह। मुझे खेद है - मैं कुछ संख्याएं बनाउंगा। यह बल्कि बड़ा हो सकता है। – shirleywu

+0

यह डेटा उत्पन्न करने में आपकी मदद कर सकता है। http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

उत्तर

5

मैंने पहले भी अक्सर rqss साथ संघर्ष किया है और मेरे मुद्दों लगभग हमेशा अंक के आदेश से संबंधित की है।

आपके पास विभिन्न समय बिंदुओं पर कई माप हैं, यही कारण है कि आप अलग-अलग लंबाई प्राप्त कर रहे हैं। यह मेरे लिए काम करता है:

dat <- read.csv("~/Downloads/Test.csv") 

library(quantreg) 
dat <- plyr::arrange(dat,Time) 
fit<-rqss(Concentration~qss(Time,constraint="N"),tau=0.5,data = dat) 
with(dat,plot(Time,Concentration)) 
lines(unique(dat$Time)[-1],fit$coef[1] + fit$coef[-1]) 

enter image description here

डेटा फ्रेम छंटाई फिटिंग मॉडल आवश्यक प्रतीत होता है से पहले।

+0

यह काम करता है! बहुत बहुत धन्यवाद। मुझे नहीं पता था कि आदेश एक मुद्दा हो सकता है। – shirleywu

8

शायद स्प्रूटिंग और क्वांटाइल रिग्रेशन को सुगम बनाने के लिए quantreg ::: rqss पर एक नज़र डालें। नहीं इतना अच्छा उदाहरण डेटा के लिए खेद है:

set.seed(1234) 
period <- 100 
x <- 1:100 
y <- sin(2*pi*x/period) + runif(length(x),-1,1) 


require(quantreg) 
mod <- rqss(y ~ qss(x)) 
mod2 <- rqss(y ~ qss(x), tau=0.75) 
mod3 <- rqss(y ~ qss(x), tau=0.25) 
plot(x, y) 
lines(x[-1], mod$coef[1] + mod$coef[-1], col = 'red') 
lines(x[-1], mod2$coef[1] + mod2$coef[-1], col = 'green') 
lines(x[-1], mod3$coef[1] + mod3$coef[-1], col = 'green') 

enter image description here

+0

'rqss() 'के लिए +1 - यदि गैर-पैरामीट्रिक आवश्यक है और उदाहरण छवि सुझाव देती है कि यह एक स्पलीन-आधारित फिट है 'rqss()' निश्चित रूप से पहली जगह है जिसे मैं देखता हूं। –

+1

यह आपके उदाहरण के साथ बहुत खूबसूरती से काम करता है, लेकिन मुझे यकीन नहीं है कि क्यों, मैं xy.coords (x, y) में त्रुटि प्राप्त कर रहा हूं: 'x' और 'y' लंबाई मेरे डेटासेट के लिए चेतावनी भिन्न है, भले ही मैं इसे जांचूं मेरे एक्स और वाई एक ही एन है। अभी भी त्रुटि डीबगिंग पर काम कर रहा है: पी – shirleywu

+1

क्या आप अपने डेटा का थोड़ा और उपयोग कर सकते हैं? ऊपर से आपका उदाहरण डेटा स्पष्ट रूप से उपयुक्त नहीं है। – EDi

2

मामले में आप ggplot2 ग्राफिक चाहते हैं ...

मैं @EDi की उस पर इस उदाहरण आधारित है। मैंने x और y में वृद्धि की ताकि क्वांटाइल लाइन कम हो जाएंगी। इस वृद्धि के कारण, मुझे कुछ कॉल में x के स्थान पर unique(x) का उपयोग करने की आवश्यकता है।

set.seed(1234) 
period <- 100 
x <- rep(1:100,each=100) 
y <- 1*sin(2*pi*x/period) + runif(length(x),-1,1) 


require(quantreg) 
mod <- rqss(y ~ qss(x)) 
mod2 <- rqss(y ~ qss(x), tau=0.75) 
mod3 <- rqss(y ~ qss(x), tau=0.25) 

यहाँ दो भूखंडों हैं::

यहाँ संशोधित सेट अप है

# @EDi's base graphics example 
plot(x, y) 
lines(unique(x)[-1], mod$coef[1] + mod$coef[-1], col = 'red') 
lines(unique(x)[-1], mod2$coef[1] + mod2$coef[-1], col = 'green') 
lines(unique(x)[-1], mod3$coef[1] + mod3$coef[-1], col = 'green') 

enter image description here

# @swihart's ggplot2 example: 
## get into dataset so that ggplot2 can have some fun: 
qrdf <- data.table(x  = unique(x)[-1], 
        median = mod$coef[1] + mod$coef[-1], 
        qupp = mod2$coef[1] + mod2$coef[-1], 
        qlow = mod3$coef[1] + mod3$coef[-1] 
) 

line_size = 2 
ggplot() + 
    geom_point(aes(x=x, y=y), 
      color="black", alpha=0.5) + 
    ## quantiles: 
    geom_line(data=qrdf,aes(x=x, y=median), 
      color="red", alpha=0.7, size=line_size) + 
    geom_line(data=qrdf,aes(x=x, y=qupp), 
      color="blue", alpha=0.7, size=line_size, lty=1) + 
    geom_line(data=qrdf,aes(x=x, y=qlow), 
      color="blue", alpha=0.7, size=line_size, lty=1) 

enter image description here

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